Files
aida_back/src/main/java/com/ai/da/controller/SavedCollectionController.java

310 lines
15 KiB
Java
Raw Normal View History

2023-01-06 15:17:37 +08:00
package com.ai.da.controller;
2024-03-27 13:28:48 +08:00
import cn.hutool.core.collection.CollectionUtil;
2023-10-31 14:07:43 +08:00
import com.ai.da.common.config.exception.BusinessException;
2023-01-06 15:17:37 +08:00
import com.ai.da.common.context.UserContext;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.Response;
import com.ai.da.common.utils.CopyUtil;
2023-10-18 16:51:08 +08:00
import com.ai.da.common.utils.MinioUtil;
2024-01-19 16:36:34 +08:00
import com.ai.da.mapper.primary.TDesignPythonOutfitMapper;
2024-06-12 09:47:55 +08:00
import com.ai.da.mapper.primary.entity.*;
2023-01-06 15:17:37 +08:00
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.*;
import com.ai.da.service.*;
2024-06-12 09:47:55 +08:00
import com.alibaba.fastjson.JSONObject;
2023-01-06 15:17:37 +08:00
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.Function;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
2024-06-12 09:47:55 +08:00
import org.springframework.web.multipart.MultipartFile;
2023-01-06 15:17:37 +08:00
import javax.annotation.Resource;
import javax.validation.Valid;
2025-03-20 16:46:13 +08:00
import java.io.IOException;
2024-03-27 13:28:48 +08:00
import java.util.*;
2023-01-06 15:17:37 +08:00
import java.util.stream.Collectors;
@Api(tags = "History模块(saved Collection)")
@Slf4j
@RestController
@RequestMapping("/api/history")
public class SavedCollectionController {
@Resource
private UserLikeGroupService userLikeGroupService;
@Resource
private UserLikeService userLikeService;
@Resource
private AccountService accountService;
2023-10-18 16:51:08 +08:00
@Resource
2023-12-11 10:52:42 +08:00
private TDesignPythonOutfitMapper designPythonOutfitMapper;
@Resource
2023-10-18 16:51:08 +08:00
private MinioUtil minioUtil;
2024-03-27 13:28:48 +08:00
@Resource
private ClassificationService classificationService;
2024-07-04 11:34:51 +08:00
@Resource
private PortfolioService portfolioService;
2023-01-06 15:17:37 +08:00
@ApiOperation(value = "History用户分页分组列表")
@PostMapping("/queryUserGroup")
public Response<PageBaseResponse<UserLikeGroupVO>> queryUserGroup(@Valid @RequestBody QueryHistoryPageDTO query) {
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
// 分页数据
QueryWrapper<UserLikeGroup> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("account_id", authPrincipalVo.getId());
2023-10-20 14:47:18 +08:00
if (!StringUtils.isEmpty(query.getCollectionName())) {
2023-01-06 15:17:37 +08:00
queryWrapper.like("name", query.getCollectionName());
}
2023-10-20 14:47:18 +08:00
if (Objects.nonNull(query.getStartDate())) {
2023-01-06 15:17:37 +08:00
queryWrapper.ge("update_date", new Date(query.getStartDate()));
}
2023-10-20 14:47:18 +08:00
if (Objects.nonNull(query.getEndDate())) {
2023-01-06 15:17:37 +08:00
queryWrapper.le("update_date", new Date(query.getEndDate()));
}
2024-03-27 13:28:48 +08:00
// 新增分类过滤
if (CollectionUtil.isNotEmpty(query.getClassificationIdList())) {
List<Long> historyIdList = new ArrayList<>();
if (query.getIntersection() == 0) {
for (Long classificationId : query.getClassificationIdList()) {
historyIdList.addAll(classificationService.getLibraryIdListByClassificationId(classificationId));
}
if (CollectionUtil.isNotEmpty(historyIdList)) {
queryWrapper.in("id", historyIdList);
}else {
return Response.success(PageBaseResponse.success(new Page<>()));
}
}else {
for (int i = 0; i < query.getClassificationIdList().size(); i++) {
List<Long> historyIdListByClassificationId = classificationService.getLibraryIdListByClassificationId(query.getClassificationIdList().get(i));
if (i == 0) {
historyIdList.addAll(historyIdListByClassificationId);
}else {
historyIdList.retainAll(historyIdListByClassificationId);
}
if (CollectionUtil.isEmpty(historyIdList)) {
return Response.success(PageBaseResponse.success(new Page<>()));
}
}
queryWrapper.in("id", historyIdList);
}
}
2024-04-09 14:09:19 +08:00
queryWrapper.orderByDesc("update_date");
2023-01-06 15:17:37 +08:00
IPage<UserLikeGroup> page = userLikeGroupService.getBaseMapper().selectPage(
new Page<>(query.getPage(), query.getSize()), queryWrapper);
2023-10-20 14:47:18 +08:00
if (CollectionUtils.isEmpty(page.getRecords())) {
2023-01-06 15:17:37 +08:00
return Response.success(PageBaseResponse.success(new Page<>()));
}
List<Long> groupIds = page.getRecords().stream().map(UserLikeGroup::getId).collect(Collectors.toList());
List<UserLikeVO> groupDetails = userLikeService.getGroupDetails(groupIds);
2024-08-15 16:37:24 +08:00
// if (CollectionUtils.isEmpty(groupDetails)) {
// throw new BusinessException("groupDetails.not.found");
// }
2023-10-20 14:47:18 +08:00
Map<Long, List<UserLikeVO>> groupDetailMap = groupDetails.stream()
2023-01-06 15:17:37 +08:00
.collect(Collectors.groupingBy(UserLikeVO::getUserLikeGroupId));
2023-10-20 14:47:18 +08:00
Account account = accountService.getById(authPrincipalVo.getId());
2023-01-06 15:17:37 +08:00
IPage<UserLikeGroupVO> convert = page.convert((Function<UserLikeGroup, UserLikeGroupVO>) group -> {
2023-10-20 14:47:18 +08:00
if (group != null) {
UserLikeGroupVO userLikeGroupVO = CopyUtil.copyObject(group, UserLikeGroupVO.class);
userLikeGroupVO.setUpdateDate(group.getUpdateDate().getTime());
2023-01-06 15:17:37 +08:00
userLikeGroupVO.setAuthor(account.getUserName());
//count 和detail
2024-08-15 16:37:24 +08:00
if (groupDetailMap.keySet().contains(group.getId())) {
List<UserLikeVO> details = groupDetailMap.get(group.getId());
for (UserLikeVO detail : details) {
TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(detail.getDesignOutfitId());
detail.setUrl(minioUtil.getPreSignedUrl(tDesignPythonOutfit.getDesignUrl(), 24 * 60));
}
userLikeGroupVO.setGroupDetails(details);
userLikeGroupVO.setSketchCount(CollectionUtils.isEmpty(details) ? 0 : details.size());
}else {
userLikeGroupVO.setSketchCount(0);
2023-10-18 16:51:08 +08:00
}
2024-07-04 11:34:51 +08:00
if (userLikeGroupVO.getOriginal() == 0) {
userLikeGroupVO.setOriginalAccountName(accountService.getById(userLikeGroupVO.getOriginalAccountId()).getUserName());
2024-07-08 16:17:13 +08:00
Portfolio byId = portfolioService.getByIdAll(userLikeGroupVO.getOriginalPortfolioId());
if (Objects.nonNull(byId)) {
String portfolioName = byId.getPortfolioName();
userLikeGroupVO.setOriginalPortfolioName(portfolioName);
}
2024-07-04 11:34:51 +08:00
}
2023-01-06 15:17:37 +08:00
return userLikeGroupVO;
}
return null;
});
return Response.success(PageBaseResponse.success(convert));
}
@ApiOperation(value = "History用户分组详情,目前弃用 ")
@GetMapping("/getUserGroupDetail")
public Response<List<UserLikeVO>> getUserGroupDetail(
@ApiParam("用户分组id") @RequestParam("userGroupId") Long userGroupId) {
return Response.success(userLikeService.getGroupDetail(userGroupId));
}
@ApiOperation(value = "History修改用户分组名")
@PostMapping("/updateUserGroupName")
public Response<HistoryUpdateVO> updateUserGroupName(@Valid @RequestBody HistoryUpdateDTO historyUpdateDTO) {
return Response.success(userLikeGroupService.updateUserGroupName(historyUpdateDTO.getUserGroupId()
2023-10-20 14:47:18 +08:00
, historyUpdateDTO.getUserGroupName(), historyUpdateDTO.getTimeZone()));
2023-01-06 15:17:37 +08:00
}
@ApiOperation(value = "History删除用户分组")
@PostMapping("/deleteUserGroup")
public Response<Boolean> deleteUserGroup(@Valid @RequestBody HistoryDeleteDTO deleteDTO) {
userLikeGroupService.deleteUserGroup(deleteDTO.getUserGroupId());
userLikeService.deleteByUserGroupId(deleteDTO.getUserGroupId());
return Response.success(Boolean.TRUE);
}
@ApiOperation(value = "History choose")
@GetMapping("/choose")
public Response<UserLikeChooseVO> choose(
2023-10-20 14:47:18 +08:00
@ApiParam("用户分组id") @RequestParam("userGroupId") Long userGroupId) {
2023-01-06 15:17:37 +08:00
return Response.success(userLikeGroupService.choose(userGroupId));
}
2024-06-12 09:47:55 +08:00
@ApiOperation(value = "exportSave")
@PostMapping("/exportSave")
2025-03-26 15:12:55 +08:00
public Response<Boolean> exportSave(@RequestParam("file") MultipartFile file, @RequestParam("projectId") Long projectId, @RequestParam("module") String module) {
return Response.success(userLikeGroupService.exportSave(file, projectId, module));
2024-06-12 09:47:55 +08:00
}
@ApiOperation(value = "exportSearch")
@PostMapping("/exportSearch")
public Response<JSONObject> exportSearch(@Valid @RequestBody ExportSearchDTO exportSearchDTO) {
2025-03-26 15:12:55 +08:00
return Response.success(userLikeGroupService.exportSearch(exportSearchDTO));
2024-06-12 09:47:55 +08:00
}
@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")
2025-03-19 14:13:16 +08:00
public Response<ToProductElementVO> toProductImageElementUpload(@RequestParam("file") MultipartFile file, @RequestParam(value = "projectId") Long projectId) {
return Response.success(userLikeGroupService.toProductImageElementUpload(file, projectId));
2024-06-12 09:47:55 +08:00
}
@ApiOperation(value = "productImageLike")
@PostMapping("/productImageLike")
2025-06-05 13:35:13 +08:00
public Response<Long> productImageLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) {
2024-06-12 09:47:55 +08:00
return Response.success(userLikeGroupService.productImageLike(productImageLikeDTO));
2024-06-17 09:34:48 +08:00
}
2025-06-03 11:23:13 +08:00
@ApiOperation(value = "collectionLikeUpdate")
@PostMapping("/collectionLikeUpdate")
public Response<Boolean> collectionLikeUpdate(@Valid @RequestBody CollectionLikeUpdateDTO collectionLikeUpdateDTO) {
return Response.success(userLikeGroupService.collectionLikeUpdate(collectionLikeUpdateDTO));
}
2024-06-17 09:34:48 +08:00
@ApiOperation(value = "productImageUnLike")
@PostMapping("/productImageUnLike")
public Response<Boolean> productImageUnLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) {
return Response.success(userLikeGroupService.productImageUnLike(productImageLikeDTO));
2024-06-12 09:47:55 +08:00
}
@ApiOperation(value = "获取生成结果")
@PostMapping("/toProductImageResult")
2024-06-25 16:43:29 +08:00
public Response<List<MagicToolResultVO>> getToProductImageResult(@Valid @RequestBody List<String> taskIdList) {
List<MagicToolResultVO> magicToolResultVOList = userLikeGroupService.getToProductImageResultList(taskIdList);
return Response.success(magicToolResultVOList);
2024-06-12 09:47:55 +08:00
}
@ApiOperation(value = "画布用户上传元素")
@PostMapping("/canvasElementUpload")
public Response<CanvasElementUpload> canvasElementUpload(@RequestParam("file") MultipartFile file) {
return Response.success(userLikeGroupService.canvasElementUpload(file));
}
@ApiOperation("productImageLikeList")
@PostMapping("/productImageLikeList")
2024-06-27 15:33:26 +08:00
public Response<List<ToProductImageResultVO>> productImageLikeList(@Valid @RequestBody ToProductImageDTO toProductImageDTO) {
2024-06-12 09:47:55 +08:00
return Response.success(userLikeGroupService.productImageLikeList(toProductImageDTO));
}
2024-06-25 16:43:29 +08:00
@ApiOperation(value = "relight")
@PostMapping("/relight")
public Response<List<ToProductImageResult>> relight(@Valid @RequestBody ToProductImageDTO toProductImageDTO) {
return Response.success(userLikeGroupService.relight(toProductImageDTO));
}
@ApiOperation(value = "获取relight结果")
@PostMapping("/relightResult")
public Response<List<MagicToolResultVO>> getRelightResult(@Valid @RequestBody List<String> taskIdList) {
List<MagicToolResultVO> magicToolResultVOList = userLikeGroupService.getRelightResult(taskIdList);
return Response.success(magicToolResultVOList);
}
2024-10-20 10:52:14 +08:00
@ApiOperation(value = "likeHistoryRelSketch")
@PostMapping("/likeHistoryRelSketch")
public Response<String> likeHistoryRelSketch() {
return Response.success(userLikeGroupService.likeHistoryRelSketch());
}
2024-12-09 13:31:30 +08:00
2024-12-02 12:02:19 +08:00
@ApiOperation(value = "download")
@PostMapping("/download")
public Response<String> download() {
return Response.success(userLikeGroupService.download());
}
2024-12-09 13:31:30 +08:00
@ApiOperation(value = "productImageInitialize")
@PostMapping("/productImageInitialize")
public Response<Boolean> productImageUpload(@Valid @RequestBody ProductImageInitializeDTO productImageInitializeDTO) {
return Response.success(userLikeGroupService.productImageInitialize(productImageInitializeDTO));
}
2025-03-20 16:46:13 +08:00
2025-04-08 15:15:39 +08:00
@ApiOperation(value = "getInitializeProgress")
@PostMapping("/getInitializeProgress")
2025-04-08 17:29:10 +08:00
public Response<InitializeProgressVO> getInitializeProgress(@Valid @RequestBody ProductImageInitializeDTO productImageInitializeDTO) {
2025-04-08 15:15:39 +08:00
return Response.success(userLikeGroupService.getInitializeProgress(productImageInitializeDTO));
}
2025-03-20 16:46:13 +08:00
@ApiOperation(value = "brandDNASaveOrUpdate")
@PostMapping("/brandDNASaveOrUpdate")
public Response<Boolean> brandDNASaveOrUpdate(@Valid @RequestBody BrandDNADTO brandDNADTO) {
return Response.success(userLikeGroupService.brandDNASaveOrUpdate(brandDNADTO));
}
2025-04-08 15:15:39 +08:00
@ApiOperation(value = "brandDNADelete")
@PostMapping("/brandDNADelete")
public Response<Boolean> brandDNADelete(@Valid @RequestBody BrandDNADTO brandDNADTO) {
return Response.success(userLikeGroupService.brandDNADelete(brandDNADTO));
}
2025-03-27 13:33:09 +08:00
@ApiOperation(value = "brandDNAPage")
@PostMapping("/brandDNAPage")
public Response<PageBaseResponse<BrandDNAVO>> brandDNAPage(@Valid @RequestBody BrandDNAQueryDTO brandDNAQueryDTO) {
return Response.success(userLikeGroupService.brandDNAPage(brandDNAQueryDTO));
}
2025-03-20 16:46:13 +08:00
@ApiOperation(value = "brandLogoUpload")
@PostMapping("/brandLogoUpload")
2025-03-27 13:55:16 +08:00
public Response<BrandLogoUploadVO> brandDNASaveOrUpdate(@RequestParam("file") MultipartFile file) {
2025-03-20 16:46:13 +08:00
return Response.success(userLikeGroupService.brandLogoUpload(file));
}
@ApiOperation(value = "brandDNAUpload")
@PostMapping("/brandDNAUpload")
2025-04-10 11:01:24 +08:00
public Response<LibraryUpdateVo> brandDNAUpload(@RequestParam("file") MultipartFile file, @RequestParam("brandId") Long brandId) throws IOException {
2025-03-20 16:46:13 +08:00
return Response.success(userLikeGroupService.brandDNAUpload(file, brandId));
}
2025-03-27 14:32:56 +08:00
@ApiOperation(value = "brandDNAGenerate")
@PostMapping("/brandDNAGenerate")
public Response<BrandDNAGenerateVO> brandDNAGenerate(@RequestParam("prompt") String prompt) {
return Response.success(userLikeGroupService.brandDNAGenerate(prompt));
}
2023-01-06 15:17:37 +08:00
}