修改模特保存接口和添加系统模特到个人lib接口

This commit is contained in:
2025-04-02 11:08:35 +08:00
parent 8e938e9f06
commit d21cb4adfc
6 changed files with 38 additions and 43 deletions

View File

@@ -203,8 +203,8 @@ public class LibraryController {
} }
@ApiOperation(value = "将系统模特添加到个人library") @ApiOperation(value = "将系统模特添加到个人library")
@PostMapping("addSysModelToLib") @GetMapping("addSysModelToLib")
public Response<Long> addSysModelToLib(@ApiParam("系统模特id") @RequestPart("sysModelId")long sysModelId){ public Response<Long> addSysModelToLib(@ApiParam("系统模特id") @RequestParam("sysModelId")long sysModelId){
return Response.success(libraryService.addSysModelToLib(sysModelId)); return Response.success(libraryService.addSysModelToLib(sysModelId));
} }

View File

@@ -62,7 +62,8 @@ public class LibraryModelPointDTO implements Serializable {
@ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取") @ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取")
private String timeZone; private String timeZone;
@ApiModelProperty("模特路径 全路径即可") @NotBlank(message = "model.path.cannot.be.empty")
@ApiModelProperty("模特路径")
private String modelPath; private String modelPath;
@ApiModelProperty("是否覆盖保存还是另存为 true -> 保存false -> 另存为") @ApiModelProperty("是否覆盖保存还是另存为 true -> 保存false -> 另存为")

View File

