diff --git a/bnyer-common/bnyer-common-core/pom.xml b/bnyer-common/bnyer-common-core/pom.xml index 9627846..d1d4b4c 100644 --- a/bnyer-common/bnyer-common-core/pom.xml +++ b/bnyer-common/bnyer-common-core/pom.xml @@ -151,6 +151,12 @@ tencentcloud-sdk-java-tmt 3.1.715 + + + com.tencentcloudapi + tencentcloud-sdk-java-aiart + 3.1.715 + diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java index 5a82994..178f6eb 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java @@ -102,6 +102,11 @@ public class RedisKeyConstant { * 平台用户ai绘画键 */ 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"; /** * 艺术家上传键 */ diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/UserClientTypeConstants.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/UserClientTypeConstants.java new file mode 100644 index 0000000..dccca30 --- /dev/null +++ b/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"; +} diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/EnumUserClientType.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/EnumUserClientType.java index 79958fd..cfe6a9a 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/EnumUserClientType.java +++ b/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","快手用户"), WU(30,"WU","微信用户"), WY(40,"WY","微信艺术家"), + PU(50,"PU","pc管理员") ; private final int type; diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java index 0711b83..3a6bd04 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java +++ b/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.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.utils.SecurityUtils; 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.system.api.model.LoginUser; +import java.util.Enumeration; + /** * 自定义请求头拦截器,将Header数据封装到线程变量中方便获取 * 注意:此拦截器会同时验证当前用户有效期自动刷新有效期 @@ -37,99 +41,176 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor return true; } - String pcToken = SecurityUtils.getToken(request); - String creatorToken = SecurityUtils.getCreatorToken(request); - String tiktokToken = SecurityUtils.getTiktokToken(request); - String fhToken = SecurityUtils.getFhToken(request); - String wechatToken = SecurityUtils.getWechatToken(request); - if(StringUtils.isNotEmpty(pcToken)){ - SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); - SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); - SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); + String platform = request.getHeader("platform"); + switch (platform){ + //抖音 + case UserClientTypeConstants.DU: + String tiktokToken = SecurityUtils.getTiktokToken(request); + 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())); - LoginUser loginUser = AuthUtil.getLoginUser(pcToken); - if (StringUtils.isNotNull(loginUser)) - { - AuthUtil.verifyLoginUserExpire(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())); + LoginTiktokUser loginTiktokUser = TiktokAuthUtil.getLoginUser(tiktokToken); + if (StringUtils.isNotNull(loginTiktokUser)) + { + TiktokAuthUtil.verifyLoginUserExpire(loginTiktokUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_TIKTOK_USER, loginTiktokUser); + } + break; + //快手 + case UserClientTypeConstants.KU: + String fhToken = SecurityUtils.getFhToken(request); + 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())); - 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())); + LoginFhUser loginFhUser = FhAuthUtil.getLoginUser(fhToken); + if (StringUtils.isNotNull(loginFhUser)) + { + FhAuthUtil.verifyLoginUserExpire(loginFhUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_FH_USER, loginFhUser); + } + break; + //微信 + case UserClientTypeConstants.WU: + String wechatToken = SecurityUtils.getWechatToken(request); + 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())); - 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())); + LoginWechatUser loginWxUser = WechatAuthUtil.getLoginUser(wechatToken); + if (StringUtils.isNotNull(loginWxUser)) + { + WechatAuthUtil.verifyLoginUserExpire(loginWxUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginWxUser); + } + break; + //微信艺术家 + case UserClientTypeConstants.WY: + String creatorToken = SecurityUtils.getCreatorToken(request); + 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())); - 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())); + LoginCreator loginCreator = CreatorAuthUtil.getLoginUser(creatorToken); + if (StringUtils.isNotNull(loginCreator)) + { + CreatorAuthUtil.verifyLoginUserExpire(loginCreator); + SecurityContextHolder.set(SecurityConstants.LOGIN_CREATOR, loginCreator); + } + break; + //PC管理员 + case UserClientTypeConstants.PU: + String pcToken = SecurityUtils.getToken(request); + SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); + SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); + SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); - LoginWechatUser loginUser = WechatAuthUtil.getLoginUser(wechatToken); - if (StringUtils.isNotNull(loginUser)) - { - WechatAuthUtil.verifyLoginUserExpire(loginUser); - SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginUser); - } + LoginUser loginUser = AuthUtil.getLoginUser(pcToken); + if (StringUtils.isNotNull(loginUser)) + { + AuthUtil.verifyLoginUserExpire(loginUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); + } + break; } - - - - -// String token = SecurityUtils.getToken(); -// if (StringUtils.isNotEmpty(token)) -// { -// LoginUser loginUser = AuthUtil.getLoginUser(token); +// String pcToken = SecurityUtils.getToken(request); +// String creatorToken = SecurityUtils.getCreatorToken(request); +// String tiktokToken = SecurityUtils.getTiktokToken(request); +// String fhToken = SecurityUtils.getFhToken(request); +// String wechatToken = SecurityUtils.getWechatToken(request); +// if(StringUtils.isNotEmpty(pcToken)){ +// SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); +// 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)) // { // AuthUtil.verifyLoginUserExpire(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; } diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java index dba38f6..5402d26 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java +++ b/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 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.LoginFhUser; 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.utils.ServletUtils; 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; @@ -24,6 +28,37 @@ import java.util.Objects; public class SecurityUtils { + //******************************通用获取信息开始********************************************* + + /** + * 根据从header中获取类型判断,从而获取用户信息 + * @param 用户信息 + * @return - + */ + public 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信息开始********************************************* /** * 获取用户ID diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java index 5bf8422..e41c13c 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java +++ b/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()); return AjaxResult.success(); } + + @ApiOperation(value="设置Ai绘画开关") + @GetMapping(value = "/setAiPaint/{buttonValue}") + public AjaxResult setAiPaint(@PathVariable int buttonValue){ + stableDiffusionService.setPaintButton(buttonValue); + return AjaxResult.success(); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/enums/AiPaintButtonEnum.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/enums/AiPaintButtonEnum.java new file mode 100644 index 0000000..dbc0764 --- /dev/null +++ b/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; +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/StableDiffusionService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/StableDiffusionService.java index 5b9cec4..d8d9025 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/StableDiffusionService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/StableDiffusionService.java @@ -23,4 +23,10 @@ public interface StableDiffusionService { * @param paintNUm 绘画次数 */ void addPlatformUserAiPaintNum(String appType,String platform,Long userId,int paintNUm); + + /** + * 设置AI绘画button值 + * @param buttonValue + */ + void setPaintButton(int buttonValue); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java index fc2fbb3..6eca136 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java +++ b/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.domain.AiPaint; 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.file.Base64ToMultipartFileUtils; 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.img.config.StableDiffusionConfig; import com.bnyer.img.config.TencentTranslateConfig; +import com.bnyer.img.enums.AiPaintButtonEnum; import com.bnyer.img.service.AiPaintService; 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.exception.TencentCloudSDKException; import com.tencentcloudapi.common.profile.ClientProfile; @@ -29,10 +35,7 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Service @Slf4j @@ -85,43 +88,63 @@ public class StableDiffusionServiceImpl implements StableDiffusionService { @Override public TextToImgVo textToImg(TextToImgDto param) { - try{ - String prompt = ""; - //判断prompt是否包含中文,中文则翻译,否则跳过 - if(TranslateUtils.isContainChinese(param.getPrompt())){ - //调用翻译api - prompt = translate(param.getPrompt()); - }else{ - prompt = param.getPrompt(); - } - System.out.println(prompt); - - //TODO 根据选择的风格来选择模型 - Map 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"); - //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 images = jsonObject.getJSONArray("images").toJavaList(String.class); - img.setImages(images); + + //配置控制采用sd还是tx文生图 + int button = redisService.getCacheObject(RedisKeyConstant.AI_PAINT_BUTTON); + if(button == AiPaintButtonEnum.TX.getCode()){ + //采用腾讯文生图 + try{ + Credential cred = new Credential(tencentTranslateConfig.getSecretId(), tencentTranslateConfig.getSecretKey()); + // 实例化一个http选项,可选的,没有特殊需求可以跳过 + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint("aiart.tencentcloudapi.com"); + // 实例化一个client选项,可选的,没有特殊需求可以跳过 + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + // 实例化要请求产品的client对象,clientProfile是可选的 + AiartClient client = new AiartClient(cred, "ap-guangzhou", clientProfile); + // 实例化一个请求对象,每个接口都会对应一个request对象 + TextToImageRequest req = new TextToImageRequest(); + req.setPrompt(param.getPrompt()); + //请求风格 + String[] styles1 = new String[0]; + switch (param.getStyleName()) { + case "细腻": + styles1 = new String[]{"110"}; + break; + case "卡通": + styles1 = new String[]{"201"}; + break; + case "科幻": + styles1 = new String[]{"114"}; + break; + case "中国风": + styles1 = new String[]{"101"}; + break; + } + 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 list = new ArrayList<>(); + list.add(images); + img.setImages(list); String paintId = null; Date paintTime = null; - for (String image : images) { + for (String image : list) { //base64转file MultipartFile file = new Base64ToMultipartFileUtils(image, "data:image/png;base64", "file", "tempSDImg"); //上传图片到七牛云/minio @@ -149,10 +172,82 @@ public class StableDiffusionServiceImpl implements StableDiffusionService { } img.setPaintId(paintId); 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 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 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; } @@ -186,4 +281,9 @@ public class StableDiffusionServiceImpl implements StableDiffusionService { String redisKey = RedisKeyConstant.PLATFORM_USER_AI_PAINT_KEY + date; redisService.hashIncr(redisKey, hashKey, -patinNum); } + + @Override + public void setPaintButton(int buttonValue) { + redisService.setCacheObject(RedisKeyConstant.AI_PAINT_BUTTON,buttonValue); + } }