From dd8c72f7d7deee72b9b7de66e6409dbeee97d784 Mon Sep 17 00:00:00 2001 From: litianxiang Date: Fri, 9 Jan 2026 10:14:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=94=A8=E6=88=B7sketch?= =?UTF-8?q?=E7=82=B9=E8=B5=9E=E8=AE=B0=E5=BD=95=E5=AD=98=E5=82=A8=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=EF=BC=9B=E6=96=B0=E5=A2=9E=E9=95=9C=E5=83=8F=E5=92=8C?= =?UTF-8?q?=E8=A7=92=E5=BA=A6=E5=AD=97=E6=AE=B5=EF=BC=8C=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E9=9C=80=E8=A6=81=E7=9A=84object?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/primary/UserPreferenceMapper.java | 7 ++++ .../primary/WorkspaceRelStyleMapper.java | 8 ++++ .../primary/entity/DesignItemDetailPrint.java | 5 +++ .../entity/TDesignPythonOutfitDetail.java | 13 +++++++ .../mapper/primary/entity/UserPreference.java | 31 ++++++++++++++++ .../ai/da/model/dto/DesignSingleItemDTO.java | 6 +++ .../ai/da/model/vo/DesignPythonOutfitVO.java | 12 ++++++ .../com/ai/da/model/vo/DesignSinglePrint.java | 2 + .../java/com/ai/da/python/PythonService.java | 4 +- .../com/ai/da/python/vo/DesignPythonItem.java | 14 ++++++- .../service/impl/DesignItemServiceImpl.java | 3 ++ .../ai/da/service/impl/DesignServiceImpl.java | 37 +++++++++++-------- .../TDesignPythonOutfitDetailServiceImpl.java | 8 ++++ .../primary/WorkspaceRelStyleMapper.xml | 18 +++++++++ 14 files changed, 151 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/ai/da/mapper/primary/UserPreferenceMapper.java create mode 100644 src/main/java/com/ai/da/mapper/primary/entity/UserPreference.java create mode 100644 src/main/resources/mapper/primary/WorkspaceRelStyleMapper.xml diff --git a/src/main/java/com/ai/da/mapper/primary/UserPreferenceMapper.java b/src/main/java/com/ai/da/mapper/primary/UserPreferenceMapper.java new file mode 100644 index 00000000..6c8ef63c --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/UserPreferenceMapper.java @@ -0,0 +1,7 @@ +package com.ai.da.mapper.primary; + +import com.ai.da.common.config.mybatis.plus.CommonMapper; +import com.ai.da.mapper.primary.entity.UserPreference; + +public interface UserPreferenceMapper extends CommonMapper { +} diff --git a/src/main/java/com/ai/da/mapper/primary/WorkspaceRelStyleMapper.java b/src/main/java/com/ai/da/mapper/primary/WorkspaceRelStyleMapper.java index bc193300..7512e899 100644 --- a/src/main/java/com/ai/da/mapper/primary/WorkspaceRelStyleMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/WorkspaceRelStyleMapper.java @@ -3,6 +3,8 @@ package com.ai.da.mapper.primary; import com.ai.da.common.config.mybatis.plus.CommonMapper; import com.ai.da.mapper.primary.entity.WorkspaceRelStyle; +import java.util.List; + /** * Mapper 接口 * @@ -11,5 +13,11 @@ import com.ai.da.mapper.primary.entity.WorkspaceRelStyle; */ public interface WorkspaceRelStyleMapper extends CommonMapper { + /** + * 根据projectId查询workspaceRelStyles + * @param projectId 项目ID + * @return workspaceRelStyles列表 + */ + List selectByProjectId(Long projectId); } diff --git a/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetailPrint.java b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetailPrint.java index e8c0ac73..7628bd33 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetailPrint.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetailPrint.java @@ -62,4 +62,9 @@ public class DesignItemDetailPrint { * 更新时间 */ private LocalDateTime updateDate; + + /** + * 对象信息(JSON格式) + */ + private String object; } diff --git a/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfitDetail.java b/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfitDetail.java index 864598eb..8e337972 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfitDetail.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfitDetail.java @@ -90,6 +90,19 @@ public class TDesignPythonOutfitDetail implements Serializable { */ @Schema(description = "图层优先级") private Integer priority; + + /** + * 镜像模式 + */ + @Schema(description = "镜像模式") + private String transpose; + + /** + * 旋转角度 + */ + @Schema(description = "旋转角度") + private Double rotate; + /** * 创建时间 */ diff --git a/src/main/java/com/ai/da/mapper/primary/entity/UserPreference.java b/src/main/java/com/ai/da/mapper/primary/entity/UserPreference.java new file mode 100644 index 00000000..fe6b6295 --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/entity/UserPreference.java @@ -0,0 +1,31 @@ +package com.ai.da.mapper.primary.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("user_preference") +public class UserPreference implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + private Long accountId; + private String path; + private LocalDateTime dataTime; + private String category; + private String style; + private Long workspaceRelStyleId; + private Long projectId; + private Long designItemId; + +} diff --git a/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java b/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java index d94b4f08..28520b69 100644 --- a/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java +++ b/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java @@ -67,4 +67,10 @@ public class DesignSingleItemDTO implements Serializable { private PartialDesignDTO partialDesign; + @Schema(description = "镜像模式 ") + private int[] transpose; + + @Schema(description = "45") + private double rotate; + } diff --git a/src/main/java/com/ai/da/model/vo/DesignPythonOutfitVO.java b/src/main/java/com/ai/da/model/vo/DesignPythonOutfitVO.java index 4b1e546c..5842a20d 100644 --- a/src/main/java/com/ai/da/model/vo/DesignPythonOutfitVO.java +++ b/src/main/java/com/ai/da/model/vo/DesignPythonOutfitVO.java @@ -59,4 +59,16 @@ public class DesignPythonOutfitVO { * 图层优先级 从10开始,优先级数字越大越靠近上层 */ private Integer priority; + + /** + * 镜像模式 + */ + @Schema(description = "镜像模式") + private int[] transpose; + + /** + * 旋转角度 + */ + @Schema(description = "旋转角度") + private Double rotate; } diff --git a/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java b/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java index 60638510..9c78efbf 100644 --- a/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java +++ b/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java @@ -42,6 +42,8 @@ public class DesignSinglePrint implements Serializable { @Schema(description = "印花优先级") private Integer priority; + private String object; + public DesignSinglePrint() { } diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 58694454..6cc059eb 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -2869,7 +2869,9 @@ public class PythonService { designSingleItem.getPriority(), minioPath, gradientString, - designSingleItem.getMaskUrl() + designSingleItem.getMaskUrl(), + designSingleItem.getTranspose(), + designSingleItem.getRotate() )); }); diff --git a/src/main/java/com/ai/da/python/vo/DesignPythonItem.java b/src/main/java/com/ai/da/python/vo/DesignPythonItem.java index dbe466bb..ef5850ab 100644 --- a/src/main/java/com/ai/da/python/vo/DesignPythonItem.java +++ b/src/main/java/com/ai/da/python/vo/DesignPythonItem.java @@ -87,6 +87,16 @@ public class DesignPythonItem { */ private String seg_mask_url; + /** + * 镜像模式 + */ + private int[] transpose; + + /** + * 旋转角度 + */ + private double rotate; + public static List OUTWEAR_DRESS_BLOUSE = Arrays.asList(CollectionLevel2TypeEnum.OUTWEAR.getRealName(), CollectionLevel2TypeEnum.DRESS.getRealName(), CollectionLevel2TypeEnum.BLOUSE.getRealName()); @@ -143,7 +153,7 @@ public class DesignPythonItem { public DesignPythonItem(String type, String path, String color, PrintToPython print, Long businessId, Long image_id, List offset, Float[] resize_scale, Integer priority, String gradient, - String gradientString, String seg_mask_url) { + String gradientString, String seg_mask_url, int[] transpose, double rotate) { this.type = type; this.path = path; this.color = color; @@ -157,6 +167,8 @@ public class DesignPythonItem { this.gradient = gradient; this.gradientString = gradientString; this.seg_mask_url = seg_mask_url; + this.transpose = transpose; + this.rotate = rotate; } public DesignPythonItem(String type, String path, String color, PrintToPython print, String icon, Long businessId, Long image_id) { diff --git a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java index 855bb4b6..8cd803a8 100644 --- a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java @@ -509,6 +509,8 @@ public class DesignItemServiceImpl extends ServiceImpl impleme private final UserLikeGroupService userLikeGroupService; private final UserLikeService userLikeService; private final UserBehaviorMapper userBehaviorMapper; - private final UserPreferenceLogMapper userPreferenceLogMapper; + private final UserPreferenceMapper userPreferenceMapper; private final WorkspaceService workspaceService; + private final WorkspaceRelStyleMapper workspaceRelStyleMapper; @Value("${minio.endpoint}") private String endpoint; @@ -1109,18 +1110,20 @@ public class DesignServiceImpl extends ServiceImpl impleme //修改designItem为like状态 designItemService.updateLikeStatus(designLikeDTO.getDesignItemId(), (byte) 1); // 记录喜欢的系统sketch - addSystemLikeSketch(designItem); + addSystemLikeSketch(designItem, designLikeDTO.getProjectId()); // 更新项目更新时间 projectService.modifyProjectUpdateTime(designLikeDTO.getProjectId()); return new DesignLikeVO(userLikeSortId, userGroupId, groupDetailId, pictureName, userLike.getId(), userLikeSort.getSort()); } - private void addSystemLikeSketch(DesignItem designItem) { + public void addSystemLikeSketch(DesignItem designItem, Long projectId) { AuthPrincipalVo userHolder = UserContext.getUserHolder(); QueryWrapper qw = new QueryWrapper<>(); qw.lambda().eq(DesignItemDetail::getDesignItemId, designItem.getId()); qw.lambda().ne(DesignItemDetail::getType, "Body"); List designItemDetails = designItemDetailMapper.selectList(qw); + List workspaceRelStyles = workspaceRelStyleMapper.selectByProjectId(projectId); + for (DesignItemDetail designItemDetail : designItemDetails) { if (designItemDetail.getPath().startsWith("aida-sys-image")) { String[] split = designItemDetail.getPath().split("/"); @@ -1133,28 +1136,29 @@ public class DesignServiceImpl extends ServiceImpl impleme userBehavior.setCreateTime(LocalDateTime.now()); userBehaviorMapper.insert(userBehavior); - UserPreferenceLogTest userPreferenceLogTest = new UserPreferenceLogTest(); - userPreferenceLogTest.setPath(designItemDetail.getPath()); + UserPreference userPreference = new UserPreference(); + userPreference.setPath(designItemDetail.getPath()); SysFile sysFile = sysFileService.getOne(new LambdaQueryWrapper().eq(SysFile::getUrl, designItemDetail.getPath())); - userPreferenceLogTest.setAccountId(userHolder.getId()); + userPreference.setAccountId(userHolder.getId()); if (sysFile != null){ - userPreferenceLogTest.setCategory(sysFile.getLevel3Type().toLowerCase()+"_"+sysFile.getLevel2Type().toLowerCase()); - userPreferenceLogTest.setSysFileId(sysFile.getId()); - userPreferenceLogTest.setStyle(sysFile.getStyle()); + userPreference.setCategory(sysFile.getLevel3Type().toLowerCase()+"_"+sysFile.getLevel2Type().toLowerCase()); + userPreference.setStyle(sysFile.getStyle()); }else { log.error("sysFile not found:{}",designItemDetail.getPath()); SendEmailUtil.commonExceptionReminder("url在sysFile里找不到"+designItemDetail.getPath(), new String[]{"litianxiangxtt@163.com"}); continue; } - -// userPreferenceLogTest.setUserLikeGroupId(userLike.getUserLikeGroupId()); - userPreferenceLogTest.setDataTime(designItemDetail.getCreateDate().toInstant() + userPreference.setDataTime(designItemDetail.getCreateDate().toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime()); - userPreferenceLogMapper.insert(userPreferenceLogTest); + userPreference.setDesignItemId(designItem.getId()); + userPreference.setProjectId(projectId); + userPreference.setWorkspaceRelStyleId(workspaceRelStyles.get(0).getStyleId()); + userPreferenceMapper.insert(userPreference); } } + } private List validateMergeElement(List oldElements, List designItemDetails) { @@ -1576,6 +1580,7 @@ public class DesignServiceImpl extends ServiceImpl impleme } } designSinglePrint.setScale(scales); + designSinglePrint.setObject(detailPrint.getObject()); prints.add(designSinglePrint); } else { // 多个印花 @@ -1596,7 +1601,7 @@ public class DesignServiceImpl extends ServiceImpl impleme scales = Arrays.asList(scale, scale); } } - prints.add(new DesignSinglePrint( + DesignSinglePrint designSinglePrint = new DesignSinglePrint( print.getLevel2Type(), minioUtil.getPreSignedUrl(print.getPath(), 24 * 60), print.getPath(), @@ -1604,7 +1609,9 @@ public class DesignServiceImpl extends ServiceImpl impleme scales, print.getAngle(), print.getPriority(), - ifSingle)); + ifSingle); + designSinglePrint.setObject(print.getObject()); + prints.add(designSinglePrint); // } }); } diff --git a/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java b/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java index b3b9e3c3..68978016 100644 --- a/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java @@ -9,6 +9,7 @@ import com.ai.da.model.vo.DesignPythonOutfitVO; import com.ai.da.model.vo.TDesignPythonOutfitDetailVO; import com.ai.da.service.ITDesignPythonOutfitDetailService; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -67,6 +68,13 @@ public class TDesignPythonOutfitDetailServiceImpl extends ServiceImpl transposeList = JSONArray.parseArray(detail.getTranspose(), Integer.class); + designPythonOutfitVO.setTranspose(transposeList.stream().mapToInt(Integer::intValue).toArray()); + } else { + designPythonOutfitVO.setTranspose(null); + } + designPythonOutfitVO.setRotate(detail.getRotate()); // designPythonOutfitVO.setOffset(CollectionUtil.isEmpty(offset) ? Arrays.asList(0L, 0L) : offset); /*if (!StringUtil.isNullOrEmpty(detail.getImageSize())){ diff --git a/src/main/resources/mapper/primary/WorkspaceRelStyleMapper.xml b/src/main/resources/mapper/primary/WorkspaceRelStyleMapper.xml new file mode 100644 index 00000000..2ed23821 --- /dev/null +++ b/src/main/resources/mapper/primary/WorkspaceRelStyleMapper.xml @@ -0,0 +1,18 @@ + + + + + + +