修改 design single功能
This commit is contained in:
@@ -3,7 +3,7 @@ package com.ai.da.common.enums;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public enum GenerateTypeEnum {
|
public enum GenerateModeEnum {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过文本生成
|
* 通过文本生成
|
||||||
@@ -23,7 +23,7 @@ public enum GenerateTypeEnum {
|
|||||||
private Integer code;
|
private Integer code;
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
GenerateTypeEnum(int code,String value) {
|
GenerateModeEnum(int code, String value) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.ai.da.common.enums;
|
package com.ai.da.common.enums;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
@@ -70,4 +71,21 @@ public enum SysFileLevel2TypeEnum {
|
|||||||
public static List<String> ofPythonPath(){
|
public static List<String> ofPythonPath(){
|
||||||
return Stream.of(BLOUSE,DRESS,OUTWEAR,SKIRT,TROUSERS).map(SysFileLevel2TypeEnum::getUploadPathName).collect(Collectors.toList());
|
return Stream.of(BLOUSE,DRESS,OUTWEAR,SKIRT,TROUSERS).map(SysFileLevel2TypeEnum::getUploadPathName).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final List<String> ACCESSORIES_LIST = Arrays.asList(
|
||||||
|
SysFileLevel2TypeEnum.BAG.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.EARRINGS.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.HAIRSTYLE.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.SHOES.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.BODY.getRealName()
|
||||||
|
);
|
||||||
|
|
||||||
|
public static final List<String> IMAGES_LIST = Arrays.asList(
|
||||||
|
SysFileLevel2TypeEnum.BLOUSE.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.DRESS.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.OUTWEAR.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.SKIRT.getRealName(),
|
||||||
|
SysFileLevel2TypeEnum.TROUSERS.getRealName()
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,16 @@ public class MD5Utils {
|
|||||||
return md5;
|
return md5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String encryptFile(InputStream inputStream) {
|
||||||
|
String md5 = null;
|
||||||
|
try {
|
||||||
|
md5 = DigestUtils.md5DigestAsHex(inputStream);
|
||||||
|
} catch (IOException ioException) {
|
||||||
|
log.error("文件InputStream md5加密异常ioException##{}", ExceptionUtil.getThrowableList(ioException));
|
||||||
|
}
|
||||||
|
return md5;
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws FileNotFoundException, IOException {
|
public static void main(String[] args) throws FileNotFoundException, IOException {
|
||||||
File file1 = new File("/Users/yanglei/Documents/阳磊日报2019-04-23.numbers");
|
File file1 = new File("/Users/yanglei/Documents/阳磊日报2019-04-23.numbers");
|
||||||
File file2 = new File("/Users/yanglei/Documents/7777.numbers");
|
File file2 = new File("/Users/yanglei/Documents/7777.numbers");
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.ai.da.controller;
|
package com.ai.da.controller;
|
||||||
|
|
||||||
import com.ai.da.common.response.Response;
|
import com.ai.da.common.response.Response;
|
||||||
import com.ai.da.mapper.entity.CollectionElement;
|
|
||||||
import com.ai.da.mapper.entity.DesignItem;
|
|
||||||
import com.ai.da.model.dto.*;
|
import com.ai.da.model.dto.*;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
import com.ai.da.service.DesignItemService;
|
import com.ai.da.service.DesignItemService;
|
||||||
@@ -15,7 +13,6 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
|
|
||||||
@Api(tags = "design Detail模块")
|
@Api(tags = "design Detail模块")
|
||||||
@@ -46,7 +43,7 @@ public class DesignDetailController {
|
|||||||
@GetMapping("/getDetail")
|
@GetMapping("/getDetail")
|
||||||
public Response<DesignItemDetailVO> getDetail(@ApiParam("designItemId") @RequestParam("designItemId") Long designItemId,
|
public Response<DesignItemDetailVO> getDetail(@ApiParam("designItemId") @RequestParam("designItemId") Long designItemId,
|
||||||
@ApiParam("designPythonOutfitId") @RequestParam(value = "designPythonOutfitId",required = false) Long designPythonOutfitId) {
|
@ApiParam("designPythonOutfitId") @RequestParam(value = "designPythonOutfitId",required = false) Long designPythonOutfitId) {
|
||||||
return Response.success(designService.detail(designItemId,designItemId));
|
return Response.success(designService.detail(designPythonOutfitId,designItemId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "切换系统的element")
|
@ApiOperation(value = "切换系统的element")
|
||||||
@@ -58,8 +55,8 @@ public class DesignDetailController {
|
|||||||
}
|
}
|
||||||
@ApiOperation(value = "单个design")
|
@ApiOperation(value = "单个design")
|
||||||
@PostMapping("/designSingle")
|
@PostMapping("/designSingle")
|
||||||
public Response<DesignCollectionItemVO> designSingle(@Valid @RequestBody DesignSingleDTO designSingleDTO ) {
|
public Response<DesignSingleVO> designSingle(@Valid @RequestBody DesignSingleIncludeLayersDTO designSingleIncludeLayersDTO ) {
|
||||||
return Response.success(designItemService.designSingle(designSingleDTO));
|
return Response.success(designItemService.designSingleIncludeLayers(designSingleIncludeLayersDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "print打点")
|
@ApiOperation(value = "print打点")
|
||||||
|
|||||||
@@ -66,4 +66,16 @@ public class SysFile implements Serializable {
|
|||||||
* 更新时间
|
* 更新时间
|
||||||
*/
|
*/
|
||||||
private Date updateDate;
|
private Date updateDate;
|
||||||
|
|
||||||
|
public SysFile() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SysFile(String level1Type, String level2Type, String name, String md5, String url,Date createDate) {
|
||||||
|
this.level1Type = level1Type;
|
||||||
|
this.level2Type = level2Type;
|
||||||
|
this.name = name;
|
||||||
|
this.md5 = md5;
|
||||||
|
this.url = url;
|
||||||
|
this.createDate = createDate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ public class TDesignPythonOutfit implements Serializable {
|
|||||||
@ApiModelProperty(value = "ID")
|
@ApiModelProperty(value = "ID")
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
private Long designItemId;
|
||||||
/**
|
/**
|
||||||
* 关联的design ID
|
* 关联的design ID
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -50,6 +50,9 @@ public class TDesignPythonOutfitDetail implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "图层")
|
@ApiModelProperty(value = "图层")
|
||||||
private String imageCategory;
|
private String imageCategory;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "图层大小")
|
||||||
|
private String imageSize;
|
||||||
/**
|
/**
|
||||||
* 对应的图片的绝对路径
|
* 对应的图片的绝对路径
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -26,6 +26,11 @@ public class DesignSingleDTO {
|
|||||||
@ApiModelProperty("others 元素")
|
@ApiModelProperty("others 元素")
|
||||||
private List<DesignSingleItemDTO> others;
|
private List<DesignSingleItemDTO> others;
|
||||||
|
|
||||||
|
private DesignSingleItemDTO designSingleItem;
|
||||||
|
|
||||||
|
@ApiModelProperty("preview -> true submit -> false")
|
||||||
|
private Boolean isPreview;
|
||||||
|
|
||||||
@NotBlank(message = "timeZone cannot be empty!")
|
@NotBlank(message = "timeZone cannot be empty!")
|
||||||
@ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取")
|
@ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取")
|
||||||
private String timeZone;
|
private String timeZone;
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DesignSingleIncludeLayersDTO {
|
||||||
|
|
||||||
|
@ApiModelProperty("designItemId")
|
||||||
|
@NotNull(message = "designItemId cannot be empty!")
|
||||||
|
private Long designItemId;
|
||||||
|
|
||||||
|
private List<DesignSingleItemDTO> designSingleItemDTOList;
|
||||||
|
|
||||||
|
@NotNull(message = "isPreview cannot be null")
|
||||||
|
@ApiModelProperty("preview -> true submit -> false")
|
||||||
|
private Boolean isPreview;
|
||||||
|
|
||||||
|
@NotBlank(message = "timeZone cannot be empty!")
|
||||||
|
@ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取")
|
||||||
|
private String timeZone;
|
||||||
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ai.da.model.dto;
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
import com.ai.da.python.vo.DesignPythonItemPrint;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -25,5 +24,6 @@ public class DesignSingleItemDTO {
|
|||||||
private String color;
|
private String color;
|
||||||
|
|
||||||
@ApiModelProperty("对应的print图片对象")
|
@ApiModelProperty("对应的print图片对象")
|
||||||
private DesignPythonItemPrint printObject;
|
// private DesignPythonItemPrint printObject;
|
||||||
|
private DesignSinglePrintDTO printObject;
|
||||||
}
|
}
|
||||||
|
|||||||
23
src/main/java/com/ai/da/model/dto/DesignSinglePrintDTO.java
Normal file
23
src/main/java/com/ai/da/model/dto/DesignSinglePrintDTO.java
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import com.ai.da.model.vo.DesignSinglePrint;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("design single 印花请求信息")
|
||||||
|
public class DesignSinglePrintDTO {
|
||||||
|
|
||||||
|
@ApiModelProperty("印花url")
|
||||||
|
private String path;
|
||||||
|
|
||||||
|
@ApiModelProperty("single -> true,overall -> false")
|
||||||
|
private Boolean ifSingle;
|
||||||
|
|
||||||
|
@ApiModelProperty("印花详细")
|
||||||
|
private List<DesignSinglePrint> prints;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,10 +3,8 @@ package com.ai.da.model.vo;
|
|||||||
import com.ai.da.python.vo.DesignPythonItemPrint;
|
import com.ai.da.python.vo.DesignPythonItemPrint;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@@ -31,4 +29,7 @@ public class DesignItemClothesDetailVO {
|
|||||||
|
|
||||||
@ApiModelProperty("对应的print图片对象")
|
@ApiModelProperty("对应的print图片对象")
|
||||||
private DesignPythonItemPrint printObject;
|
private DesignPythonItemPrint printObject;
|
||||||
|
|
||||||
|
@ApiModelProperty("对应图层信息")
|
||||||
|
private List<DesignPythonOutfitVO> layersObject;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ public class DesignItemDetailVO {
|
|||||||
private Long designItemId;
|
private Long designItemId;
|
||||||
|
|
||||||
@ApiModelProperty("designItem图片")
|
@ApiModelProperty("designItem图片")
|
||||||
private DesignPythonOutfitVO designItemUrl;
|
// private DesignPythonOutfitVO designItemUrl;
|
||||||
|
private String designItemUrl;
|
||||||
|
|
||||||
@ApiModelProperty("design高级图片")
|
@ApiModelProperty("design高级图片")
|
||||||
private String highDesignUrl;
|
private String highDesignUrl;
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("designItem detail others 响应")
|
@ApiModel("designItem detail others 响应")
|
||||||
public class DesignItemOthersDetailVO {
|
public class DesignItemOthersDetailVO {
|
||||||
@@ -24,4 +26,7 @@ public class DesignItemOthersDetailVO {
|
|||||||
|
|
||||||
@ApiModelProperty("对应的print图片的绝对路径")
|
@ApiModelProperty("对应的print图片的绝对路径")
|
||||||
private DesignPythonItemPrint printObject;
|
private DesignPythonItemPrint printObject;
|
||||||
|
|
||||||
|
@ApiModelProperty("对应图层信息")
|
||||||
|
private List<DesignPythonOutfitVO> layersObject;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ai.da.model.vo;
|
package com.ai.da.model.vo;
|
||||||
|
|
||||||
import com.ai.da.mapper.entity.TDesignPythonOutfitDetail;
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -11,14 +10,36 @@ import java.util.List;
|
|||||||
@ApiModel("designItem detail从python端获取的合成图+各图层响应")
|
@ApiModel("designItem detail从python端获取的合成图+各图层响应")
|
||||||
public class DesignPythonOutfitVO {
|
public class DesignPythonOutfitVO {
|
||||||
|
|
||||||
@ApiModelProperty("当前图片无图层信息时,为空")
|
/**
|
||||||
private Long designPythonOutfitId;
|
* ID
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
@ApiModelProperty("合成图")
|
/**
|
||||||
String designPythonOutfitUrl;
|
* 图层
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "图层名")
|
||||||
|
private String imageCategory;
|
||||||
|
|
||||||
// TODO
|
/**
|
||||||
// 需明确,不需要的数据不要返回
|
* 图层大小
|
||||||
@ApiModelProperty("各部分图层信息")
|
*/
|
||||||
List<TDesignPythonOutfitDetail> designItemDetailLayers;
|
@ApiModelProperty(value = "图层大小")
|
||||||
|
private List<Long> imageSize;
|
||||||
|
/**
|
||||||
|
* 对应的图片的绝对路径
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "对应的图片的绝对路径")
|
||||||
|
private String imageUrl;
|
||||||
|
/**
|
||||||
|
* mask_url
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "遮罩")
|
||||||
|
private String maskUrl;
|
||||||
|
/**
|
||||||
|
* 位置
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "位置")
|
||||||
|
private List<Long> position;
|
||||||
}
|
}
|
||||||
|
|||||||
31
src/main/java/com/ai/da/model/vo/DesignSinglePrint.java
Normal file
31
src/main/java/com/ai/da/model/vo/DesignSinglePrint.java
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package com.ai.da.model.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Range;
|
||||||
|
|
||||||
|
import javax.validation.constraints.Min;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("design single 印花详情")
|
||||||
|
public class DesignSinglePrint {
|
||||||
|
|
||||||
|
@ApiModelProperty("印花位置")
|
||||||
|
@Range(max = 1L,message = "印花坐标需用大于等于0小于等于1的数表示")
|
||||||
|
private List<Float> location;
|
||||||
|
|
||||||
|
@ApiModelProperty("印花大小")
|
||||||
|
@Range(max = 1,message = "印花缩放值需用大于等于0小于等于1的数表示")
|
||||||
|
private Float scale;
|
||||||
|
|
||||||
|
@Range(min = -360,max = 360,message = "印花旋转角度范围为-360° ~ 360°")
|
||||||
|
@ApiModelProperty("印花角度")
|
||||||
|
private Float angle;
|
||||||
|
|
||||||
|
@Min(value = 1)
|
||||||
|
@ApiModelProperty("印花优先级")
|
||||||
|
private Integer priority;
|
||||||
|
|
||||||
|
}
|
||||||
22
src/main/java/com/ai/da/model/vo/DesignSingleVO.java
Normal file
22
src/main/java/com/ai/da/model/vo/DesignSingleVO.java
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package com.ai.da.model.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DesignSingleVO {
|
||||||
|
|
||||||
|
private Long designItemId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全身图
|
||||||
|
*/
|
||||||
|
private String designItemUrl;
|
||||||
|
|
||||||
|
|
||||||
|
@ApiModelProperty("clothes 数组")
|
||||||
|
private List<DesignItemClothesDetailVO> clothes;
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -53,6 +53,11 @@ public class DesignPythonItem {
|
|||||||
*/
|
*/
|
||||||
private String body_mask_path;
|
private String body_mask_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* url在t_sys_file中的id
|
||||||
|
*/
|
||||||
|
private Long image_id;
|
||||||
|
|
||||||
|
|
||||||
public static List<String> OUTWEAR_DRESS_BLOUSE = Arrays.asList(CollectionLevel2TypeEnum.OUTWEAR.getRealName(),
|
public static List<String> OUTWEAR_DRESS_BLOUSE = Arrays.asList(CollectionLevel2TypeEnum.OUTWEAR.getRealName(),
|
||||||
CollectionLevel2TypeEnum.DRESS.getRealName(),CollectionLevel2TypeEnum.BLOUSE.getRealName());
|
CollectionLevel2TypeEnum.DRESS.getRealName(),CollectionLevel2TypeEnum.BLOUSE.getRealName());
|
||||||
@@ -67,4 +72,22 @@ public class DesignPythonItem {
|
|||||||
public static List<String> SYS_HAIRSTYLE_SHOES = Arrays.asList(
|
public static List<String> SYS_HAIRSTYLE_SHOES = Arrays.asList(
|
||||||
SysFileLevel2TypeEnum.HAIRSTYLE.getRealName(), SysFileLevel2TypeEnum.SHOES.getRealName(),
|
SysFileLevel2TypeEnum.HAIRSTYLE.getRealName(), SysFileLevel2TypeEnum.SHOES.getRealName(),
|
||||||
SysFileLevel2TypeEnum.EARRINGS.getRealName());
|
SysFileLevel2TypeEnum.EARRINGS.getRealName());
|
||||||
|
|
||||||
|
public DesignPythonItem() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public DesignPythonItem(String type, String bodyPath, Long image_id) {
|
||||||
|
this.type = type;
|
||||||
|
this.body_path = bodyPath;
|
||||||
|
this.image_id = image_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DesignPythonItem(String type, String path, String color, DesignPythonItemPrint print, String icon, Long image_id) {
|
||||||
|
this.type = type;
|
||||||
|
this.path = path;
|
||||||
|
this.color = color;
|
||||||
|
this.print = print;
|
||||||
|
this.icon = icon;
|
||||||
|
this.image_id = image_id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ public class DesignPythonItemPrint {
|
|||||||
* print 绝对路径
|
* print 绝对路径
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty("图片绝对路径")
|
@ApiModelProperty("图片绝对路径")
|
||||||
private String path;
|
private String singlePath;
|
||||||
|
|
||||||
|
private List<String> path;
|
||||||
|
|
||||||
@ApiModelProperty("上传时候对应的类型,一级类型 Printboard ")
|
@ApiModelProperty("上传时候对应的类型,一级类型 Printboard ")
|
||||||
private String level1Type;
|
private String level1Type;
|
||||||
@@ -21,35 +23,41 @@ public class DesignPythonItemPrint {
|
|||||||
* print_scale
|
* print_scale
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty("print_scale")
|
@ApiModelProperty("print_scale")
|
||||||
private Float scale;
|
private Float print_scale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否打点
|
* 是否打点
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ApiModelProperty("是否打点 是传true 否则false")
|
@ApiModelProperty("是否打点 是传true 否则false")
|
||||||
private Boolean IfSingle;
|
private Boolean IfSingle;
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty("打点的位置 传 [[0.2, 0.2]]")
|
@ApiModelProperty("print的位置 传 [[0.2, 0.2]]")
|
||||||
private List<List<Float>> location;
|
private List<List<Float>> location;
|
||||||
|
|
||||||
|
@ApiModelProperty("print的缩放比例 传 [0.2, 0.2]")
|
||||||
|
private List<Float> scale;
|
||||||
|
|
||||||
|
@ApiModelProperty("print的旋转角度 传 [0.2, 0.2]")
|
||||||
|
private List<Float> angle;
|
||||||
|
|
||||||
@JSONField(name="IfSingle")
|
@JSONField(name="IfSingle")
|
||||||
public Boolean getIfSingle() {
|
public Boolean getIfSingle() {
|
||||||
return IfSingle;
|
return IfSingle;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DesignPythonItemPrint(String path, String level1Type, Float scale, Boolean ifSingle) {
|
// todo
|
||||||
this.path = path;
|
public DesignPythonItemPrint(String singlePath, String level1Type, Float scale, Boolean ifSingle) {
|
||||||
|
this.singlePath = singlePath;
|
||||||
this.level1Type = level1Type;
|
this.level1Type = level1Type;
|
||||||
this.scale = scale;
|
this.print_scale = scale;
|
||||||
IfSingle = ifSingle;
|
IfSingle = ifSingle;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DesignPythonItemPrint() {
|
public DesignPythonItemPrint() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DesignPythonItemPrint(String path) {
|
public DesignPythonItemPrint(String singlePath) {
|
||||||
this.path = path;
|
this.singlePath = singlePath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,8 @@ package com.ai.da.service;
|
|||||||
|
|
||||||
import com.ai.da.mapper.entity.DesignItem;
|
import com.ai.da.mapper.entity.DesignItem;
|
||||||
import com.ai.da.model.dto.DesignSingleDTO;
|
import com.ai.da.model.dto.DesignSingleDTO;
|
||||||
import com.ai.da.model.vo.DesignCollectionItemVO;
|
import com.ai.da.model.dto.DesignSingleIncludeLayersDTO;
|
||||||
import com.ai.da.model.vo.DesignCollectionVO;
|
import com.ai.da.model.vo.*;
|
||||||
import com.ai.da.model.vo.DesignItemOthersDetailVO;
|
|
||||||
import com.ai.da.model.vo.GetNextSysElementVO;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -47,4 +45,6 @@ public interface DesignItemService extends IService<DesignItem> {
|
|||||||
*/
|
*/
|
||||||
String printDot(DesignSingleDTO designSingleDTO);
|
String printDot(DesignSingleDTO designSingleDTO);
|
||||||
|
|
||||||
|
DesignSingleVO designSingleIncludeLayers(DesignSingleIncludeLayersDTO designSingleIncludeLayersDTO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.ai.da.service;
|
|||||||
|
|
||||||
|
|
||||||
import com.ai.da.mapper.entity.TDesignPythonOutfitDetail;
|
import com.ai.da.mapper.entity.TDesignPythonOutfitDetail;
|
||||||
|
import com.ai.da.model.vo.DesignPythonOutfitVO;
|
||||||
import com.ai.da.model.vo.TDesignPythonOutfitDetailVO;
|
import com.ai.da.model.vo.TDesignPythonOutfitDetailVO;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
@@ -31,4 +32,6 @@ public interface ITDesignPythonOutfitDetailService extends IService<TDesignPytho
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<TDesignPythonOutfitDetail> getDetailByDesignPythonOutfitId(Long designPythonOutfitId);
|
List<TDesignPythonOutfitDetail> getDetailByDesignPythonOutfitId(Long designPythonOutfitId);
|
||||||
|
|
||||||
|
DesignPythonOutfitVO convertToDesignPythonOutfitVO(TDesignPythonOutfitDetail detail);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,4 +22,5 @@ public interface ITDesignPythonOutfitService extends IService<TDesignPythonOutfi
|
|||||||
*/
|
*/
|
||||||
IPage<TDesignPythonOutfitVO> selectTDesignPythonOutfitPage(IPage<TDesignPythonOutfitVO> page, TDesignPythonOutfitVO tDesignPythonOutfit);
|
IPage<TDesignPythonOutfitVO> selectTDesignPythonOutfitPage(IPage<TDesignPythonOutfitVO> page, TDesignPythonOutfitVO tDesignPythonOutfit);
|
||||||
|
|
||||||
|
TDesignPythonOutfit getByDesignItemId(Long designItemId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.ai.da.service;
|
package com.ai.da.service;
|
||||||
|
|
||||||
import com.ai.da.mapper.entity.SysFile;
|
import com.ai.da.mapper.entity.SysFile;
|
||||||
import com.ai.da.model.vo.LibraryVo;
|
|
||||||
import com.ai.da.model.vo.SysFileVO;
|
import com.ai.da.model.vo.SysFileVO;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
@@ -50,4 +49,11 @@ public interface SysFileService extends IService<SysFile> {
|
|||||||
* @param urlList
|
* @param urlList
|
||||||
*/
|
*/
|
||||||
List<SysFileVO> getByUrlList(List<String> urlList);
|
List<SysFileVO> getByUrlList(List<String> urlList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据单条url查询
|
||||||
|
* @param url
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
SysFileVO getByUrl(String url, String type,String timeZone);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ 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.context.UserContext;
|
import com.ai.da.common.context.UserContext;
|
||||||
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
|
|
||||||
import com.ai.da.common.enums.SingleOverallEnum;
|
import com.ai.da.common.enums.SingleOverallEnum;
|
||||||
import com.ai.da.common.enums.SysFileLevel2TypeEnum;
|
import com.ai.da.common.enums.SysFileLevel2TypeEnum;
|
||||||
import com.ai.da.common.utils.CopyUtil;
|
import com.ai.da.common.utils.CopyUtil;
|
||||||
@@ -11,6 +10,7 @@ import com.ai.da.common.utils.DateUtil;
|
|||||||
import com.ai.da.mapper.DesignItemMapper;
|
import com.ai.da.mapper.DesignItemMapper;
|
||||||
import com.ai.da.mapper.entity.*;
|
import com.ai.da.mapper.entity.*;
|
||||||
import com.ai.da.model.dto.DesignSingleDTO;
|
import com.ai.da.model.dto.DesignSingleDTO;
|
||||||
|
import com.ai.da.model.dto.DesignSingleIncludeLayersDTO;
|
||||||
import com.ai.da.model.dto.DesignSingleItemDTO;
|
import com.ai.da.model.dto.DesignSingleItemDTO;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
import com.ai.da.python.PythonService;
|
import com.ai.da.python.PythonService;
|
||||||
@@ -19,21 +19,17 @@ import com.ai.da.python.vo.DesignPythonItemPrint;
|
|||||||
import com.ai.da.python.vo.DesignPythonObjects;
|
import com.ai.da.python.vo.DesignPythonObjects;
|
||||||
import com.ai.da.service.*;
|
import com.ai.da.service.*;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
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 com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.mysql.cj.jdbc.result.UpdatableResultSet;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.checkerframework.checker.units.qual.A;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,6 +57,12 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
|||||||
private LibraryService libraryService;
|
private LibraryService libraryService;
|
||||||
@Resource
|
@Resource
|
||||||
private CollectionElementService collectionElementService;
|
private CollectionElementService collectionElementService;
|
||||||
|
@Resource
|
||||||
|
private ITDesignPythonOutfitService designPythonOutfitService;
|
||||||
|
@Resource
|
||||||
|
private ITDesignPythonOutfitDetailService designPythonOutfitDetailService;
|
||||||
|
@Resource
|
||||||
|
private PanToneService panToneService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long saveOne(DesignItem designItem) {
|
public Long saveOne(DesignItem designItem) {
|
||||||
@@ -256,7 +258,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
|||||||
}
|
}
|
||||||
designItemDetail.setIconPath(detail.getIcon());
|
designItemDetail.setIconPath(detail.getIcon());
|
||||||
DesignPythonItemPrint printObject = detail.getPrint();
|
DesignPythonItemPrint printObject = detail.getPrint();
|
||||||
designItemDetail.setPrintPath(Objects.isNull(printObject)? "" :printObject.getPath());
|
designItemDetail.setPrintPath(Objects.isNull(printObject)? "" :printObject.getSinglePath());
|
||||||
designItemDetail.setPrintJson(JSON.toJSONString(printObject));
|
designItemDetail.setPrintJson(JSON.toJSONString(printObject));
|
||||||
designItemDetails.add(designItemDetail);
|
designItemDetails.add(designItemDetail);
|
||||||
});
|
});
|
||||||
@@ -270,6 +272,84 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<TDesignPythonOutfitDetail> saveDesignSingleItemDetailAndLayers(DesignPythonObjects pythonObjects
|
||||||
|
, Long designId,Long designItemId, Long collectionId, AuthPrincipalVo userInfo
|
||||||
|
, JSONObject responseJSONObject, String timeZone){
|
||||||
|
|
||||||
|
DesignItem designItem = new DesignItem();
|
||||||
|
String url = pythonObjects.getObjects().get(0).getBasic().getSave_name();
|
||||||
|
designItem.setUpdateDate(DateUtil.getByTimeZone(timeZone));
|
||||||
|
designItem.setDesignUrl(url);
|
||||||
|
designItem.setId(designItemId);
|
||||||
|
|
||||||
|
//更新item
|
||||||
|
updateById(designItem);
|
||||||
|
//删除itemDetail
|
||||||
|
designItemDetailService.deleteByDesignItemId(designItemId);
|
||||||
|
|
||||||
|
List<DesignItemDetail> designItemDetails = Lists.newArrayList();
|
||||||
|
// 保存designItem
|
||||||
|
pythonObjects.getObjects().get(0).getItems().forEach(detail ->{
|
||||||
|
if(null == detail){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DesignItemDetail designItemDetail = CopyUtil.copyObject(detail,DesignItemDetail.class);
|
||||||
|
designItemDetail.setAccountId(userInfo.getId());
|
||||||
|
designItemDetail.setDesignId(designId);
|
||||||
|
designItemDetail.setDesignItemId(designItemId);
|
||||||
|
designItemDetail.setCollectionElementId(detail.getElementId());
|
||||||
|
designItemDetail.setCreateDate(DateUtil.getByTimeZone(timeZone));
|
||||||
|
if(SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType())){
|
||||||
|
designItemDetail.setPath(detail.getBody_path());
|
||||||
|
//BODY不关联businessId
|
||||||
|
designItemDetail.setBusinessId(0L);
|
||||||
|
}
|
||||||
|
designItemDetail.setIconPath(detail.getIcon());
|
||||||
|
DesignPythonItemPrint printObject = detail.getPrint();
|
||||||
|
designItemDetail.setPrintPath(Objects.isNull(printObject)? "" :printObject.getSinglePath());
|
||||||
|
designItemDetail.setPrintJson(JSON.toJSONString(printObject));
|
||||||
|
designItemDetails.add(designItemDetail);
|
||||||
|
});
|
||||||
|
designItemDetailService.saveBatch(designItemDetails);
|
||||||
|
|
||||||
|
// 更新
|
||||||
|
JSONObject data = responseJSONObject.getJSONObject("data");
|
||||||
|
JSONObject outfit = data.getJSONObject("0");
|
||||||
|
TDesignPythonOutfit designPythonOutfit = new TDesignPythonOutfit();
|
||||||
|
designPythonOutfit.setUserId(userInfo.getId());
|
||||||
|
designPythonOutfit.setDesignId(designId);
|
||||||
|
designPythonOutfit.setCollectionId(collectionId);
|
||||||
|
designPythonOutfit.setDesignItemId(designItemId);
|
||||||
|
designPythonOutfit.setDesignUrl(outfit.getString("synthesis_url"));
|
||||||
|
designPythonOutfitService.save(designPythonOutfit);
|
||||||
|
JSONArray layers = outfit.getJSONArray("layers");
|
||||||
|
List<TDesignPythonOutfitDetail> list = setTDesignPythonOutfitDetailList(layers, designId, designPythonOutfit.getId(), userInfo.getId());
|
||||||
|
|
||||||
|
designPythonOutfitDetailService.saveBatch(list);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TDesignPythonOutfitDetail> setTDesignPythonOutfitDetailList(JSONArray layers, Long designId, Long designPythonOutfitId, Long userId){
|
||||||
|
|
||||||
|
// 保存图层信息;
|
||||||
|
List<TDesignPythonOutfitDetail> list = new ArrayList<>();
|
||||||
|
for (int i = 0; i < layers.size(); i++) {
|
||||||
|
JSONObject jsonObject = layers.getJSONObject(i);
|
||||||
|
TDesignPythonOutfitDetail designPythonOutfitDetail = new TDesignPythonOutfitDetail();
|
||||||
|
designPythonOutfitDetail.setDesignId(designId);
|
||||||
|
designPythonOutfitDetail.setDesignPythonOutfitId(designPythonOutfitId);
|
||||||
|
designPythonOutfitDetail.setPosition(jsonObject.getString("position"));
|
||||||
|
designPythonOutfitDetail.setImageUrl(jsonObject.getString("image_url"));
|
||||||
|
designPythonOutfitDetail.setImageSize(jsonObject.getString("image_size"));
|
||||||
|
designPythonOutfitDetail.setImageCategory(jsonObject.getString("image_category"));
|
||||||
|
designPythonOutfitDetail.setMaskUrl(jsonObject.getString("mask_url"));
|
||||||
|
designPythonOutfitDetail.setUserId(userId);
|
||||||
|
list.add(designPythonOutfitDetail);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
private DesignItem selectById(Long id) {
|
private DesignItem selectById(Long id) {
|
||||||
QueryWrapper<DesignItem> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<DesignItem> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("id", id);
|
queryWrapper.eq("id", id);
|
||||||
@@ -281,4 +361,129 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
|||||||
queryWrapper.eq("id", id);
|
queryWrapper.eq("id", id);
|
||||||
return designItemMapper.exists(queryWrapper);
|
return designItemMapper.exists(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DesignSingleVO designSingleIncludeLayers(DesignSingleIncludeLayersDTO designSingleIncludeLayersDTO) {
|
||||||
|
AuthPrincipalVo userInfo = UserContext.getUserHolder();
|
||||||
|
DesignItem designItem = selectById(designSingleIncludeLayersDTO.getDesignItemId());
|
||||||
|
Assert.notNull(designItem,"design item does not exists!");
|
||||||
|
Design design = designService.getById(designItem.getDesignId());
|
||||||
|
Assert.notNull(design,"design does not exists!");
|
||||||
|
DesignLibraryModelPointVO designLibraryModelPointVO = null;
|
||||||
|
// 设置模特
|
||||||
|
if (Objects.nonNull(design.getTemplateId())){
|
||||||
|
LibraryModelPoint modelPoint = libraryModelPointService.getById(design.getTemplateId());
|
||||||
|
Assert.notNull(modelPoint,"template does not exists!");
|
||||||
|
Library library = libraryService.getById(modelPoint.getLibraryId());
|
||||||
|
Assert.notNull(library,"template does not exists!");
|
||||||
|
designLibraryModelPointVO = collectionElementService.calculateTemplatePoint(modelPoint,library.getHigh(),library.getWidth(),library.getUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
DesignPythonObjects objects =pythonService.covertDesignSingleParam(
|
||||||
|
designSingleIncludeLayersDTO,design.getSingleOverall(),design.getSwitchCategory(),designLibraryModelPointVO);
|
||||||
|
// JSONObject jsonObject = pythonService.designNew(objects);
|
||||||
|
JSONObject jsonObject = getJsonString();
|
||||||
|
// preview -> 不存数据库 submit -> 存数据库
|
||||||
|
List<TDesignPythonOutfitDetail> tDesignPythonOutfitDetails;
|
||||||
|
if (!designSingleIncludeLayersDTO.getIsPreview()){
|
||||||
|
// todo 这里要再想想
|
||||||
|
tDesignPythonOutfitDetails = saveDesignSingleItemDetailAndLayers(objects, design.getId(), designSingleIncludeLayersDTO.getDesignItemId(),
|
||||||
|
design.getCollectionId(), userInfo, jsonObject, designSingleIncludeLayersDTO.getTimeZone());
|
||||||
|
}else {
|
||||||
|
JSONObject data = jsonObject.getJSONObject("data");
|
||||||
|
// todo 空指针
|
||||||
|
JSONObject outfit = data.getJSONObject("0");
|
||||||
|
JSONArray layers = outfit.getJSONArray("layers");
|
||||||
|
tDesignPythonOutfitDetails = setTDesignPythonOutfitDetailList(layers,designItem.getDesignId(),null,userInfo.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
List<DesignPythonOutfitVO> detailsVO = new ArrayList<>();
|
||||||
|
|
||||||
|
tDesignPythonOutfitDetails.forEach(detail -> {
|
||||||
|
detailsVO.add(designPythonOutfitDetailService.convertToDesignPythonOutfitVO(detail));
|
||||||
|
});
|
||||||
|
|
||||||
|
TDesignPythonOutfit designPythonOutfit = designPythonOutfitService.getByDesignItemId(designSingleIncludeLayersDTO.getDesignItemId());
|
||||||
|
// todo designPythonOutFit 空指针
|
||||||
|
return assembleDesignSingleResponse(designItem.getId(),designPythonOutfit.getDesignUrl(),
|
||||||
|
designSingleIncludeLayersDTO.getDesignSingleItemDTOList(),detailsVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DesignSingleVO assembleDesignSingleResponse(Long designItemId,String designItemUrl,
|
||||||
|
List<DesignSingleItemDTO> designSingleItemDTOList,
|
||||||
|
List<DesignPythonOutfitVO> layersObject){
|
||||||
|
|
||||||
|
DesignSingleVO designSingleVO = new DesignSingleVO();
|
||||||
|
ArrayList<DesignItemClothesDetailVO> clothes = new ArrayList<>();
|
||||||
|
designSingleVO.setDesignItemId(designItemId);
|
||||||
|
designSingleVO.setDesignItemUrl(designItemUrl);
|
||||||
|
designSingleVO.setClothes(clothes);
|
||||||
|
|
||||||
|
designSingleItemDTOList.forEach(singleItem -> {
|
||||||
|
DesignItemClothesDetailVO designItemClothesDetailVO = new DesignItemClothesDetailVO();
|
||||||
|
designItemClothesDetailVO.setType(singleItem.getType());
|
||||||
|
designItemClothesDetailVO.setColor(panToneService.getPantoneByRgb(singleItem.getColor()));
|
||||||
|
designItemClothesDetailVO.setPrintObject(new DesignPythonItemPrint(singleItem.getPrintObject().getPath()));
|
||||||
|
designItemClothesDetailVO.setLayersObject(layersObject.stream().filter(
|
||||||
|
layers -> singleItem.getType().toLowerCase().equals(layers.getImageCategory().split("_")[0])).collect(Collectors.toList()));
|
||||||
|
clothes.add(designItemClothesDetailVO);
|
||||||
|
});
|
||||||
|
|
||||||
|
return designSingleVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JSONObject getJsonString(){
|
||||||
|
return JSONObject.parseObject("{\n" +
|
||||||
|
" \"code\": 200,\n" +
|
||||||
|
" \"data\": {\n" +
|
||||||
|
" \"0\": {\n" +
|
||||||
|
" \"layers\": [\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"image_category\": \"blouse_back\",\n" +
|
||||||
|
" \"image_size\": [\n" +
|
||||||
|
" 287,\n" +
|
||||||
|
" 477\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"image_url\": \"image/image_1694613014.7537637.png\",\n" +
|
||||||
|
" \"mask_url\": \"mask/mask_1694613014.7537637.png\",\n" +
|
||||||
|
" \"position\": [\n" +
|
||||||
|
" 495,\n" +
|
||||||
|
" 714\n" +
|
||||||
|
" ]\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"image_category\": \"body\",\n" +
|
||||||
|
" \"image_size\": [\n" +
|
||||||
|
" 1672,\n" +
|
||||||
|
" 1672\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"image_url\": \"model_1693218345.2714431.png\",\n" +
|
||||||
|
" \"mask_url\": null,\n" +
|
||||||
|
" \"position\": [\n" +
|
||||||
|
" 0,\n" +
|
||||||
|
" 0\n" +
|
||||||
|
" ]\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"image_category\": \"blouse_front\",\n" +
|
||||||
|
" \"image_size\": [\n" +
|
||||||
|
" 287,\n" +
|
||||||
|
" 477\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"image_url\": \"image/image_1694613014.687538.png\",\n" +
|
||||||
|
" \"mask_url\": \"mask/mask_1694613014.687538.png\",\n" +
|
||||||
|
" \"position\": [\n" +
|
||||||
|
" 495,\n" +
|
||||||
|
" 714\n" +
|
||||||
|
" ]\n" +
|
||||||
|
" }\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"synthesis_url\": \"result_1694613014.8975976.png\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
" },\n" +
|
||||||
|
" \"msg\": \"OK!\"\n" +
|
||||||
|
"}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
}
|
}
|
||||||
designItemDetail.setIconPath(detail.getIcon());
|
designItemDetail.setIconPath(detail.getIcon());
|
||||||
DesignPythonItemPrint printObject = detail.getPrint();
|
DesignPythonItemPrint printObject = detail.getPrint();
|
||||||
designItemDetail.setPrintPath(Objects.isNull(printObject)? "" :printObject.getPath());
|
designItemDetail.setPrintPath(Objects.isNull(printObject)? "" :printObject.getSinglePath());
|
||||||
designItemDetails.add(designItemDetail);
|
designItemDetails.add(designItemDetail);
|
||||||
});
|
});
|
||||||
designItemDetailService.saveBatch(designItemDetails);
|
designItemDetailService.saveBatch(designItemDetails);
|
||||||
@@ -423,7 +423,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
}
|
}
|
||||||
designItemDetail.setIconPath(detail.getIcon());
|
designItemDetail.setIconPath(detail.getIcon());
|
||||||
DesignPythonItemPrint printObject = detail.getPrint();
|
DesignPythonItemPrint printObject = detail.getPrint();
|
||||||
designItemDetail.setPrintPath(Objects.isNull(printObject)? "" :printObject.getPath());
|
designItemDetail.setPrintPath(Objects.isNull(printObject)? "" :printObject.getSinglePath());
|
||||||
designItemDetails.add(designItemDetail);
|
designItemDetails.add(designItemDetail);
|
||||||
});
|
});
|
||||||
designItemDetailService.saveBatch(designItemDetails);
|
designItemDetailService.saveBatch(designItemDetails);
|
||||||
@@ -682,7 +682,8 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
}));
|
}));
|
||||||
//single 和 Models(模特)时候 系统元素为空
|
//single 和 Models(模特)时候 系统元素为空
|
||||||
List<DesignItemDetail> filterDetail2 =designItemDetails.stream()
|
List<DesignItemDetail> filterDetail2 =designItemDetails.stream()
|
||||||
.filter(f -> SYS_HAIRSTYLE_SHOES.contains(f.getType()) )
|
// .filter(f -> SYS_HAIRSTYLE_SHOES.contains(f.getType()) )
|
||||||
|
.filter(f -> SYS_HAIRSTYLE_SHOES_BODY.contains(f.getType()) )
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
response.setOthers(CopyUtil.copyList(filterDetail2,DesignItemOthersDetailVO.class,(o,d)->{
|
response.setOthers(CopyUtil.copyList(filterDetail2,DesignItemOthersDetailVO.class,(o,d)->{
|
||||||
d.setId(o.getBusinessId());
|
d.setId(o.getBusinessId());
|
||||||
@@ -728,12 +729,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
return design.getId();
|
return design.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param designItemDetails
|
|
||||||
* @param designItemDetailVO
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private DesignItemDetailVO editResponseColor(List<DesignItemDetail> designItemDetails,DesignItemDetailVO designItemDetailVO){
|
private DesignItemDetailVO editResponseColor(List<DesignItemDetail> designItemDetails,DesignItemDetailVO designItemDetailVO){
|
||||||
/*designItemDetails.forEach(d -> {
|
/*designItemDetails.forEach(d -> {
|
||||||
if (!StringUtil.isNullOrEmpty(d.getColor())){
|
if (!StringUtil.isNullOrEmpty(d.getColor())){
|
||||||
@@ -778,25 +773,40 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private DesignItemDetailVO editDesignItemLayer(Boolean flag,TDesignPythonOutfit designPythonOutfit,String designItemId,DesignItemDetailVO designItemDetailVO){
|
private DesignItemDetailVO editDesignItemLayer(Boolean flag,TDesignPythonOutfit designPythonOutfit,String designItemUrl,DesignItemDetailVO designItemDetailVO){
|
||||||
DesignPythonOutfitVO designPythonOutfitVO = new DesignPythonOutfitVO();
|
ArrayList<DesignPythonOutfitVO> detailsVO = new ArrayList<>();
|
||||||
|
|
||||||
if (flag){
|
if (flag){
|
||||||
// 1、判断designPythonOutfitId查出的图层信息是否为空(不允许为空,系统内部错误)
|
// 1、判断designPythonOutfitId查出的图层信息是否为空(不允许为空,系统内部错误)
|
||||||
List<TDesignPythonOutfitDetail> details = designPythonOutfitDetailService.getDetailByDesignPythonOutfitId(designPythonOutfit.getId());
|
List<TDesignPythonOutfitDetail> details = designPythonOutfitDetailService.getDetailByDesignPythonOutfitId(designPythonOutfit.getId());
|
||||||
Assert.notEmpty(details,"Some errors occurred, please restart the design");
|
Assert.notEmpty(details,"Some errors occurred, please restart the design");
|
||||||
|
details.forEach(detail -> {
|
||||||
|
detailsVO.add(designPythonOutfitDetailService.convertToDesignPythonOutfitVO(detail));
|
||||||
|
});
|
||||||
|
|
||||||
// 2、将查询出的图层信息填充到designItemDetailVO中
|
// 2、将查询出的图层信息填充到designItemDetailVO中
|
||||||
designPythonOutfitVO.setDesignPythonOutfitId(designPythonOutfit.getId());
|
designItemDetailVO.setDesignItemUrl(designPythonOutfit.getDesignUrl());
|
||||||
designPythonOutfitVO.setDesignPythonOutfitUrl(designPythonOutfit.getDesignUrl());
|
// 2.1 填充clothes
|
||||||
designPythonOutfitVO.setDesignItemDetailLayers(details);
|
designItemDetailVO.getClothes().forEach(c -> {
|
||||||
}else{
|
String type = c.getType().toLowerCase();
|
||||||
designPythonOutfitVO.setDesignPythonOutfitUrl(designItemId);
|
List<DesignPythonOutfitVO> outfitVOS = detailsVO.stream().filter(detail -> detail.getImageCategory().equals(type + "_back") ||
|
||||||
}
|
detail.getImageCategory().equals(type + "_front")).collect(Collectors.toList());
|
||||||
|
|
||||||
designItemDetailVO.setDesignItemUrl(designPythonOutfitVO);
|
c.setLayersObject(outfitVOS);
|
||||||
|
});
|
||||||
|
// 2.2 填充others
|
||||||
|
designItemDetailVO.getOthers().forEach(o -> {
|
||||||
|
String type = o.getType().toLowerCase();
|
||||||
|
List<DesignPythonOutfitVO> outfitVOS = detailsVO.stream().filter(detail -> detail.getImageCategory().equals(type + "_back") ||
|
||||||
|
detail.getImageCategory().equals(type + "_front") ||
|
||||||
|
detail.getImageCategory().equals("body")).collect(Collectors.toList());
|
||||||
|
|
||||||
|
o.setLayersObject(outfitVOS);
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
designItemDetailVO.setDesignItemUrl(designItemUrl);
|
||||||
|
}
|
||||||
|
|
||||||
return designItemDetailVO;
|
return designItemDetailVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.ai.da.service.impl;
|
|||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import com.ai.da.common.context.UserContext;
|
import com.ai.da.common.context.UserContext;
|
||||||
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
|
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
|
||||||
import com.ai.da.common.enums.GenerateTypeEnum;
|
import com.ai.da.common.enums.GenerateModeEnum;
|
||||||
import com.ai.da.common.enums.ModelNameEnum;
|
import com.ai.da.common.enums.ModelNameEnum;
|
||||||
import com.ai.da.common.utils.DateUtil;
|
import com.ai.da.common.utils.DateUtil;
|
||||||
import com.ai.da.common.utils.MD5Utils;
|
import com.ai.da.common.utils.MD5Utils;
|
||||||
@@ -83,10 +83,12 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper,Generate> im
|
|||||||
save(generate);
|
save(generate);
|
||||||
|
|
||||||
// 4、向模型发起请求
|
// 4、向模型发起请求
|
||||||
int mode = GenerateTypeEnum.TEXT.getValue().equals(generate.getGenerateType()) ? GenerateTypeEnum.TEXT.getCode() : GenerateTypeEnum.TEXT_IMAGE.getCode();
|
int mode = GenerateModeEnum.TEXT.getValue().equals(generate.getGenerateType()) ? GenerateModeEnum.TEXT.getCode() : GenerateModeEnum.TEXT_IMAGE.getCode();
|
||||||
// String generatedSketchUrl = pythonService.generateSketchOrPrint(collectionElement.getUrl(),text,mode,generateThroughImageTextDTO.getVersion());
|
String category = generateThroughImageTextDTO.getLevel1Type().equals(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName()) ? "sketch" :
|
||||||
|
generateThroughImageTextDTO.getLevel1Type().equals(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName()) ? "print" : "moodboard";
|
||||||
|
List<String> generatedSketchUrl = pythonService.generateSketchOrPrint(accountId,collectionElement.getUrl(),category,text,mode,generateThroughImageTextDTO.getVersion());
|
||||||
|
|
||||||
List<String> generatedSketchUrl = Arrays.asList("testUrl1","testUrl2","testUrl3","testUrl4");
|
// List<String> generatedSketchUrl = Arrays.asList("testUrl1","testUrl2","testUrl3","testUrl4");
|
||||||
|
|
||||||
// 5、处理模型返回的数据
|
// 5、处理模型返回的数据
|
||||||
// 5.1 将相应的url保存到数据库
|
// 5.1 将相应的url保存到数据库
|
||||||
|
|||||||
@@ -5,18 +5,9 @@ import com.ai.da.common.config.FileProperties;
|
|||||||
import com.ai.da.common.config.exception.BusinessException;
|
import com.ai.da.common.config.exception.BusinessException;
|
||||||
import com.ai.da.common.enums.SysFileLevel1TypeEnum;
|
import com.ai.da.common.enums.SysFileLevel1TypeEnum;
|
||||||
import com.ai.da.common.enums.SysFileLevel2TypeEnum;
|
import com.ai.da.common.enums.SysFileLevel2TypeEnum;
|
||||||
import com.ai.da.common.response.PageBaseResponse;
|
import com.ai.da.common.utils.*;
|
||||||
import com.ai.da.common.response.Response;
|
|
||||||
import com.ai.da.common.utils.CopyUtil;
|
|
||||||
import com.ai.da.common.utils.FileUtil;
|
|
||||||
import com.ai.da.common.utils.LocalCacheUtils;
|
|
||||||
import com.ai.da.common.utils.MD5Utils;
|
|
||||||
import com.ai.da.mapper.SysFileMapper;
|
import com.ai.da.mapper.SysFileMapper;
|
||||||
import com.ai.da.mapper.entity.Collection;
|
|
||||||
import com.ai.da.mapper.entity.Library;
|
|
||||||
import com.ai.da.mapper.entity.SysFile;
|
import com.ai.da.mapper.entity.SysFile;
|
||||||
import com.ai.da.mapper.entity.UserLikeGroup;
|
|
||||||
import com.ai.da.model.vo.LibraryVo;
|
|
||||||
import com.ai.da.model.vo.SysFileVO;
|
import com.ai.da.model.vo.SysFileVO;
|
||||||
import com.ai.da.service.SysFileService;
|
import com.ai.da.service.SysFileService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@@ -26,7 +17,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bouncycastle.est.CACertsResponse;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
@@ -36,6 +26,7 @@ import javax.annotation.Resource;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -259,4 +250,26 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
|
|||||||
queryWrapper.in("url", urlList);
|
queryWrapper.in("url", urlList);
|
||||||
return CopyUtil.copyList(sysFileMapper.selectList(queryWrapper),SysFileVO.class);
|
return CopyUtil.copyList(sysFileMapper.selectList(queryWrapper),SysFileVO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SysFileVO getByUrl(String url, String type,String timeZone){
|
||||||
|
QueryWrapper<SysFile> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("url", url);
|
||||||
|
SysFile sysFile = sysFileMapper.selectOne(queryWrapper);
|
||||||
|
// 如果当前url不存在,先将其插入表中
|
||||||
|
if (Objects.isNull(sysFile)){
|
||||||
|
sysFile = setSysFileEntity(url,type,timeZone);
|
||||||
|
sysFileMapper.insert(sysFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return CopyUtil.copyObject(sysFile,SysFileVO.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SysFile setSysFileEntity(String url,String type,String timeZone){
|
||||||
|
InputStream originFile = FileUtil.getOriginFile(url);
|
||||||
|
String[] arr = url.split("/");
|
||||||
|
String level1Type = SysFileLevel2TypeEnum.ACCESSORIES_LIST.contains(type) ? SysFileLevel1TypeEnum.ACCESSORIES.getRealName() :
|
||||||
|
SysFileLevel2TypeEnum.IMAGES_LIST.contains(type) ? SysFileLevel1TypeEnum.IMAGES.getRealName() : SysFileLevel1TypeEnum.ICON_C.getRealName();
|
||||||
|
return new SysFile(level1Type, type, arr[arr.length - 1], MD5Utils.encryptFile(originFile), url, DateUtil.getByTimeZone(timeZone));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,19 @@
|
|||||||
package com.ai.da.service.impl;
|
package com.ai.da.service.impl;
|
||||||
|
|
||||||
|
import com.ai.da.common.utils.CopyUtil;
|
||||||
import com.ai.da.mapper.TDesignPythonOutfitDetailMapper;
|
import com.ai.da.mapper.TDesignPythonOutfitDetailMapper;
|
||||||
import com.ai.da.mapper.entity.TDesignPythonOutfitDetail;
|
import com.ai.da.mapper.entity.TDesignPythonOutfitDetail;
|
||||||
|
import com.ai.da.model.vo.DesignPythonOutfitVO;
|
||||||
import com.ai.da.model.vo.TDesignPythonOutfitDetailVO;
|
import com.ai.da.model.vo.TDesignPythonOutfitDetailVO;
|
||||||
import com.ai.da.service.ITDesignPythonOutfitDetailService;
|
import com.ai.da.service.ITDesignPythonOutfitDetailService;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
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 org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* design item详情表 服务实现类
|
* design item详情表 服务实现类
|
||||||
@@ -31,7 +35,18 @@ public class TDesignPythonOutfitDetailServiceImpl extends ServiceImpl<TDesignPyt
|
|||||||
queryWrapper.eq("design_python_outfit_id",designPythonOutfitId);
|
queryWrapper.eq("design_python_outfit_id",designPythonOutfitId);
|
||||||
|
|
||||||
return baseMapper.selectList(queryWrapper);
|
return baseMapper.selectList(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DesignPythonOutfitVO convertToDesignPythonOutfitVO(TDesignPythonOutfitDetail detail){
|
||||||
|
if (Objects.isNull(detail)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
DesignPythonOutfitVO designPythonOutfitVO = CopyUtil.copyObject(detail,DesignPythonOutfitVO.class);
|
||||||
|
designPythonOutfitVO.setPosition((List<Long>) JSON.parse(detail.getPosition()));
|
||||||
|
designPythonOutfitVO.setImageSize((List<Long>) JSON.parse(detail.getImageSize()));
|
||||||
|
return designPythonOutfitVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.ai.da.mapper.TDesignPythonOutfitMapper;
|
|||||||
import com.ai.da.mapper.entity.TDesignPythonOutfit;
|
import com.ai.da.mapper.entity.TDesignPythonOutfit;
|
||||||
import com.ai.da.model.vo.TDesignPythonOutfitVO;
|
import com.ai.da.model.vo.TDesignPythonOutfitVO;
|
||||||
import com.ai.da.service.ITDesignPythonOutfitService;
|
import com.ai.da.service.ITDesignPythonOutfitService;
|
||||||
|
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 org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
@@ -22,4 +23,12 @@ public class TDesignPythonOutfitServiceImpl extends ServiceImpl<TDesignPythonOut
|
|||||||
return page.setRecords(baseMapper.selectTDesignPythonOutfitPage(page, tDesignPythonOutfit));
|
return page.setRecords(baseMapper.selectTDesignPythonOutfitPage(page, tDesignPythonOutfit));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TDesignPythonOutfit getByDesignItemId(Long designItemId){
|
||||||
|
QueryWrapper<TDesignPythonOutfit> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("design_item_id",designItemId);
|
||||||
|
|
||||||
|
return getOne(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
<result column="design_python_outfit_id" property="designPythonOutfitId"/>
|
<result column="design_python_outfit_id" property="designPythonOutfitId"/>
|
||||||
<result column="collection_element_id" property="collectionElementId"/>
|
<result column="collection_element_id" property="collectionElementId"/>
|
||||||
<result column="image_category" property="imageCategory"/>
|
<result column="image_category" property="imageCategory"/>
|
||||||
|
<result column="image_size" property="imageSize"/>
|
||||||
<result column="image_url" property="imageUrl"/>
|
<result column="image_url" property="imageUrl"/>
|
||||||
<result column="mask_url" property="maskUrl"/>
|
<result column="mask_url" property="maskUrl"/>
|
||||||
<result column="position" property="position"/>
|
<result column="position" property="position"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user