Browse Source

Merge branch 'feature-1.1-dev' into feature-1.1-bnyer-order

feature-1.1
wuxicheng 3 years ago
parent
commit
44a3aa01d4
  1. 6
      bnyer-common/bnyer-common-core/pom.xml
  2. 5
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java
  3. 25
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/UserClientTypeConstants.java
  4. 1
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/EnumUserClientType.java
  5. 243
      bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java
  6. 35
      bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java
  7. 7
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java
  8. 20
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/enums/AiPaintButtonEnum.java
  9. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/StableDiffusionService.java
  10. 184
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java

6
bnyer-common/bnyer-common-core/pom.xml

@ -151,6 +151,12 @@
<artifactId>tencentcloud-sdk-java-tmt</artifactId> <artifactId>tencentcloud-sdk-java-tmt</artifactId>
<version>3.1.715</version> <version>3.1.715</version>
</dependency> </dependency>
<!--腾讯文生图-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java-aiart</artifactId>
<version>3.1.715</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

5
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java

@ -102,6 +102,11 @@ public class RedisKeyConstant {
* 平台用户ai绘画键 * 平台用户ai绘画键
*/ */
public static final String PLATFORM_USER_AI_PAINT_KEY = "bnyer.img.user.aiPaint:"; public static final String PLATFORM_USER_AI_PAINT_KEY = "bnyer.img.user.aiPaint:";
/**
* ai绘画采用sd或tx文生图开关
*/
public static final String AI_PAINT_BUTTON = "bnyer.img.paint.button";
/** /**
* 艺术家上传键 * 艺术家上传键
*/ */

25
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/UserClientTypeConstants.java

@ -0,0 +1,25 @@
package com.bnyer.common.core.constant;
/**
* 客户端用户常量信息
*
* @author penny
*/
public class UserClientTypeConstants
{
/** 抖音用户 */
public static final String DU = "10";
/** 快手用户 */
public static final String KU = "20";
/** 微信用户 */
public static final String WU = "30";
/** 微信艺术家 */
public static final String WY = "40";
/** pc管理员 */
public static final String PU = "50";
}

1
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/EnumUserClientType.java

@ -15,6 +15,7 @@ public enum EnumUserClientType {
KU(20,"KU","快手用户"), KU(20,"KU","快手用户"),
WU(30,"WU","微信用户"), WU(30,"WU","微信用户"),
WY(40,"WY","微信艺术家"), WY(40,"WY","微信艺术家"),
PU(50,"PU","pc管理员")
; ;
private final int type; private final int type;

243
bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java

@ -5,6 +5,8 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.bnyer.common.core.constant.TokenConstants; import com.bnyer.common.core.constant.TokenConstants;
import com.bnyer.common.core.constant.UserClientTypeConstants;
import com.bnyer.common.core.enums.EnumUserClientType;
import com.bnyer.common.security.auth.*; import com.bnyer.common.security.auth.*;
import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.common.security.utils.SecurityUtils;
import com.bnyer.img.api.model.LoginCreator; import com.bnyer.img.api.model.LoginCreator;
@ -20,6 +22,8 @@ import com.bnyer.common.core.utils.ServletUtils;
import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.system.api.model.LoginUser; import com.bnyer.system.api.model.LoginUser;
import java.util.Enumeration;
/** /**
* 自定义请求头拦截器将Header数据封装到线程变量中方便获取 * 自定义请求头拦截器将Header数据封装到线程变量中方便获取
* 注意此拦截器会同时验证当前用户有效期自动刷新有效期 * 注意此拦截器会同时验证当前用户有效期自动刷新有效期
@ -37,99 +41,176 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor
return true; return true;
} }
String pcToken = SecurityUtils.getToken(request); String platform = request.getHeader("platform");
String creatorToken = SecurityUtils.getCreatorToken(request); switch (platform){
String tiktokToken = SecurityUtils.getTiktokToken(request); //抖音
String fhToken = SecurityUtils.getFhToken(request); case UserClientTypeConstants.DU:
String wechatToken = SecurityUtils.getWechatToken(request); String tiktokToken = SecurityUtils.getTiktokToken(request);
if(StringUtils.isNotEmpty(pcToken)){ SecurityContextHolder.setTikTokUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USER_ID));
SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); SecurityContextHolder.setTikTokUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USERNAME));
SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); SecurityContextHolder.setTikTokUserKey(ServletUtils.getHeader(request, SecurityConstants.TIKTOK_USER_KEY));
SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); SecurityContextHolder.setTikTokOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_OPENID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokOpenId()));
LoginUser loginUser = AuthUtil.getLoginUser(pcToken); LoginTiktokUser loginTiktokUser = TiktokAuthUtil.getLoginUser(tiktokToken);
if (StringUtils.isNotNull(loginUser)) if (StringUtils.isNotNull(loginTiktokUser))
{ {
AuthUtil.verifyLoginUserExpire(loginUser); TiktokAuthUtil.verifyLoginUserExpire(loginTiktokUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_TIKTOK_USER, loginTiktokUser);
} }
}else if(StringUtils.isNotEmpty(creatorToken)){ break;
SecurityContextHolder.setCreatorId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_CREATOR_ID)); //快手
SecurityContextHolder.setCreatorPhone(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PHONE)); case UserClientTypeConstants.KU:
SecurityContextHolder.setCreatorKey(ServletUtils.getHeader(request, SecurityConstants.CREATOR_KEY)); String fhToken = SecurityUtils.getFhToken(request);
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getCreatorId())); SecurityContextHolder.setFhUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USER_ID));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getCreatorKey())); SecurityContextHolder.setFhUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USERNAME));
log.info("SecurityContextHolderPhone,{}", JSON.toJSONString(SecurityContextHolder.getCreatorPhone())); SecurityContextHolder.setFhUserKey(ServletUtils.getHeader(request, SecurityConstants.FH_USER_KEY));
SecurityContextHolder.setFhOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_OPENID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getFhUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getFhUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getFhUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getFhOpenId()));
LoginCreator loginUser = CreatorAuthUtil.getLoginUser(creatorToken); LoginFhUser loginFhUser = FhAuthUtil.getLoginUser(fhToken);
if (StringUtils.isNotNull(loginUser)) if (StringUtils.isNotNull(loginFhUser))
{ {
CreatorAuthUtil.verifyLoginUserExpire(loginUser); FhAuthUtil.verifyLoginUserExpire(loginFhUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_CREATOR, loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_FH_USER, loginFhUser);
} }
}else if(StringUtils.isNotEmpty(tiktokToken)){ break;
SecurityContextHolder.setTikTokUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USER_ID)); //微信
SecurityContextHolder.setTikTokUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USERNAME)); case UserClientTypeConstants.WU:
SecurityContextHolder.setTikTokUserKey(ServletUtils.getHeader(request, SecurityConstants.TIKTOK_USER_KEY)); String wechatToken = SecurityUtils.getWechatToken(request);
SecurityContextHolder.setTikTokOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_OPENID)); SecurityContextHolder.setWechatUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USER_ID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserId())); SecurityContextHolder.setWechatUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USERNAME));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserName())); SecurityContextHolder.setWechatUserKey(ServletUtils.getHeader(request, SecurityConstants.WECHAT_USER_KEY));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserKey())); SecurityContextHolder.setWechatOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_OPENID));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokOpenId())); log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getWechatOpenId()));
LoginTiktokUser loginUser = TiktokAuthUtil.getLoginUser(tiktokToken); LoginWechatUser loginWxUser = WechatAuthUtil.getLoginUser(wechatToken);
if (StringUtils.isNotNull(loginUser)) if (StringUtils.isNotNull(loginWxUser))
{ {
TiktokAuthUtil.verifyLoginUserExpire(loginUser); WechatAuthUtil.verifyLoginUserExpire(loginWxUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_TIKTOK_USER, loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginWxUser);
} }
}else if(StringUtils.isNotEmpty(fhToken)){ break;
SecurityContextHolder.setFhUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USER_ID)); //微信艺术家
SecurityContextHolder.setFhUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USERNAME)); case UserClientTypeConstants.WY:
SecurityContextHolder.setFhUserKey(ServletUtils.getHeader(request, SecurityConstants.FH_USER_KEY)); String creatorToken = SecurityUtils.getCreatorToken(request);
SecurityContextHolder.setFhOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_OPENID)); SecurityContextHolder.setCreatorId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_CREATOR_ID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getFhUserId())); SecurityContextHolder.setCreatorPhone(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PHONE));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getFhUserName())); SecurityContextHolder.setCreatorKey(ServletUtils.getHeader(request, SecurityConstants.CREATOR_KEY));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getFhUserKey())); log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getCreatorId()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getFhOpenId())); log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getCreatorKey()));
log.info("SecurityContextHolderPhone,{}", JSON.toJSONString(SecurityContextHolder.getCreatorPhone()));
LoginFhUser loginUser = FhAuthUtil.getLoginUser(fhToken); LoginCreator loginCreator = CreatorAuthUtil.getLoginUser(creatorToken);
if (StringUtils.isNotNull(loginUser)) if (StringUtils.isNotNull(loginCreator))
{ {
FhAuthUtil.verifyLoginUserExpire(loginUser); CreatorAuthUtil.verifyLoginUserExpire(loginCreator);
SecurityContextHolder.set(SecurityConstants.LOGIN_FH_USER, loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_CREATOR, loginCreator);
} }
}else if(StringUtils.isNotEmpty(wechatToken)){ break;
SecurityContextHolder.setWechatUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USER_ID)); //PC管理员
SecurityContextHolder.setWechatUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USERNAME)); case UserClientTypeConstants.PU:
SecurityContextHolder.setWechatUserKey(ServletUtils.getHeader(request, SecurityConstants.WECHAT_USER_KEY)); String pcToken = SecurityUtils.getToken(request);
SecurityContextHolder.setWechatOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_OPENID)); SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserId())); SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserName())); SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getWechatOpenId()));
LoginWechatUser loginUser = WechatAuthUtil.getLoginUser(wechatToken); LoginUser loginUser = AuthUtil.getLoginUser(pcToken);
if (StringUtils.isNotNull(loginUser)) if (StringUtils.isNotNull(loginUser))
{ {
WechatAuthUtil.verifyLoginUserExpire(loginUser); AuthUtil.verifyLoginUserExpire(loginUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser);
} }
break;
} }
// String pcToken = SecurityUtils.getToken(request);
// String creatorToken = SecurityUtils.getCreatorToken(request);
// String tiktokToken = SecurityUtils.getTiktokToken(request);
// String fhToken = SecurityUtils.getFhToken(request);
// String token = SecurityUtils.getToken(); // String wechatToken = SecurityUtils.getWechatToken(request);
// if (StringUtils.isNotEmpty(token)) // if(StringUtils.isNotEmpty(pcToken)){
// { // SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID));
// LoginUser loginUser = AuthUtil.getLoginUser(token); // SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME));
// SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
//
// LoginUser loginUser = AuthUtil.getLoginUser(pcToken);
// if (StringUtils.isNotNull(loginUser)) // if (StringUtils.isNotNull(loginUser))
// { // {
// AuthUtil.verifyLoginUserExpire(loginUser); // AuthUtil.verifyLoginUserExpire(loginUser);
// SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); // SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser);
// } // }
// }else if(StringUtils.isNotEmpty(creatorToken)){
// SecurityContextHolder.setCreatorId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_CREATOR_ID));
// SecurityContextHolder.setCreatorPhone(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PHONE));
// SecurityContextHolder.setCreatorKey(ServletUtils.getHeader(request, SecurityConstants.CREATOR_KEY));
// log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getCreatorId()));
// log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getCreatorKey()));
// log.info("SecurityContextHolderPhone,{}", JSON.toJSONString(SecurityContextHolder.getCreatorPhone()));
//
// LoginCreator loginUser = CreatorAuthUtil.getLoginUser(creatorToken);
// if (StringUtils.isNotNull(loginUser))
// {
// CreatorAuthUtil.verifyLoginUserExpire(loginUser);
// SecurityContextHolder.set(SecurityConstants.LOGIN_CREATOR, loginUser);
// }
// }else if(StringUtils.isNotEmpty(tiktokToken)){
// SecurityContextHolder.setTikTokUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USER_ID));
// SecurityContextHolder.setTikTokUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USERNAME));
// SecurityContextHolder.setTikTokUserKey(ServletUtils.getHeader(request, SecurityConstants.TIKTOK_USER_KEY));
// SecurityContextHolder.setTikTokOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_OPENID));
// log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserId()));
// log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserName()));
// log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserKey()));
// log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokOpenId()));
//
// LoginTiktokUser loginUser = TiktokAuthUtil.getLoginUser(tiktokToken);
// if (StringUtils.isNotNull(loginUser))
// {
// TiktokAuthUtil.verifyLoginUserExpire(loginUser);
// SecurityContextHolder.set(SecurityConstants.LOGIN_TIKTOK_USER, loginUser);
// }
// }else if(StringUtils.isNotEmpty(fhToken)){
// SecurityContextHolder.setFhUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USER_ID));
// SecurityContextHolder.setFhUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USERNAME));
// SecurityContextHolder.setFhUserKey(ServletUtils.getHeader(request, SecurityConstants.FH_USER_KEY));
// SecurityContextHolder.setFhOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_OPENID));
// log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getFhUserId()));
// log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getFhUserName()));
// log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getFhUserKey()));
// log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getFhOpenId()));
//
// LoginFhUser loginUser = FhAuthUtil.getLoginUser(fhToken);
// if (StringUtils.isNotNull(loginUser))
// {
// FhAuthUtil.verifyLoginUserExpire(loginUser);
// SecurityContextHolder.set(SecurityConstants.LOGIN_FH_USER, loginUser);
// }
// }else if(StringUtils.isNotEmpty(wechatToken)){
// SecurityContextHolder.setWechatUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USER_ID));
// SecurityContextHolder.setWechatUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USERNAME));
// SecurityContextHolder.setWechatUserKey(ServletUtils.getHeader(request, SecurityConstants.WECHAT_USER_KEY));
// SecurityContextHolder.setWechatOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_OPENID));
// log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserId()));
// log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserName()));
// log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserKey()));
// log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getWechatOpenId()));
//
// LoginWechatUser loginUser = WechatAuthUtil.getLoginUser(wechatToken);
// if (StringUtils.isNotNull(loginUser))
// {
// WechatAuthUtil.verifyLoginUserExpire(loginUser);
// SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginUser);
// }
// } // }
return true; return true;
} }

35
bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java

@ -2,6 +2,8 @@ package com.bnyer.common.security.utils;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.bnyer.common.core.constant.UserClientTypeConstants;
import com.bnyer.common.core.enums.EnumUserClientType;
import com.bnyer.img.api.model.LoginCreator; import com.bnyer.img.api.model.LoginCreator;
import com.bnyer.img.api.model.LoginFhUser; import com.bnyer.img.api.model.LoginFhUser;
import com.bnyer.img.api.model.LoginTiktokUser; import com.bnyer.img.api.model.LoginTiktokUser;
@ -13,6 +15,8 @@ import com.bnyer.common.core.constant.TokenConstants;
import com.bnyer.common.core.context.SecurityContextHolder; import com.bnyer.common.core.context.SecurityContextHolder;
import com.bnyer.common.core.utils.ServletUtils; import com.bnyer.common.core.utils.ServletUtils;
import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Objects; import java.util.Objects;
@ -24,6 +28,37 @@ import java.util.Objects;
public class SecurityUtils public class SecurityUtils
{ {
//******************************通用获取信息开始*********************************************
/**
* 根据从header中获取类型判断从而获取用户信息
* @param <T> 用户信息
* @return -
*/
public <T> T getUserInfo(){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String platform = request.getHeader("platform");
switch (platform){
case UserClientTypeConstants.DU:
LoginTiktokUser loginTikTokUser = getLoginTikTokUser();
return (T) loginTikTokUser;
case UserClientTypeConstants.WU:
LoginWechatUser loginWechatUser = getLoginWechatUser();
return (T) loginWechatUser;
case UserClientTypeConstants.KU:
LoginFhUser loginFhUser = getLoginFhUser();
return (T) loginFhUser;
case UserClientTypeConstants.WY:
LoginCreator loginCreator = getLoginCreator();
return (T) loginCreator;
default:
break;
}
return null;
}
//******************************通用获取信息结束*********************************************
//***************************PC信息开始********************************************* //***************************PC信息开始*********************************************
/** /**
* 获取用户ID * 获取用户ID

7
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java

@ -459,4 +459,11 @@ public class TiktokMiniController extends BaseController {
paintCdkService.useCdk(dto.getCdk(),dto.getSource(),dto.getUserId(),dto.getAppType()); paintCdkService.useCdk(dto.getCdk(),dto.getSource(),dto.getUserId(),dto.getAppType());
return AjaxResult.success(); return AjaxResult.success();
} }
@ApiOperation(value="设置Ai绘画开关")
@GetMapping(value = "/setAiPaint/{buttonValue}")
public AjaxResult setAiPaint(@PathVariable int buttonValue){
stableDiffusionService.setPaintButton(buttonValue);
return AjaxResult.success();
}
} }

20
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/enums/AiPaintButtonEnum.java

@ -0,0 +1,20 @@
package com.bnyer.img.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* ai绘画采用sd或tx文生图枚举类
* @author chengkun
* @date 2023/4/19 17:46
*/
@Getter
@AllArgsConstructor
public enum AiPaintButtonEnum {
SD(1,"stable diffusion"),
TX(0,"tx文生图");
private int code;
private String msg;
}

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/StableDiffusionService.java

@ -23,4 +23,10 @@ public interface StableDiffusionService {
* @param paintNUm 绘画次数 * @param paintNUm 绘画次数
*/ */
void addPlatformUserAiPaintNum(String appType,String platform,Long userId,int paintNUm); void addPlatformUserAiPaintNum(String appType,String platform,Long userId,int paintNUm);
/**
* 设置AI绘画button值
* @param buttonValue
*/
void setPaintButton(int buttonValue);
} }

184
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.constant.RedisKeyConstant; import com.bnyer.common.core.constant.RedisKeyConstant;
import com.bnyer.common.core.domain.AiPaint; import com.bnyer.common.core.domain.AiPaint;
import com.bnyer.common.core.dto.TextToImgDto; import com.bnyer.common.core.dto.TextToImgDto;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.TranslateUtils; import com.bnyer.common.core.utils.TranslateUtils;
import com.bnyer.common.core.utils.file.Base64ToMultipartFileUtils; import com.bnyer.common.core.utils.file.Base64ToMultipartFileUtils;
import com.bnyer.common.core.vo.TextToImgVo; import com.bnyer.common.core.vo.TextToImgVo;
@ -13,8 +14,13 @@ import com.bnyer.common.redis.service.RedisService;
import com.bnyer.file.api.RemoteFileService; import com.bnyer.file.api.RemoteFileService;
import com.bnyer.img.config.StableDiffusionConfig; import com.bnyer.img.config.StableDiffusionConfig;
import com.bnyer.img.config.TencentTranslateConfig; import com.bnyer.img.config.TencentTranslateConfig;
import com.bnyer.img.enums.AiPaintButtonEnum;
import com.bnyer.img.service.AiPaintService; import com.bnyer.img.service.AiPaintService;
import com.bnyer.img.service.StableDiffusionService; import com.bnyer.img.service.StableDiffusionService;
import com.tencentcloudapi.aiart.v20221229.AiartClient;
import com.tencentcloudapi.aiart.v20221229.models.ResultConfig;
import com.tencentcloudapi.aiart.v20221229.models.TextToImageRequest;
import com.tencentcloudapi.aiart.v20221229.models.TextToImageResponse;
import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.ClientProfile;
@ -29,10 +35,7 @@ import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service @Service
@Slf4j @Slf4j
@ -85,43 +88,63 @@ public class StableDiffusionServiceImpl implements StableDiffusionService {
@Override @Override
public TextToImgVo textToImg(TextToImgDto param) { public TextToImgVo textToImg(TextToImgDto param) {
try{
String prompt = ""; //配置控制采用sd还是tx文生图
//判断prompt是否包含中文,中文则翻译,否则跳过 int button = redisService.getCacheObject(RedisKeyConstant.AI_PAINT_BUTTON);
if(TranslateUtils.isContainChinese(param.getPrompt())){ if(button == AiPaintButtonEnum.TX.getCode()){
//调用翻译api //采用腾讯文生图
prompt = translate(param.getPrompt()); try{
}else{ Credential cred = new Credential(tencentTranslateConfig.getSecretId(), tencentTranslateConfig.getSecretKey());
prompt = param.getPrompt(); // 实例化一个http选项,可选的,没有特殊需求可以跳过
} HttpProfile httpProfile = new HttpProfile();
System.out.println(prompt); httpProfile.setEndpoint("aiart.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
//TODO 根据选择的风格来选择模型 ClientProfile clientProfile = new ClientProfile();
Map<String, Object> map = new HashMap<>(); clientProfile.setHttpProfile(httpProfile);
map.put("width",param.getWidth() == null ? 512 : param.getWidth()); // 实例化要请求产品的client对象,clientProfile是可选的
map.put("height",param.getHeight() == null ? 512 : param.getHeight()); AiartClient client = new AiartClient(cred, "ap-guangzhou", clientProfile);
map.put("prompt", prompt); // 实例化一个请求对象,每个接口都会对应一个request对象
//map.put("prompt", param.getPrompt()); TextToImageRequest req = new TextToImageRequest();
map.put("seed",-1); req.setPrompt(param.getPrompt());
map.put("batch_size",1); //请求风格
map.put("cfg_scale",7); String[] styles1 = new String[0];
map.put("restore_faces",false); switch (param.getStyleName()) {
map.put("tiling",false); case "细腻":
map.put("eta",0); styles1 = new String[]{"110"};
map.put("sampler_index","DPM++ 2S a Karras"); break;
//map.put("sampler_index",param.getSamplerIndex()); case "卡通":
map.put("steps",25); styles1 = new String[]{"201"};
map.put("negative_prompt","easynegative"); break;
//log.info("请求stable_diffusion请求体为:【{}】", JSON.toJSONString(map)); case "科幻":
JSONObject jsonObject = restTemplate.postForObject(stableDiffusionConfig.getTxt2ImgUrl(), map, JSONObject.class); styles1 = new String[]{"114"};
//log.info("请求stable_diffusion响应体的为:【{}】", JSON.toJSONString(jsonObject)); break;
TextToImgVo img = new TextToImgVo(); case "中国风":
if(jsonObject != null && jsonObject.getJSONArray("images").size() > 0){ styles1 = new String[]{"101"};
List<String> images = jsonObject.getJSONArray("images").toJavaList(String.class); break;
img.setImages(images); }
req.setStyles(styles1);
//画布大小
ResultConfig resultConfig1 = new ResultConfig();
if(param.getWidth() == 512 && param.getHeight() == 512){
resultConfig1.setResolution("768:768");
}else if(param.getWidth() == 512 && param.getHeight() == 1024){
resultConfig1.setResolution("768:1024");
}else{
resultConfig1.setResolution("1024:768");
}
req.setResultConfig(resultConfig1);
// 返回的resp是一个TextToImageResponse的实例,与请求对象对应
TextToImageResponse resp = client.TextToImage(req);
TextToImgVo img = new TextToImgVo();
String images = resp.getResultImage();
List<String> list = new ArrayList<>();
list.add(images);
img.setImages(list);
String paintId = null; String paintId = null;
Date paintTime = null; Date paintTime = null;
for (String image : images) { for (String image : list) {
//base64转file //base64转file
MultipartFile file = new Base64ToMultipartFileUtils(image, "data:image/png;base64", "file", "tempSDImg"); MultipartFile file = new Base64ToMultipartFileUtils(image, "data:image/png;base64", "file", "tempSDImg");
//上传图片到七牛云/minio //上传图片到七牛云/minio
@ -149,10 +172,82 @@ public class StableDiffusionServiceImpl implements StableDiffusionService {
} }
img.setPaintId(paintId); img.setPaintId(paintId);
img.setPaintTime(paintTime); img.setPaintTime(paintTime);
return img;
} catch (TencentCloudSDKException e) {
log.error("腾讯文生图调用错误!"+e.getMessage());
throw new ServiceException(e.getMessage(),500);
}
}else{
//采用sd
try{
String prompt = "";
//判断prompt是否包含中文,中文则翻译,否则跳过
if(TranslateUtils.isContainChinese(param.getPrompt())){
//调用翻译api
prompt = translate(param.getPrompt());
}else{
prompt = param.getPrompt();
}
System.out.println(prompt);
//TODO 根据选择的风格来选择模型
Map<String, Object> map = new HashMap<>();
map.put("width",param.getWidth() == null ? 512 : param.getWidth());
map.put("height",param.getHeight() == null ? 512 : param.getHeight());
map.put("prompt", prompt);
//map.put("prompt", param.getPrompt());
map.put("seed",-1);
map.put("batch_size",1);
map.put("cfg_scale",7);
map.put("restore_faces",false);
map.put("tiling",false);
map.put("eta",0);
map.put("sampler_index","DPM++ 2S a Karras");
//map.put("sampler_index",param.getSamplerIndex());
map.put("steps",25);
map.put("negative_prompt","easynegative,nsfw,naked");
//log.info("请求stable_diffusion请求体为:【{}】", JSON.toJSONString(map));
JSONObject jsonObject = restTemplate.postForObject(stableDiffusionConfig.getTxt2ImgUrl(), map, JSONObject.class);
//log.info("请求stable_diffusion响应体的为:【{}】", JSON.toJSONString(jsonObject));
TextToImgVo img = new TextToImgVo();
if(jsonObject != null && jsonObject.getJSONArray("images").size() > 0){
List<String> images = jsonObject.getJSONArray("images").toJavaList(String.class);
img.setImages(images);
String paintId = null;
Date paintTime = null;
for (String image : images) {
//base64转file
MultipartFile file = new Base64ToMultipartFileUtils(image, "data:image/png;base64", "file", "tempSDImg");
//上传图片到七牛云/minio
String imgStr = remoteFileService.uploadBanner(file).getData();
//保存生辰该图片到ai绘画表
AiPaint paint = new AiPaint();
//paint.setId(); 主键改成雪花算法后启用
paintId = IdUtil.getSnowflakeNextIdStr();
paintTime = new Date();
paint.setPaintId(paintId);
paint.setCreateTime(paintTime);
paint.setImgUrl(imgStr);
paint.setPrompt(param.getPrompt());
paint.setModel(param.getModelName());
paint.setStyleName(param.getStyleName());
paint.setHeight(param.getHeight() == null ? "512" : String.valueOf(param.getHeight()));
paint.setWidth(param.getWidth() == null ? "512" : String.valueOf(param.getWidth()));
paint.setIsShow("1");
paint.setSource(param.getPlatform());
paint.setPainterId(param.getPainterId());
paint.setPainterName(param.getPainterName());
aiPaintService.insert(paint);
//写入ai绘画次数
writePlatformUserAiPaintNum(param.getAppType(),param.getPlatform(),param.getPainterId());
}
img.setPaintId(paintId);
img.setPaintTime(paintTime);
}
return img;
}catch (Exception e){
log.error("文本翻译错误!"+e);
} }
return img;
}catch (Exception e){
log.error("文本翻译错误!"+e);
} }
return null; return null;
} }
@ -186,4 +281,9 @@ public class StableDiffusionServiceImpl implements StableDiffusionService {
String redisKey = RedisKeyConstant.PLATFORM_USER_AI_PAINT_KEY + date; String redisKey = RedisKeyConstant.PLATFORM_USER_AI_PAINT_KEY + date;
redisService.hashIncr(redisKey, hashKey, -patinNum); redisService.hashIncr(redisKey, hashKey, -patinNum);
} }
@Override
public void setPaintButton(int buttonValue) {
redisService.setCacheObject(RedisKeyConstant.AI_PAINT_BUTTON,buttonValue);
}
} }

Loading…
Cancel
Save