Merge branch 'dev/dev' into dev/dev_xp
# Conflicts: # src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java # src/main/java/com/ai/da/service/impl/AccountServiceImpl.java # src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java # src/main/resources/application-dev.properties # src/main/resources/messages_en.properties # src/main/resources/messages_zh.properties
This commit is contained in:
@@ -44,6 +44,8 @@ public class GenerateConsumer {
|
|||||||
|
|
||||||
@Value("${redis.key.generateResult}")
|
@Value("${redis.key.generateResult}")
|
||||||
private String generateResultKey;
|
private String generateResultKey;
|
||||||
|
@Value("${redis.key.toProductImageResultKey}")
|
||||||
|
private String toProductImageResultKey;
|
||||||
|
|
||||||
public void generate(Message msg, Channel channel, String consumerName) {
|
public void generate(Message msg, Channel channel, String consumerName) {
|
||||||
log.info("============start listening==========");
|
log.info("============start listening==========");
|
||||||
@@ -158,6 +160,54 @@ public class GenerateConsumer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void processToProductImageResult(Message msg, Channel channel) {
|
||||||
|
log.info("============processToProductImageResult listening==========");
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
|
||||||
|
Map<String, String> generateResult = JSONObject.parseObject(msg.getBody(), Map.class);
|
||||||
|
log.info("toProductImage response : {}", generateResult);
|
||||||
|
|
||||||
|
try {
|
||||||
|
log.info("tasks_id : {} start ", generateResult.get("tasks_id"));
|
||||||
|
if (generateResult.get("status").equals("SUCCESS")) {
|
||||||
|
String url = generateResult.get("image_url");
|
||||||
|
String taskId = generateResult.get("tasks_id");
|
||||||
|
String category = generateResult.get("category");
|
||||||
|
generateService.processToProductImageResult(taskId, url, category);
|
||||||
|
} else {
|
||||||
|
// 修改redis中的数据状态为exception
|
||||||
|
String key = toProductImageResultKey + ":" + generateResult.get("tasks_id");
|
||||||
|
redisUtil.addToString(key, new Gson().toJson(new GenerateResultVO(generateResult.get("tasks_id"), null, null, "Fail")), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||||
|
// 将异常信息存到exception中
|
||||||
|
HashMap<String, String> exceptionInfo = new HashMap<>();
|
||||||
|
exceptionInfo.put(generateResult.get("tasks_id"), generateResult.get("data"));
|
||||||
|
// 存redis
|
||||||
|
redisUtil.addToMap(exceptionMapKey, exceptionInfo);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e.getMessage());
|
||||||
|
try {
|
||||||
|
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
|
||||||
|
// 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除
|
||||||
|
redisUtil.removeFromZSet(consumptionOrderKey, generateResult.get("tasks_id"));
|
||||||
|
} catch (IOException exception) {
|
||||||
|
log.error("手动确认,取消返回队列,不再重新消费");
|
||||||
|
}
|
||||||
|
// 将入参和错误信息存入数据库
|
||||||
|
String exceptionMessage = JSONObject.toJSONString(generateResult) +
|
||||||
|
" Exception message : " + e.getMessage();
|
||||||
|
HashMap<String, String> exceptionInfo = new HashMap<>();
|
||||||
|
exceptionInfo.put(String.valueOf(generateResult.get("tasks_id")), exceptionMessage);
|
||||||
|
// 存redis
|
||||||
|
redisUtil.addToMap(exceptionMapKey, exceptionInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
log.info("tasks_id : {}, end , message : {}, 执行时长: {} 毫秒", generateResult.get("tasks_id"), generateResult.get("message"), (end - start));
|
||||||
|
log.info("============ProcessGenerateResult End listening==========");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
@RabbitHandler
|
@RabbitHandler
|
||||||
public void generateConsumer1(Message msg, Channel channel) {
|
public void generateConsumer1(Message msg, Channel channel) {
|
||||||
@@ -217,4 +267,10 @@ public class GenerateConsumer {
|
|||||||
public void getGenerateResult(Message msg, Channel channel) {
|
public void getGenerateResult(Message msg, Channel channel) {
|
||||||
processGenerateResult(msg, channel);
|
processGenerateResult(msg, channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RabbitListener(queues = MQConfig.TO_PRODUCT_IMAGE_RESULT_QUEUE)
|
||||||
|
@RabbitHandler
|
||||||
|
public void getToProductImageResult(Message msg, Channel channel) {
|
||||||
|
processToProductImageResult(msg, channel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ public class MQConfig {
|
|||||||
// public static final String GENERATE_RESULT_QUEUE = "GenerateImage-local";
|
// public static final String GENERATE_RESULT_QUEUE = "GenerateImage-local";
|
||||||
public static final String GENERATE_RESULT_QUEUE = "GenerateImage-prod";
|
public static final String GENERATE_RESULT_QUEUE = "GenerateImage-prod";
|
||||||
|
|
||||||
|
public static final String TO_PRODUCT_IMAGE_RESULT_QUEUE = "ToProductImage-local";
|
||||||
public MQConfig() {
|
public MQConfig() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.ai.da.common.config;
|
package com.ai.da.common.config;
|
||||||
|
|
||||||
|
import com.ai.da.common.utils.MinioUtil;
|
||||||
import com.ai.da.common.utils.SendEmailUtil;
|
import com.ai.da.common.utils.SendEmailUtil;
|
||||||
import com.ai.da.mapper.primary.AccountMapper;
|
import com.ai.da.mapper.primary.*;
|
||||||
import com.ai.da.mapper.primary.TrialOrderMapper;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
import com.ai.da.mapper.primary.entity.Account;
|
|
||||||
import com.ai.da.mapper.primary.entity.TrialOrder;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
@@ -22,10 +22,16 @@ import java.nio.file.Paths;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class MyTaskScheduler {
|
public class MyTaskScheduler {
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void test() {
|
||||||
|
// clearMinio();
|
||||||
|
}
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AccountMapper accountMapper;
|
private AccountMapper accountMapper;
|
||||||
|
|
||||||
@@ -71,7 +77,7 @@ public class MyTaskScheduler {
|
|||||||
@Scheduled(cron = "0 0 8 * * ?")
|
@Scheduled(cron = "0 0 8 * * ?")
|
||||||
public void sendTrialOrderExcelToManagements() {
|
public void sendTrialOrderExcelToManagements() {
|
||||||
// 获取前一天日期
|
// 获取前一天日期
|
||||||
LocalDate yesterday = LocalDate.now().minusDays(1);
|
LocalDate yesterday = LocalDate.now().minusDays(3);
|
||||||
|
|
||||||
// 查询前一天的试用订单
|
// 查询前一天的试用订单
|
||||||
QueryWrapper<TrialOrder> qw = new QueryWrapper<>();
|
QueryWrapper<TrialOrder> qw = new QueryWrapper<>();
|
||||||
@@ -134,4 +140,69 @@ public class MyTaskScheduler {
|
|||||||
SendEmailUtil.sendNoExcelEmail("kimwong@code-create.com.hk", null);
|
SendEmailUtil.sendNoExcelEmail("kimwong@code-create.com.hk", null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserLikeGroupMapper userLikeGroupMapper;
|
||||||
|
@Resource
|
||||||
|
private UserLikeMapper userLikeMapper;
|
||||||
|
@Resource
|
||||||
|
private TDesignPythonOutfitMapper designPythonOutfitMapper;
|
||||||
|
@Resource
|
||||||
|
private TDesignPythonOutfitDetailMapper designPythonOutfitDetailMapper;
|
||||||
|
@Resource
|
||||||
|
private DesignItemMapper designItemMapper;
|
||||||
|
@Resource
|
||||||
|
private DesignItemDetailMapper designItemDetailMapper;
|
||||||
|
@Resource
|
||||||
|
private MinioUtil minioUtil;
|
||||||
|
public void clearMinio() {
|
||||||
|
// 获取当前所有history
|
||||||
|
QueryWrapper<UserLikeGroup> userLikeGroupQueryWrapper = new QueryWrapper<>();
|
||||||
|
List<UserLikeGroup> userLikeGroupList = userLikeGroupMapper.selectList(userLikeGroupQueryWrapper);
|
||||||
|
List<Long> userLikeGroupIdList = userLikeGroupList.stream().map(UserLikeGroup::getId).collect(Collectors.toList());
|
||||||
|
QueryWrapper<UserLike> userLikeQueryWrapper = new QueryWrapper<>();
|
||||||
|
userLikeQueryWrapper.lambda().in(UserLike::getUserLikeGroupId, userLikeGroupIdList);
|
||||||
|
// 所有喜欢的图片
|
||||||
|
List<UserLike> userLikes = userLikeMapper.selectList(userLikeQueryWrapper);
|
||||||
|
List<Long> designOutfitIdList = userLikes.stream().map(UserLike::getDesignOutfitId).collect(Collectors.toList());
|
||||||
|
QueryWrapper<TDesignPythonOutfit> designPythonOutfitQueryWrapper = new QueryWrapper<>();
|
||||||
|
designPythonOutfitQueryWrapper.lambda().notIn(TDesignPythonOutfit::getId, designOutfitIdList);
|
||||||
|
List<TDesignPythonOutfit> tDesignPythonOutfits = designPythonOutfitMapper.selectList(designPythonOutfitQueryWrapper);
|
||||||
|
// int i = 0;
|
||||||
|
// for (TDesignPythonOutfit tDesignPythonOutfit : tDesignPythonOutfits) {
|
||||||
|
// String designUrl = tDesignPythonOutfit.getDesignUrl();
|
||||||
|
// if (StringUtils.isNotBlank(designUrl)) {
|
||||||
|
// minioUtil.deleteObject(designUrl);
|
||||||
|
// i ++;
|
||||||
|
// }
|
||||||
|
// QueryWrapper<TDesignPythonOutfitDetail> designPythonOutfitDetailQueryWrapper = new QueryWrapper<>();
|
||||||
|
// designPythonOutfitDetailQueryWrapper.lambda().eq(TDesignPythonOutfitDetail::getDesignPythonOutfitId, tDesignPythonOutfit.getId());
|
||||||
|
// List<TDesignPythonOutfitDetail> tDesignPythonOutfitDetails = designPythonOutfitDetailMapper.selectList(designPythonOutfitDetailQueryWrapper);
|
||||||
|
// for (TDesignPythonOutfitDetail tDesignPythonOutfitDetail : tDesignPythonOutfitDetails) {
|
||||||
|
// if (!tDesignPythonOutfitDetail.getImageCategory().equals("body")) {
|
||||||
|
// if (StringUtils.isNotBlank(tDesignPythonOutfitDetail.getImageUrl())) {
|
||||||
|
// minioUtil.deleteObject(tDesignPythonOutfitDetail.getImageUrl());
|
||||||
|
// i ++;
|
||||||
|
// }
|
||||||
|
// if (StringUtils.isNotBlank(tDesignPythonOutfitDetail.getMaskUrl())) {
|
||||||
|
// minioUtil.deleteObject(tDesignPythonOutfitDetail.getMaskUrl());
|
||||||
|
// i ++;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
System.out.println("i");
|
||||||
|
// List<Long> designItemIdList = userLikes.stream().map(UserLike::getDesignItemId).collect(Collectors.toList());
|
||||||
|
// QueryWrapper<DesignItem> designItemQueryWrapper = new QueryWrapper<>();
|
||||||
|
// designItemQueryWrapper.lambda().in(DesignItem::getId,designItemIdList);
|
||||||
|
// List<DesignItem> designItems = designItemMapper.selectList(designItemQueryWrapper);
|
||||||
|
// for (DesignItem designItem : designItems) {
|
||||||
|
// QueryWrapper<DesignItemDetail> designItemDetailQueryWrapper = new QueryWrapper<>();
|
||||||
|
// designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItem.getId());
|
||||||
|
// List<DesignItemDetail> designItemDetails = designItemDetailMapper.selectList(designItemDetailQueryWrapper);
|
||||||
|
// for (DesignItemDetail designItemDetail : designItemDetails) {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,4 +153,10 @@ public class AccountController {
|
|||||||
accountService.upgradeNotification();
|
accountService.upgradeNotification();
|
||||||
return Response.success(true);
|
return Response.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "广场用户注册")
|
||||||
|
@PostMapping("/designWorksRegister")
|
||||||
|
public Response<Boolean> designWorksRegister(@Valid @RequestBody AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO) {
|
||||||
|
return Response.success(accountService.designWorksRegister(accountDesignWorksRegisterDTO));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.ai.da.controller;
|
|||||||
|
|
||||||
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.model.dto.DesignWorksRegisterDTO;
|
||||||
import com.ai.da.model.dto.PortfolioDTO;
|
import com.ai.da.model.dto.PortfolioDTO;
|
||||||
import com.ai.da.model.dto.QueryPortfolioPageDTO;
|
import com.ai.da.model.dto.QueryPortfolioPageDTO;
|
||||||
import com.ai.da.model.vo.PortfolioVO;
|
import com.ai.da.model.vo.PortfolioVO;
|
||||||
@@ -10,10 +11,8 @@ import com.ai.da.service.PortfolioService;
|
|||||||
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;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@@ -29,16 +28,18 @@ public class PortfolioController {
|
|||||||
|
|
||||||
@ApiOperation(value = "发布作品集")
|
@ApiOperation(value = "发布作品集")
|
||||||
@PostMapping("/publish")
|
@PostMapping("/publish")
|
||||||
public Response<Boolean> preLogin(@Valid @RequestBody PortfolioDTO portfolioDTO) {
|
public Response<Boolean> preLogin(@RequestParam("file") MultipartFile canvas, @RequestParam("data") String data) {
|
||||||
return Response.success(portfolioService.publish(portfolioDTO));
|
return Response.success(portfolioService.publish(canvas, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CrossOrigin
|
||||||
@ApiOperation(value = "作品集page")
|
@ApiOperation(value = "作品集page")
|
||||||
@PostMapping("/page")
|
@PostMapping("/page")
|
||||||
public Response<PageBaseResponse<PortfolioVO>> page(@Valid @RequestBody QueryPortfolioPageDTO query) {
|
public Response<PageBaseResponse<PortfolioVO>> page(@Valid @RequestBody QueryPortfolioPageDTO query) {
|
||||||
return Response.success(portfolioService.page(query));
|
return Response.success(portfolioService.page(query));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CrossOrigin
|
||||||
@ApiOperation(value = "作品详情")
|
@ApiOperation(value = "作品详情")
|
||||||
@PostMapping("/detail")
|
@PostMapping("/detail")
|
||||||
public Response<PortfolioVO> detail(@Valid @RequestBody PortfolioDTO portfolioDTO) {
|
public Response<PortfolioVO> detail(@Valid @RequestBody PortfolioDTO portfolioDTO) {
|
||||||
@@ -56,4 +57,10 @@ public class PortfolioController {
|
|||||||
public Response<PortfolioVO> update(@Valid @RequestBody PortfolioDTO portfolioDTO) {
|
public Response<PortfolioVO> update(@Valid @RequestBody PortfolioDTO portfolioDTO) {
|
||||||
return Response.success(portfolioService.update(portfolioDTO));
|
return Response.success(portfolioService.update(portfolioDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "广场用户注册")
|
||||||
|
@PostMapping("/designWorksRegister")
|
||||||
|
public Response<Boolean> designWorksRegister(@Valid @RequestBody DesignWorksRegisterDTO designWorksRegisterDTO) {
|
||||||
|
return Response.success(portfolioService.designWorksRegister(designWorksRegisterDTO));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,13 +8,11 @@ import com.ai.da.common.response.Response;
|
|||||||
import com.ai.da.common.utils.CopyUtil;
|
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.mapper.primary.TDesignPythonOutfitMapper;
|
import com.ai.da.mapper.primary.TDesignPythonOutfitMapper;
|
||||||
import com.ai.da.mapper.primary.entity.Account;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
import com.ai.da.mapper.primary.entity.Library;
|
|
||||||
import com.ai.da.mapper.primary.entity.TDesignPythonOutfit;
|
|
||||||
import com.ai.da.mapper.primary.entity.UserLikeGroup;
|
|
||||||
import com.ai.da.model.dto.*;
|
import com.ai.da.model.dto.*;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
import com.ai.da.service.*;
|
import com.ai.da.service.*;
|
||||||
|
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.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;
|
||||||
@@ -26,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@@ -159,4 +158,52 @@ public class SavedCollectionController {
|
|||||||
return Response.success(userLikeGroupService.choose(userGroupId));
|
return Response.success(userLikeGroupService.choose(userGroupId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "exportSave")
|
||||||
|
@PostMapping("/exportSave")
|
||||||
|
public Response<Boolean> exportSave(@RequestParam("file") MultipartFile file, @RequestParam("userLikeGroupId") Long userLikeGroupId) {
|
||||||
|
return Response.success(userLikeGroupService.exportSave(file, userLikeGroupId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "exportSearch")
|
||||||
|
@PostMapping("/exportSearch")
|
||||||
|
public Response<JSONObject> exportSearch(@Valid @RequestBody ExportSearchDTO exportSearchDTO) {
|
||||||
|
return Response.success(userLikeGroupService.exportSearch(exportSearchDTO.getUserLikeGroupId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "toProduct")
|
||||||
|
@PostMapping("/toProduct")
|
||||||
|
public Response<List<ToProductImageResult>> toProduct(@Valid @RequestBody ToProductImageDTO toProductImageDTO) {
|
||||||
|
return Response.success(userLikeGroupService.toProduct(toProductImageDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "toProductImageElementUpload")
|
||||||
|
@PostMapping("/toProductImageElementUpload")
|
||||||
|
public Response<ToProductElementVO> toProductImageElementUpload(@RequestParam("file") MultipartFile file, @RequestParam(value = "userlikeGroupId") Long userLikeGroupId) {
|
||||||
|
return Response.success(userLikeGroupService.toProductImageElementUpload(file, userLikeGroupId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "productImageLike")
|
||||||
|
@PostMapping("/productImageLike")
|
||||||
|
public Response<Boolean> productImageLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) {
|
||||||
|
return Response.success(userLikeGroupService.productImageLike(productImageLikeDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取生成结果")
|
||||||
|
@PostMapping("/toProductImageResult")
|
||||||
|
public Response<List<GenerateResultVO>> getToProductImageResult(@Valid @RequestBody List<String> taskIdList) {
|
||||||
|
List<GenerateResultVO> generateResult = userLikeGroupService.getToProductImageResultList(taskIdList);
|
||||||
|
return Response.success(generateResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "画布用户上传元素")
|
||||||
|
@PostMapping("/canvasElementUpload")
|
||||||
|
public Response<CanvasElementUpload> canvasElementUpload(@RequestParam("file") MultipartFile file) {
|
||||||
|
return Response.success(userLikeGroupService.canvasElementUpload(file));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("productImageLikeList")
|
||||||
|
@PostMapping("/productImageLikeList")
|
||||||
|
public Response<List<ToProductImageResult>> productImageLikeList(@Valid @RequestBody ToProductImageDTO toProductImageDTO) {
|
||||||
|
return Response.success(userLikeGroupService.productImageLikeList(toProductImageDTO));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
7
src/main/java/com/ai/da/mapper/primary/CanvasMapper.java
Normal file
7
src/main/java/com/ai/da/mapper/primary/CanvasMapper.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ai.da.mapper.primary;
|
||||||
|
|
||||||
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.Canvas;
|
||||||
|
|
||||||
|
public interface CanvasMapper extends CommonMapper<Canvas> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ai.da.mapper.primary;
|
||||||
|
|
||||||
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.ExportFile;
|
||||||
|
|
||||||
|
public interface ExportFileMapper extends CommonMapper<ExportFile> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ai.da.mapper.primary;
|
||||||
|
|
||||||
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.ToProductElement;
|
||||||
|
|
||||||
|
public interface ToProductElementMapper extends CommonMapper<ToProductElement> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ai.da.mapper.primary;
|
||||||
|
|
||||||
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.ToProductImageRecord;
|
||||||
|
|
||||||
|
public interface ToProductImageRecordMapper extends CommonMapper<ToProductImageRecord> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ai.da.mapper.primary;
|
||||||
|
|
||||||
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.ToProductImageResult;
|
||||||
|
|
||||||
|
public interface ToProductImageResultMapper extends CommonMapper<ToProductImageResult> {
|
||||||
|
}
|
||||||
42
src/main/java/com/ai/da/mapper/primary/entity/Canvas.java
Normal file
42
src/main/java/com/ai/da/mapper/primary/entity/Canvas.java
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attendance
|
||||||
|
*
|
||||||
|
* @author easy-generator
|
||||||
|
* @since 2022-06-13
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("canvas")
|
||||||
|
public class Canvas implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty("ID")
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty("url")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@ApiModelProperty("accountId")
|
||||||
|
private Long accountId;
|
||||||
|
|
||||||
|
@ApiModelProperty("createTime")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CanvasElementUpload {
|
||||||
|
private String url;
|
||||||
|
private String minioUrl;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("export_file")
|
||||||
|
public class ExportFile implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String url;
|
||||||
|
private Long userLikeGroupId;
|
||||||
|
}
|
||||||
@@ -35,12 +35,18 @@ public class Portfolio implements Serializable {
|
|||||||
@ApiModelProperty(value = "作品类型")
|
@ApiModelProperty(value = "作品类型")
|
||||||
private String portfolioType;
|
private String portfolioType;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "画布ID")
|
||||||
|
private Long canvasId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "封面ID")
|
@ApiModelProperty(value = "封面ID")
|
||||||
private Long coverId;
|
private Long coverId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "作品状态1公开0隐藏")
|
@ApiModelProperty(value = "作品状态1公开0隐藏")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否允许二次创作1允许0不允许")
|
||||||
|
private Integer openSource;
|
||||||
|
|
||||||
@ApiModelProperty(value = "作品集作者ID")
|
@ApiModelProperty(value = "作品集作者ID")
|
||||||
private Long accountId;
|
private Long accountId;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ToProductElement implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "ID")
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "userLikeGroupId")
|
||||||
|
private Long userLikeGroupId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "url")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "createTime")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ToProductImageRecord implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "ID")
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "userLikeGroupId")
|
||||||
|
private Long userLikeGroupId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "prompt")
|
||||||
|
private String prompt;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "createTime")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ToProductImageResult implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "ID")
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "elementId")
|
||||||
|
private Long elementId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "elementType")
|
||||||
|
private String elementType;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "url")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "isLike 1是0否")
|
||||||
|
private Integer isLike;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "createTime")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "toProductImageRecordId")
|
||||||
|
private Long toProductImageRecordId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "taskId")
|
||||||
|
private String taskId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "userLikeGroupId")
|
||||||
|
private Long userLikeGroupId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.Account;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AccountDesignWorksRegisterDTO extends Account {
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DesignWorksRegisterDTO {
|
||||||
|
private String userName;
|
||||||
|
private String email;
|
||||||
|
private String password;
|
||||||
|
}
|
||||||
8
src/main/java/com/ai/da/model/dto/ExportSaveDTO.java
Normal file
8
src/main/java/com/ai/da/model/dto/ExportSaveDTO.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ExportSaveDTO {
|
||||||
|
private String data;
|
||||||
|
}
|
||||||
8
src/main/java/com/ai/da/model/dto/ExportSearchDTO.java
Normal file
8
src/main/java/com/ai/da/model/dto/ExportSearchDTO.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ExportSearchDTO {
|
||||||
|
private Long userLikeGroupId;
|
||||||
|
}
|
||||||
@@ -2,9 +2,11 @@ package com.ai.da.model.dto;
|
|||||||
|
|
||||||
import com.ai.da.mapper.primary.entity.Portfolio;
|
import com.ai.da.mapper.primary.entity.Portfolio;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class PortfolioDTO extends Portfolio {
|
public class PortfolioDTO extends Portfolio {
|
||||||
private Long userLikeGroupId;
|
private Long userLikeGroupId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
10
src/main/java/com/ai/da/model/dto/ProductImageLikeDTO.java
Normal file
10
src/main/java/com/ai/da/model/dto/ProductImageLikeDTO.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ProductImageLikeDTO {
|
||||||
|
private List<Long> toProductImageResultId;
|
||||||
|
}
|
||||||
13
src/main/java/com/ai/da/model/dto/ToProductImageDTO.java
Normal file
13
src/main/java/com/ai/da/model/dto/ToProductImageDTO.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import com.ai.da.model.vo.ToProductImageVO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ToProductImageDTO {
|
||||||
|
private Long userLikeGroupId;
|
||||||
|
private List<ToProductImageVO> toProductImageVOList;
|
||||||
|
private String prompt;
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@ package com.ai.da.model.enums;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonValue;
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
public enum DesignElementsEnum {
|
public enum DesignElementsEnum implements IEnumDisplay {
|
||||||
EMBROIDERY("刺绣", "Embroidery"),
|
EMBROIDERY("刺绣", "Embroidery"),
|
||||||
BEADING("钉珠", "Beading"),
|
BEADING("钉珠", "Beading"),
|
||||||
PEARL("珍珠", "Pearl"),
|
PEARL("珍珠", "Pearl"),
|
||||||
@@ -16,6 +16,12 @@ public enum DesignElementsEnum {
|
|||||||
private final String chinese;
|
private final String chinese;
|
||||||
private final String english;
|
private final String english;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@JsonValue
|
||||||
|
public String getValue() {
|
||||||
|
return this.english;
|
||||||
|
}
|
||||||
|
|
||||||
// 构造函数
|
// 构造函数
|
||||||
DesignElementsEnum(String chinese, String english) {
|
DesignElementsEnum(String chinese, String english) {
|
||||||
this.chinese = chinese;
|
this.chinese = chinese;
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.ai.da.model.enums;
|
package com.ai.da.model.enums;
|
||||||
|
|
||||||
public enum PrintboardLevel2TypeEnum {
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
|
public enum PrintboardLevel2TypeEnum implements IEnumDisplay {
|
||||||
SLOGAN("标语", "Slogan"),
|
SLOGAN("标语", "Slogan"),
|
||||||
LOGO("标志", "Logo"),
|
LOGO("标志", "Logo"),
|
||||||
PATTERN("图案", "Pattern");
|
PATTERN("图案", "Pattern");
|
||||||
@@ -14,6 +16,12 @@ public enum PrintboardLevel2TypeEnum {
|
|||||||
this.english = english;
|
this.english = english;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@JsonValue
|
||||||
|
public String getValue() {
|
||||||
|
return this.english;
|
||||||
|
}
|
||||||
|
|
||||||
// 获取中文描述
|
// 获取中文描述
|
||||||
public String getChinese() {
|
public String getChinese() {
|
||||||
return chinese;
|
return chinese;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class PortfolioVO extends Portfolio {
|
public class PortfolioVO extends Portfolio {
|
||||||
private String designPythonOutfitUrl;
|
private String canvasUrl;
|
||||||
|
|
||||||
private List<CollectionElement> collectionElementList;
|
private List<CollectionElement> collectionElementList;
|
||||||
private List<TDesignPythonOutfit> designPythonOutfitList;
|
private List<TDesignPythonOutfit> designPythonOutfitList;
|
||||||
|
|||||||
8
src/main/java/com/ai/da/model/vo/ToProductElementVO.java
Normal file
8
src/main/java/com/ai/da/model/vo/ToProductElementVO.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ai.da.model.vo;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.ToProductElement;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ToProductElementVO extends ToProductElement {
|
||||||
|
}
|
||||||
9
src/main/java/com/ai/da/model/vo/ToProductImageVO.java
Normal file
9
src/main/java/com/ai/da/model/vo/ToProductImageVO.java
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package com.ai.da.model.vo;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.ToProductImageResult;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ToProductImageVO extends ToProductImageResult {
|
||||||
|
|
||||||
|
}
|
||||||
8
src/main/java/com/ai/da/model/vo/ToProductVO.java
Normal file
8
src/main/java/com/ai/da/model/vo/ToProductVO.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ai.da.model.vo;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.UserLike;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ToProductVO extends UserLike {
|
||||||
|
}
|
||||||
@@ -8,10 +8,7 @@ import com.ai.da.common.enums.*;
|
|||||||
import com.ai.da.common.utils.*;
|
import com.ai.da.common.utils.*;
|
||||||
import com.ai.da.mapper.primary.CollocationMapper;
|
import com.ai.da.mapper.primary.CollocationMapper;
|
||||||
import com.ai.da.mapper.primary.DressingMapper;
|
import com.ai.da.mapper.primary.DressingMapper;
|
||||||
import com.ai.da.mapper.primary.entity.CollectionElement;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
import com.ai.da.mapper.primary.entity.Collocation;
|
|
||||||
import com.ai.da.mapper.primary.entity.DesignHistory;
|
|
||||||
import com.ai.da.mapper.primary.entity.Dressing;
|
|
||||||
import com.ai.da.mapper.secondary.AttributeRetrievalMapper;
|
import com.ai.da.mapper.secondary.AttributeRetrievalMapper;
|
||||||
import com.ai.da.mapper.secondary.entity.AttributeRetrieval;
|
import com.ai.da.mapper.secondary.entity.AttributeRetrieval;
|
||||||
import com.ai.da.mapper.secondary.entity.AttributeRecognitionJSON;
|
import com.ai.da.mapper.secondary.entity.AttributeRecognitionJSON;
|
||||||
@@ -165,7 +162,7 @@ public class PythonService {
|
|||||||
* @param operateType
|
* @param operateType
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String upload(MultipartFile file, String operateType) {
|
public String upload(MultipartFile file, String operateType) {
|
||||||
//用户信息
|
//用户信息
|
||||||
PythonToJavaApiOperationTypeEnum operationType = PythonToJavaApiOperationTypeEnum.uploadOf(operateType);
|
PythonToJavaApiOperationTypeEnum operationType = PythonToJavaApiOperationTypeEnum.uploadOf(operateType);
|
||||||
@@ -3303,4 +3300,44 @@ public class PythonService {
|
|||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean toProductImage(String url, String taskId, String prompt) {
|
||||||
|
// todo 限流校验
|
||||||
|
// AccessLimitUtils.validate("design",5);
|
||||||
|
OkHttpClient client = new OkHttpClient().newBuilder()
|
||||||
|
.connectTimeout(30, TimeUnit.SECONDS)
|
||||||
|
.pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒)
|
||||||
|
.readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒)
|
||||||
|
.writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒)
|
||||||
|
.build();
|
||||||
|
MediaType mediaType = MediaType.parse("application/json");
|
||||||
|
//关闭FastJson的引用检测 防止出现$ref 现象
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
map.put("tasks_id", taskId);
|
||||||
|
map.put("image_url", url);
|
||||||
|
map.put("prompt", prompt);
|
||||||
|
log.info("toProductImage请求python 参数:####{}", map);
|
||||||
|
String param = JSON.toJSONString(map, SerializerFeature.WriteNullStringAsEmpty);
|
||||||
|
RequestBody body = RequestBody.create(mediaType, param);
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
// .url(accessPythonIp + ":" + accessPythonPort + "/api/generate_product_image")
|
||||||
|
.url(accessPythonIp + ":9996/api/generate_product_image")
|
||||||
|
.method("POST", body)
|
||||||
|
.addHeader("Authorization", "Basic YWlkbGFiOjEyMw==")
|
||||||
|
.addHeader("Content-Type", "application/json")
|
||||||
|
.build();
|
||||||
|
Response response;
|
||||||
|
String responseBody;
|
||||||
|
try {
|
||||||
|
response = client.newCall(request).execute();
|
||||||
|
} catch (IOException ioException) {
|
||||||
|
log.error("PythonService##toProductImage异常###{}", ExceptionUtil.getThrowableList(ioException));
|
||||||
|
throw new BusinessException("toProductImage.interface.exception");
|
||||||
|
}
|
||||||
|
if (response.isSuccessful()) {
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
log.error("PythonService##toProductImage异常response###{}", response);
|
||||||
|
//生成失败
|
||||||
|
throw new BusinessException("toProductImage.interface.exception");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,4 +130,6 @@ public interface AccountService extends IService<Account> {
|
|||||||
void moveLibraryDate();
|
void moveLibraryDate();
|
||||||
|
|
||||||
void updateCredits(Long accountId, String value);
|
void updateCredits(Long accountId, String value);
|
||||||
|
|
||||||
|
Boolean designWorksRegister(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ public interface GenerateService extends IService<Generate> {
|
|||||||
|
|
||||||
void processGenerateResult(String taskId, String url, String category);
|
void processGenerateResult(String taskId, String url, String category);
|
||||||
|
|
||||||
|
void processToProductImageResult(String taskId, String url, String category);
|
||||||
|
|
||||||
GenerateLikeVO generateLike(GenerateLikeDTO generateLikeDTO);
|
GenerateLikeVO generateLike(GenerateLikeDTO generateLikeDTO);
|
||||||
|
|
||||||
Boolean generateDislike(Long generateDetailId, String timeZone);
|
Boolean generateDislike(Long generateDetailId, String timeZone);
|
||||||
@@ -34,5 +36,4 @@ public interface GenerateService extends IService<Generate> {
|
|||||||
Long getRankPosition(String uniqueId);
|
Long getRankPosition(String uniqueId);
|
||||||
|
|
||||||
void cancelGenerate(Long userId, List<String> uniqueId, String timeZone);
|
void cancelGenerate(Long userId, List<String> uniqueId, String timeZone);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,14 +2,16 @@ package com.ai.da.service;
|
|||||||
|
|
||||||
import com.ai.da.common.response.PageBaseResponse;
|
import com.ai.da.common.response.PageBaseResponse;
|
||||||
import com.ai.da.mapper.primary.entity.Portfolio;
|
import com.ai.da.mapper.primary.entity.Portfolio;
|
||||||
|
import com.ai.da.model.dto.DesignWorksRegisterDTO;
|
||||||
import com.ai.da.model.dto.PortfolioDTO;
|
import com.ai.da.model.dto.PortfolioDTO;
|
||||||
import com.ai.da.model.dto.QueryPortfolioPageDTO;
|
import com.ai.da.model.dto.QueryPortfolioPageDTO;
|
||||||
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.model.vo.UserLikeChooseVO;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
public interface PortfolioService extends IService<Portfolio> {
|
public interface PortfolioService extends IService<Portfolio> {
|
||||||
Boolean publish(PortfolioDTO portfolioDTO);
|
Boolean publish(MultipartFile canvas, String data);
|
||||||
|
|
||||||
PortfolioVO update(PortfolioDTO portfolioDTO);
|
PortfolioVO update(PortfolioDTO portfolioDTO);
|
||||||
|
|
||||||
@@ -18,4 +20,6 @@ public interface PortfolioService extends IService<Portfolio> {
|
|||||||
PortfolioVO detail(PortfolioDTO portfolioDTO);
|
PortfolioVO detail(PortfolioDTO portfolioDTO);
|
||||||
|
|
||||||
UserLikeChooseVO choose(PortfolioDTO portfolioDTO);
|
UserLikeChooseVO choose(PortfolioDTO portfolioDTO);
|
||||||
|
|
||||||
|
Boolean designWorksRegister(DesignWorksRegisterDTO designWorksRegisterDTO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
package com.ai.da.service;
|
package com.ai.da.service;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.CanvasElementUpload;
|
||||||
|
import com.ai.da.mapper.primary.entity.ToProductImageResult;
|
||||||
import com.ai.da.mapper.primary.entity.UserLikeGroup;
|
import com.ai.da.mapper.primary.entity.UserLikeGroup;
|
||||||
import com.ai.da.model.vo.HistoryUpdateVO;
|
import com.ai.da.model.dto.ExportSaveDTO;
|
||||||
import com.ai.da.model.vo.UserLikeChooseVO;
|
import com.ai.da.model.dto.ProductImageLikeDTO;
|
||||||
|
import com.ai.da.model.dto.ToProductImageDTO;
|
||||||
|
import com.ai.da.model.vo.*;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务类
|
* 服务类
|
||||||
@@ -30,4 +38,20 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
|
|||||||
void deleteTrialData(Long id);
|
void deleteTrialData(Long id);
|
||||||
|
|
||||||
void updateDate(Long id,String timeZone);
|
void updateDate(Long id,String timeZone);
|
||||||
|
|
||||||
|
Boolean exportSave(MultipartFile file, Long userLikeGroupId);
|
||||||
|
|
||||||
|
List<ToProductImageResult> toProduct(ToProductImageDTO toProductImageDTO);
|
||||||
|
|
||||||
|
ToProductElementVO toProductImageElementUpload(MultipartFile file, Long userLikeGroupId);
|
||||||
|
|
||||||
|
Boolean productImageLike(ProductImageLikeDTO productImageLikeDTO);
|
||||||
|
|
||||||
|
List<GenerateResultVO> getToProductImageResultList(List<String> taskIdList);
|
||||||
|
|
||||||
|
JSONObject exportSearch(Long userLikeGroupId);
|
||||||
|
|
||||||
|
CanvasElementUpload canvasElementUpload(MultipartFile file);
|
||||||
|
|
||||||
|
List<ToProductImageResult> productImageLikeList(ToProductImageDTO toProductImageDTO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class AccountLoginLogServiceImpl extends ServiceImpl<AccountLoginLogMappe
|
|||||||
AccountLoginLogMapper accountLoginLogMapper;
|
AccountLoginLogMapper accountLoginLogMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean saveLoginLog(String ip, Long accountId) {
|
public Boolean saveLoginLog(String ip, Long accountId) {
|
||||||
AccountLoginLog accountLoginLog = new AccountLoginLog();
|
AccountLoginLog accountLoginLog = new AccountLoginLog();
|
||||||
accountLoginLog.setAccountId(accountId);
|
accountLoginLog.setAccountId(accountId);
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AccountPreLoginVO preLogin(AccountPreLoginDTO accountDTO) {
|
public AccountPreLoginVO preLogin(AccountPreLoginDTO accountDTO) {
|
||||||
log.info("aida预先登入accountDTO###{}", JSON.toJSONString(accountDTO));
|
log.info("aida预先登入accountDTO###{}", JSON.toJSONString(accountDTO));
|
||||||
Account account = getOneByEmail(accountDTO.getEmail());
|
Account account = getOneByEmail(accountDTO.getEmail());
|
||||||
@@ -127,7 +127,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
return new AccountPreLoginVO(account.getId());
|
return new AccountPreLoginVO(account.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public AccountLoginVO login(AccountLoginDTO accountLoginDTO, HttpServletRequest request) {
|
public AccountLoginVO login(AccountLoginDTO accountLoginDTO, HttpServletRequest request) {
|
||||||
// Assert.isTrue(StringUtils.isNotBlank(accountLoginDTO.getEmail()), "Please input a email !");
|
// Assert.isTrue(StringUtils.isNotBlank(accountLoginDTO.getEmail()), "Please input a email !");
|
||||||
@@ -250,7 +250,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public Boolean forgetPwd(AccountRegisterDTO accountDTO) {
|
public Boolean forgetPwd(AccountRegisterDTO accountDTO) {
|
||||||
// Account emailAccount = getOneByEmail(accountDTO.getEmail());
|
// Account emailAccount = getOneByEmail(accountDTO.getEmail());
|
||||||
@@ -519,7 +519,6 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
account.setIsTrial(1);
|
account.setIsTrial(1);
|
||||||
account.setIsBeginner(1);
|
account.setIsBeginner(1);
|
||||||
account.setValidStartTime(System.currentTimeMillis());
|
account.setValidStartTime(System.currentTimeMillis());
|
||||||
|
|
||||||
if (link) {
|
if (link) {
|
||||||
account.setValidEndTime(Instant.now().plus(14, ChronoUnit.DAYS).toEpochMilli());
|
account.setValidEndTime(Instant.now().plus(14, ChronoUnit.DAYS).toEpochMilli());
|
||||||
}else {
|
}else {
|
||||||
@@ -938,4 +937,17 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
account.setCredits(new BigDecimal(value));
|
account.setCredits(new BigDecimal(value));
|
||||||
accountMapper.updateById(account);
|
accountMapper.updateById(account);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean designWorksRegister(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO) {
|
||||||
|
QueryWrapper<Account> qw = new QueryWrapper<>();
|
||||||
|
qw.eq("BINARY user_email", accountDesignWorksRegisterDTO.getUserEmail());
|
||||||
|
List<Account> accountList = accountMapper.selectList(qw);
|
||||||
|
if (CollectionUtil.isNotEmpty(accountList)) {
|
||||||
|
throw new BusinessException("The email has already been registered");
|
||||||
|
}
|
||||||
|
Account account = CopyUtil.copyObject(accountDesignWorksRegisterDTO, Account.class);
|
||||||
|
accountMapper.insert(account);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,17 +109,17 @@ public class ClassificationServiceImpl implements ClassificationService {
|
|||||||
if (CollectionUtil.isNotEmpty(classificationList)) {
|
if (CollectionUtil.isNotEmpty(classificationList)) {
|
||||||
// 获取结果集
|
// 获取结果集
|
||||||
List<ClassificationVO> classificationVOList = getClassificationVOList(classificationList);
|
List<ClassificationVO> classificationVOList = getClassificationVOList(classificationList);
|
||||||
if (classificationDTO.getType().equals("DesignElements")) {
|
// if (classificationDTO.getType().equals("DesignElements")) {
|
||||||
for (ClassificationVO classificationVO : classificationVOList) {
|
// for (ClassificationVO classificationVO : classificationVOList) {
|
||||||
String classificationName = classificationVO.getClassificationName();
|
// String classificationName = classificationVO.getClassificationName();
|
||||||
DesignElementsEnum designElementsEnum = DesignElementsEnum.fromName(classificationName);
|
// DesignElementsEnum designElementsEnum = DesignElementsEnum.fromName(classificationName);
|
||||||
if (userHolder.getLanguage().equals(Language.ENGLISH.name())) {
|
// if (userHolder.getLanguage().equals(Language.ENGLISH.name())) {
|
||||||
classificationVO.setClassificationName(designElementsEnum.getEnglish());
|
// classificationVO.setClassificationName(designElementsEnum.getEnglish());
|
||||||
}else {
|
// }else {
|
||||||
classificationVO.setClassificationName(designElementsEnum.getChinese());
|
// classificationVO.setClassificationName(designElementsEnum.getChinese());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return classificationVOList;
|
return classificationVOList;
|
||||||
}
|
}
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
|||||||
@Value("${minio.bucketName.gradient}")
|
@Value("${minio.bucketName.gradient}")
|
||||||
private String gradientBucketName;
|
private String gradientBucketName;
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public CollectionElementVO upload(CollectionElementUploadDTO uploadDTO) {
|
public CollectionElementVO upload(CollectionElementUploadDTO uploadDTO) {
|
||||||
//用户信息
|
//用户信息
|
||||||
@@ -709,7 +709,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public void relationCollection(List<Long> elementIds, Long collectionId) {
|
public void relationCollection(List<Long> elementIds, Long collectionId) {
|
||||||
if (CollectionUtils.isEmpty(elementIds) || null == collectionId) {
|
if (CollectionUtils.isEmpty(elementIds) || null == collectionId) {
|
||||||
@@ -723,7 +723,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
|||||||
collectionElementMapper.update(element, queryWrapper);
|
collectionElementMapper.update(element, queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public List<CollectionElementVO> saveColorBoard(List<CollectionColorDTO> colorBoards, Long collectionId, String timeZone) {
|
public List<CollectionElementVO> saveColorBoard(List<CollectionColorDTO> colorBoards, Long collectionId, String timeZone) {
|
||||||
//用户信息
|
//用户信息
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class CollectionServiceImpl extends ServiceImpl<CollectionMapper, Collect
|
|||||||
@Resource
|
@Resource
|
||||||
private MinioUtil minioUtil;
|
private MinioUtil minioUtil;
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public Long saveCollection(Long accountId, String timeZone, String moodTemplateId) {
|
public Long saveCollection(Long accountId, String timeZone, String moodTemplateId) {
|
||||||
Collection collection = new Collection();
|
Collection collection = new Collection();
|
||||||
|
|||||||
@@ -587,6 +587,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
designPythonOutfitDetail.setMaskUrl(jsonObject.getString("mask_url"));
|
designPythonOutfitDetail.setMaskUrl(jsonObject.getString("mask_url"));
|
||||||
designPythonOutfitDetail.setUserId(userInfo.getId());
|
designPythonOutfitDetail.setUserId(userInfo.getId());
|
||||||
designPythonOutfitDetail.setPriority(Integer.parseInt(jsonObject.getString("priority")));
|
designPythonOutfitDetail.setPriority(Integer.parseInt(jsonObject.getString("priority")));
|
||||||
|
designPythonOutfitDetail.setCreateDate(LocalDateTime.now());
|
||||||
list.add(designPythonOutfitDetail);
|
list.add(designPythonOutfitDetail);
|
||||||
}
|
}
|
||||||
designPythonOutfitDetailService.saveBatch(list);
|
designPythonOutfitDetailService.saveBatch(list);
|
||||||
@@ -778,7 +779,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@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;
|
||||||
|
|||||||
@@ -7,10 +7,7 @@ import com.ai.da.common.enums.CollectionLevel2TypeEnum;
|
|||||||
import com.ai.da.common.enums.GenerateModeEnum;
|
import com.ai.da.common.enums.GenerateModeEnum;
|
||||||
import com.ai.da.common.enums.ModelNameEnum;
|
import com.ai.da.common.enums.ModelNameEnum;
|
||||||
import com.ai.da.common.utils.*;
|
import com.ai.da.common.utils.*;
|
||||||
import com.ai.da.mapper.primary.CollectionElementMapper;
|
import com.ai.da.mapper.primary.*;
|
||||||
import com.ai.da.mapper.primary.GenerateCancelMapper;
|
|
||||||
import com.ai.da.mapper.primary.GenerateDetailMapper;
|
|
||||||
import com.ai.da.mapper.primary.GenerateMapper;
|
|
||||||
import com.ai.da.mapper.primary.entity.*;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
import com.ai.da.model.dto.GenerateLikeDTO;
|
import com.ai.da.model.dto.GenerateLikeDTO;
|
||||||
import com.ai.da.model.dto.GenerateThroughImageTextDTO;
|
import com.ai.da.model.dto.GenerateThroughImageTextDTO;
|
||||||
@@ -87,6 +84,9 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
@Value("${minio.bucketName.slogan}")
|
@Value("${minio.bucketName.slogan}")
|
||||||
private String sloganBucket;
|
private String sloganBucket;
|
||||||
|
|
||||||
|
@Value("${redis.key.toProductImageResultKey}")
|
||||||
|
private String toProductImageResultKey;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GenerateCaptionVO generateCaption(Long sketchElementId) {
|
public GenerateCaptionVO generateCaption(Long sketchElementId) {
|
||||||
CollectionElement collectionElement = collectionElementMapper.selectById(sketchElementId);
|
CollectionElement collectionElement = collectionElementMapper.selectById(sketchElementId);
|
||||||
@@ -259,6 +259,30 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ToProductImageResultMapper toProductImageResultMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void processToProductImageResult(String taskId, String url, String category) {
|
||||||
|
QueryWrapper<ToProductImageResult> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(ToProductImageResult::getTaskId, taskId);
|
||||||
|
List<ToProductImageResult> toProductImageResults = toProductImageResultMapper.selectList(qw);
|
||||||
|
if (CollectionUtils.isEmpty(toProductImageResults)) {
|
||||||
|
return;
|
||||||
|
// throw new BusinessException("");
|
||||||
|
}
|
||||||
|
ToProductImageResult toProductImageResult = toProductImageResults.get(0);
|
||||||
|
toProductImageResult.setUrl(url);
|
||||||
|
toProductImageResultMapper.updateById(toProductImageResult);
|
||||||
|
|
||||||
|
String key = toProductImageResultKey + ":" + taskId;
|
||||||
|
String imageName = url.substring(url.lastIndexOf("/") + 1);
|
||||||
|
String status = imageName.equals("white_image.jpg") ? "Invalid" : "Success";
|
||||||
|
GenerateResultVO generateResultVO = new GenerateResultVO(taskId, toProductImageResult.getId(), url, status, category);
|
||||||
|
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||||
|
}
|
||||||
|
|
||||||
private void validateGeneraType(Generate generate, String text, Long elementId) {
|
private void validateGeneraType(Generate generate, String text, Long elementId) {
|
||||||
String generateType = "";
|
String generateType = "";
|
||||||
if (StringUtil.isNullOrEmpty(text.trim()) && Objects.isNull(elementId)) {
|
if (StringUtil.isNullOrEmpty(text.trim()) && Objects.isNull(elementId)) {
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ 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.mapper.primary.*;
|
import com.ai.da.mapper.primary.*;
|
||||||
import com.ai.da.mapper.primary.entity.*;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
|
import com.ai.da.model.dto.DesignWorksRegisterDTO;
|
||||||
import com.ai.da.model.dto.PortfolioDTO;
|
import com.ai.da.model.dto.PortfolioDTO;
|
||||||
import com.ai.da.model.dto.QueryPortfolioPageDTO;
|
import com.ai.da.model.dto.QueryPortfolioPageDTO;
|
||||||
import com.ai.da.model.enums.Position;
|
import com.ai.da.model.enums.Position;
|
||||||
import com.ai.da.model.enums.Sex;
|
import com.ai.da.model.enums.Sex;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
import com.ai.da.service.*;
|
import com.ai.da.service.*;
|
||||||
|
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.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;
|
||||||
@@ -21,6 +23,7 @@ import com.google.common.base.Function;
|
|||||||
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 org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -85,120 +88,159 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
@Resource
|
@Resource
|
||||||
private UserLikeGroupService userLikeGroupService;
|
private UserLikeGroupService userLikeGroupService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CanvasMapper canvasMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean publish(PortfolioDTO portfolioDTO) {
|
public Boolean publish(MultipartFile file, String data) {
|
||||||
if (portfolioDTO.getPortfolioType().equals("History")) {
|
PortfolioDTO portfolioDTO = JSONObject.parseObject(data, PortfolioDTO.class);
|
||||||
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
|
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
|
||||||
UserLikeGroup userLikeGroup = userLikeGroupMapper.selectById(portfolioDTO.getUserLikeGroupId());
|
if (file != null && file.getOriginalFilename() != null) {
|
||||||
UserLikeGroup userLikeGroupNew = userLikeGroup.setId(null);
|
String upload = minioUtil.upload("aida-canvas", String.valueOf(authPrincipalVo.getId()), file);
|
||||||
userLikeGroupNew.setAccountId(-1L);
|
Canvas canvas = new Canvas();
|
||||||
Long collectionIdOld = userLikeGroup.getCollectionId();
|
canvas.setUrl(upload);
|
||||||
Collection collectionOld = collectionMapper.selectById(collectionIdOld);
|
canvas.setCreateTime(LocalDateTime.now());
|
||||||
List<CollectionElement> collectionElementListOld = collectionElementService.getByCollectionId(collectionIdOld);
|
canvas.setAccountId(authPrincipalVo.getId());
|
||||||
collectionOld.setId(null);
|
canvasMapper.insert(canvas);
|
||||||
collectionMapper.insert(collectionOld);
|
|
||||||
Long collectionIdNew = collectionOld.getId();
|
|
||||||
userLikeGroupNew.setCollectionId(collectionIdNew);
|
|
||||||
userLikeGroupMapper.insert(userLikeGroupNew);
|
|
||||||
// List<TCollectionElementRelation> collectionElementRelationListNew = new ArrayList<>();
|
|
||||||
for (CollectionElement element : collectionElementListOld) {
|
|
||||||
element.setCollectionId(collectionIdNew);
|
|
||||||
element.setId(null);
|
|
||||||
collectionElementMapper.insert(element);
|
|
||||||
TCollectionElementRelation collectionElementRelationNew = new TCollectionElementRelation();
|
|
||||||
collectionElementRelationNew.setCollectionId(collectionIdNew);
|
|
||||||
collectionElementRelationNew.setElementId(element.getId());
|
|
||||||
collectionElementRelationNew.setCreateDate(new Date());
|
|
||||||
collectionElementRelationMapper.insert(collectionElementRelationNew);
|
|
||||||
}
|
|
||||||
Portfolio portfolio = new Portfolio();
|
|
||||||
Long coverIdOld = portfolioDTO.getCoverId();
|
|
||||||
portfolio.setPortfolioName(portfolioDTO.getPortfolioName());
|
|
||||||
portfolio.setPortfolioType("History");
|
|
||||||
portfolio.setCollectionId(collectionIdNew);
|
|
||||||
portfolio.setAccountId(authPrincipalVo.getId());
|
|
||||||
portfolio.setCreateDate(LocalDateTime.now());
|
|
||||||
portfolio.setUpdateDate(LocalDateTime.now());
|
|
||||||
portfolio.setStatus(1);
|
|
||||||
portfolio.setIsDeleted(0);
|
|
||||||
portfolio.setUserLikeGroupSourceId(portfolioDTO.getUserLikeGroupId());
|
|
||||||
portfolioMapper.insert(portfolio);
|
|
||||||
|
|
||||||
List<UserLike> userLikeList = userLikeService.getUserLikeList(portfolioDTO.getUserLikeGroupId());
|
if (portfolioDTO.getOpenSource() == 1) {
|
||||||
// List<Long> designPythonOutfitIdList = userLikeList.stream().map(UserLike::getDesignOutfitId).collect(Collectors.toList());
|
UserLikeGroup userLikeGroup = userLikeGroupMapper.selectById(portfolioDTO.getUserLikeGroupId());
|
||||||
//
|
UserLikeGroup userLikeGroupNew = userLikeGroup.setId(null);
|
||||||
// QueryWrapper<TDesignPythonOutfit> qw = new QueryWrapper<>();
|
userLikeGroupNew.setAccountId(-1L);
|
||||||
// qw.lambda().in(TDesignPythonOutfit::getId, designPythonOutfitIdList);
|
Long collectionIdOld = userLikeGroup.getCollectionId();
|
||||||
// List<TDesignPythonOutfit> designPythonOutfits = designPythonOutfitMapper.selectList(qw);
|
Collection collectionOld = collectionMapper.selectById(collectionIdOld);
|
||||||
Long coverIdNew = null;
|
List<CollectionElement> collectionElementListOld = collectionElementService.getByCollectionId(collectionIdOld);
|
||||||
Boolean flag = false;
|
collectionOld.setId(null);
|
||||||
for (UserLike userLike : userLikeList) {
|
collectionMapper.insert(collectionOld);
|
||||||
Long designOutfitIdOld = userLike.getDesignOutfitId();
|
Long collectionIdNew = collectionOld.getId();
|
||||||
TDesignPythonOutfit designPythonOutfit = designPythonOutfitMapper.selectById(designOutfitIdOld);
|
userLikeGroupNew.setCollectionId(collectionIdNew);
|
||||||
designPythonOutfit.setDesignId(-1L);
|
userLikeGroupMapper.insert(userLikeGroupNew);
|
||||||
designPythonOutfit.setDesignItemId(-1L);
|
for (CollectionElement element : collectionElementListOld) {
|
||||||
designPythonOutfit.setCollectionId(collectionIdNew);
|
element.setCollectionId(collectionIdNew);
|
||||||
if (designPythonOutfit.getId().equals(coverIdOld)) {
|
element.setId(null);
|
||||||
flag = true;
|
collectionElementMapper.insert(element);
|
||||||
|
TCollectionElementRelation collectionElementRelationNew = new TCollectionElementRelation();
|
||||||
|
collectionElementRelationNew.setCollectionId(collectionIdNew);
|
||||||
|
collectionElementRelationNew.setElementId(element.getId());
|
||||||
|
collectionElementRelationNew.setCreateDate(new Date());
|
||||||
|
collectionElementRelationMapper.insert(collectionElementRelationNew);
|
||||||
}
|
}
|
||||||
designPythonOutfit.setId(null);
|
Portfolio portfolio = new Portfolio();
|
||||||
designPythonOutfitMapper.insert(designPythonOutfit);
|
QueryWrapper<Portfolio> portfolioQueryWrapper = new QueryWrapper<>();
|
||||||
Long designOutfitIdNew = designPythonOutfit.getId();
|
portfolioQueryWrapper.lambda().eq(Portfolio::getUserLikeGroupSourceId, portfolioDTO.getUserLikeGroupId());
|
||||||
userLike.setDesignOutfitId(designOutfitIdNew);
|
List<Portfolio> portfolios = portfolioMapper.selectList(portfolioQueryWrapper);
|
||||||
QueryWrapper<TDesignPythonOutfitDetail> qw = new QueryWrapper<>();
|
if (!CollectionUtils.isEmpty(portfolios)) {
|
||||||
qw.lambda().eq(TDesignPythonOutfitDetail::getDesignPythonOutfitId, designOutfitIdOld);
|
portfolio = portfolios.get(0);
|
||||||
List<TDesignPythonOutfitDetail> tDesignPythonOutfitDetails = designPythonOutfitDetailMapper.selectList(qw);
|
|
||||||
for (TDesignPythonOutfitDetail tDesignPythonOutfitDetail : tDesignPythonOutfitDetails) {
|
|
||||||
// Long designPythonOutfitDetailIdOld = tDesignPythonOutfitDetail.getId();
|
|
||||||
tDesignPythonOutfitDetail.setId(null);
|
|
||||||
tDesignPythonOutfitDetail.setDesignId(-1L);
|
|
||||||
tDesignPythonOutfitDetail.setDesignPythonOutfitId(designOutfitIdNew);
|
|
||||||
designPythonOutfitDetailMapper.insert(tDesignPythonOutfitDetail);
|
|
||||||
}
|
}
|
||||||
|
portfolio.setPortfolioName(portfolioDTO.getPortfolioName());
|
||||||
if (flag) {
|
portfolio.setPortfolioType("History");
|
||||||
coverIdNew = designOutfitIdNew;
|
portfolio.setCollectionId(collectionIdNew);
|
||||||
portfolio.setCoverId(coverIdNew);
|
portfolio.setAccountId(authPrincipalVo.getId());
|
||||||
|
portfolio.setCreateDate(LocalDateTime.now());
|
||||||
|
portfolio.setUpdateDate(LocalDateTime.now());
|
||||||
|
portfolio.setStatus(1);
|
||||||
|
portfolio.setOpenSource(1);
|
||||||
|
portfolio.setIsDeleted(0);
|
||||||
|
portfolio.setUserLikeGroupSourceId(portfolioDTO.getUserLikeGroupId());
|
||||||
|
portfolio.setCanvasId(canvas.getId());
|
||||||
|
if (!CollectionUtils.isEmpty(portfolios)) {
|
||||||
portfolioMapper.updateById(portfolio);
|
portfolioMapper.updateById(portfolio);
|
||||||
flag = false;
|
}else {
|
||||||
|
portfolioMapper.insert(portfolio);
|
||||||
}
|
}
|
||||||
|
|
||||||
Long designItemIdOld = userLike.getDesignItemId();
|
List<UserLike> userLikeList = userLikeService.getUserLikeList(portfolioDTO.getUserLikeGroupId());
|
||||||
DesignItem designItemOld = designItemMapper.selectById(designItemIdOld);
|
// Long coverIdNew = null;
|
||||||
designItemOld.setId(null);
|
// Boolean flag = false;
|
||||||
designItemOld.setAccountId(-1L);
|
for (UserLike userLike : userLikeList) {
|
||||||
designItemOld.setDesignId(-1L);
|
Long designOutfitIdOld = userLike.getDesignOutfitId();
|
||||||
designItemOld.setCollectionId(collectionIdNew);
|
TDesignPythonOutfit designPythonOutfit = designPythonOutfitMapper.selectById(designOutfitIdOld);
|
||||||
designItemMapper.insert(designItemOld);
|
designPythonOutfit.setDesignId(-1L);
|
||||||
Long designItemIdNew = designItemOld.getDesignId();
|
designPythonOutfit.setDesignItemId(-1L);
|
||||||
|
designPythonOutfit.setCollectionId(collectionIdNew);
|
||||||
|
// if (designPythonOutfit.getId().equals(coverIdOld)) {
|
||||||
|
// flag = true;
|
||||||
|
// }
|
||||||
|
designPythonOutfit.setId(null);
|
||||||
|
designPythonOutfitMapper.insert(designPythonOutfit);
|
||||||
|
Long designOutfitIdNew = designPythonOutfit.getId();
|
||||||
|
userLike.setDesignOutfitId(designOutfitIdNew);
|
||||||
|
QueryWrapper<TDesignPythonOutfitDetail> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(TDesignPythonOutfitDetail::getDesignPythonOutfitId, designOutfitIdOld);
|
||||||
|
List<TDesignPythonOutfitDetail> tDesignPythonOutfitDetails = designPythonOutfitDetailMapper.selectList(qw);
|
||||||
|
for (TDesignPythonOutfitDetail tDesignPythonOutfitDetail : tDesignPythonOutfitDetails) {
|
||||||
|
// Long designPythonOutfitDetailIdOld = tDesignPythonOutfitDetail.getId();
|
||||||
|
tDesignPythonOutfitDetail.setId(null);
|
||||||
|
tDesignPythonOutfitDetail.setDesignId(-1L);
|
||||||
|
tDesignPythonOutfitDetail.setDesignPythonOutfitId(designOutfitIdNew);
|
||||||
|
designPythonOutfitDetailMapper.insert(tDesignPythonOutfitDetail);
|
||||||
|
}
|
||||||
|
|
||||||
designPythonOutfit.setDesignItemId(designItemIdNew);
|
// if (flag) {
|
||||||
designPythonOutfitMapper.updateById(designPythonOutfit);
|
// coverIdNew = designOutfitIdNew;
|
||||||
|
// portfolio.setCoverId(coverIdNew);
|
||||||
|
// portfolioMapper.updateById(portfolio);
|
||||||
|
// flag = false;
|
||||||
|
// }
|
||||||
|
|
||||||
userLike.setDesignItemId(designItemIdNew);
|
Long designItemIdOld = userLike.getDesignItemId();
|
||||||
userLike.setId(null);
|
DesignItem designItemOld = designItemMapper.selectById(designItemIdOld);
|
||||||
userLike.setDesignId(-1L);
|
designItemOld.setId(null);
|
||||||
userLike.setUserLikeGroupId(userLikeGroupNew.getId());
|
designItemOld.setAccountId(-1L);
|
||||||
userLikeMapper.insert(userLike);
|
designItemOld.setDesignId(-1L);
|
||||||
QueryWrapper<DesignItemDetail> designItemDetailQueryWrapper = new QueryWrapper<>();
|
designItemOld.setCollectionId(collectionIdNew);
|
||||||
designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemOld);
|
designItemMapper.insert(designItemOld);
|
||||||
List<DesignItemDetail> designItemDetailListOld = designItemDetailMapper.selectList(designItemDetailQueryWrapper);
|
Long designItemIdNew = designItemOld.getDesignId();
|
||||||
for (DesignItemDetail designItemDetailOld : designItemDetailListOld) {
|
|
||||||
Long designItemDetailIdOld = designItemDetailOld.getId();
|
designPythonOutfit.setDesignItemId(designItemIdNew);
|
||||||
designItemDetailOld.setAccountId(-1L);
|
designPythonOutfitMapper.updateById(designPythonOutfit);
|
||||||
designItemDetailOld.setDesignId(-1L);
|
|
||||||
designItemDetailOld.setDesignItemId(designItemIdNew);
|
userLike.setDesignItemId(designItemIdNew);
|
||||||
designItemDetailMapper.insert(designItemDetailOld);
|
userLike.setId(null);
|
||||||
Long designItemDetailIdNew = designItemDetailOld.getId();
|
userLike.setDesignId(-1L);
|
||||||
QueryWrapper<DesignItemDetailPrint> designItemDetailPrintQueryWrapper = new QueryWrapper<>();
|
userLike.setUserLikeGroupId(userLikeGroupNew.getId());
|
||||||
designItemDetailPrintQueryWrapper.lambda().eq(DesignItemDetailPrint::getDesignItemDetailId, designItemDetailIdOld);
|
userLikeMapper.insert(userLike);
|
||||||
DesignItemDetailPrint designItemDetailPrint = designItemDetailPrintMapper.selectOne(designItemDetailPrintQueryWrapper);
|
QueryWrapper<DesignItemDetail> designItemDetailQueryWrapper = new QueryWrapper<>();
|
||||||
designItemDetailPrint.setDesignItemDetailId(designItemDetailIdNew);
|
designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemOld);
|
||||||
designItemDetailPrintMapper.insert(designItemDetailPrint);
|
List<DesignItemDetail> designItemDetailListOld = designItemDetailMapper.selectList(designItemDetailQueryWrapper);
|
||||||
|
for (DesignItemDetail designItemDetailOld : designItemDetailListOld) {
|
||||||
|
Long designItemDetailIdOld = designItemDetailOld.getId();
|
||||||
|
designItemDetailOld.setAccountId(-1L);
|
||||||
|
designItemDetailOld.setDesignId(-1L);
|
||||||
|
designItemDetailOld.setDesignItemId(designItemIdNew);
|
||||||
|
designItemDetailMapper.insert(designItemDetailOld);
|
||||||
|
Long designItemDetailIdNew = designItemDetailOld.getId();
|
||||||
|
QueryWrapper<DesignItemDetailPrint> designItemDetailPrintQueryWrapper = new QueryWrapper<>();
|
||||||
|
designItemDetailPrintQueryWrapper.lambda().eq(DesignItemDetailPrint::getDesignItemDetailId, designItemDetailIdOld);
|
||||||
|
DesignItemDetailPrint designItemDetailPrint = designItemDetailPrintMapper.selectOne(designItemDetailPrintQueryWrapper);
|
||||||
|
designItemDetailPrint.setDesignItemDetailId(designItemDetailIdNew);
|
||||||
|
designItemDetailPrintMapper.insert(designItemDetailPrint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
QueryWrapper<Portfolio> portfolioQueryWrapper = new QueryWrapper<>();
|
||||||
|
portfolioQueryWrapper.lambda().eq(Portfolio::getUserLikeGroupSourceId, portfolioDTO.getUserLikeGroupId());
|
||||||
|
List<Portfolio> portfolios = portfolioMapper.selectList(portfolioQueryWrapper);
|
||||||
|
Portfolio portfolio = new Portfolio();
|
||||||
|
if (!CollectionUtils.isEmpty(portfolios)) {
|
||||||
|
portfolio = portfolios.get(0);
|
||||||
|
}
|
||||||
|
portfolio.setPortfolioName(portfolioDTO.getPortfolioName());
|
||||||
|
portfolio.setPortfolioType("Canvas");
|
||||||
|
portfolio.setAccountId(authPrincipalVo.getId());
|
||||||
|
portfolio.setCreateDate(LocalDateTime.now());
|
||||||
|
portfolio.setUpdateDate(LocalDateTime.now());
|
||||||
|
portfolio.setStatus(1);
|
||||||
|
portfolio.setIsDeleted(0);
|
||||||
|
portfolio.setOpenSource(0);
|
||||||
|
portfolio.setUserLikeGroupSourceId(portfolioDTO.getUserLikeGroupId());
|
||||||
|
portfolio.setCanvasId(canvas.getId());
|
||||||
|
if (!CollectionUtils.isEmpty(portfolios)) {
|
||||||
|
portfolioMapper.updateById(portfolio);
|
||||||
|
}else {
|
||||||
|
portfolioMapper.insert(portfolio);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -329,8 +371,8 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
IPage<PortfolioVO> convert = page.convert((Function<Portfolio, PortfolioVO>) portfolio -> {
|
IPage<PortfolioVO> convert = page.convert((Function<Portfolio, PortfolioVO>) portfolio -> {
|
||||||
if (portfolio != null) {
|
if (portfolio != null) {
|
||||||
PortfolioVO vo = CopyUtil.copyObject(portfolio, PortfolioVO.class);
|
PortfolioVO vo = CopyUtil.copyObject(portfolio, PortfolioVO.class);
|
||||||
TDesignPythonOutfit designPythonOutfit = designPythonOutfitMapper.selectById(vo.getCoverId());
|
Canvas canvas = canvasMapper.selectById(vo.getCanvasId());
|
||||||
vo.setDesignPythonOutfitUrl(minioUtil.getPresignedUrl(designPythonOutfit.getDesignUrl(), 24 * 60));
|
vo.setCanvasUrl(minioUtil.getPresignedUrl(canvas.getUrl(), 24 * 60));
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -342,22 +384,26 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
public PortfolioVO detail(PortfolioDTO portfolioDTO) {
|
public PortfolioVO detail(PortfolioDTO portfolioDTO) {
|
||||||
Portfolio portfolio = portfolioMapper.selectById(portfolioDTO.getId());
|
Portfolio portfolio = portfolioMapper.selectById(portfolioDTO.getId());
|
||||||
PortfolioVO vo = CopyUtil.copyObject(portfolio, PortfolioVO.class);
|
PortfolioVO vo = CopyUtil.copyObject(portfolio, PortfolioVO.class);
|
||||||
Long collectionId = portfolio.getCollectionId();
|
if (vo.getOpenSource() == 1) {
|
||||||
List<CollectionElement> collectionElementList = collectionElementService.getByCollectionId(collectionId);
|
Long collectionId = portfolio.getCollectionId();
|
||||||
for (CollectionElement element : collectionElementList) {
|
List<CollectionElement> collectionElementList = collectionElementService.getByCollectionId(collectionId);
|
||||||
if (StringUtils.isEmpty(element.getUrl())) {
|
for (CollectionElement element : collectionElementList) {
|
||||||
continue;
|
if (StringUtils.isEmpty(element.getUrl())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
element.setUrl(minioUtil.getPresignedUrl(element.getUrl(), 24 * 60));
|
||||||
}
|
}
|
||||||
element.setUrl(minioUtil.getPresignedUrl(element.getUrl(), 24 * 60));
|
vo.setCollectionElementList(collectionElementList);
|
||||||
|
QueryWrapper<TDesignPythonOutfit> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(TDesignPythonOutfit::getCollectionId, portfolio.getCollectionId());
|
||||||
|
List<TDesignPythonOutfit> designPythonOutfitList = designPythonOutfitMapper.selectList(qw);
|
||||||
|
for (TDesignPythonOutfit tDesignPythonOutfit : designPythonOutfitList) {
|
||||||
|
tDesignPythonOutfit.setDesignUrl(minioUtil.getPresignedUrl(tDesignPythonOutfit.getDesignUrl(), 24 * 60));
|
||||||
|
}
|
||||||
|
vo.setDesignPythonOutfitList(designPythonOutfitList);
|
||||||
}
|
}
|
||||||
vo.setCollectionElementList(collectionElementList);
|
Canvas canvas = canvasMapper.selectById(vo.getCanvasId());
|
||||||
QueryWrapper<TDesignPythonOutfit> qw = new QueryWrapper<>();
|
vo.setCanvasUrl(minioUtil.getPresignedUrl(canvas.getUrl(), 24 * 60));
|
||||||
qw.lambda().eq(TDesignPythonOutfit::getCollectionId, portfolio.getCollectionId());
|
|
||||||
List<TDesignPythonOutfit> designPythonOutfitList = designPythonOutfitMapper.selectList(qw);
|
|
||||||
for (TDesignPythonOutfit tDesignPythonOutfit : designPythonOutfitList) {
|
|
||||||
tDesignPythonOutfit.setDesignUrl(minioUtil.getPresignedUrl(tDesignPythonOutfit.getDesignUrl(), 24 * 60));
|
|
||||||
}
|
|
||||||
vo.setDesignPythonOutfitList(designPythonOutfitList);
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,4 +517,9 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
|
|
||||||
return userLikeGroupService.choose(userLikeGroupNew.getId());
|
return userLikeGroupService.choose(userLikeGroupNew.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean designWorksRegister(DesignWorksRegisterDTO designWorksRegisterDTO) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
|
|||||||
@Resource
|
@Resource
|
||||||
private FileProperties fileProperties;
|
private FileProperties fileProperties;
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public void initDefaultSysFile() {
|
public void initDefaultSysFile() {
|
||||||
//删除已有的sysFile数据
|
//删除已有的sysFile数据
|
||||||
|
|||||||
@@ -2,29 +2,43 @@ package com.ai.da.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.ai.da.common.config.exception.BusinessException;
|
import com.ai.da.common.config.exception.BusinessException;
|
||||||
|
import com.ai.da.common.constant.CommonConstant;
|
||||||
|
import com.ai.da.common.context.UserContext;
|
||||||
|
import com.ai.da.common.utils.CopyUtil;
|
||||||
import com.ai.da.common.utils.DateUtil;
|
import com.ai.da.common.utils.DateUtil;
|
||||||
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.mapper.primary.*;
|
import com.ai.da.mapper.primary.*;
|
||||||
import com.ai.da.mapper.primary.entity.TDesignPythonOutfit;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
import com.ai.da.mapper.primary.entity.UserLike;
|
import com.ai.da.model.dto.ExportSaveDTO;
|
||||||
import com.ai.da.mapper.primary.entity.UserLikeGroup;
|
import com.ai.da.model.dto.ProductImageLikeDTO;
|
||||||
|
import com.ai.da.model.dto.ToProductImageDTO;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
|
import com.ai.da.python.PythonService;
|
||||||
import com.ai.da.service.AccountService;
|
import com.ai.da.service.AccountService;
|
||||||
import com.ai.da.service.CollectionService;
|
import com.ai.da.service.CollectionService;
|
||||||
import com.ai.da.service.UserLikeGroupService;
|
import com.ai.da.service.UserLikeGroupService;
|
||||||
import com.ai.da.service.UserLikeService;
|
import com.ai.da.service.UserLikeService;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.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.gson.Gson;
|
||||||
|
import io.netty.util.internal.StringUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
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.StringUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Date;
|
import java.io.BufferedReader;
|
||||||
import java.util.List;
|
import java.io.InputStream;
|
||||||
import java.util.Objects;
|
import java.io.InputStreamReader;
|
||||||
import java.util.TimeZone;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -167,4 +181,216 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
|
|
||||||
baseMapper.update(null,uw);
|
baseMapper.update(null,uw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ExportFileMapper exportFileMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean exportSave(MultipartFile file, Long userLikeGroupId) {
|
||||||
|
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||||
|
String upload = minioUtil.upload("aida-users", userHolder.getId() + "/exportFile", file);
|
||||||
|
QueryWrapper<ExportFile> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(ExportFile::getUserLikeGroupId, userLikeGroupId);
|
||||||
|
List<ExportFile> exportFiles = exportFileMapper.selectList(qw);
|
||||||
|
if (CollectionUtil.isNotEmpty(exportFiles)) {
|
||||||
|
ExportFile exportFile = exportFiles.get(0);
|
||||||
|
exportFile.setUserLikeGroupId(userLikeGroupId);
|
||||||
|
exportFile.setUrl(upload);
|
||||||
|
exportFileMapper.updateById(exportFile);
|
||||||
|
}else {
|
||||||
|
ExportFile exportFile = new ExportFile();
|
||||||
|
exportFile.setUserLikeGroupId(userLikeGroupId);
|
||||||
|
exportFile.setUrl(upload);
|
||||||
|
exportFileMapper.insert(exportFile);
|
||||||
|
}
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ToProductImageRecordMapper toProductImageRecordMapper;
|
||||||
|
@Resource
|
||||||
|
private ToProductImageResultMapper toProductImageResultMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PythonService pythonService;
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public List<ToProductImageResult> toProduct(ToProductImageDTO toProductImageDTO) {
|
||||||
|
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||||
|
Long userLikeGroupId = toProductImageDTO.getUserLikeGroupId();
|
||||||
|
ToProductImageRecord toProductImageRecord = new ToProductImageRecord();
|
||||||
|
toProductImageRecord.setUserLikeGroupId(userLikeGroupId);
|
||||||
|
toProductImageRecord.setCreateTime(LocalDateTime.now());
|
||||||
|
if (!StringUtils.isEmpty(toProductImageDTO.getPrompt())) {
|
||||||
|
toProductImageRecord.setPrompt(toProductImageDTO.getPrompt());
|
||||||
|
}
|
||||||
|
toProductImageRecordMapper.insert(toProductImageRecord);
|
||||||
|
|
||||||
|
List<ToProductImageResult> result = new ArrayList<>();
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
for (ToProductImageVO toProductImageVO : toProductImageDTO.getToProductImageVOList()) {
|
||||||
|
if (toProductImageVO.getElementType().equals("DesignOutfit")) {
|
||||||
|
String taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId();
|
||||||
|
i ++;
|
||||||
|
TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(toProductImageVO.getElementId());
|
||||||
|
// 走模型
|
||||||
|
pythonService.toProductImage(tDesignPythonOutfit.getDesignUrl(), taskId, toProductImageDTO.getPrompt());
|
||||||
|
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||||
|
toProductImageResult.setElementId(tDesignPythonOutfit.getId());
|
||||||
|
toProductImageResult.setElementType("DesignOutfit");
|
||||||
|
toProductImageResult.setCreateTime(LocalDateTime.now());
|
||||||
|
toProductImageResult.setToProductImageRecordId(toProductImageRecord.getId());
|
||||||
|
// toProductImageResult.setUrl(productImageUrl);
|
||||||
|
toProductImageResult.setIsLike(0);
|
||||||
|
toProductImageResult.setTaskId(taskId);
|
||||||
|
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
|
||||||
|
toProductImageResultMapper.insert(toProductImageResult);
|
||||||
|
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
|
||||||
|
result.add(toProductImageResult);
|
||||||
|
}else {
|
||||||
|
String taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId();
|
||||||
|
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
||||||
|
// 走模型
|
||||||
|
pythonService.toProductImage(toProductElement.getUrl(), taskId, toProductImageDTO.getPrompt());
|
||||||
|
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||||
|
toProductImageResult.setElementId(toProductElement.getId());
|
||||||
|
toProductImageResult.setElementType("ProductElement");
|
||||||
|
toProductImageResult.setCreateTime(LocalDateTime.now());
|
||||||
|
toProductImageResult.setToProductImageRecordId(toProductImageRecord.getId());
|
||||||
|
// toProductImageResult.setUrl(productImageUrl);
|
||||||
|
toProductImageResult.setIsLike(0);
|
||||||
|
toProductImageResult.setTaskId(taskId);
|
||||||
|
toProductImageResultMapper.insert(toProductImageResult);
|
||||||
|
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
|
||||||
|
result.add(toProductImageResult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ToProductElementMapper toProductElementMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public ToProductElementVO toProductImageElementUpload(MultipartFile file, Long userLikeGroupId) {
|
||||||
|
if (null == file || StringUtils.isEmpty(file.getOriginalFilename())) {
|
||||||
|
throw new BusinessException("file.cannot.be.empty");
|
||||||
|
}
|
||||||
|
if (userLikeGroupId == null) {
|
||||||
|
throw new BusinessException("userLikeGroupId.cannot.be.empty");
|
||||||
|
}
|
||||||
|
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||||
|
String bucketName = "aida-users";
|
||||||
|
String minioUrl = minioUtil.upload(bucketName, userHolder.getId() + "/toProductImageElement", file);
|
||||||
|
ToProductElement toProductElement = new ToProductElement();
|
||||||
|
toProductElement.setUrl(minioUrl);
|
||||||
|
toProductElement.setUserLikeGroupId(userLikeGroupId);
|
||||||
|
toProductElement.setCreateTime(LocalDateTime.now());
|
||||||
|
toProductElementMapper.insert(toProductElement);
|
||||||
|
ToProductElementVO toProductElementVO = CopyUtil.copyObject(toProductElement, ToProductElementVO.class);
|
||||||
|
toProductElementVO.setUrl(minioUtil.getPresignedUrl(toProductElementVO.getUrl(), 24 * 60));
|
||||||
|
return toProductElementVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean productImageLike(ProductImageLikeDTO productImageLikeDTO) {
|
||||||
|
List<Long> toProductImageResultId = productImageLikeDTO.getToProductImageResultId();
|
||||||
|
QueryWrapper<ToProductImageResult> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().in(ToProductImageResult::getId, toProductImageResultId);
|
||||||
|
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||||
|
toProductImageResult.setIsLike(1);
|
||||||
|
toProductImageResultMapper.update(toProductImageResult, qw);
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
@Resource
|
||||||
|
private RedisUtil redisUtil;
|
||||||
|
@Value("${redis.key.toProductImageResultKey}")
|
||||||
|
private String toProductImageResultKey;
|
||||||
|
@Override
|
||||||
|
public List<GenerateResultVO> getToProductImageResultList(List<String> taskIdList) {
|
||||||
|
List<GenerateResultVO> results = new ArrayList<>();
|
||||||
|
Set<String> collect = new HashSet<>();
|
||||||
|
taskIdList.forEach(taskId -> {
|
||||||
|
String key = toProductImageResultKey + ":" + taskId;
|
||||||
|
GenerateResultVO generateResultVO = new Gson().fromJson(redisUtil.getFromString(key), GenerateResultVO.class);
|
||||||
|
if (!Objects.isNull(generateResultVO) && !StringUtil.isNullOrEmpty(generateResultVO.getUrl())) {
|
||||||
|
String url = generateResultVO.getUrl();
|
||||||
|
if (url.substring(url.lastIndexOf("/") + 1).equals("white_image.jpg")) {
|
||||||
|
generateResultVO.setStatus("Invalid");
|
||||||
|
} else {
|
||||||
|
generateResultVO.setUrl(minioUtil.getPresignedUrl(url, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
|
||||||
|
}
|
||||||
|
} else if (Objects.isNull(generateResultVO)) {
|
||||||
|
generateResultVO = new GenerateResultVO();
|
||||||
|
}
|
||||||
|
if (!StringUtil.isNullOrEmpty(generateResultVO.getStatus())) collect.add(generateResultVO.getStatus());
|
||||||
|
results.add(generateResultVO);
|
||||||
|
});
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject exportSearch(Long userLikeGroupId) {
|
||||||
|
QueryWrapper<ExportFile> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(ExportFile::getUserLikeGroupId, userLikeGroupId);
|
||||||
|
List<ExportFile> exportFiles = exportFileMapper.selectList(qw);
|
||||||
|
if (CollectionUtil.isNotEmpty(exportFiles)) {
|
||||||
|
try {
|
||||||
|
InputStream download = minioUtil.download(exportFiles.get(0).getUrl());
|
||||||
|
String convert = convert(download);
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(convert);
|
||||||
|
JSONArray objects = jsonObject.getJSONArray("objects");
|
||||||
|
for (int i = 0; i < objects.size(); i++) {
|
||||||
|
JSONObject jsonObject1 = objects.getJSONObject(i);
|
||||||
|
String type = jsonObject1.getString("type");
|
||||||
|
if (type.equals("image")) {
|
||||||
|
String minioUrl = jsonObject1.getString("minioUrl");
|
||||||
|
jsonObject1.put("src", minioUtil.getPresignedUrl(minioUrl, 24 * 60));
|
||||||
|
}
|
||||||
|
objects.set(i, jsonObject1);
|
||||||
|
}
|
||||||
|
jsonObject.put("objects", objects);
|
||||||
|
System.out.println(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}catch (Exception e){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CanvasElementUpload canvasElementUpload(MultipartFile file) {
|
||||||
|
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||||
|
CanvasElementUpload canvasElementUpload = new CanvasElementUpload();
|
||||||
|
String url = minioUtil.upload("aida-users", userHolder.getId() + "/canvasElementUpload", file);
|
||||||
|
canvasElementUpload.setUrl(url);
|
||||||
|
canvasElementUpload.setMinioUrl(minioUtil.getPresignedUrl(url, 24 * 60));
|
||||||
|
return canvasElementUpload;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ToProductImageResult> productImageLikeList(ToProductImageDTO toProductImageDTO) {
|
||||||
|
QueryWrapper<ToProductImageResult> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(ToProductImageResult::getIsLike, 1);
|
||||||
|
qw.lambda().eq(ToProductImageResult::getUserLikeGroupId, toProductImageDTO.getUserLikeGroupId());
|
||||||
|
List<ToProductImageResult> toProductImageResults = toProductImageResultMapper.selectList(qw);
|
||||||
|
for (ToProductImageResult toProductImageResult : toProductImageResults) {
|
||||||
|
toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
|
||||||
|
}
|
||||||
|
return toProductImageResults;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String convert(InputStream inputStream) {
|
||||||
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
|
||||||
|
return reader.lines().collect(Collectors.joining("\n"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ redis.key.SRExceptionMap=SRExceptionMap
|
|||||||
redis.key.taskList=TaskList
|
redis.key.taskList=TaskList
|
||||||
redis.key.credits.pre-deduction=Credits:PreDeduction
|
redis.key.credits.pre-deduction=Credits:PreDeduction
|
||||||
redis.key.generateResult=Generate:Result
|
redis.key.generateResult=Generate:Result
|
||||||
|
redis.key.toProductImageResultKey=ToProductImage:Result
|
||||||
|
|
||||||
aws.s3.accessKeyId=AKIAVD3OJIMF6UJFLSHZ
|
aws.s3.accessKeyId=AKIAVD3OJIMF6UJFLSHZ
|
||||||
aws.s3.secretKey=LNIwFFB27/QedtZ+Q/viVUoX9F5x1DbuM8N0DkD8
|
aws.s3.secretKey=LNIwFFB27/QedtZ+Q/viVUoX9F5x1DbuM8N0DkD8
|
||||||
|
|||||||
@@ -186,6 +186,17 @@ TROUSERS=Trousers
|
|||||||
SKIRT=Skirt
|
SKIRT=Skirt
|
||||||
FEMALE=Women's wear
|
FEMALE=Women's wear
|
||||||
MALE=Men's wear
|
MALE=Men's wear
|
||||||
|
|
||||||
SLOGAN=Slogan
|
SLOGAN=Slogan
|
||||||
LOGO=Logo
|
LOGO=Logo
|
||||||
PATTERN=Pattern
|
PATTERN=Pattern
|
||||||
|
|
||||||
|
EMBROIDERY=Embroidery
|
||||||
|
BEADING=Beading
|
||||||
|
PEARL=Pearl
|
||||||
|
RIVET=Rivet
|
||||||
|
BUTTON=Button
|
||||||
|
BELT=Belt
|
||||||
|
CORSAGE=Corsage
|
||||||
|
ZIPPER=Zipper
|
||||||
|
POCKET=Pocket
|
||||||
@@ -179,6 +179,17 @@ TROUSERS=裤子
|
|||||||
SKIRT=短裙
|
SKIRT=短裙
|
||||||
FEMALE=女装
|
FEMALE=女装
|
||||||
MALE=男装
|
MALE=男装
|
||||||
|
|
||||||
SLOGAN=标语
|
SLOGAN=标语
|
||||||
LOGO=标志
|
LOGO=标志
|
||||||
PATTERN=图案
|
PATTERN=图案
|
||||||
|
|
||||||
|
EMBROIDERY=刺绣
|
||||||
|
BEADING=钉珠
|
||||||
|
PEARL=珍珠
|
||||||
|
RIVET=铆钉
|
||||||
|
BUTTON=纽扣
|
||||||
|
BELT=腰带
|
||||||
|
CORSAGE=胸花
|
||||||
|
ZIPPER=拉链
|
||||||
|
POCKET=口袋
|
||||||
Reference in New Issue
Block a user