TASK:cloud;

This commit is contained in:
shahaibo
2025-06-10 10:55:56 +08:00
parent d6bd24865e
commit ae71564b94
5 changed files with 148 additions and 9 deletions

View File

@@ -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.UserBehavior;
public interface UserBehaviorMapper extends CommonMapper<UserBehavior> {
}

View File

@@ -0,0 +1,39 @@
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_behavior")
public class UserBehavior implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long accountId;
private String behaviorType;
private String gender;
private String category;
private String url;
private LocalDateTime createTime;
}

View File

@@ -0,0 +1,44 @@
package com.ai.da.model.enums;
import com.fasterxml.jackson.annotation.JsonValue;
public enum UserBehaviorType implements IEnumDisplay {
PORTFOLIO_CLICK("portfolioClick"),
PORTFOLIO_LIKE("portfolioLike"),
SECOND_CREATION("secondCreation"),
SKETCH_LIKE("sketchLike")
// CHILD("Child")
;
private String value;
UserBehaviorType(String value) {
this.value = value;
}
public static boolean isValidName(String name) {
for (Sex sex : Sex.values()) {
if (sex.name().equalsIgnoreCase(name)) {
return true;
}
}
return false;
}
@Override
@JsonValue
public String getValue() {
return this.value;
}
public static UserBehaviorType getType(String value) {
for (UserBehaviorType type : values()) {
if (type.value.equalsIgnoreCase(value)) {
return type;
}
}
throw new IllegalArgumentException("No matching constant for [" + value + "]");
}
}

View File

@@ -665,7 +665,7 @@ public class PythonService {
if (useSystem) {
// 获取系统推荐sketch
String categoryParam = elementVO.getModelSex().toLowerCase() + "_" + styleCategory.toLowerCase();
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam);
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam, elementVO.getBrandId(), elementVO.getBrandScale());
if (!CollectionUtils.isEmpty(recommentdUrlList)) {
String recommendSystemSketch = recommentdUrlList.get(0);
return coverSystemSketchUrlToDesignPythonItem(recommendSystemSketch, styleCategory, elementVO);
@@ -679,7 +679,7 @@ public class PythonService {
return coverSketchToDesignPythonItem(collectionElements.get(randomNum).getId(), collectionElements.get(randomNum), elementVO);
}else {
String categoryParam = elementVO.getModelSex().toLowerCase() + "_" + styleCategory.toLowerCase();
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam);
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam, elementVO.getBrandId(), elementVO.getBrandScale());
if (!CollectionUtils.isEmpty(recommentdUrlList)) {
String recommendSystemSketch = recommentdUrlList.get(0);
return coverSystemSketchUrlToDesignPythonItem(recommendSystemSketch, styleCategory, elementVO);
@@ -1035,7 +1035,7 @@ public class PythonService {
// 获取随机pin sketch的category
String category = element.getLevel2Type();
String categoryParam = validateElementVO.getModelSex().toLowerCase() + "_" + category.toLowerCase();
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam);
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam, validateElementVO.getBrandId(), validateElementVO.getBrandScale());
if (!CollectionUtils.isEmpty(recommentdUrlList)) {
String recommendSystemSketch = recommentdUrlList.get(0);
return coverSystemSketchUrlToDesignPythonItem(recommendSystemSketch, category, validateElementVO);
@@ -1058,7 +1058,7 @@ public class PythonService {
String category = dressings.get(randomNum).getStyleCategory();
String categoryParam = validateElementVO.getModelSex().toLowerCase() + "_" + category.toLowerCase();
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam);
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam, validateElementVO.getBrandId(), validateElementVO.getBrandScale());
if (!CollectionUtils.isEmpty(recommentdUrlList)) {
String recommendSystemSketch = recommentdUrlList.get(0);
return coverSystemSketchUrlToDesignPythonItem(recommendSystemSketch, category, validateElementVO);
@@ -1094,7 +1094,7 @@ public class PythonService {
String category = element.getLevel2Type();
String categoryParam = validateElementVO.getModelSex().toLowerCase() + "_" + category.toLowerCase();
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam);
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam, validateElementVO.getBrandId(), validateElementVO.getBrandScale());
if (!CollectionUtils.isEmpty(recommentdUrlList)) {
String recommendSystemSketch = recommentdUrlList.get(0);
return coverSystemSketchUrlToDesignPythonItem(recommendSystemSketch, category, validateElementVO);
@@ -1118,7 +1118,7 @@ public class PythonService {
String category = dressings.get(randomNum).getStyleCategory();
String categoryParam = validateElementVO.getModelSex().toLowerCase() + "_" + category.toLowerCase();
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam);
List<String> recommentdUrlList = getSystemSketchByCategory(categoryParam, validateElementVO.getBrandId(), validateElementVO.getBrandScale());
if (!CollectionUtils.isEmpty(recommentdUrlList)) {
String recommendSystemSketch = recommentdUrlList.get(0);
return coverSystemSketchUrlToDesignPythonItem(recommendSystemSketch, category, validateElementVO);
@@ -1702,7 +1702,7 @@ public class PythonService {
elementVO.setDesignLibraryModelPointVO(vo);
} else {
// pythonItem.setBody_path("/workspace/python_code/Multi-layer-Virtual-Try-on/dataset_for_test/Img_model.png");
pythonItem.setBody_path("aida-mannequins/model_1693218345.2714432.png");
pythonItem.setBody_path("aida-sys-image/models/female/dd6b48ce-1bab-4861-bb87-a30b82377a8f.png");
}
// if (Objects.nonNull(designLibraryModelPoint)) {
// pythonItem.setBody_path(designLibraryModelPoint.getTemplateUrl());
@@ -3934,7 +3934,7 @@ public class PythonService {
throw new BusinessException("design.interface.exception");
}
public List<String> getSystemSketchByCategory(String category) {
public List<String> getSystemSketchByCategory(String category, Long brandId, Double brandScale) {
AuthPrincipalVo userHolder = UserContext.getUserHolder();
OkHttpClient client = new OkHttpClient().newBuilder()
@@ -3953,7 +3953,9 @@ public class PythonService {
"http://18.167.251.121",
"9994",
userHolder.getId(),
category);
category,
brandId,
brandScale);
log.info("Recommendation request URL: {}", url);

View File

@@ -16,6 +16,7 @@ import com.ai.da.model.dto.*;
import com.ai.da.model.enums.BuildType;
import com.ai.da.model.enums.CollectionType;
import com.ai.da.model.enums.DesignProcess;
import com.ai.da.model.enums.UserBehaviorType;
import com.ai.da.model.vo.*;
import com.ai.da.python.PythonService;
import com.ai.da.python.vo.*;
@@ -147,6 +148,10 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
private ToProductImageRecordMapper toProductImageRecordMapper;
@Resource
private ColorLoopUpTableService colorLoopUpTableService;
@Resource
private UserBehaviorMapper userBehaviorMapper;
@Resource
private CollectionElementRelModelMapper collectionElementRelModelMapper;
private final ConcurrentHashMap<String, Map<String, Object>> designContext = new ConcurrentHashMap<>();
@@ -1214,9 +1219,32 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
}
//修改designItem为like状态
designItemService.updateLikeStatus(designLikeDTO.getDesignItemId(), (byte) 1);
// 记录喜欢的系统sketch
addSystemLikeSketch(designItem);
return new DesignLikeVO(userLikeSortId, userGroupId, groupDetailId, pictureName, userLike.getId(), userLikeSort.getSort());
}
private void addSystemLikeSketch(DesignItem designItem) {
AuthPrincipalVo userHolder = UserContext.getUserHolder();
QueryWrapper<DesignItemDetail> qw = new QueryWrapper<>();
qw.lambda().eq(DesignItemDetail::getDesignItemId, designItem.getId());
qw.lambda().ne(DesignItemDetail::getType, "Body");
List<DesignItemDetail> designItemDetails = designItemDetailMapper.selectList(qw);
for (DesignItemDetail designItemDetail : designItemDetails) {
if (designItemDetail.getPath().startsWith("aida-sys-image")) {
String[] split = designItemDetail.getPath().split("/");
UserBehavior userBehavior = new UserBehavior();
userBehavior.setAccountId(userHolder.getId());
userBehavior.setBehaviorType(UserBehaviorType.SKETCH_LIKE.getValue());
userBehavior.setGender(split[2]);
userBehavior.setCategory(split[3]);
userBehavior.setUrl(designItemDetail.getPath());
userBehavior.setCreateTime(LocalDateTime.now());
userBehaviorMapper.insert(userBehavior);
}
}
}
@Override
public CollectionSort addCollectionSort(Long relationId, String relationType, Long projectId) {
int sort = getNextSort(projectId);
@@ -2319,11 +2347,30 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
}else {
designCollectionDTO.setSketchBoards(new ArrayList<>());
}
if (CollectionUtil.isNotEmpty(groupedMap.get("Models"))) {
List<MannequinDTO> mannequins = new ArrayList<>();
List<CollectionElement> modelList = groupedMap.get("Models");
for (CollectionElement collectionElement : modelList) {
MannequinDTO dto = new MannequinDTO();
QueryWrapper<CollectionElementRelModel> qw = new QueryWrapper<>();
qw.lambda().eq(CollectionElementRelModel::getCollectionElementId, collectionElement.getId());
List<CollectionElementRelModel> collectionElementRelModels = collectionElementRelModelMapper.selectList(qw);
if (!CollectionUtils.isEmpty(collectionElementRelModels)) {
CollectionElementRelModel relModel = collectionElementRelModels.get(0);
dto.setId(relModel.getRelationId());
dto.setType(relModel.getRelationType());
}
}
}else {
designCollectionDTO.setMannequins(new ArrayList<>());
}
}else {
designCollectionDTO.setMoodBoards(new ArrayList<>());
designCollectionDTO.setPrintBoards(new ArrayList<>());
designCollectionDTO.setColorBoards(new ArrayList<>());
designCollectionDTO.setSketchBoards(new ArrayList<>());
designCollectionDTO.setMannequins(new ArrayList<>());
}
Long workspaceId = workspaceService.getByProjectId(projectId);
Workspace workspace = workspaceService.getById(workspaceId);