diff --git a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java index fbf43e60..532934b0 100644 --- a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java +++ b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java @@ -31,6 +31,7 @@ public enum CreditsEventsEnum { TO_PRODUCT_IMAGE("ToProductImage","5"), RELIGHT("Relight","5"), QUESTIONNAIRE("Questionnaire","100"), + IMAGE_TO_SKETCH("ImageToSketch","5"), OTHER("Other","5"); diff --git a/src/main/java/com/ai/da/controller/AccountController.java b/src/main/java/com/ai/da/controller/AccountController.java index 9c8e3e90..60fb806c 100644 --- a/src/main/java/com/ai/da/controller/AccountController.java +++ b/src/main/java/com/ai/da/controller/AccountController.java @@ -220,7 +220,7 @@ public class AccountController { return Response.success(accountService.getPersonalHomepage(id)); } - @ApiOperation(value = "getNicknameModifyTimes") + @ApiOperation(value = "getUsernameModifyTimes") @GetMapping("/getNicknameModifyTimes") public Response> getNicknameModifyTimes(){ return Response.success(accountService.getNicknameModifyTimes()); diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index 17fc811b..94a0da8a 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -94,7 +94,7 @@ public class GenerateController { // modifySketch @ApiOperation(value = "modifySketch") @PostMapping("/modifySketch") - public Response modifySketch(@Valid @RequestBody GenerateModifyDTO generateModifyDTO) { + public Response modifySketch(@Valid @RequestBody GenerateModifyDTO generateModifyDTO) { return Response.success(generateService.modifySketch(generateModifyDTO)); } diff --git a/src/main/java/com/ai/da/model/dto/GenerateModifyDTO.java b/src/main/java/com/ai/da/model/dto/GenerateModifyDTO.java index 5cc4a77f..da56be9c 100644 --- a/src/main/java/com/ai/da/model/dto/GenerateModifyDTO.java +++ b/src/main/java/com/ai/da/model/dto/GenerateModifyDTO.java @@ -4,15 +4,27 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("修改imageToSketch提取出的sketch") @Data public class GenerateModifyDTO { - @ApiModelProperty("需要保存的图片的base64格式") + @NotNull(message = "image cannot be empty") + @ApiModelProperty(value = "需要保存的图片的base64格式", required = true) private String base64; - @ApiModelProperty("sketch所属性别") + @NotNull(message = "gender cannot be empty") + @ApiModelProperty(value = "sketch所属性别", required = true) private String gender; - @ApiModelProperty("sketch所属分类") + @NotNull(message = "category cannot be empty") + @ApiModelProperty(value = "sketch所属分类", required = true) private String category; + + @NotNull(message = "id cannot be empty") + @ApiModelProperty(value = "原图id", required = true) + private String originalId; + + @ApiModelProperty("是否覆盖原图") + private Boolean isOverride; } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index 166fb889..0e60ee72 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -132,7 +132,7 @@ public interface AccountService extends IService { void moveLibraryDate(); - void updateCredits(Long accountId, String value); + void updateCreditsAndEndTime(Long accountId, String value); void updateCreditsAndEndTime(Long accountId, String value, Long endTime); Boolean designWorksRegister(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO); diff --git a/src/main/java/com/ai/da/service/CreditsService.java b/src/main/java/com/ai/da/service/CreditsService.java index faf19ce7..1d076527 100644 --- a/src/main/java/com/ai/da/service/CreditsService.java +++ b/src/main/java/com/ai/da/service/CreditsService.java @@ -33,7 +33,7 @@ public interface CreditsService extends IService { CreditsDetail getByAccountIdAndChangeEvent(Long accountId, String changeEvent, String changedCredits); - void preInsert(Long accountId, String changeEventName, String taskId); + void preInsert(Long accountId, String changeEventName, String taskId, Boolean isPreInsert, String changedCredits); void updateChangedCredits(String accountId, String taskId); } diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 1bb28186..dda193e6 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -46,5 +46,5 @@ public interface GenerateService extends IService { GenerateResultVO imageToSketch(ImageToSketchDTO imageToSketchDTO); - CollectionElementVO modifySketch(GenerateModifyDTO generateModifyDTO); + GenerateResultVO modifySketch(GenerateModifyDTO generateModifyDTO); } diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 46245973..71f346cd 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -995,7 +995,7 @@ public class AccountServiceImpl extends ServiceImpl impl // 未迁移过的进行迁移,注意模特数据迁移打点信息以及转换模特格式 } - public void updateCredits(Long accountId, String value) { + public void updateCreditsAndEndTime(Long accountId, String value) { Account account = new Account(); account.setId(accountId); account.setCredits(new BigDecimal(value)); @@ -1006,7 +1006,10 @@ public class AccountServiceImpl extends ServiceImpl impl Account account = new Account(); account.setId(accountId); account.setCredits(new BigDecimal(value)); - account.setValidEndTime(toDayEnd(endTime)); + if (!Objects.isNull(endTime)){ + account.setValidEndTime(toDayEnd(endTime)); + } + account.setUpdateDate(new Date()); accountMapper.updateById(account); } diff --git a/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java b/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java index 013451a6..9cc17ce8 100644 --- a/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java @@ -51,7 +51,7 @@ public class CreditsServiceImpl extends ServiceImpl i @Value("${access.python.generate_sr_port}") private String generateServicePort; + @Resource + private AccountService accountService; + // 创建 Random 对象 Random random = new Random(); - @Autowired - private ProductServiceImpl productServiceImpl; @Override public GenerateCaptionVO generateCaption(Long sketchElementId) { @@ -591,7 +590,7 @@ public class GenerateServiceImpl extends ServiceImpl i // 6、添加预扣除积分到redis creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), uuid, creditsEventsEnum); // 6.1 添加积分扣除记录到db - creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), uuid); + creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), uuid, Boolean.TRUE, null); // 7、返回唯一id return new PrepareForGenerateVO(taskIdList, 2); @@ -772,6 +771,7 @@ public class GenerateServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public GenerateResultVO imageToSketch(ImageToSketchDTO imageToSketchDTO) { + String bucket = userBucket; Long accountId = UserContext.getUserHolder().getId(); log.info("imageToSketch parameter : {}", imageToSketchDTO); @@ -819,7 +819,12 @@ public class GenerateServiceImpl extends ServiceImpl i generateDetailMapper.insert(generateDetail); String clothCategory = pythonService.getClothCategory(sketchPath, imageToSketchDTO.getGender()); - clothCategory = BusinessException.getMessageFromResource(clothCategory.toUpperCase()); + + CreditsEventsEnum event = CreditsEventsEnum.IMAGE_TO_SKETCH; + BigDecimal existingCredits = accountService.getById(accountId).getCredits(); + BigDecimal subtract = existingCredits.subtract(new BigDecimal(event.getValue())); + accountService.updateCreditsAndEndTime(accountId, subtract.toString(), null); + creditsService.preInsert(accountId, event.getName(), null, Boolean.FALSE, event.getValue()); return new GenerateResultVO(generateDetail.getId(), minioUtil.getPreSignedUrl(sketchPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), "Success", clothCategory); } @@ -828,7 +833,7 @@ public class GenerateServiceImpl extends ServiceImpl i // 输入 base64,以及 性别 分类,将图片添加到library @Override @Transactional(rollbackFor = Exception.class) - public CollectionElementVO modifySketch(GenerateModifyDTO generateModifyDTO) { + public GenerateResultVO modifySketch(GenerateModifyDTO generateModifyDTO) { log.info("修改提取出的sketch,并加入到library"); Long accountId = UserContext.getUserHolder().getId(); String base64 = generateModifyDTO.getBase64(); @@ -836,28 +841,32 @@ public class GenerateServiceImpl extends ServiceImpl i String category = generateModifyDTO.getCategory(); // 将base64上传到minio - String path = accountId + "/sketchboard/" + gender.toLowerCase() + "/" + category + "/" + UUID.randomUUID(); + String path; + GenerateDetail originalDetail = generateDetailMapper.selectById(generateModifyDTO.getOriginalId()); + Long generateDetailId = originalDetail.getId(); + if (generateModifyDTO.getIsOverride()){ + path = originalDetail.getUrl(); + }else { + path = accountId + "/sketchboard/" + gender.toLowerCase() + "/" + category + "/" + UUID.randomUUID(); + } + String minioPath = minioUtil.base64UploadToPath(base64, userBucket, path); log.info("修改后的图片 : {}", minioPath); - // 存入db 保存到t_collection_element - CollectionElement collectionElement = new CollectionElement(); - collectionElement.setAccountId(accountId); - collectionElement.setCollectionId(0L); - collectionElement.setLevel1Type(SKETCH_BOARD.getRealName()); - collectionElement.setLevel2Type(generateModifyDTO.getCategory()); - collectionElement.setName(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); - collectionElement.setUrl(minioPath); - collectionElement.setHasPin((byte)0); - collectionElement.setMd5(MD5Utils.encryptFile(minioUtil.getPreSignedUrl(minioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), Boolean.FALSE)); - collectionElement.setCreateDate(new Date()); - collectionElementService.save(collectionElement); + // 存入db 保存到t_generate_detail + if (!generateModifyDTO.getIsOverride()){ + GenerateDetail generateDetail = new GenerateDetail(); + generateDetail.setGenerateId(originalDetail.getGenerateId()); + generateDetail.setUrl(path); + generateDetail.setIsLike((byte)0); + generateDetail.setMd5(MD5Utils.encryptFile(minioUtil.getPreSignedUrl(minioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), Boolean.FALSE)); + generateDetail.setCreateDate(LocalDateTime.now()); + generateDetailMapper.insert(generateDetail); - CollectionElementVO collectionElementVO = CopyUtil.copyObject(collectionElement, CollectionElementVO.class); - collectionElementVO.setMinIOPath(collectionElementVO.getUrl()); - collectionElementVO.setUrl(minioUtil.getPreSignedUrl(collectionElementVO.getUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); - collectionElementVO.setDesignType(DesignTypeEnum.COLLECTION.getRealName()); - return collectionElementVO; + generateDetailId = generateDetail.getId(); + } + + return new GenerateResultVO(generateDetailId, minioUtil.getPreSignedUrl(minioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), "Success", category); } }