@@ -2,6 +2,7 @@ package com.ai.da.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.constant.CommonConstant;
import com.ai.da.common.enums.SingleOverallEnum; import com.ai.da.common.enums.SingleOverallEnum;
import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.CopyUtil;
import com.ai.da.common.utils.DateUtil; import com.ai.da.common.utils.DateUtil;
@@ -22,7 +23,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -56,31 +56,20 @@ public class LibraryModelPointServiceImpl extends ServiceImpl<LibraryModelPointM
@Override @Override
public LibraryModelPointVO saveOrEditTemplatePoint(LibraryModelPointDTO libraryModelPointDTO) { public LibraryModelPointVO saveOrEditTemplatePoint(LibraryModelPointDTO libraryModelPointDTO) {
// Library library = libraryService.getById(libraryModelPointDTO.getLibraryId());
// Assert.notNull(library,"library does not exist!");
LibraryModelPointVO libraryModelPointVO = CopyUtil.copyObject(libraryModelPointDTO, LibraryModelPointVO.class); LibraryModelPointVO libraryModelPointVO = CopyUtil.copyObject(libraryModelPointDTO, LibraryModelPointVO.class);
// 从url中截取出的模特minio地址
String targetPath = null;
// 标志是否有更改过模特比例
boolean flag = false;
// 只有修改了模特后才传modelPath字段
if (!StringUtil.isNullOrEmpty(libraryModelPointDTO.getModelPath())){
flag = true;
String url = libraryModelPointDTO.getModelPath();
// 找到路径的起始位置(从"://"之后查找第一个"/"
int pathStartIndex = url.indexOf("/", url.indexOf("://") + 3);
// 找到查询参数的起始位置("?" 的位置)
int queryStartIndex = url.indexOf("?");
// 截取目标部分
targetPath = url.substring(pathStartIndex + 1, queryStartIndex);
}
// 不管是保存还是另存为都需要传模特的libraryId // 不管是保存还是另存为都需要传模特的libraryId
Library libModel = libraryService.getById(libraryModelPointDTO.getLibraryId()); Library libModel = libraryService.getById(libraryModelPointDTO.getLibraryId());
if (Objects.isNull(libModel)){ if (Objects.isNull(libModel)){
throw new BusinessException("model.not.found"); throw new BusinessException("model.not.found");
} }
if (libraryModelPointDTO.getIsCovered()){
// 当前模特路径
String url = libraryModelPointDTO.getModelPath();
// 标志是否有更改过模特比例(即更换模特图)
boolean flag = url.equals(libModel.getUrl());
if (libraryModelPointDTO.getIsCovered() && Objects.nonNull(libraryModelPointDTO.getTemplateId())){
// 覆盖保存,即更新原有数据(点位数据和模特图片) // 覆盖保存,即更新原有数据(点位数据和模特图片)
LibraryModelPoint modelPoint = getById(libraryModelPointDTO.getTemplateId()); LibraryModelPoint modelPoint = getById(libraryModelPointDTO.getTemplateId());
if (Objects.isNull(modelPoint)) { if (Objects.isNull(modelPoint)) {
@@ -92,12 +81,13 @@ public class LibraryModelPointServiceImpl extends ServiceImpl<LibraryModelPointM
modelPoint.setId(libraryModelPointDTO.getTemplateId()); modelPoint.setId(libraryModelPointDTO.getTemplateId());
updateById(modelPoint); updateById(modelPoint);
libraryModelPointVO.setTemplateId(modelPoint.getId()); libraryModelPointVO.setTemplateId(modelPoint.getId());
libraryModelPointVO.setRelationId(libraryModelPointDTO.getLibraryId());
// 更新模特图片 // 更新模特图片
if (flag){ if (flag){
libModel.setUrl(targetPath); libModel.setUrl(url);
libModel.setMd5(MD5Utils.encryptFile(targetPath, false)); libModel.setMd5(MD5Utils.encryptFile(minioUtil.getPreSignedUrl(url, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), false));
List<Integer> imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(targetPath); List<Integer> imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(url);
libModel.setWidth(imagesWidthAndHeight.get(0)); libModel.setWidth(imagesWidthAndHeight.get(0));
libModel.setHigh(imagesWidthAndHeight.get(1)); libModel.setHigh(imagesWidthAndHeight.get(1));
libModel.setUpdateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone())); libModel.setUpdateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone()));
@@ -106,28 +96,28 @@ public class LibraryModelPointServiceImpl extends ServiceImpl<LibraryModelPointM
}else { }else {
// 不覆盖,即另存为 // 不覆盖,即另存为
// 新增模特library信息 // 新增模特library信息
if (flag){
Library saveAsModel = new Library(); Library saveAsModel = new Library();
saveAsModel.setAccountId(libModel.getAccountId()); saveAsModel.setAccountId(libModel.getAccountId());
saveAsModel.setLevel1Type(libModel.getLevel1Type()); saveAsModel.setLevel1Type(libModel.getLevel1Type());
saveAsModel.setLevel2Type(libModel.getLevel2Type()); saveAsModel.setLevel2Type(libModel.getLevel2Type());
saveAsModel.setName(DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD)); saveAsModel.setName(DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD));
saveAsModel.setUrl(targetPath); saveAsModel.setUrl(url);
saveAsModel.setMd5(MD5Utils.encryptFile(targetPath, false)); saveAsModel.setMd5(MD5Utils.encryptFile(minioUtil.getPreSignedUrl(url, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), false));
List<Integer> imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(targetPath); List<Integer> imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(url);
saveAsModel.setWidth(imagesWidthAndHeight.get(0)); saveAsModel.setWidth(imagesWidthAndHeight.get(0));
saveAsModel.setHigh(imagesWidthAndHeight.get(1)); saveAsModel.setHigh(imagesWidthAndHeight.get(1));
saveAsModel.setCreateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone())); saveAsModel.setCreateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone()));
libraryService.save(saveAsModel); libraryService.save(saveAsModel);
// 更新新的模特在library中的id,用于后面新建模特点位信息用 // 更新新的模特在library中的id,用于后面新建模特点位信息用
libraryModelPointDTO.setLibraryId(saveAsModel.getId()); libraryModelPointDTO.setLibraryId(saveAsModel.getId());
}
// 新增模特点位信息 // 新增模特点位信息
LibraryModelPoint libraryModelPoint = resolvePoint(libraryModelPointDTO); LibraryModelPoint libraryModelPoint = resolvePoint(libraryModelPointDTO);
libraryModelPoint.setModelType("Library");
libraryModelPoint.setCreateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone())); libraryModelPoint.setCreateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone()));
save(libraryModelPoint); save(libraryModelPoint);
libraryModelPointVO.setTemplateId(libraryModelPoint.getId()); libraryModelPointVO.setTemplateId(libraryModelPoint.getId());
libraryModelPointVO.setRelationId(libraryModelPoint.getRelationId());
} }
//编辑 //编辑
/*if (!StringUtils.isEmpty(libraryModelPointDTO.getModelSex())) { /*if (!StringUtils.isEmpty(libraryModelPointDTO.getModelSex())) {

View File

@@ -24,7 +24,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.base.Function;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import okhttp3.*; import okhttp3.*;
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItem;
@@ -51,7 +50,6 @@ import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -830,12 +828,14 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
} }
Library library = CopyUtil.copyObject(sysFile, Library.class); Library library = CopyUtil.copyObject(sysFile, Library.class);
library.setId(null);
library.setAccountId(accountId); library.setAccountId(accountId);
library.setName(DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD)); library.setName(DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD));
List<Integer> imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(sysFile.getUrl()); List<Integer> imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(sysFile.getUrl());
library.setWidth(imagesWidthAndHeight.get(0)); library.setWidth(imagesWidthAndHeight.get(0));
library.setHigh(imagesWidthAndHeight.get(1)); library.setHigh(imagesWidthAndHeight.get(1));
library.setCreateDate(new Date()); library.setCreateDate(new Date());
library.setUpdateDate(null);
libraryMapper.insert(library); libraryMapper.insert(library);
return library.getId(); return library.getId();

View File

@@ -151,6 +151,8 @@ remaining.credits.insufficient=Your remaining credits are insufficient for this
you.haven't.subscribed.to.any.products.yet=You haven't subscribed to any products yet you.haven't.subscribed.to.any.products.yet=You haven't subscribed to any products yet
generate.result.below.standard=The quality of the generated images currently falls below standard. Please consider adjusting your prompt and trying again. generate.result.below.standard=The quality of the generated images currently falls below standard. Please consider adjusting your prompt and trying again.
partial.design.failed=Partial design failed, Please try again later. partial.design.failed=Partial design failed, Please try again later.
email.count.limit=Rate limit reached. Retry in 1 hour.
model.path.cannot.be.empty=Model path cannot be empty.
# 可能会报异常 # 可能会报异常
# Informative: # Informative:

View File

@@ -147,6 +147,8 @@ remaining.credits.insufficient=您的剩余积分不够本次生成消耗,请
you.haven't.subscribed.to.any.products.yet=您还未订阅任何产品 you.haven't.subscribed.to.any.products.yet=您还未订阅任何产品
generate.result.below.standard=当前生成的图像质量低于标准。请考虑调整您的提示词并再次尝试 generate.result.below.standard=当前生成的图像质量低于标准。请考虑调整您的提示词并再次尝试
partial.design.failed=局部设计失败。请稍后重试。 partial.design.failed=局部设计失败。请稍后重试。
email.count.limit=您的账号触发邮件发送频率限制,请一小时后重试。
model.path.cannot.be.empty=模特路径不能为空
# 可能会报异常 # 可能会报异常
# Informative: # Informative: