Merge branch 'dev/dev_xp' into dev/3.1_release_merge

This commit is contained in:
2025-11-18 10:28:44 +08:00
25 changed files with 5248 additions and 5326 deletions

View File

@@ -6,10 +6,7 @@ import com.ai.da.common.utils.RedisUtil;
import com.ai.da.model.dto.GenerateThroughImageTextDTO; import com.ai.da.model.dto.GenerateThroughImageTextDTO;
import com.ai.da.model.vo.GenerateResultVO; import com.ai.da.model.vo.GenerateResultVO;
import com.ai.da.model.vo.PoseTransformationVO; import com.ai.da.model.vo.PoseTransformationVO;
import com.ai.da.service.CloudTaskService; import com.ai.da.service.*;
import com.ai.da.service.DesignService;
import com.ai.da.service.GenerateService;
import com.ai.da.service.UserLikeGroupService;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParseException;
@@ -17,17 +14,16 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Channel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.text.StringEscapeUtils; import org.apache.commons.text.StringEscapeUtils;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
@@ -37,25 +33,22 @@ import java.util.Objects;
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor
public class GenerateConsumer { public class GenerateConsumer {
@Resource private final GenerateService generateService;
private GenerateService generateService;
@Resource private final UserLikeGroupService userLikeGroupService;
private UserLikeGroupService userLikeGroupService;
@Resource private final DesignService designService;
private DesignService designService;
@Resource private final CloudTaskService cloudTaskService;
private CloudTaskService cloudTaskService;
@Autowired private final RabbitMQProperties rabbitMQProperties;
private RabbitMQProperties rabbitMQProperties;
@Resource private final RedisUtil redisUtil;
private RedisUtil redisUtil;
private final MessageCenterService messageCenterService;
@Value("${redis.key.orderForGenerate}") @Value("${redis.key.orderForGenerate}")
private String consumptionOrderKey; private String consumptionOrderKey;

View File

@@ -3,13 +3,12 @@ package com.ai.da.controller;
import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.response.PageBaseResponse; import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.Response; import com.ai.da.common.response.Response;
import com.ai.da.mapper.primary.entity.Account;
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.model.vo.CommentVO; import com.ai.da.model.vo.CommentVO;
import com.ai.da.model.vo.PortfolioVO; import com.ai.da.model.vo.PortfolioVO;
import com.ai.da.model.vo.UserLikeChooseVO;
import com.ai.da.service.PortfolioService; import com.ai.da.service.PortfolioService;
import com.ai.da.service.UserFollowService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -29,6 +28,9 @@ public class PortfolioController {
@Resource @Resource
private PortfolioService portfolioService; private PortfolioService portfolioService;
@Resource
private UserFollowService userFollowService;
@ApiOperation(value = "发布作品集") @ApiOperation(value = "发布作品集")
@PostMapping("/publish") @PostMapping("/publish")
public Response<Long> publish(@RequestParam("file") MultipartFile canvas, @RequestParam("data") String data) { public Response<Long> publish(@RequestParam("file") MultipartFile canvas, @RequestParam("data") String data) {
@@ -138,13 +140,13 @@ public class PortfolioController {
@ApiOperation(value = "获取关注列表") @ApiOperation(value = "获取关注列表")
@PostMapping("/getFolloweeList") @PostMapping("/getFolloweeList")
public Response<List<AccountFollowVO>> getFolloweeList(@Valid @RequestBody GetFollowListDTO getFollowListDTO) { public Response<List<AccountFollowVO>> getFolloweeList(@Valid @RequestBody GetFollowListDTO getFollowListDTO) {
return Response.success(portfolioService.getFolloweeList(getFollowListDTO)); return Response.success(userFollowService.getFolloweeList(getFollowListDTO));
} }
@ApiOperation(value = "获取粉丝列表") @ApiOperation(value = "获取粉丝列表")
@PostMapping("/getFollowerList") @PostMapping("/getFollowerList")
public Response<List<AccountFollowVO>> getFollowerList(@Valid @RequestBody GetFollowListDTO getFollowListDTO) { public Response<List<AccountFollowVO>> getFollowerList(@Valid @RequestBody GetFollowListDTO getFollowListDTO) {
return Response.success(portfolioService.getFollowerList(getFollowListDTO)); return Response.success(userFollowService.getFollowerList(getFollowListDTO));
} }

View File

@@ -95,10 +95,6 @@ public interface DesignService extends IService<Design> {
Integer designProcess(String processId); Integer designProcess(String processId);
void parseMoodboardPosition(String moodboardPosition, Long collectionIdParam);
void relationImageId(DesignPythonObjects objects);
List<CollectionSketchVO> sketchesBoundingBox(ReDesignCollectionDTO reDesignCollectionDTO); List<CollectionSketchVO> sketchesBoundingBox(ReDesignCollectionDTO reDesignCollectionDTO);
List<String> getModel(List<Long> designItemIdList); List<String> getModel(List<Long> designItemIdList);
@@ -124,6 +120,4 @@ public interface DesignService extends IService<Design> {
Boolean cloudTaskNameUpdate(CloudTaskDTO cloudTaskDTO); Boolean cloudTaskNameUpdate(CloudTaskDTO cloudTaskDTO);
Boolean cloudTaskDelete(CloudTaskDTO cloudTaskDTO); Boolean cloudTaskDelete(CloudTaskDTO cloudTaskDTO);
String getAgeGroupByProjectOrCollectionId(Long projectId, Long collectionId);
} }

View File

@@ -0,0 +1,9 @@
package com.ai.da.service;
import com.ai.da.mapper.primary.entity.MoodboardPosition;
import com.baomidou.mybatisplus.extension.service.IService;
public interface MoodboardPositionService extends IService<MoodboardPosition> {
void parseMoodboardPosition(String moodboardPosition, Long collectionIdParam);
}

View File

@@ -47,20 +47,8 @@ public interface PortfolioService extends IService<Portfolio> {
void cancelFollow(Long followeeId); void cancelFollow(Long followeeId);
Long getFolloweeCount(Long accountId);
List<AccountFollowVO> getFolloweeList(GetFollowListDTO getFollowListDTO);
Long getFollowerCount(Long accountId);
List<AccountFollowVO> getFollowerList(GetFollowListDTO getFollowListDTO);
Integer getIfFollowed(Long followeeId, Long followerId);
Long getPortfolioCount(Long accountId); Long getPortfolioCount(Long accountId);
List<Long> getFolloweeList(Long accountId);
// List<PortfolioVO> queryPortfolioByTag(String tagName, Long tagId); // List<PortfolioVO> queryPortfolioByTag(String tagName, Long tagId);
void setPortfolioToPublic(Long portfolioId); void setPortfolioToPublic(Long portfolioId);

View File

@@ -2,6 +2,7 @@ package com.ai.da.service;
import com.ai.da.mapper.primary.entity.PythonTAllInfo; import com.ai.da.mapper.primary.entity.PythonTAllInfo;
import com.ai.da.python.vo.DesignPythonObjects;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
@@ -14,4 +15,6 @@ public interface PythonTAllInfoService extends IService<PythonTAllInfo> {
Long getImageIdByPath(String path); Long getImageIdByPath(String path);
void relationImageId(DesignPythonObjects pythonObjects);
} }

View File

@@ -0,0 +1,9 @@
package com.ai.da.service;
import com.ai.da.mapper.primary.entity.ToProductImageResult;
import com.baomidou.mybatisplus.extension.service.IService;
public interface ToProductImageResultService extends IService<ToProductImageResult> {
Long getUnlikedResultParentId(ToProductImageResult toProductImageResult, String url);
}

View File

@@ -0,0 +1,24 @@
package com.ai.da.service;
import com.ai.da.mapper.primary.entity.UserFollow;
import com.ai.da.model.dto.GetFollowListDTO;
import com.ai.da.model.vo.AccountFollowVO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface UserFollowService extends IService<UserFollow> {
Long getFollowerCount(Long accountId);
List<AccountFollowVO> getFollowerList(GetFollowListDTO getFollowListDTO);
Long getFolloweeCount(Long accountId);
List<AccountFollowVO> getFolloweeList(GetFollowListDTO getFollowListDTO);
Integer getIfFollowed(Long followeeId, Long followerId);
List<Long> getFolloweeList(Long accountId);
}

View File

@@ -121,6 +121,4 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
Boolean toProductImageElementDelete(Long id); Boolean toProductImageElementDelete(Long id);
ToProductElementVO convertRelightElement(Long id); ToProductElementVO convertRelightElement(Long id);
Long getUnlikedResultParentId(ToProductImageResult toProductImageResult, String url);
} }

View File

@@ -70,4 +70,6 @@ public interface WorkspaceService extends IService<Workspace> {
String getProjectSexById(Long projectId); String getProjectSexById(Long projectId);
String getStyleByProjectId(Long projectId); String getStyleByProjectId(Long projectId);
String getAgeGroupByProjectOrCollectionId(Long projectId, Long collectionId);
} }

View File

@@ -143,6 +143,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
@Resource @Resource
private AffiliateService affiliateService; private AffiliateService affiliateService;
@Resource
private UserFollowService userFollowService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public AccountPreLoginVO preLogin(AccountPreLoginDTO accountDTO) { public AccountPreLoginVO preLogin(AccountPreLoginDTO accountDTO) {
@@ -261,8 +264,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
avatar = account.getAvatar(); avatar = account.getAvatar();
} }
response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
response.setFolloweeCount(portfolioService.getFolloweeCount(account.getId())); response.setFolloweeCount(userFollowService.getFolloweeCount(account.getId()));
response.setFollowerCount(portfolioService.getFollowerCount(account.getId())); response.setFollowerCount(userFollowService.getFollowerCount(account.getId()));
//判断是否常用ip 不是则发邮件提示 //判断是否常用ip 不是则发邮件提示
calculateExceptionIp(RequestInfoUtil.getIpAddress(request), account); calculateExceptionIp(RequestInfoUtil.getIpAddress(request), account);
return response; return response;
@@ -2050,8 +2053,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
personalHomepageVO.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); personalHomepageVO.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
personalHomepageVO.setPortfolioCount(portfolioService.getPortfolioCount(accountId)); personalHomepageVO.setPortfolioCount(portfolioService.getPortfolioCount(accountId));
personalHomepageVO.setFolloweeCount(portfolioService.getFolloweeCount(accountId)); personalHomepageVO.setFolloweeCount(userFollowService.getFolloweeCount(accountId));
personalHomepageVO.setFollowerCount(portfolioService.getFollowerCount(accountId)); personalHomepageVO.setFollowerCount(userFollowService.getFollowerCount(accountId));
personalHomepageVO.setHomepageViewCount(viewPersonalHomepageCount(0L)); personalHomepageVO.setHomepageViewCount(viewPersonalHomepageCount(0L));
@@ -2061,7 +2064,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
// 只有本人才能看到个人主页浏览量 // 只有本人才能看到个人主页浏览量
personalHomepageVO.setHomepageViewCount(viewCount == null ? 0 : viewCount); personalHomepageVO.setHomepageViewCount(viewCount == null ? 0 : viewCount);
} else { } else {
personalHomepageVO.setIsFollow(portfolioService.getIfFollowed(accountId, currentUserId)); personalHomepageVO.setIsFollow(userFollowService.getIfFollowed(accountId, currentUserId));
// 非本人浏览主页时增加浏览量 // 非本人浏览主页时增加浏览量
viewsIncrease(accountId); viewsIncrease(accountId);
} }
@@ -2925,8 +2928,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
avatar = account.getAvatar(); avatar = account.getAvatar();
} }
response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
response.setFolloweeCount(portfolioService.getFolloweeCount(account.getId())); response.setFolloweeCount(userFollowService.getFolloweeCount(account.getId()));
response.setFollowerCount(portfolioService.getFollowerCount(account.getId())); response.setFollowerCount(userFollowService.getFollowerCount(account.getId()));
return response; return response;
} else { } else {
throw new IllegalArgumentException("Invalid ID token."); throw new IllegalArgumentException("Invalid ID token.");
@@ -3030,8 +3033,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
avatar = account.getAvatar(); avatar = account.getAvatar();
} }
response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
response.setFolloweeCount(portfolioService.getFolloweeCount(account.getId())); response.setFolloweeCount(userFollowService.getFolloweeCount(account.getId()));
response.setFollowerCount(portfolioService.getFollowerCount(account.getId())); response.setFollowerCount(userFollowService.getFollowerCount(account.getId()));
return response; return response;
} }
@@ -3122,8 +3125,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
avatar = account.getAvatar(); avatar = account.getAvatar();
} }
response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); response.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
response.setFolloweeCount(portfolioService.getFolloweeCount(account.getId())); response.setFolloweeCount(userFollowService.getFolloweeCount(account.getId()));
response.setFollowerCount(portfolioService.getFollowerCount(account.getId())); response.setFollowerCount(userFollowService.getFollowerCount(account.getId()));
QueryWrapper<AccountExtend> qw = new QueryWrapper<>(); QueryWrapper<AccountExtend> qw = new QueryWrapper<>();
qw.lambda().eq(AccountExtend::getAccountId, response.getUserId()); qw.lambda().eq(AccountExtend::getAccountId, response.getUserId());

View File

@@ -59,29 +59,19 @@ import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementMapper, CollectionElement> implements CollectionElementService { public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementMapper, CollectionElement> implements CollectionElementService {
@Resource private final CollectionElementMapper collectionElementMapper;
private CollectionElementMapper collectionElementMapper; private final EmailService emailService;
@Resource private final FileProperties fileProperties;
private FileProperties fileProperties; private final GenerateMapper generateMapper;
@Resource private final GenerateDetailMapper generateDetailMapper;
private PanToneService panToneService; private final LibraryModelPointService libraryModelPointService;
@Resource private final LibraryService libraryService;
private PythonService pythonService; private final MinioUtil minioUtil;
@Resource private final PanToneService panToneService;
private LibraryService libraryService; private final PythonService pythonService;
@Resource private final RedisUtil redisUtil;
private SysFileService sysFileService; private final SysFileService sysFileService;
@Resource private final TCollectionElementRelationService tCollectionElementRelationService;
private GenerateMapper generateMapper;
@Resource
private GenerateDetailMapper generateDetailMapper;
@Resource
private LibraryModelPointService libraryModelPointService;
@Resource
private TCollectionElementRelationService tCollectionElementRelationService;
@Resource
private MinioUtil minioUtil;
private final WorkspaceService workspaceService; private final WorkspaceService workspaceService;
@Value("${minio.bucketName.collectionElement}") @Value("${minio.bucketName.collectionElement}")
@@ -90,13 +80,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
private String gradientBucketName; private String gradientBucketName;
@Value("${minio.bucketName.users}") @Value("${minio.bucketName.users}")
private String userBucketName; private String userBucketName;
@Resource
private RedisUtil redisUtil;
// @Resource
// private RedisUtil redisUtil;
@Resource
private EmailService emailService;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override

View File

@@ -10,6 +10,7 @@ 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.*; import com.ai.da.common.utils.*;
import com.ai.da.mapper.primary.DesignItemMapper; import com.ai.da.mapper.primary.DesignItemMapper;
import com.ai.da.mapper.primary.DesignMapper;
import com.ai.da.mapper.primary.UserLikeMapper; import com.ai.da.mapper.primary.UserLikeMapper;
import com.ai.da.mapper.primary.entity.*; import com.ai.da.mapper.primary.entity.*;
import com.ai.da.model.dto.*; import com.ai.da.model.dto.*;
@@ -27,6 +28,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializationFeature;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import io.netty.util.internal.StringUtil; import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.SerializationUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -55,37 +57,25 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor
public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignItem> implements DesignItemService { public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignItem> implements DesignItemService {
@Resource
private DesignItemMapper designItemMapper; private final CollectionElementService collectionElementService;
@Resource private final DesignMapper designMapper;
private SysFileService sysFileService; private final DesignItemMapper designItemMapper;
@Resource private final DesignItemDetailService designItemDetailService;
private PythonService pythonService; private final DesignItemDetailPrintService designItemDetailPrintService;
@Resource private final ITDesignPythonOutfitService designPythonOutfitService;
private DesignService designService; private final ITDesignPythonOutfitDetailService designPythonOutfitDetailService;
@Resource private final LibraryService libraryService;
private DesignItemDetailService designItemDetailService; private final LibraryModelPointService libraryModelPointService;
@Resource private final MinioUtil minioUtil;
private LibraryModelPointService libraryModelPointService; private final PythonService pythonService;
@Resource private final PanToneService panToneService;
private LibraryService libraryService; private final SysFileService sysFileService;
@Resource private final UserLikeService userLikeService;
private CollectionElementService collectionElementService; private final UserLikeGroupService userLikeGroupService;
@Resource private final WorkspaceService workspaceService;
private ITDesignPythonOutfitService designPythonOutfitService;
@Resource
private ITDesignPythonOutfitDetailService designPythonOutfitDetailService;
@Resource
private PanToneService panToneService;
@Resource
private DesignItemDetailPrintService designItemDetailPrintService;
@Resource
private MinioUtil minioUtil;
@Resource
private UserLikeService userLikeService;
@Resource
private UserLikeGroupService userLikeGroupService;
@Value("${minio.bucketName.modifiedSketch}") @Value("${minio.bucketName.modifiedSketch}")
private String modifiedSketchBucket; private String modifiedSketchBucket;
@@ -196,7 +186,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
if (Objects.isNull(designItem)) { if (Objects.isNull(designItem)) {
throw new BusinessException("designItem.not.found"); throw new BusinessException("designItem.not.found");
} }
Design design = designService.getById(designItem.getDesignId()); Design design = designMapper.selectById(designItem.getDesignId());
if (Objects.isNull(design)) { if (Objects.isNull(design)) {
throw new BusinessException("design.not.found"); throw new BusinessException("design.not.found");
} }
@@ -246,7 +236,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
if (Objects.isNull(designItem)) { if (Objects.isNull(designItem)) {
throw new BusinessException("designItem.not.found"); throw new BusinessException("designItem.not.found");
} }
Design design = designService.getById(designItem.getDesignId()); Design design = designMapper.selectById(designItem.getDesignId());
if (Objects.isNull(design)) { if (Objects.isNull(design)) {
throw new BusinessException("design.not.found"); throw new BusinessException("design.not.found");
} }
@@ -283,6 +273,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
} }
} }
} }
// todo check这个方法是否还在用 // todo check这个方法是否还在用
private DesignCollectionItemVO saveSingleDesignItemAndDetail(DesignPythonObjects pythonObjects private DesignCollectionItemVO saveSingleDesignItemAndDetail(DesignPythonObjects pythonObjects
, Long designId, Long designItemId, Long collectionId, AuthPrincipalVo userInfo, String timeZone) { , Long designId, Long designItemId, Long collectionId, AuthPrincipalVo userInfo, String timeZone) {
@@ -501,7 +492,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
if (Objects.isNull(designItem)) { if (Objects.isNull(designItem)) {
throw new BusinessException("designItem.not.found"); throw new BusinessException("designItem.not.found");
} }
Design design = designService.getById(designItem.getDesignId()); Design design = designMapper.selectById(designItem.getDesignId());
if (Objects.isNull(design)) { if (Objects.isNull(design)) {
throw new BusinessException("design.not.found"); throw new BusinessException("design.not.found");
} }
@@ -744,7 +735,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
JSONObject jsonObject = layers.getJSONObject(i); JSONObject jsonObject = layers.getJSONObject(i);
String priority = jsonObject.getString("priority"); String priority = jsonObject.getString("priority");
String category = jsonObject.getString("image_category").split("_")[0]; String category = jsonObject.getString("image_category").split("_")[0];
if (!category.equals("body") && !priorityAndLayer.containsKey(priority)) priorityAndLayer.put(priority, Arrays.asList(jsonObject.getString("pattern_overall_image_url"), jsonObject.getString("pattern_print_image_url"))); if (!category.equals("body") && !priorityAndLayer.containsKey(priority))
priorityAndLayer.put(priority, Arrays.asList(jsonObject.getString("pattern_overall_image_url"), jsonObject.getString("pattern_print_image_url")));
} }
return priorityAndLayer; return priorityAndLayer;
} }
@@ -756,7 +748,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
for (int i = 0; i < layers.size(); i++) { for (int i = 0; i < layers.size(); i++) {
JSONObject jsonObject = layers.getJSONObject(i); JSONObject jsonObject = layers.getJSONObject(i);
String category = jsonObject.getString("image_category").split("_")[0]; String category = jsonObject.getString("image_category").split("_")[0];
if (!category.equals("body") && !typeAndLayer.containsKey(category)) typeAndLayer.put(category, jsonObject.getString("pattern_image_url")); if (!category.equals("body") && !typeAndLayer.containsKey(category))
typeAndLayer.put(category, jsonObject.getString("pattern_image_url"));
} }
return typeAndLayer; return typeAndLayer;
} }
@@ -846,6 +839,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
userLikeGroupService.updateDate(userLikeGroupId, timeZone); userLikeGroupService.updateDate(userLikeGroupId, timeZone);
} }
} }
private void updateUserLikeConvertStatus(Long designItemId, String timeZone) { private void updateUserLikeConvertStatus(Long designItemId, String timeZone) {
UserLike userLike = userLikeService.getByDesignItemId(designItemId); UserLike userLike = userLikeService.getByDesignItemId(designItemId);
if (!ObjectUtil.isEmpty(userLike) && userLike.getConverted() == 0) { if (!ObjectUtil.isEmpty(userLike) && userLike.getConverted() == 0) {
@@ -886,7 +880,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
// 重置sketch的minio临时访问凭证 // 重置sketch的minio临时访问凭证
designItemClothesDetailVO.setPath(minioUtil.getPreSignedUrl(singleItem.getPath(), 24 * 60, true)); designItemClothesDetailVO.setPath(minioUtil.getPreSignedUrl(singleItem.getPath(), 24 * 60, true));
designItemClothesDetailVO.setMinIOPath(singleItem.getPath()); designItemClothesDetailVO.setMinIOPath(singleItem.getPath());
if (!StringUtil.isNullOrEmpty(singleItem.getColor())) designItemClothesDetailVO.setColor(panToneService.getPantoneByRgb(singleItem.getColor())); if (!StringUtil.isNullOrEmpty(singleItem.getColor()))
designItemClothesDetailVO.setColor(panToneService.getPantoneByRgb(singleItem.getColor()));
designItemClothesDetailVO.setPrintObject(singleItem.getPrintObject()); designItemClothesDetailVO.setPrintObject(singleItem.getPrintObject());
designItemClothesDetailVO.setTrims(singleItem.getTrims()); designItemClothesDetailVO.setTrims(singleItem.getTrims());
designItemClothesDetailVO.setLayersObject(layersObject.stream().filter( designItemClothesDetailVO.setLayersObject(layersObject.stream().filter(
@@ -1032,7 +1027,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
library.setLevel1Type(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName()); library.setLevel1Type(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName());
library.setLevel2Type(designSingleItem.getType()); library.setLevel2Type(designSingleItem.getType());
library.setLevel3Type(designSingleIncludeLayersDTO.getGender()); library.setLevel3Type(designSingleIncludeLayersDTO.getGender());
String ageGroup = designService.getAgeGroupByProjectOrCollectionId(designSingleIncludeLayersDTO.getProjectId(), null); String ageGroup = workspaceService.getAgeGroupByProjectOrCollectionId(designSingleIncludeLayersDTO.getProjectId(), null);
library.setAgeGroup(ageGroup); library.setAgeGroup(ageGroup);
library.setUrl(designSingleItem.getPath()); library.setUrl(designSingleItem.getPath());
library.setName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); library.setName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
@@ -1099,6 +1094,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
@Resource @Resource
private UserLikeMapper userLikeMapper; private UserLikeMapper userLikeMapper;
@Override @Override
public void convertHistoryMaskWithoutGradient() { public void convertHistoryMaskWithoutGradient() {
// 1、获取全部需要转换的designOutfitId // 1、获取全部需要转换的designOutfitId

View File

@@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import io.netty.util.internal.StringUtil; import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import okhttp3.*; import okhttp3.*;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@@ -61,56 +62,47 @@ import static com.ai.da.python.vo.DesignPythonItem.*;
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor
public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> implements DesignService { public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> implements DesignService {
@Resource private final CloudTaskMapper cloudTaskMapper;
private DesignMapper designMapper; private final CloudTaskService cloudTaskService;
@Resource private final CreditsService creditsService;
private CollectionElementService collectionElementService; private final CollectionElementService collectionElementService;
@Resource private final CollectionService collectionService;
private CollectionService collectionService; private final CollectionSortService collectionSortService;
@Resource private final ColorLoopUpTableService colorLoopUpTableService;
private PythonService pythonService; private final CollectionElementRelModelMapper collectionElementRelModelMapper;
@Resource private final DesignBatchMapper designBatchMapper;
private LibraryService libraryService; private final DesignMapper designMapper;
@Resource private final DesignItemService designItemService;
private GenerateDetailMapper generateDetailMapper; private final DesignItemDetailMapper designItemDetailMapper;
@Resource private final DesignItemDetailService designItemDetailService;
private DesignItemService designItemService; private final DesignItemDetailPrintService designItemDetailPrintService;
@Resource private final TDesignPythonOutfitMapper designPythonOutfitMapper;
private DesignItemDetailService designItemDetailService; private final ITDesignPythonOutfitService designPythonOutfitService;
@Resource private final ITDesignPythonOutfitDetailService designPythonOutfitDetailService;
private FileProperties fileProperties; private final FileProperties fileProperties;
@Resource private final GenerateDetailMapper generateDetailMapper;
private UserLikeGroupService userLikeGroupService; private final LibraryService libraryService;
@Resource private final MinioUtil minioUtil;
private UserLikeService userLikeService; private final MoodboardPositionMapper moodboardPositionMapper;
@Resource private final ProjectService projectService;
private SysFileService sysFileService; private final PythonService pythonService;
@Resource private final PanToneMapper panToneMapper;
private TCollectionElementRelationService tCollectionElementRelationService; private final PanToneService panToneService;
@Resource private final PoseTransformationMapper poseTransformationMapper;
private ITDesignPythonOutfitService designPythonOutfitService; private final PythonTAllInfoService pythonTAllInfoService;
@Resource private final RedisUtil redisUtil;
private ITDesignPythonOutfitDetailService designPythonOutfitDetailService; private final SysFileService sysFileService;
@Resource private final TCollectionElementRelationService tCollectionElementRelationService;
private PanToneService panToneService; private final ToProductImageResultMapper toProductImageResultMapper;
@Resource private final ToProductElementMapper toProductElementMapper;
private PythonTAllInfoService pythonTAllInfoService; private final ToProductImageRecordMapper toProductImageRecordMapper;
@Resource private final UserLikeGroupService userLikeGroupService;
private DesignItemDetailPrintService designItemDetailPrintService; private final UserLikeService userLikeService;
private final UserBehaviorMapper userBehaviorMapper;
@Resource private final UserPreferenceLogMapper userPreferenceLogMapper;
private TDesignPythonOutfitMapper designPythonOutfitMapper; private final WorkspaceService workspaceService;
@Resource
private DesignItemDetailMapper designItemDetailMapper;
@Resource
private ToProductImageResultMapper toProductImageResultMapper;
@Resource
private ToProductElementMapper toProductElementMapper;
@Resource
private MoodboardPositionMapper moodboardPositionMapper;
@Resource
private CollectionSortService collectionSortService;
@Value("${minio.endpoint}") @Value("${minio.endpoint}")
private String endpoint; private String endpoint;
@@ -123,34 +115,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
@Value("${access.python.port:''}") @Value("${access.python.port:''}")
private String accessPythonPort; private String accessPythonPort;
@Resource
private RedisUtil redisUtil;
@Resource
private PoseTransformationMapper poseTransformationMapper;
@Resource
private DesignBatchMapper designBatchMapper;
@Resource
private ProjectService projectService;
@Resource
private WorkspaceService workspaceService;
@Resource
private CloudTaskMapper cloudTaskMapper;
@Resource
private CloudTaskService cloudTaskService;
@Resource
private CreditsService creditsService;
@Resource
private ToProductImageRecordMapper toProductImageRecordMapper;
@Resource
private ColorLoopUpTableService colorLoopUpTableService;
@Resource
private UserBehaviorMapper userBehaviorMapper;
@Resource
private UserPreferenceLogMapper userPreferenceLogMapper;
@Resource
private CollectionElementRelModelMapper collectionElementRelModelMapper;
private final ConcurrentHashMap<String, Map<String, Object>> designContext = new ConcurrentHashMap<>(); private final ConcurrentHashMap<String, Map<String, Object>> designContext = new ConcurrentHashMap<>();
@@ -323,11 +287,11 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
// List<Long> reLationelementIds = reLationelements.stream().map(CollectionElement::getId).collect(Collectors.toList()); // List<Long> reLationelementIds = reLationelements.stream().map(CollectionElement::getId).collect(Collectors.toList());
// handleCollectionElementRelation(collectionId, (null == collectionIdParam) ? false : true, reLationelementIds); // handleCollectionElementRelation(collectionId, (null == collectionIdParam) ? false : true, reLationelementIds);
// //保存python返回信息 // //保存python返回信息
/// / return savePythonDesignItemAndDetail(pythonObjects,designId,collectionId,userInfo,designDTO.getTimeZone(),responseJSONObject); /// / return savePythonDesignItemAndDetail(pythonObjects,designId,collectionId,userInfo,designDTO.getTimeZone(),responseJSONObject);
// //保存designItem 和detail // //保存designItem 和detail
// return saveDesignItemAndDetail(pythonObjects, designId, collectionId, userInfo, designDTO.getTimeZone()); // return saveDesignItemAndDetail(pythonObjects, designId, collectionId, userInfo, designDTO.getTimeZone());
// } // }
private String designOrRedesignOperateNew(DesignCollectionDTO designDTO, AuthPrincipalVo userInfo, private String designOrRedesignOperateNew(DesignCollectionDTO designDTO, AuthPrincipalVo userInfo,
Long collectionIdParam, ValidateElementVO elementVO) { Long collectionIdParam, ValidateElementVO elementVO) {
// if (CollectionUtil.isNotEmpty(designDTO.getSketchBoards())) { // if (CollectionUtil.isNotEmpty(designDTO.getSketchBoards())) {
@@ -388,7 +352,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
// 生成library - 根据设计元素生成设计库信息 // 生成library - 根据设计元素生成设计库信息
startTime = System.currentTimeMillis(); startTime = System.currentTimeMillis();
String ageGroup = getAgeGroupByProjectOrCollectionId(designDTO.getProjectId(), collectionId); String ageGroup = workspaceService.getAgeGroupByProjectOrCollectionId(designDTO.getProjectId(), collectionId);
generateLibrary(elementVO, designDTO.getTimeZone(), ageGroup); generateLibrary(elementVO, designDTO.getTimeZone(), ageGroup);
//处理关联关系,修复element覆盖得情况 //处理关联关系,修复element覆盖得情况
// List<CollectionElement> relationElements = collectionElementService.getByOnlyCollectionId(collectionId); // List<CollectionElement> relationElements = collectionElementService.getByOnlyCollectionId(collectionId);
@@ -419,124 +383,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
return requestId; return requestId;
} }
public String getAgeGroupByProjectOrCollectionId(Long projectId, Long collectionId){
if (Objects.nonNull(projectId)){
Workspace workspace = workspaceService.getWSByProjectId(projectId);
if (workspace != null && !StringUtil.isNullOrEmpty(workspace.getAgeGroup())){
return workspace.getAgeGroup();
}
} else if (Objects.nonNull(collectionId) && collectionId != 0){
List<CollectionElement> byCollectionId = collectionElementService.getByCollectionId(collectionId);
if (byCollectionId != null && !byCollectionId.isEmpty()){
projectId = byCollectionId.get(0).getProjectId();
if (projectId != null && projectId != 0L){
Workspace workspace = workspaceService.getWSByProjectId(projectId);
if (workspace != null && !StringUtil.isNullOrEmpty(workspace.getAgeGroup())){
return workspace.getAgeGroup();
}
}
}
}
return AgeGroup.ADULT.getValue();
}
@Override
public void parseMoodboardPosition(String moodboardPosition, Long collectionIdParam) {
if (!StringUtils.isEmpty(moodboardPosition)) {
// 将 JSON 字符串解析为 JSONObject
JSONObject moodboardPositionJson = JSONObject.parseObject(moodboardPosition);
// 准备保存的 MoodboardPosition 列表
List<MoodboardPosition> moodboardPositions = new ArrayList<>();
// 遍历 JSON 对象的 key即样式类型
for (String key : moodboardPositionJson.keySet()) {
// 特殊处理 "class" 字段
if ("class".equals(key)) {
// 获取 "class" 字段的值并将其转为 List<String>
JSONArray classArray = moodboardPositionJson.getJSONArray(key);
if (classArray != null) {
for (int j = 0; j < classArray.size(); j++) {
// 将 classList 存入 MoodboardPosition或者其他结构
MoodboardPosition position = new MoodboardPosition()
.setCollectionId(collectionIdParam) // 关联 Collection ID
.setType(key) // 样式类型
.setStyleData(classArray.getString(j)) // 设置 class 字段
.setSequence(j) // 根据索引值设置顺序
.setCreateTime(LocalDateTime.now()) // 创建时间
.setUpdateTime(LocalDateTime.now()); // 更新时间
// 添加到列表中
moodboardPositions.add(position);
}
}
continue; // 跳过 "class" 字段的常规处理
}
JSONArray styleArray = moodboardPositionJson.getJSONArray(key);
if (styleArray != null) {
for (int i = 0; i < styleArray.size(); i++) {
// 获取当前样式数据
JSONObject styleData = styleArray.getJSONObject(i);
// 构建 MoodboardPosition 实例
MoodboardPosition position = new MoodboardPosition()
.setCollectionId(collectionIdParam) // 关联 Collection ID
.setType(key) // 样式类型
.setStyleData(styleData.toJSONString()) // 样式数据存为 JSON 字符串
.setSequence(i) // 根据索引值设置顺序
.setCreateTime(LocalDateTime.now()) // 创建时间
.setUpdateTime(LocalDateTime.now()); // 更新时间
// 添加到列表中
moodboardPositions.add(position);
}
}
}
// 如果解析结果非空,保存到数据库
if (!moodboardPositions.isEmpty()) {
for (MoodboardPosition position : moodboardPositions) {
moodboardPositionMapper.insert(position);
}
log.info("成功解析并保存 {} 条 MoodboardPosition 数据", moodboardPositions.size());
} else {
log.warn("未找到可保存的 MoodboardPosition 数据");
}
} else {
log.warn("传入的 moodboardPosition 字段为空");
}
}
@Override
public void relationImageId(DesignPythonObjects pythonObjects) {
if (Objects.isNull(pythonObjects)) {
return;
}
pythonObjects.getObjects().forEach(
o -> {
for (DesignPythonItem item : o.getItems()) {
List<Long> list = new ArrayList<>();
list.add(1L);
list.add(1L);
item.setOffset(list);
item.setResize_scale(new Float[]{1.0f,1.0f});
String path = item.getPath();
if (StringUtils.isEmpty(path)) {
String bodyPath = item.getBody_path();
Long imageId = pythonTAllInfoService.getImageIdByPath(bodyPath);
item.setImage_id(imageId);
} else {
Long imageId = pythonTAllInfoService.getImageIdByPath(path);
item.setImage_id(imageId);
}
}
}
);
}
@Override @Override
public List<CollectionSketchVO> sketchesBoundingBox(ReDesignCollectionDTO reDesignDTO) { public List<CollectionSketchVO> sketchesBoundingBox(ReDesignCollectionDTO reDesignDTO) {
List<CollectionSketchDTO> sketchBoards = new ArrayList<>(); List<CollectionSketchDTO> sketchBoards = new ArrayList<>();
@@ -757,8 +603,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
LocalCacheUtils.setDesignProcessCache(userId, saveNames); LocalCacheUtils.setDesignProcessCache(userId, saveNames);
} }
@Resource
private MinioUtil minioUtil;
private DesignCollectionVO savePythonDesignItemAndDetailSingle(DesignPythonObjects pythonObjects, Long designId, Long collectionId, AuthPrincipalVo userInfo, String timeZone, JSONObject outfit, String singleOverall, Map<String, Object> context) { private DesignCollectionVO savePythonDesignItemAndDetailSingle(DesignPythonObjects pythonObjects, Long designId, Long collectionId, AuthPrincipalVo userInfo, String timeZone, JSONObject outfit, String singleOverall, Map<String, Object> context) {
Object designCollectionVO = context.get("DesignCollectionVO"); Object designCollectionVO = context.get("DesignCollectionVO");
@@ -928,6 +772,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
} }
return response; return response;
} }
private DesignCollectionVO savePythonDesignItemAndDetail(DesignPythonObjects pythonObjects private DesignCollectionVO savePythonDesignItemAndDetail(DesignPythonObjects pythonObjects
, Long designId, Long collectionId, AuthPrincipalVo userInfo, String timeZone, JSONObject responseJSONObject, String singleOverall) { , Long designId, Long collectionId, AuthPrincipalVo userInfo, String timeZone, JSONObject responseJSONObject, String singleOverall) {
DesignCollectionVO response = new DesignCollectionVO(); DesignCollectionVO response = new DesignCollectionVO();
@@ -1197,7 +1042,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public DesignLikeVO like(DesignLikeDTO designLikeDTO) { public DesignLikeVO like(DesignLikeDTO designLikeDTO) {
Long userGroupId = designLikeDTO.getUserGroupId();; Long userGroupId = designLikeDTO.getUserGroupId();
Long groupDetailId; Long groupDetailId;
AuthPrincipalVo userInfo = UserContext.getUserHolder(); AuthPrincipalVo userInfo = UserContext.getUserHolder();
DesignItem designItem = designItemService.getById(designLikeDTO.getDesignItemId()); DesignItem designItem = designItemService.getById(designLikeDTO.getDesignItemId());
@@ -2526,7 +2371,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
log.info("design python端运行时间" + totalTimeInSeconds + ""); log.info("design python端运行时间" + totalTimeInSeconds + "");
//生成library //生成library
startTime = System.currentTimeMillis(); startTime = System.currentTimeMillis();
String ageGroup = getAgeGroupByProjectOrCollectionId(designDTO.getProjectId(), collectionId); String ageGroup = workspaceService.getAgeGroupByProjectOrCollectionId(designDTO.getProjectId(), collectionId);
generateLibrary(elementVO, designDTO.getTimeZone(), ageGroup); generateLibrary(elementVO, designDTO.getTimeZone(), ageGroup);
//处理关联关系,修复element覆盖得情况 //处理关联关系,修复element覆盖得情况
// List<CollectionElement> relationElements = collectionElementService.getByOnlyCollectionId(collectionId); // List<CollectionElement> relationElements = collectionElementService.getByOnlyCollectionId(collectionId);
@@ -2902,9 +2747,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
return result; return result;
} }
@Resource
private PanToneMapper panToneMapper;
@Override @Override
public Boolean receiveDesignParams(ReceiveDesignParam receiveDesignParam) { public Boolean receiveDesignParams(ReceiveDesignParam receiveDesignParam) {
List<ReceiveCollectionElement> receiveCollectionElementList = receiveDesignParam.getReceiveCollectionElementList(); List<ReceiveCollectionElement> receiveCollectionElementList = receiveDesignParam.getReceiveCollectionElementList();

View File

@@ -88,33 +88,31 @@ import static com.ai.da.common.enums.WangXiangTaskStatusEnum.UNKNOWN_W;
@RequiredArgsConstructor @RequiredArgsConstructor
public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> implements GenerateService { public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> implements GenerateService {
private final CollectionElementMapper collectionElementMapper;
private final GenerateDetailMapper generateDetailMapper;
private final LibraryService libraryService;
private final PythonService pythonService;
private final CollectionElementService collectionElementService;
private final CreditsService creditsService;
private final MinioUtil minioUtil;
private final RabbitMQService rabbitMQService;
private final RedisUtil redisUtil;
private final GenerateCancelMapper generateCancelMapper;
private final SketchReconstructionMapper sketchReconstructionMapper;
private final SendRequestUtil sendRequestUtil;
private final ProjectService projectService;
private final CollectionSortService collectionSortService;
private final CloudTaskService cloudTaskService;
private final APIGenerateMapper apiGenerateMapper;
private final CollectionSortMapper collectionSortMapper;
private final SysFileService sysFileService;
private final LibraryModelPointService libraryModelPointService;
private final PoseTransformationMapper poseTransformationMapper;
private final CloudTaskMapper cloudTaskMapper;
private final ToProductImageResultMapper toProductImageResultMapper;
private final AccountService accountService; private final AccountService accountService;
private final APIGenerateService apiGenerateService; private final APIGenerateService apiGenerateService;
private final UserLikeGroupService userLikeGroupService; private final CollectionElementMapper collectionElementMapper;
private final CollectionElementService collectionElementService;
private final CreditsService creditsService;
private final CollectionSortMapper collectionSortMapper;
private final CollectionSortService collectionSortService;
private final CloudTaskMapper cloudTaskMapper;
private final CloudTaskService cloudTaskService;
private final GenerateCancelMapper generateCancelMapper;
private final GenerateDetailMapper generateDetailMapper;
private final LibraryService libraryService;
// private final LibraryModelPointService libraryModelPointService;
private final MinioUtil minioUtil;
private final MessageCenterService messageCenterService; private final MessageCenterService messageCenterService;
private final PythonService pythonService;
private final ProjectService projectService;
private final PoseTransformationMapper poseTransformationMapper;
private final RabbitMQService rabbitMQService;
private final RedisUtil redisUtil;
private final SketchReconstructionMapper sketchReconstructionMapper;
private final SendRequestUtil sendRequestUtil;
private final SysFileService sysFileService;
private final ToProductImageResultMapper toProductImageResultMapper;
private final ToProductImageResultService toProductImageResultService;
@Value("${redis.key.orderForGenerate}") @Value("${redis.key.orderForGenerate}")
private String consumptionOrderKey; private String consumptionOrderKey;
@@ -2735,7 +2733,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
Long parentId = collectionSortService.getParentIdByElementIdAndElementType( Long parentId = collectionSortService.getParentIdByElementIdAndElementType(
productResult.getId(), CollectionType.TO_PRODUCT_IMAGE.getValue()); productResult.getId(), CollectionType.TO_PRODUCT_IMAGE.getValue());
if (Objects.isNull(parentId)) { if (Objects.isNull(parentId)) {
parentId = userLikeGroupService.getUnlikedResultParentId(null, poseTransformation.getProductImage()); parentId = toProductImageResultService.getUnlikedResultParentId(null, poseTransformation.getProductImage());
} }
vo.setParentId(parentId); vo.setParentId(parentId);
vo.setId(poseTransformation.getId()); vo.setId(poseTransformation.getId());
@@ -4214,8 +4212,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
} }
} }
public public com.alibaba.fastjson.JSONObject createParamsForMotion(PoseTransformDTO poseTransformDTO, String taskId) {
com.alibaba.fastjson.JSONObject createParamsForMotion(PoseTransformDTO poseTransformDTO, String taskId) {
com.alibaba.fastjson.JSONObject params = new com.alibaba.fastjson.JSONObject(); com.alibaba.fastjson.JSONObject params = new com.alibaba.fastjson.JSONObject();
params.put("tasks_id", taskId); params.put("tasks_id", taskId);

View File

@@ -17,21 +17,20 @@ import com.ai.da.model.enums.Sex;
import com.ai.da.model.vo.LibraryModelPointVO; import com.ai.da.model.vo.LibraryModelPointVO;
import com.ai.da.python.PythonService; import com.ai.da.python.PythonService;
import com.ai.da.python.vo.DesignPythonObjects; import com.ai.da.python.vo.DesignPythonObjects;
import com.ai.da.service.DesignService;
import com.ai.da.service.LibraryModelPointService; import com.ai.da.service.LibraryModelPointService;
import com.ai.da.service.LibraryService; import com.ai.da.service.LibraryService;
import com.ai.da.service.PythonTAllInfoService;
import com.alibaba.fastjson.JSON; 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 io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -45,17 +44,13 @@ import java.util.Objects;
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor
public class LibraryModelPointServiceImpl extends ServiceImpl<LibraryModelPointMapper, LibraryModelPoint> implements LibraryModelPointService { public class LibraryModelPointServiceImpl extends ServiceImpl<LibraryModelPointMapper, LibraryModelPoint> implements LibraryModelPointService {
@Resource private final LibraryModelPointMapper libraryModelPointMapper;
private LibraryModelPointMapper libraryModelPointMapper; private final LibraryService libraryService;
@Resource private final MinioUtil minioUtil;
private LibraryService libraryService; private final PythonService pythonService;
@Resource private final PythonTAllInfoService pythonTAllInfoService;
private PythonService pythonService;
@Resource
private DesignService designService;
@Autowired
private MinioUtil minioUtil;
@Override @Override
public LibraryModelPointVO saveOrEditTemplatePoint(LibraryModelPointDTO libraryModelPointDTO) { public LibraryModelPointVO saveOrEditTemplatePoint(LibraryModelPointDTO libraryModelPointDTO) {
@@ -226,7 +221,7 @@ public class LibraryModelPointServiceImpl extends ServiceImpl<LibraryModelPointM
public String modelsDot(ModelsDotDTO modelsDotDTO) { public String modelsDot(ModelsDotDTO modelsDotDTO) {
DesignPythonObjects objects = pythonService.covertModelsDotParam( DesignPythonObjects objects = pythonService.covertModelsDotParam(
modelsDotDTO, SingleOverallEnum.OVERALL.getRealName(), ""); modelsDotDTO, SingleOverallEnum.OVERALL.getRealName(), "");
designService.relationImageId(objects); pythonTAllInfoService.relationImageId(objects);
JSONObject jsonObject = pythonService.designNew(objects); JSONObject jsonObject = pythonService.designNew(objects);
JSONObject data = jsonObject.getJSONObject("data"); JSONObject data = jsonObject.getJSONObject("data");
if (data == null) { if (data == null) {

View File

@@ -8,20 +8,15 @@ import com.ai.da.common.utils.CopyUtil;
import com.ai.da.common.utils.MinioUtil; import com.ai.da.common.utils.MinioUtil;
import com.ai.da.common.utils.RedisUtil; import com.ai.da.common.utils.RedisUtil;
import com.ai.da.common.websocket.NotificationConnection; import com.ai.da.common.websocket.NotificationConnection;
import com.ai.da.mapper.primary.CanvasMapper; import com.ai.da.mapper.primary.*;
import com.ai.da.mapper.primary.NotificationMapper; import com.ai.da.mapper.primary.entity.*;
import com.ai.da.mapper.primary.SysNotificationReadStatusMapper;
import com.ai.da.mapper.primary.entity.Account;
import com.ai.da.mapper.primary.entity.Notification;
import com.ai.da.mapper.primary.entity.Portfolio;
import com.ai.da.mapper.primary.entity.SysNotificationReadStatus;
import com.ai.da.model.dto.GetNotificationDTO; import com.ai.da.model.dto.GetNotificationDTO;
import com.ai.da.model.dto.PublishSysNotificationDTO; import com.ai.da.model.dto.PublishSysNotificationDTO;
import com.ai.da.model.enums.Language; import com.ai.da.model.enums.Language;
import com.ai.da.model.vo.NotificationVO; import com.ai.da.model.vo.NotificationVO;
import com.ai.da.service.AccountService; import com.ai.da.service.AccountService;
import com.ai.da.service.MessageCenterService; import com.ai.da.service.MessageCenterService;
import com.ai.da.service.PortfolioService; import com.ai.da.service.UserFollowService;
import com.alibaba.fastjson.JSON; 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.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -31,12 +26,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.mysql.cj.util.StringUtils; import com.mysql.cj.util.StringUtils;
import io.netty.util.internal.StringUtil; import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
@@ -45,22 +39,18 @@ import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
@RequiredArgsConstructor
public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, Notification> implements MessageCenterService { public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, Notification> implements MessageCenterService {
@Resource private final AccountService accountService;
private NotificationConnection notificationConnection; private final CanvasMapper canvasMapper;
@Resource private final MinioUtil minioUtil;
private SysNotificationReadStatusMapper sysNotificationReadStatusMapper; private final NotificationConnection notificationConnection;
@Resource private final PortfolioMapper portfolioMapper;
private AccountService accountService; private final RedisUtil redisUtil;
@Resource private final SysNotificationReadStatusMapper sysNotificationReadStatusMapper;
private MinioUtil minioUtil; private final UserFollowService userFollowService;
@Resource
private PortfolioService portfolioService;
@Resource
private CanvasMapper canvasMapper;
@Resource
private RedisUtil redisUtil;
@Value("${redis.key.newPosted}") @Value("${redis.key.newPosted}")
private String lastViewNewPostedTimeKey; private String lastViewNewPostedTimeKey;
@@ -125,7 +115,7 @@ public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, No
if (Objects.isNull(notificationVO.getPortfolioId())) { if (Objects.isNull(notificationVO.getPortfolioId())) {
notificationVO.setPortfolioId(null); notificationVO.setPortfolioId(null);
} else { } else {
Portfolio byId = portfolioService.getById(notificationVO.getPortfolioId()); Portfolio byId = portfolioMapper.selectById(notificationVO.getPortfolioId());
if (!Objects.isNull(byId)) { if (!Objects.isNull(byId)) {
if (Objects.isNull(byId.getPortfolioName())) { if (Objects.isNull(byId.getPortfolioName())) {
notificationVO.setPortfolioName(null); notificationVO.setPortfolioName(null);
@@ -171,6 +161,7 @@ public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, No
/** /**
* 只记录唯一点赞和关注 * 只记录唯一点赞和关注
* 重复点赞、关注只会记录最新的一次操作 * 重复点赞、关注只会记录最新的一次操作
*
* @param notification * @param notification
* @return * @return
*/ */
@@ -207,8 +198,8 @@ public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, No
if (type.equals("follow")) { if (type.equals("follow")) {
HashMap<String, Object> followee = new HashMap<>(); HashMap<String, Object> followee = new HashMap<>();
HashMap<String, Object> follower = new HashMap<>(); HashMap<String, Object> follower = new HashMap<>();
follower.put("followerCount",portfolioService.getFollowerCount(receiverId)); follower.put("followerCount", userFollowService.getFollowerCount(receiverId));
followee.put("followeeCount",portfolioService.getFolloweeCount(receiverId)); followee.put("followeeCount", userFollowService.getFolloweeCount(receiverId));
resp.add(followee); resp.add(followee);
resp.add(follower); resp.add(follower);
} }
@@ -324,7 +315,7 @@ public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, No
public Long getNewPostedCount(Long accountId) { public Long getNewPostedCount(Long accountId) {
// 1.1 获取我关注的所有用户 // 1.1 获取我关注的所有用户
List<Long> followeeList = portfolioService.getFolloweeList(accountId); List<Long> followeeList = userFollowService.getFolloweeList(accountId);
// 1.2 查询我关注的用户在我上次查看动态之后发布的作品数量 // 1.2 查询我关注的用户在我上次查看动态之后发布的作品数量
String lastViewTime = redisUtil.getFromString(lastViewNewPostedTimeKey + ":" + accountId); String lastViewTime = redisUtil.getFromString(lastViewNewPostedTimeKey + ":" + accountId);
@@ -340,7 +331,7 @@ public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, No
} else { } else {
return 0L; return 0L;
} }
return portfolioService.getBaseMapper().selectCount(queryWrapper); return portfolioMapper.selectCount(queryWrapper);
} }
/** /**
@@ -350,7 +341,7 @@ public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, No
// 1、获取关注用户发布的所有作品 // 1、获取关注用户发布的所有作品
// 1.1 获取我关注的所有用户 // 1.1 获取我关注的所有用户
List<Long> followeeList = portfolioService.getFolloweeList(accountId); List<Long> followeeList = userFollowService.getFolloweeList(accountId);
// 1.2 分页查询我关注的用户发布的作品 // 1.2 分页查询我关注的用户发布的作品
QueryWrapper<Portfolio> queryWrapper = new QueryWrapper<>(); QueryWrapper<Portfolio> queryWrapper = new QueryWrapper<>();
if (!followeeList.isEmpty()) { if (!followeeList.isEmpty()) {
@@ -359,7 +350,7 @@ public class MessageCenterServiceImpl extends ServiceImpl<NotificationMapper, No
return new PageBaseResponse<>(new ArrayList<>(), page, size, 0, 0); return new PageBaseResponse<>(new ArrayList<>(), page, size, 0, 0);
} }
queryWrapper.orderByDesc("create_date"); queryWrapper.orderByDesc("create_date");
Page<Portfolio> portfolioPage = portfolioService.getBaseMapper().selectPage(new Page<>(page, size), queryWrapper); Page<Portfolio> portfolioPage = portfolioMapper.selectPage(new Page<>(page, size), queryWrapper);
// 2、组装返回的数据 // 2、组装返回的数据
IPage<NotificationVO> convert = portfolioPage.convert(o -> { IPage<NotificationVO> convert = portfolioPage.convert(o -> {

View File

@@ -0,0 +1,90 @@
package com.ai.da.service.impl;
import com.ai.da.mapper.primary.MoodboardPositionMapper;
import com.ai.da.mapper.primary.entity.MoodboardPosition;
import com.ai.da.service.MoodboardPositionService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
public class MoodboardPositionServiceImpl extends ServiceImpl<MoodboardPositionMapper, MoodboardPosition> implements MoodboardPositionService {
@Override
public void parseMoodboardPosition(String moodboardPosition, Long collectionIdParam) {
if (!StringUtils.isEmpty(moodboardPosition)) {
// 将 JSON 字符串解析为 JSONObject
JSONObject moodboardPositionJson = JSONObject.parseObject(moodboardPosition);
// 准备保存的 MoodboardPosition 列表
List<MoodboardPosition> moodboardPositions = new ArrayList<>();
// 遍历 JSON 对象的 key即样式类型
for (String key : moodboardPositionJson.keySet()) {
// 特殊处理 "class" 字段
if ("class".equals(key)) {
// 获取 "class" 字段的值并将其转为 List<String>
JSONArray classArray = moodboardPositionJson.getJSONArray(key);
if (classArray != null) {
for (int j = 0; j < classArray.size(); j++) {
// 将 classList 存入 MoodboardPosition或者其他结构
MoodboardPosition position = new MoodboardPosition()
.setCollectionId(collectionIdParam) // 关联 Collection ID
.setType(key) // 样式类型
.setStyleData(classArray.getString(j)) // 设置 class 字段
.setSequence(j) // 根据索引值设置顺序
.setCreateTime(LocalDateTime.now()) // 创建时间
.setUpdateTime(LocalDateTime.now()); // 更新时间
// 添加到列表中
moodboardPositions.add(position);
}
}
continue; // 跳过 "class" 字段的常规处理
}
JSONArray styleArray = moodboardPositionJson.getJSONArray(key);
if (styleArray != null) {
for (int i = 0; i < styleArray.size(); i++) {
// 获取当前样式数据
JSONObject styleData = styleArray.getJSONObject(i);
// 构建 MoodboardPosition 实例
MoodboardPosition position = new MoodboardPosition()
.setCollectionId(collectionIdParam) // 关联 Collection ID
.setType(key) // 样式类型
.setStyleData(styleData.toJSONString()) // 样式数据存为 JSON 字符串
.setSequence(i) // 根据索引值设置顺序
.setCreateTime(LocalDateTime.now()) // 创建时间
.setUpdateTime(LocalDateTime.now()); // 更新时间
// 添加到列表中
moodboardPositions.add(position);
}
}
}
// 如果解析结果非空,保存到数据库
if (!moodboardPositions.isEmpty()) {
for (MoodboardPosition position : moodboardPositions) {
baseMapper.insert(position);
}
log.info("成功解析并保存 {} 条 MoodboardPosition 数据", moodboardPositions.size());
} else {
log.warn("未找到可保存的 MoodboardPosition 数据");
}
} else {
log.warn("传入的 moodboardPosition 字段为空");
}
}
}

View File

@@ -30,6 +30,7 @@ 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 com.google.common.base.Function;
import io.netty.util.internal.StringUtil; import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -45,107 +46,41 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor
public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio> implements PortfolioService { public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio> implements PortfolioService {
@Resource private final AccountMapper accountMapper;
private UserLikeGroupMapper userLikeGroupMapper; private final CanvasMapper canvasMapper;
private final CollectionMapper collectionMapper;
@Resource private final CollectionElementMapper collectionElementMapper;
private CollectionMapper collectionMapper; private final CollectionElementService collectionElementService;
private final CollectionSortMapper collectionSortMapper;
@Resource private final CollectionSortService collectionSortService;
private CollectionElementService collectionElementService; private final CollectionElementRelModelMapper collectionElementRelModelMapper;
private final TCollectionElementRelationMapper collectionElementRelationMapper;
@Resource private final DesignMapper designMapper;
private CollectionElementMapper collectionElementMapper; private final DesignItemMapper designItemMapper;
@Resource private final DesignItemDetailMapper designItemDetailMapper;
private CollectionSortService collectionSortService; private final DesignItemDetailPrintMapper designItemDetailPrintMapper;
@Resource private final TDesignPythonOutfitMapper designPythonOutfitMapper;
private CollectionSortMapper collectionSortMapper; private final TDesignPythonOutfitDetailMapper designPythonOutfitDetailMapper;
@Resource private final MinioUtil minioUtil;
private TCollectionElementRelationMapper collectionElementRelationMapper; private final ProjectMapper projectMapper;
private final PortfolioMapper portfolioMapper;
@Resource private final PortfolioTagsMapper portfolioTagsMapper;
private PortfolioMapper portfolioMapper; private final PoseTransformationMapper poseTransformationMapper;
private final TagsMapper tagsMapper;
@Resource private final TagsService tagsService;
private UserLikeService userLikeService; private final ToProductImageResultMapper toProductImageResultMapper;
private final ToProductImageRecordMapper toProductImageRecordMapper;
@Resource private final UserFollowMapper userFollowMapper;
private UserLikeMapper userLikeMapper; private final UserFollowService userFollowService;
private final UserLikeService userLikeService;
@Resource private final UserLikeMapper userLikeMapper;
private TDesignPythonOutfitMapper designPythonOutfitMapper; private final UserLikeGroupMapper userLikeGroupMapper;
private final UserLikeGroupService userLikeGroupService;
@Resource private final WorkspaceMapper workspaceMapper;
private TDesignPythonOutfitDetailMapper designPythonOutfitDetailMapper; private final WorkspaceService workspaceService;
@Resource
private DesignItemMapper designItemMapper;
@Resource
private DesignItemDetailMapper designItemDetailMapper;
@Resource
private DesignItemDetailPrintMapper designItemDetailPrintMapper;
@Resource
private MinioUtil minioUtil;
@Resource
private WorkspaceService workspaceService;
@Resource
private DesignMapper designMapper;
@Resource
private UserLikeGroupService userLikeGroupService;
@Resource
private CanvasMapper canvasMapper;
@Resource
private AccountMapper accountMapper;
@Resource
private WorkspaceMapper workspaceMapper;
@Resource
private SysFileMapper sysFileMapper;
@Resource
private LibraryMapper libraryMapper;
@Resource
private StyleMapper styleMapper;
@Resource
private WorkspaceRelStyleMapper workspaceRelStyleMapper;
@Resource
private UserFollowMapper userFollowMapper;
@Resource
private PortfolioTagsMapper portfolioTagsMapper;
@Resource
private TagsService tagsService;
@Resource
private TagsMapper tagsMapper;
@Resource
private ProjectMapper projectMapper;
@Resource
private CollectionElementRelModelMapper collectionElementRelModelMapper;
@Resource
private ToProductImageResultMapper toProductImageResultMapper;
@Resource
private ToProductImageRecordMapper toProductImageRecordMapper;
@Resource
private PoseTransformationMapper poseTransformationMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -585,7 +520,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
vo.setIsLike(0); vo.setIsLike(0);
} }
// 设置当前用户是否关注了所查看作品的作者 // 设置当前用户是否关注了所查看作品的作者
Integer ifFollowed = getIfFollowed(portfolio.getAccountId(), portfolioDTO.getAccountId()); Integer ifFollowed = userFollowService.getIfFollowed(portfolio.getAccountId(), portfolioDTO.getAccountId());
vo.setIsFollow(ifFollowed); vo.setIsFollow(ifFollowed);
avatar = StringUtil.isNullOrEmpty(account.getAvatar()) ? CommonConstant.DEFAULT_AVATAR : account.getAvatar(); avatar = StringUtil.isNullOrEmpty(account.getAvatar()) ? CommonConstant.DEFAULT_AVATAR : account.getAvatar();
} }
@@ -1157,7 +1092,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
if (!collect.contains(CommonConstant.RCA_WORKSHOP_TAG)) { if (!collect.contains(CommonConstant.RCA_WORKSHOP_TAG)) {
return false; return false;
} else { } else {
UserLikeGroup userLikeGroup = userLikeGroupService.getById(userLikeGroupId); UserLikeGroup userLikeGroup = userLikeGroupMapper.selectById(userLikeGroupId);
// 不是原创的作品不能参与活动 // 不是原创的作品不能参与活动
if (userLikeGroup.getOriginal().equals(0)) { if (userLikeGroup.getOriginal().equals(0)) {
throw new BusinessException("only.original.works.can.participate.in.the.event", ResultEnum.PROMPT.getCode()); throw new BusinessException("only.original.works.can.participate.in.the.event", ResultEnum.PROMPT.getCode());
@@ -1276,86 +1211,6 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
messageCenterService.pushMessage("follow", followeeId); messageCenterService.pushMessage("follow", followeeId);
} }
public Long getFolloweeCount(Long accountId) {
QueryWrapper<UserFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("follower_id", accountId).select("followee_id");
return userFollowMapper.selectCount(queryWrapper);
}
// 获取某个用户的关注列表 + 按名字查询
public List<AccountFollowVO> getFolloweeList(GetFollowListDTO getFollowListDTO) {
Long accountId = UserContext.getUserHolder().getId();
// 1、判断是否有按用户名查询
List<AccountFollowVO> followeeList;
if (!StringUtil.isNullOrEmpty(getFollowListDTO.getSearchByName())) {
followeeList = userFollowMapper.getFolloweeListByName(getFollowListDTO.getSearchByName(), accountId);
} else {
// 2、查全部 分页查询
String order = StringUtil.isNullOrEmpty(getFollowListDTO.getOrder()) ? "DESC" : getFollowListDTO.getOrder().equals("DESC") ? "DESC" : "ASC";
Integer limit = getFollowListDTO.getSize() > 0 ? getFollowListDTO.getSize() : 20;
Integer offset = getFollowListDTO.getPage() > 0 ? (getFollowListDTO.getPage() - 1) * getFollowListDTO.getSize() : 0;
followeeList = userFollowMapper.getFolloweeListByFollower(accountId, limit, offset, order);
}
if (!followeeList.isEmpty()) {
followeeList.forEach(followee -> {
String avatar = StringUtil.isNullOrEmpty(followee.getAvatar()) ? CommonConstant.DEFAULT_AVATAR : followee.getAvatar();
followee.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
});
return followeeList;
}
return new ArrayList<>();
}
public Long getFollowerCount(Long accountId) {
QueryWrapper<UserFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("followee_id", accountId).select("follower_id");
return userFollowMapper.selectCount(queryWrapper);
}
// 获取某个用户的粉丝列表 + 按名字查询 需返回是否关注该粉丝
public List<AccountFollowVO> getFollowerList(GetFollowListDTO getFollowListDTO) {
Long accountId = UserContext.getUserHolder().getId();
// 获取当前用户的所有粉丝
QueryWrapper<UserFollow> qw = new QueryWrapper<>();
qw.eq("follower_id", accountId).select("followee_id", "create_time");
List<UserFollow> userFollows = userFollowMapper.selectList(qw);
Map<Long, LocalDateTime> followeeMap = userFollows.stream().collect(Collectors.toMap(UserFollow::getFolloweeId, UserFollow::getCreateTime));
List<AccountFollowVO> followerList;
// 1、判断是否有按用户名查询粉丝
if (!StringUtil.isNullOrEmpty(getFollowListDTO.getSearchByName())) {
followerList = userFollowMapper.getFollowerListByName(getFollowListDTO.getSearchByName(), accountId);
} else {
// 2、查全部 分页查询
String order = StringUtil.isNullOrEmpty(getFollowListDTO.getOrder()) ? "DESC" : getFollowListDTO.getOrder().equals("DESC") ? "DESC" : "ASC";
Integer limit = getFollowListDTO.getSize() > 0 ? getFollowListDTO.getSize() : 20;
Integer offset = getFollowListDTO.getPage() > 0 ? (getFollowListDTO.getPage() - 1) * getFollowListDTO.getSize() : 0;
followerList = userFollowMapper.getFollowerListByFollowee(accountId, limit, offset, order);
}
if (!followerList.isEmpty()) {
// 判断当前用户是否与粉丝互关
followerList.forEach(follower -> {
String avatar = StringUtil.isNullOrEmpty(follower.getAvatar()) ? CommonConstant.DEFAULT_AVATAR : follower.getAvatar();
follower.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
follower.setIsFollow(Objects.isNull(followeeMap.get(follower.getSenderId())) ? 0 : 1);
// follower.setFollowTime(followeeMap.get(follower.getUserId()));
});
return followerList;
}
return new ArrayList<>();
}
public Integer getIfFollowed(Long followeeId, Long followerId) {
// 设置当前用户是否关注了所查看作品的作者
QueryWrapper<UserFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("followee_id", followeeId).eq("follower_id", followerId);
UserFollow userFollow = userFollowMapper.selectOne(queryWrapper);
return Objects.isNull(userFollow) ? 0 : 1;
}
public Long getPortfolioCount(Long accountId) { public Long getPortfolioCount(Long accountId) {
QueryWrapper<Portfolio> queryWrapper = new QueryWrapper<>(); QueryWrapper<Portfolio> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("account_id", accountId); queryWrapper.eq("account_id", accountId);
@@ -1363,19 +1218,6 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
return baseMapper.selectCount(queryWrapper); return baseMapper.selectCount(queryWrapper);
} }
/**
* 获取关注列表
*
* @param accountId
* @return
*/
public List<Long> getFolloweeList(Long accountId) {
QueryWrapper<UserFollow> qw = new QueryWrapper<>();
qw.eq("follower_id", accountId).select("followee_id");
List<UserFollow> userFollows = userFollowMapper.selectList(qw);
return userFollows.stream().map(UserFollow::getFolloweeId).collect(Collectors.toList());
}
public void setPortfolioToPublic(Long portfolioId) { public void setPortfolioToPublic(Long portfolioId) {
// 判断当前用户与作品用户是不是一家公司的 // 判断当前用户与作品用户是不是一家公司的

View File

@@ -4,6 +4,8 @@ package com.ai.da.service.impl;
import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.mapper.primary.PythonTAllInfoMapper; import com.ai.da.mapper.primary.PythonTAllInfoMapper;
import com.ai.da.mapper.primary.entity.PythonTAllInfo; import com.ai.da.mapper.primary.entity.PythonTAllInfo;
import com.ai.da.python.vo.DesignPythonItem;
import com.ai.da.python.vo.DesignPythonObjects;
import com.ai.da.service.PythonTAllInfoService; import com.ai.da.service.PythonTAllInfoService;
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;
@@ -13,7 +15,9 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* (PythonTAllInfo)表服务实现类 * (PythonTAllInfo)表服务实现类
@@ -48,4 +52,31 @@ public class PythonTAllInfoServiceImpl extends ServiceImpl<PythonTAllInfoMapper,
} }
return pythonTAllInfo.getId(); return pythonTAllInfo.getId();
} }
@Override
public void relationImageId(DesignPythonObjects pythonObjects) {
if (Objects.isNull(pythonObjects)) {
return;
}
pythonObjects.getObjects().forEach(
o -> {
for (DesignPythonItem item : o.getItems()) {
List<Long> list = new ArrayList<>();
list.add(1L);
list.add(1L);
item.setOffset(list);
item.setResize_scale(new Float[]{1.0f, 1.0f});
String path = item.getPath();
if (StringUtils.isEmpty(path)) {
String bodyPath = item.getBody_path();
Long imageId = getImageIdByPath(bodyPath);
item.setImage_id(imageId);
} else {
Long imageId = getImageIdByPath(path);
item.setImage_id(imageId);
}
}
}
);
}
} }

View File

@@ -0,0 +1,78 @@
package com.ai.da.service.impl;
import com.ai.da.mapper.primary.ToProductImageResultMapper;
import com.ai.da.mapper.primary.entity.CollectionSort;
import com.ai.da.mapper.primary.entity.ToProductImageResult;
import com.ai.da.mapper.primary.entity.UserLike;
import com.ai.da.service.CollectionSortService;
import com.ai.da.service.ToProductImageResultService;
import com.ai.da.service.UserLikeService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Slf4j
@Service
@RequiredArgsConstructor
public class ToProductImageResultServiceImpl extends ServiceImpl<ToProductImageResultMapper, ToProductImageResult> implements ToProductImageResultService {
private final CollectionSortService collectionSortService;
private final UserLikeService userLikeService;
// 获取未被like的to product\relight的parentId
public Long getUnlikedResultParentId(ToProductImageResult toProductImageResult, String url) {
// 卫语句处理null情况
if (toProductImageResult == null && StringUtil.isNullOrEmpty(url)) {
return null;
}
// 如果需要查询结果对象
if (toProductImageResult == null) {
toProductImageResult = baseMapper.selectOne(
new QueryWrapper<ToProductImageResult>().eq("url", url));
}
// 卫语句处理查询结果为空的情况
if (toProductImageResult == null) {
return null;
}
// 根据不同类型处理
String elementType = toProductImageResult.getElementType();
if ("DesignOutfit".equals(elementType)) {
return handleDesignOutfitCase(toProductImageResult);
} else if ("ToProductImage".equals(elementType)) {
// 两种情况 resultType : ToProductImage | Relight
return handleToProductImageCase(toProductImageResult);
}
return null;
}
private Long handleDesignOutfitCase(ToProductImageResult result) {
UserLike userLike = userLikeService.getByDesignOutfitId(result.getElementId());
if (userLike == null) {
return null;
}
CollectionSort collectionSort = collectionSortService.queryCollectionSortByRelation(
userLike.getId(), "Design", result.getProjectId());
return collectionSort != null ? collectionSort.getId() : null;
}
private Long handleToProductImageCase(ToProductImageResult result) {
CollectionSort collectionSort = collectionSortService.queryCollectionSortByRelation(
result.getElementId(), result.getResultType(), result.getProjectId());
if (Objects.isNull(collectionSort) && result.getElementType().equals("ToProductImage")) {
ToProductImageResult toProductImageResult = baseMapper.selectById(result.getElementId());
return getUnlikedResultParentId(toProductImageResult, null);
}
return collectionSort != null ? collectionSort.getParentId() : null;
}
}

View File

@@ -0,0 +1,125 @@
package com.ai.da.service.impl;
import com.ai.da.common.constant.CommonConstant;
import com.ai.da.common.context.UserContext;
import com.ai.da.common.utils.MinioUtil;
import com.ai.da.mapper.primary.UserFollowMapper;
import com.ai.da.mapper.primary.entity.UserFollow;
import com.ai.da.model.dto.GetFollowListDTO;
import com.ai.da.model.vo.AccountFollowVO;
import com.ai.da.service.UserFollowService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor
public class UserFollowServiceImpl extends ServiceImpl<UserFollowMapper, UserFollow> implements UserFollowService {
private final MinioUtil minioUtil;
public Long getFolloweeCount(Long accountId) {
QueryWrapper<UserFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("follower_id", accountId).select("followee_id");
return baseMapper.selectCount(queryWrapper);
}
// 获取某个用户的关注列表 + 按名字查询
public List<AccountFollowVO> getFolloweeList(GetFollowListDTO getFollowListDTO) {
Long accountId = UserContext.getUserHolder().getId();
// 1、判断是否有按用户名查询
List<AccountFollowVO> followeeList;
if (!StringUtil.isNullOrEmpty(getFollowListDTO.getSearchByName())) {
followeeList = baseMapper.getFolloweeListByName(getFollowListDTO.getSearchByName(), accountId);
} else {
// 2、查全部 分页查询
String order = StringUtil.isNullOrEmpty(getFollowListDTO.getOrder()) ? "DESC" : getFollowListDTO.getOrder().equals("DESC") ? "DESC" : "ASC";
Integer limit = getFollowListDTO.getSize() > 0 ? getFollowListDTO.getSize() : 20;
Integer offset = getFollowListDTO.getPage() > 0 ? (getFollowListDTO.getPage() - 1) * getFollowListDTO.getSize() : 0;
followeeList = baseMapper.getFolloweeListByFollower(accountId, limit, offset, order);
}
if (!followeeList.isEmpty()) {
followeeList.forEach(followee -> {
String avatar = StringUtil.isNullOrEmpty(followee.getAvatar()) ? CommonConstant.DEFAULT_AVATAR : followee.getAvatar();
followee.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
});
return followeeList;
}
return new ArrayList<>();
}
public Long getFollowerCount(Long accountId) {
QueryWrapper<UserFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("followee_id", accountId).select("follower_id");
return baseMapper.selectCount(queryWrapper);
}
// 获取某个用户的粉丝列表 + 按名字查询 需返回是否关注该粉丝
public List<AccountFollowVO> getFollowerList(GetFollowListDTO getFollowListDTO) {
Long accountId = UserContext.getUserHolder().getId();
// 获取当前用户的所有粉丝
QueryWrapper<UserFollow> qw = new QueryWrapper<>();
qw.eq("follower_id", accountId).select("followee_id", "create_time");
List<UserFollow> userFollows = baseMapper.selectList(qw);
Map<Long, LocalDateTime> followeeMap = userFollows.stream().collect(Collectors.toMap(UserFollow::getFolloweeId, UserFollow::getCreateTime));
List<AccountFollowVO> followerList;
// 1、判断是否有按用户名查询粉丝
if (!StringUtil.isNullOrEmpty(getFollowListDTO.getSearchByName())) {
followerList = baseMapper.getFollowerListByName(getFollowListDTO.getSearchByName(), accountId);
} else {
// 2、查全部 分页查询
String order = StringUtil.isNullOrEmpty(getFollowListDTO.getOrder()) ? "DESC" : getFollowListDTO.getOrder().equals("DESC") ? "DESC" : "ASC";
Integer limit = getFollowListDTO.getSize() > 0 ? getFollowListDTO.getSize() : 20;
Integer offset = getFollowListDTO.getPage() > 0 ? (getFollowListDTO.getPage() - 1) * getFollowListDTO.getSize() : 0;
followerList = baseMapper.getFollowerListByFollowee(accountId, limit, offset, order);
}
if (!followerList.isEmpty()) {
// 判断当前用户是否与粉丝互关
followerList.forEach(follower -> {
String avatar = StringUtil.isNullOrEmpty(follower.getAvatar()) ? CommonConstant.DEFAULT_AVATAR : follower.getAvatar();
follower.setAvatar(minioUtil.getPreSignedUrl(avatar, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
follower.setIsFollow(Objects.isNull(followeeMap.get(follower.getSenderId())) ? 0 : 1);
// follower.setFollowTime(followeeMap.get(follower.getUserId()));
});
return followerList;
}
return new ArrayList<>();
}
public Integer getIfFollowed(Long followeeId, Long followerId) {
// 设置当前用户是否关注了所查看作品的作者
QueryWrapper<UserFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("followee_id", followeeId).eq("follower_id", followerId);
UserFollow userFollow = baseMapper.selectOne(queryWrapper);
return Objects.isNull(userFollow) ? 0 : 1;
}
/**
* 获取关注列表
*
* @param accountId
* @return
*/
public List<Long> getFolloweeList(Long accountId) {
QueryWrapper<UserFollow> qw = new QueryWrapper<>();
qw.eq("follower_id", accountId).select("followee_id");
List<UserFollow> userFollows = baseMapper.selectList(qw);
return userFollows.stream().map(UserFollow::getFolloweeId).collect(Collectors.toList());
}
}

View File

@@ -29,7 +29,9 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.Comparator; import java.util.Comparator;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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;
@@ -38,6 +40,7 @@ import com.google.common.base.Function;
import com.google.gson.Gson; import com.google.gson.Gson;
import io.minio.errors.MinioException; import io.minio.errors.MinioException;
import io.netty.util.internal.StringUtil; import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -66,98 +69,54 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor
public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, UserLikeGroup> implements UserLikeGroupService { public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, UserLikeGroup> implements UserLikeGroupService {
@Resource private final UserLikeGroupMapper userLikeGroupMapper;
private UserLikeGroupMapper userLikeGroupMapper; private final AccountService accountService;
@Resource private final CollectionService collectionService;
private AccountService accountService; private final UserLikeService userLikeService;
@Resource private final WorkspaceService workspaceService;
private CollectionService collectionService; private final UserLikeMapper userLikeMapper;
@Resource private final MinioUtil minioUtil;
private UserLikeService userLikeService; private final TDesignPythonOutfitMapper designPythonOutfitMapper;
@Resource private final DesignMapper designMapper;
private WorkspaceService workspaceService; private final MoodboardPositionService moodboardPositionService;
@Resource private final SysFileMapper sysFileMapper;
private UserLikeMapper userLikeMapper; private final LibraryMapper libraryMapper;
@Resource private final GenerateDetailMapper generateDetailMapper;
private MinioUtil minioUtil; private final PortfolioMapper portfolioMapper;
@Resource private final TagsMapper tagsMapper;
private TDesignPythonOutfitMapper designPythonOutfitMapper; private final DesignItemDetailService designItemDetailService;
@Resource private final CollectionElementMapper collectionElementMapper;
private DesignMapper designMapper; private final AttributeRetrievalMapper attributeRetrievalMapper;
@Resource private final ProductImageAttributeMapper productImageAttributeMapper;
private DesignService designService; private final CollectionSortMapper collectionSortMapper;
@Resource private final ClassificationService classificationService;
private SysFileMapper sysFileMapper;
@Resource
private LibraryMapper libraryMapper;
@Resource
private GenerateDetailMapper generateDetailMapper;
@Resource
private PortfolioMapper portfolioMapper;
@Resource
private TagsMapper tagsMapper;
@Resource
private DesignItemDetailService designItemDetailService;
@Resource
private CollectionElementMapper collectionElementMapper;
@Resource
private AttributeRetrievalMapper attributeRetrievalMapper;
@Resource
private ProductImageAttributeMapper productImageAttributeMapper;
@Resource
private CollectionSortMapper collectionSortMapper;
@Resource
private ClassificationService classificationService;
@Resource
// private ProjectMapper projectMapper; // private ProjectMapper projectMapper;
private ProjectService projectService; private final ProjectService projectService;
@Resource private final LibraryModelPointMapper libraryModelPointMapper;
private PortfolioService portfolioService; private final LibraryService libraryService;
@Resource private final BrandDNAMapper brandDNAMapper;
private LibraryModelPointMapper libraryModelPointMapper; private final BrandRelLibraryMapper brandRelLibraryMapper;
@Resource private final ThreeDLayoutMapper threeDLayoutMapper;
private LibraryService libraryService; private final ThreeDPatternLayoutMapper threeDPatternLayoutMapper;
@Resource private final ThreeDDetailMapper threeDDetailMapper;
private BrandDNAMapper brandDNAMapper; private final ThreeDSimpleMapper threeDSimpleMapper;
@Resource private final ThreeDModuleMapper threeDModuleMapper;
private BrandRelLibraryMapper brandRelLibraryMapper; private final ProductImageService productImageService;
@Resource private final CollectionElementRelModelMapper collectionElementRelModelMapper;
private ThreeDLayoutMapper threeDLayoutMapper; private final CollectionSortService collectionSortService;
@Resource private final GenerateService generateService;
private ThreeDPatternLayoutMapper threeDPatternLayoutMapper; private final ToProductElementMapper toProductElementMapper;
@Resource private final ToProductImageRecordMapper toProductImageRecordMapper;
private ThreeDDetailMapper threeDDetailMapper; private final ToProductImageResultMapper toProductImageResultMapper;
@Resource private final ToProductImageResultService toProductImageResultService;
private ThreeDSimpleMapper threeDSimpleMapper; private final CloudTaskMapper cloudTaskMapper;
@Resource private final PythonService pythonService;
private ThreeDModuleMapper threeDModuleMapper; private final CreditsService creditsService;
@Resource private final PoseTransformationMapper poseTransformationMapper;
private ProductImageService productImageService; private final ExportFileMapper exportFileMapper;
@Resource private final DesignItemDetailCanvasMapper designItemDetailCanvasMapper;
private CollectionElementRelModelMapper collectionElementRelModelMapper;
@Resource
private CollectionSortService collectionSortService;
@Resource
private GenerateService generateService;
@Resource
private ToProductElementMapper toProductElementMapper;
@Resource
private ToProductImageRecordMapper toProductImageRecordMapper;
@Resource
private ToProductImageResultMapper toProductImageResultMapper;
@Resource
private CloudTaskMapper cloudTaskMapper;
@Resource
private PythonService pythonService;
@Resource
private CreditsService creditsService;
@Resource
private PoseTransformationMapper poseTransformationMapper;
@Resource
private ExportFileMapper exportFileMapper;
@Resource
private DesignItemDetailCanvasMapper designItemDetailCanvasMapper;
@Value("${redis.key.generateResult}") @Value("${redis.key.generateResult}")
private String generateResultKey; private String generateResultKey;
@@ -2033,7 +1992,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
} }
if (userLikeGroupVO.getOriginal() == 0) { if (userLikeGroupVO.getOriginal() == 0) {
userLikeGroupVO.setOriginalAccountName(accountService.getById(userLikeGroupVO.getOriginalAccountId()).getUserName()); userLikeGroupVO.setOriginalAccountName(accountService.getById(userLikeGroupVO.getOriginalAccountId()).getUserName());
Portfolio byId = portfolioService.getByIdAll(userLikeGroupVO.getOriginalPortfolioId()); Portfolio byId = portfolioMapper.getByIdAll(userLikeGroupVO.getOriginalPortfolioId());
if (Objects.nonNull(byId)) { if (Objects.nonNull(byId)) {
String portfolioName = byId.getPortfolioName(); String portfolioName = byId.getPortfolioName();
userLikeGroupVO.setOriginalPortfolioName(portfolioName); userLikeGroupVO.setOriginalPortfolioName(portfolioName);
@@ -2368,7 +2327,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
if (Objects.nonNull(toProductImageRecord)) { if (Objects.nonNull(toProductImageRecord)) {
vo.setPrompt(toProductImageRecord.getPrompt()); vo.setPrompt(toProductImageRecord.getPrompt());
} }
vo.setParentId(getUnlikedResultParentId(result, null)); vo.setParentId(toProductImageResultService.getUnlikedResultParentId(result, null));
// 按isLike分类 // 按isLike分类
if (result.getIsLike() != null && result.getIsLike() == 1) { if (result.getIsLike() != null && result.getIsLike() == 1) {
likedList.add(vo); likedList.add(vo);
@@ -2497,56 +2456,6 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
return duration.toHours() >= 1; return duration.toHours() >= 1;
} }
// 获取未被like的to product\relight的parentId
public Long getUnlikedResultParentId(ToProductImageResult toProductImageResult, String url) {
// 卫语句处理null情况
if (toProductImageResult == null && StringUtil.isNullOrEmpty(url)) {
return null;
}
// 如果需要查询结果对象
if (toProductImageResult == null) {
toProductImageResult = toProductImageResultMapper.selectOne(
new QueryWrapper<ToProductImageResult>().eq("url", url));
}
// 卫语句处理查询结果为空的情况
if (toProductImageResult == null) {
return null;
}
// 根据不同类型处理
String elementType = toProductImageResult.getElementType();
if ("DesignOutfit".equals(elementType)) {
return handleDesignOutfitCase(toProductImageResult);
} else if ("ToProductImage".equals(elementType)) {
// 两种情况 resultType : ToProductImage | Relight
return handleToProductImageCase(toProductImageResult);
}
return null;
}
private Long handleDesignOutfitCase(ToProductImageResult result) {
UserLike userLike = userLikeService.getByDesignOutfitId(result.getElementId());
if (userLike == null) {
return null;
}
CollectionSort collectionSort = collectionSortService.queryCollectionSortByRelation(
userLike.getId(), "Design", result.getProjectId());
return collectionSort != null ? collectionSort.getId() : null;
}
private Long handleToProductImageCase(ToProductImageResult result) {
CollectionSort collectionSort = collectionSortService.queryCollectionSortByRelation(
result.getElementId(), result.getResultType(), result.getProjectId());
if (Objects.isNull(collectionSort) && result.getElementType().equals("ToProductImage")) {
ToProductImageResult toProductImageResult = toProductImageResultMapper.selectById(result.getElementId());
return getUnlikedResultParentId(toProductImageResult, null);
}
return collectionSort != null ? collectionSort.getParentId() : null;
}
@Override @Override
@Transactional @Transactional
@@ -2568,7 +2477,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
collectionElementMapper.updateById(compositeImage); collectionElementMapper.updateById(compositeImage);
if (!StringUtils.isEmpty(moodBoard.getMoodboardPosition())) { if (!StringUtils.isEmpty(moodBoard.getMoodboardPosition())) {
// 合成图位置信息通过collectElementId关联旧逻辑通过collectionId关联 // 合成图位置信息通过collectElementId关联旧逻辑通过collectionId关联
designService.parseMoodboardPosition(moodBoard.getMoodboardPosition(), compositeImage.getId()); moodboardPositionService.parseMoodboardPosition(moodBoard.getMoodboardPosition(), compositeImage.getId());
} }
} }
} }
@@ -3358,6 +3267,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
toProductElementVO.setUrl(minioUtil.getPreSignedUrl(toProductElementVO.getUrl(), 24 * 60)); toProductElementVO.setUrl(minioUtil.getPreSignedUrl(toProductElementVO.getUrl(), 24 * 60));
return toProductElementVO; return toProductElementVO;
} }
private String buildAdvancedPrompt(Long projectId, String prompt) { private String buildAdvancedPrompt(Long projectId, String prompt) {
String process = projectService.getById(projectId).getProcess(); String process = projectService.getById(projectId).getProcess();
String ageGroup = workspaceService.getWSByProjectId(projectId).getAgeGroup(); String ageGroup = workspaceService.getWSByProjectId(projectId).getAgeGroup();

View File

@@ -12,17 +12,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
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;
import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 服务实现类 * 服务实现类
@@ -32,13 +29,10 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor
public class UserLikeServiceImpl extends ServiceImpl<UserLikeMapper, UserLike> implements UserLikeService { public class UserLikeServiceImpl extends ServiceImpl<UserLikeMapper, UserLike> implements UserLikeService {
@Resource private final UserLikeMapper userLikeMapper;
private UserLikeMapper userLikeMapper; private final UserLikeGroupMapper userLikeGroupMapper;
@Resource
private UserLikeGroupMapper userLikeGroupMapper;
@Resource
private DesignItemServiceImpl designItemService;
@Override @Override
public List<UserLikeVO> getGroupDetail(Long userGroupId) { public List<UserLikeVO> getGroupDetail(Long userGroupId) {
@@ -50,12 +44,6 @@ public class UserLikeServiceImpl extends ServiceImpl<UserLikeMapper, UserLike> i
return Lists.newArrayList(); return Lists.newArrayList();
} }
return CopyUtil.copyList(userLikes, UserLikeVO.class); return CopyUtil.copyList(userLikes, UserLikeVO.class);
// List<Long> designItemIds = userLikes.stream().map(UserLike::getDesignItemId).collect(Collectors.toList());
// List<DesignItem> designItems = designItemService.listByIds(designItemIds);
// Map<Long,String> idToUrlMap = designItems.stream().collect(Collectors.toMap(DesignItem::getId,DesignItem::getDesignUrl));
// return CopyUtil.copyList(userLikes,UserLikeVO.class,(o,d) ->{
// d.setUrl(idToUrlMap.get(o.getDesignItemId()));
// });
} }
@Override @Override

View File

@@ -980,4 +980,32 @@ public class WorkspaceServiceImpl extends ServiceImpl<WorkspaceMapper, Workspace
return kvs; return kvs;
} }
@Override
public String getAgeGroupByProjectOrCollectionId(Long projectId, Long collectionId) {
if (Objects.nonNull(projectId)) {
Workspace workspace = getWSByProjectId(projectId);
if (workspace != null && !StringUtil.isNullOrEmpty(workspace.getAgeGroup())) {
return workspace.getAgeGroup();
}
} else if (Objects.nonNull(collectionId) && collectionId != 0) {
List<CollectionElement> byCollectionId = getByCollectionId(collectionId);
if (byCollectionId != null && !byCollectionId.isEmpty()) {
projectId = byCollectionId.get(0).getProjectId();
if (projectId != null && projectId != 0L) {
Workspace workspace = getWSByProjectId(projectId);
if (workspace != null && !StringUtil.isNullOrEmpty(workspace.getAgeGroup())) {
return workspace.getAgeGroup();
}
}
}
}
return AgeGroup.ADULT.getValue();
}
private List<CollectionElement> getByCollectionId(Long collectionId) {
QueryWrapper<CollectionElement> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CollectionElement::getCollectionId, collectionId);
return collectionElementMapper.selectList(queryWrapper);
}
} }