diff --git a/bnyer-common/bnyer-common-core/pom.xml b/bnyer-common/bnyer-common-core/pom.xml index e522210..b24cbb2 100644 --- a/bnyer-common/bnyer-common-core/pom.xml +++ b/bnyer-common/bnyer-common-core/pom.xml @@ -135,6 +135,18 @@ hutool-all + + + + + + + + com.tencentcloudapi + tencentcloud-sdk-java + 3.1.717 + + diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/client/TmtClient.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/client/TmtClient.java new file mode 100644 index 0000000..2ef0325 --- /dev/null +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/client/TmtClient.java @@ -0,0 +1,50 @@ +package com.bnyer.common.core.client; + +import com.bnyer.common.core.dto.TextTranslateDto; +import com.bnyer.common.core.vo.TextTranslateVo; +import com.google.gson.JsonSyntaxException; +import com.google.gson.reflect.TypeToken; +import com.tencentcloudapi.common.AbstractClient; +import com.tencentcloudapi.common.Credential; +import com.tencentcloudapi.common.JsonResponseModel; +import com.tencentcloudapi.common.exception.TencentCloudSDKException; +import com.tencentcloudapi.common.profile.ClientProfile; + +import java.lang.reflect.Type; + +/** + * 翻译方法类 + */ +public class TmtClient extends AbstractClient { + private static String endpoint = "tmt.tencentcloudapi.com"; + private static String service = "tmt"; + private static String version = "2018-03-21"; + + public TmtClient(Credential credential, String region) { + this(credential, region, new ClientProfile()); + } + + public TmtClient(Credential credential, String region, ClientProfile profile) { + super(TmtClient.endpoint, TmtClient.version, credential, region, profile); + } + + /** + * 汉译英 + * @param req TextTranslateRequest + * @return TextTranslateResponse + * @throws TencentCloudSDKException + */ + public TextTranslateVo TextTranslate(TextTranslateDto req) throws TencentCloudSDKException { + JsonResponseModel rsp = null; + String rspStr = ""; + try { + Type type = new TypeToken>() { + }.getType(); + rspStr = this.internalRequest(req, "TextTranslate"); + rsp = gson.fromJson(rspStr, type); + } catch (JsonSyntaxException e) { + throw new TencentCloudSDKException("response message: " + rspStr + ".\n Error message: " + e.getMessage()); + } + return rsp.response; + } +} \ No newline at end of file diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/TextTranslateDto.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/TextTranslateDto.java new file mode 100644 index 0000000..6210ad0 --- /dev/null +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/TextTranslateDto.java @@ -0,0 +1,31 @@ +package com.bnyer.common.core.dto; + +import com.tencentcloudapi.common.AbstractModel; +import lombok.Data; + +import java.util.HashMap; + +/** + * 翻译接收参数类 + */ +@Data +public class TextTranslateDto extends AbstractModel { + + //翻译文本 + + private String SourceText; + + //源翻译语言 + private String Source; + + //目标翻译语言 + private String Target; + + //项目id + private Long ProjectId; + + @Override + protected void toMap(HashMap hashMap, String s) { + + } +} diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/TextTranslateVo.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/TextTranslateVo.java new file mode 100644 index 0000000..9a656d9 --- /dev/null +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/TextTranslateVo.java @@ -0,0 +1,23 @@ +package com.bnyer.common.core.vo; + +import lombok.Data; + +/** + * 翻译接收响应类 + */ +@Data +public class TextTranslateVo { + + //翻译后的文本 + private String TargetText; + + //源翻译语言 + private String Source; + + //目标翻译语言 + private String Target; + + //请求id + private String RequestId; + +} diff --git a/bnyer-services/bnyer-img/pom.xml b/bnyer-services/bnyer-img/pom.xml index 63cd400..dcb287e 100644 --- a/bnyer-services/bnyer-img/pom.xml +++ b/bnyer-services/bnyer-img/pom.xml @@ -128,6 +128,7 @@ com.alipay.sdk alipay-sdk-java + diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TencentTranslateConfig.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TencentTranslateConfig.java new file mode 100644 index 0000000..72f05b3 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TencentTranslateConfig.java @@ -0,0 +1,40 @@ +package com.bnyer.img.config; + +//import com.bnyer.img.handler.TokenCheckHandler; + +import lombok.Getter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +/** + * 腾讯翻译api配置类 + * @author chengkun + * @date 2023/4/21 17:43 + */ +@Configuration +@ConfigurationProperties(prefix = "translate") +@Getter +@RefreshScope +public class TencentTranslateConfig { + + @Value("${translate.url}") + private String url; + + @Value("${translate.secretId}") + private String secretId; + + @Value("${translate.secretKey}") + private String secretKey; + + @Value("${translate.region}") + private String region; + + @Value("${translate.projectId}") + private String projectId; + + + + +} 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 1fccd3a..2426bde 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 @@ -3,19 +3,24 @@ package com.bnyer.img.service.impl; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.bnyer.common.core.client.TmtClient; import com.bnyer.common.core.constant.RedisKeyConstant; import com.bnyer.common.core.domain.AiPaint; -import com.bnyer.common.core.domain.R; import com.bnyer.common.core.dto.TextToImgDto; +import com.bnyer.common.core.dto.TextTranslateDto; import com.bnyer.common.core.utils.TranslateUtils; import com.bnyer.common.core.utils.file.Base64ToMultipartFileUtils; -import com.bnyer.common.core.utils.file.ImageUtils; import com.bnyer.common.core.vo.TextToImgVo; +import com.bnyer.common.core.vo.TextTranslateVo; import com.bnyer.common.redis.service.RedisService; import com.bnyer.file.api.RemoteFileService; +import com.bnyer.img.config.TencentTranslateConfig; import com.bnyer.img.service.AiPaintService; import com.bnyer.img.service.StableDiffusionService; -import com.bnyer.system.api.RemoteSystemFileService; +import com.tencentcloudapi.common.Credential; +import com.tencentcloudapi.common.exception.TencentCloudSDKException; +import com.tencentcloudapi.common.profile.ClientProfile; +import com.tencentcloudapi.common.profile.HttpProfile; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,25 +49,54 @@ public class StableDiffusionServiceImpl implements StableDiffusionService { @Autowired private RedisService redisService; + @Autowired + private TencentTranslateConfig tencentTranslateConfig; + + private String translate(String text){ + try{ + Credential cred = new Credential(tencentTranslateConfig.getSecretId(), tencentTranslateConfig.getSecretKey()); + // 实例化一个http选项,可选的,没有特殊需求可以跳过 + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint(tencentTranslateConfig.getUrl()); + // 实例化一个client选项,可选的,没有特殊需求可以跳过 + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + // 实例化要请求产品的client对象,clientProfile是可选的 + TmtClient client = new TmtClient(cred, tencentTranslateConfig.getRegion(), clientProfile); + // 实例化一个请求对象,每个接口都会对应一个request对象 + TextTranslateDto req = new TextTranslateDto(); + req.setSourceText(text); + req.setSource("zh"); + req.setTarget("en"); + req.setProjectId(Long.parseLong(tencentTranslateConfig.getProjectId())); + // 返回的resp是一个TextTranslateResponse的实例,与请求对象对应 + TextTranslateVo resp = client.TextTranslate(req); + return resp.getTargetText(); + } catch (TencentCloudSDKException e) { + log.error("调用腾讯api失败"+e.toString()); + } + return ""; + } + @Override public TextToImgVo textToImg(TextToImgDto param) { try{ - //String prompt = ""; + String prompt = ""; //判断prompt是否包含中文,中文则翻译,否则跳过 -// if(TranslateUtils.isContainChinese(param.getPrompt())){ -// //调用翻译api -// //prompt = -// prompt = param.getPrompt(); -// }else{ -// prompt = param.getPrompt(); -// } + 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("prompt", prompt); + //map.put("prompt", param.getPrompt()); map.put("seed",-1); map.put("batch_size",1); map.put("cfg_scale",7);