From 24a1b92fc44aebaf757baa21920c97026dfdfc16 Mon Sep 17 00:00:00 2001 From: guojunjie <929319388@qq.com> Date: Thu, 23 Jan 2025 12:07:51 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pa/controller/PaCollectionController.java | 6 ++++ .../controller/AiPictureController.java | 8 +++++ .../api/picture/schedule/ScheduledTasks.java | 12 +++---- .../service/impl/AiPictureServiceImpl.java | 34 ++++++++++++------- .../pixelai/api/picture/util/JSONUtil.java | 26 ++++++++++++++ .../api/picture/util/VolcengineUtil.java | 9 +++-- .../pixelai/api/picture/vo/AiPictureVo.java | 3 ++ src/main/resources/mapper/AcUserMapper.xml | 2 +- .../resources/mapper/PaCollectionMapper.xml | 2 +- .../resources/mapper/PaPictureWallMapper.xml | 3 +- 10 files changed, 80 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/pixelai/api/picture/util/JSONUtil.java diff --git a/src/main/java/com/pixelai/api/pa/controller/PaCollectionController.java b/src/main/java/com/pixelai/api/pa/controller/PaCollectionController.java index f3e5e3e..09aefcc 100644 --- a/src/main/java/com/pixelai/api/pa/controller/PaCollectionController.java +++ b/src/main/java/com/pixelai/api/pa/controller/PaCollectionController.java @@ -102,6 +102,12 @@ public class PaCollectionController extends BaseController { if (userid==null){ return new Result(false, "用户不存在"); } + Integer count=entityService.lambdaQuery() + .eq(PaCollection::getUserId,userid) + .eq(PaCollection::getCreationId,entity.getCreationId()).count(); + if(count>0){ + return new Result(false, "请勿重复收藏作品"); + } entity.setState("t"); entity.setUserId(userid); entity.setCreatetime(new Date()); diff --git a/src/main/java/com/pixelai/api/picture/controller/AiPictureController.java b/src/main/java/com/pixelai/api/picture/controller/AiPictureController.java index 9ae0a58..34fb4fa 100644 --- a/src/main/java/com/pixelai/api/picture/controller/AiPictureController.java +++ b/src/main/java/com/pixelai/api/picture/controller/AiPictureController.java @@ -81,6 +81,14 @@ public class AiPictureController { if (paServices==null) return new Result(false, "该服务不存在", "该服务不存在"); + //服务单独判断 + if(aiPictureVo.getServiceId()==7 && aiPictureVo.getText().length()>6 ){ + return new Result(false, "字数超过限制", "字数超过限制"); + } + if(aiPictureVo.getServiceId()==8 && aiPictureVo.getText().length()>200 ){ + return new Result(false, "字数超过限制", "字数超过限制"); + } + //进行扣费并记录日志 Boolean pay=paVipCurrencyService.consume(userId,paServices); if (!pay){ diff --git a/src/main/java/com/pixelai/api/picture/schedule/ScheduledTasks.java b/src/main/java/com/pixelai/api/picture/schedule/ScheduledTasks.java index f31c1a7..04865b8 100644 --- a/src/main/java/com/pixelai/api/picture/schedule/ScheduledTasks.java +++ b/src/main/java/com/pixelai/api/picture/schedule/ScheduledTasks.java @@ -64,7 +64,7 @@ public class ScheduledTasks { //每隔30秒拉取一次阿里云、火山生成结果 -// @Scheduled(fixedRate = 30*1000) + @Scheduled(fixedRate = 30*1000) public void getCreationUrl() throws Exception { //2阿里云,3火山 List paCreations= paCreationService.lambdaQuery() @@ -155,7 +155,7 @@ public class ScheduledTasks { aiPictureService.failureHandling(paCreation,e); ResultVo resultVo=new ResultVo(); resultVo.setStatus("fail"); - resultVo.setReason(e.getMessage()); + resultVo.setReason(paCreation.getReason()); return resultVo; } } @@ -174,13 +174,13 @@ public class ScheduledTasks { // }else{ cpAttachmentService.lambdaUpdate() .set(CpAttachment::getPath,ossUrl) - .set(CpAttachment::getState,state) + .set(CpAttachment::getState,"t")//图片状态永远为t .eq(CpAttachment::getId,paCreation.getPhotoId()).update(); // } - //更新收藏品状态 + //更新作品状态 paCreationService.lambdaUpdate() - .set(PaCreation::getState,state) - .set(PaCreation::getReason,reason) + .set(PaCreation::getState,state)//作品状态为create、t、fail +// .set(PaCreation::getReason,reason) .eq(PaCreation::getId,paCreation.getId()).update(); return ossUrl; } diff --git a/src/main/java/com/pixelai/api/picture/service/impl/AiPictureServiceImpl.java b/src/main/java/com/pixelai/api/picture/service/impl/AiPictureServiceImpl.java index 5cf8beb..a3f1d3b 100644 --- a/src/main/java/com/pixelai/api/picture/service/impl/AiPictureServiceImpl.java +++ b/src/main/java/com/pixelai/api/picture/service/impl/AiPictureServiceImpl.java @@ -33,6 +33,8 @@ import okhttp3.MediaType; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; import org.springframework.http.*; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -68,13 +70,19 @@ public class AiPictureServiceImpl implements AiPictureService { @Autowired private PaCreationService paCreationService; @Autowired - RestTemplate restTemplate; - @Autowired private PaAiTryonService paAiTryonService; @Autowired private VolcengineExConfig volcengineExConfig; @Value("${picture.fail}") private String fail; + @Autowired + private RestTemplateBuilder restTemplateBuilder; + @Bean + public RestTemplate getRestTemplate() { + return restTemplateBuilder.build(); + } + @Autowired + RestTemplate restTemplate; @Override @SysLog(action = "AiPicture:ImageColoring", value = "百度:黑白图片上色") @@ -103,11 +111,14 @@ public class AiPictureServiceImpl implements AiPictureService { cpAttachment.setPath(fail); cpAttachmentService.updateById(cpAttachment); String message=e.getMessage(); - JSONObject jsonObject=JSONObject.parseObject(message); - if (jsonObject!=null) { - Integer code = Integer.valueOf(jsonObject.getString("code")); - paCreation.setReason(VolcengineUtil.getErrorMessage(code)); - + if (StringUtil.isNotBlank(message) && JSONUtil.isJSON(message)){ + JSONObject jsonObject=JSONObject.parseObject(message); + if (jsonObject!=null) { + Integer code = Integer.valueOf(jsonObject.getString("code")); + paCreation.setReason(VolcengineUtil.getErrorMessage(code)); + } + }else if(StringUtil.isNotBlank(message) && message.equals("400 Bad Request")){ + paCreation.setReason("输入内容不符合规范"); } paCreation.setSystemCause(message); paCreation.setState("fail"); @@ -162,14 +173,10 @@ public class AiPictureServiceImpl implements AiPictureService { @Override @SysLog(action = "AiPicture:textToImage", value = "阿里云:文字生成图片") public void textToImage(AiPictureVo aiPictureVo,PaCreation paCreation) throws Exception { - try { //异步请求阿里云URL,获取任务id String taskId=((Map)this.text2Images(aiPictureVo,paCreation)).get("task_id").toString(); paCreation.setTaskId(taskId); paCreationService.updateById(paCreation); - }catch (Exception e){ - failureHandling(paCreation,e); - } } @Override @@ -594,14 +601,15 @@ public class AiPictureServiceImpl implements AiPictureService { public Map text2Images(AiPictureVo aiPictureVo, PaCreation paCreation) { try { + HttpHeaders headers = new HttpHeaders(); headers.setContentType(org.springframework.http.MediaType.APPLICATION_JSON);//固定,返回类型,只有json headers.set("Authorization", API_KEY);//固定,api密钥 headers.set("X-DashScope-Async", "enable");//只有默认,异步提交任务 String url="https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis";//文生图url Map input = new HashMap<>();//放到request中 - input.put("prompt", aiPictureVo.getPromt());//////////文本描述 - input.put("size", 1024*1024);//////////尺寸 + input.put("prompt", aiPictureVo.getText());//////////文本描述 + input.put("size", aiPictureVo.getSize());//////////尺寸 Map parameters = new HashMap<>();//放到request中 parameters.put("style", aiPictureVo.getOption());//////////类型 parameters.put("n", 1);//////////数量 diff --git a/src/main/java/com/pixelai/api/picture/util/JSONUtil.java b/src/main/java/com/pixelai/api/picture/util/JSONUtil.java new file mode 100644 index 0000000..173d03b --- /dev/null +++ b/src/main/java/com/pixelai/api/picture/util/JSONUtil.java @@ -0,0 +1,26 @@ +package com.pixelai.api.picture.util; + +import com.alibaba.fastjson.JSON; + +/** + * @ClassName JSONUtils + * @Description json验证工具 + * @Author zhangxin + * @Date 2020-08-19 + **/ +public class JSONUtil { + + public static boolean isJSON(String str) { + boolean result = false; + try { + Object obj= JSON.parse(str); + result = true; + } catch (Exception e) { + result=false; + } + return result; + } + +} + + diff --git a/src/main/java/com/pixelai/api/picture/util/VolcengineUtil.java b/src/main/java/com/pixelai/api/picture/util/VolcengineUtil.java index 4484847..4d213f4 100644 --- a/src/main/java/com/pixelai/api/picture/util/VolcengineUtil.java +++ b/src/main/java/com/pixelai/api/picture/util/VolcengineUtil.java @@ -84,7 +84,7 @@ public class VolcengineUtil { errorMessage="输出文本后审核未通过"; break; case 50413: - errorMessage="文本不符规范,请调整文本内容"; + errorMessage="文本不符合安全规范,请调整文本内容"; break; case 60101: errorMessage="图像解析错误"; @@ -105,10 +105,13 @@ public class VolcengineUtil { errorMessage="图像尺寸超过限制"; break; case 50429: - errorMessage="当前使用人数过多,请重试"; + errorMessage="当前使用人数过多,请稍后再试"; break; case 50501: - errorMessage="服务器内部RPC错误,正在重试"; + errorMessage="服务器内部RPC错误,请稍后再试"; + break; + case 50400: + errorMessage="权限校验失败,请联系管理员"; break; } return errorMessage; diff --git a/src/main/java/com/pixelai/api/picture/vo/AiPictureVo.java b/src/main/java/com/pixelai/api/picture/vo/AiPictureVo.java index 7f969ac..49fb358 100644 --- a/src/main/java/com/pixelai/api/picture/vo/AiPictureVo.java +++ b/src/main/java/com/pixelai/api/picture/vo/AiPictureVo.java @@ -28,4 +28,7 @@ public class AiPictureVo { @ApiModelProperty(value = "换衣-下衣url") private String bottomImageUrl; + @ApiModelProperty(value = "图片大小") + private String size; + } diff --git a/src/main/resources/mapper/AcUserMapper.xml b/src/main/resources/mapper/AcUserMapper.xml index d0b2064..b4cb497 100644 --- a/src/main/resources/mapper/AcUserMapper.xml +++ b/src/main/resources/mapper/AcUserMapper.xml @@ -76,7 +76,7 @@ show, edit, createtime, pwdupdatetime, state,salt - select FROM ac_user where username = #{username} and usertype = #{usertype} and state = 't' diff --git a/src/main/resources/mapper/PaCollectionMapper.xml b/src/main/resources/mapper/PaCollectionMapper.xml index 19fe8e0..918b1d3 100644 --- a/src/main/resources/mapper/PaCollectionMapper.xml +++ b/src/main/resources/mapper/PaCollectionMapper.xml @@ -28,7 +28,7 @@ type, review_status from (select - pa_creation."id", + pa_collection."id", pa_creation."name", pa_creation.photo_id, pa_creation.user_id, diff --git a/src/main/resources/mapper/PaPictureWallMapper.xml b/src/main/resources/mapper/PaPictureWallMapper.xml index 314a279..9576039 100644 --- a/src/main/resources/mapper/PaPictureWallMapper.xml +++ b/src/main/resources/mapper/PaPictureWallMapper.xml @@ -70,7 +70,8 @@ ac_user.realname as upload_name, cp_label.name as label_name, pa_picture_wall.price as price, - pa_services.name as service_name + pa_services.name as service_name, + pa_services.id as serviceId from pa_picture_wall left join ac_user on pa_picture_wall.userid=ac_user.id left join cp_label on pa_picture_wall.cp_label_id =cp_label.id