Merge remote-tracking branch 'origin/dev/dev' into dev/dev
This commit is contained in:
@@ -3,11 +3,13 @@ package com.ai.da;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@Slf4j
|
||||
@SpringBootApplication
|
||||
@EnableScheduling
|
||||
@EnableAsync
|
||||
public class AiDaApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -374,14 +374,31 @@ public class MinioUtil {
|
||||
*/
|
||||
public String getPreSignedUrl(String bucketName, String fileName, int expiry) {
|
||||
try {
|
||||
return minioClient.getPresignedObjectUrl(
|
||||
GetPresignedObjectUrlArgs.builder()
|
||||
.bucket(bucketName)
|
||||
.object(fileName)
|
||||
.expiry(expiry, TimeUnit.MINUTES)
|
||||
.method(Method.GET)
|
||||
.build()
|
||||
);
|
||||
|
||||
String lowerName = fileName.toLowerCase();
|
||||
boolean isImage = lowerName.endsWith(".jpg") || lowerName.endsWith(".jpeg") || lowerName.endsWith(".png");
|
||||
|
||||
GetPresignedObjectUrlArgs.Builder builder = GetPresignedObjectUrlArgs.builder()
|
||||
.bucket(bucketName)
|
||||
.object(fileName)
|
||||
.expiry(expiry, TimeUnit.MINUTES)
|
||||
.method(Method.GET);
|
||||
|
||||
if (isImage) {
|
||||
// 根据后缀名设置正确的 content-type
|
||||
String contentType = "image/jpeg";
|
||||
if (lowerName.endsWith(".png")) {
|
||||
contentType = "image/png";
|
||||
}
|
||||
|
||||
Map<String, String> queryParams = new HashMap<>();
|
||||
queryParams.put("response-content-type", contentType);
|
||||
queryParams.put("response-content-disposition", "inline");
|
||||
|
||||
builder.extraQueryParams(queryParams);
|
||||
}
|
||||
|
||||
return minioClient.getPresignedObjectUrl(builder.build());
|
||||
} catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException e) {
|
||||
e.printStackTrace();
|
||||
throw new BusinessException(e.getMessage());
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.ai.da.common.utils;
|
||||
|
||||
import com.ai.da.model.dto.ProgressDTO;
|
||||
import com.ai.da.python.vo.DesignPythonObject;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.data.redis.core.HashOperations;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
@@ -14,6 +17,7 @@ import org.springframework.util.CollectionUtils;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.Duration;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -500,4 +504,24 @@ public class RedisUtil {
|
||||
redisTemplate.delete(keys);
|
||||
}
|
||||
}
|
||||
|
||||
public void setTaskProgressDTO(String taskId, ProgressDTO dto) {
|
||||
String key = "task:progress:" + taskId;
|
||||
redisTemplate.opsForValue().set(key, JSON.toJSONString(dto), Duration.ofDays(1));
|
||||
}
|
||||
|
||||
public ProgressDTO getTaskProgressDTO(String taskId) {
|
||||
String key = "task:progress:" + taskId;
|
||||
String json = redisTemplate.opsForValue().get(key);
|
||||
if (StringUtils.isBlank(json)) {
|
||||
// return new ProgressDTO(0, 0, false);
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return JSON.parseObject(json, ProgressDTO.class);
|
||||
} catch (Exception e) {
|
||||
log.warn("任务进度解析失败 key={}, json={}", key, json);
|
||||
return new ProgressDTO(0, 0, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class PortfolioController {
|
||||
|
||||
@ApiOperation(value = "发布作品集")
|
||||
@PostMapping("/publish")
|
||||
public Response<Long> preLogin(@RequestParam("file") MultipartFile canvas, @RequestParam("data") String data) {
|
||||
public Response<Long> publish(@RequestParam("file") MultipartFile canvas, @RequestParam("data") String data) {
|
||||
return Response.success(portfolioService.publish(canvas, data));
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class PortfolioController {
|
||||
|
||||
@ApiOperation(value = "选择作品")
|
||||
@PostMapping("/choose")
|
||||
public Response<UserLikeChooseVO> choose(@Valid @RequestBody PortfolioDTO portfolioDTO) {
|
||||
public Response<ProjectChooseVO> choose(@Valid @RequestBody PortfolioDTO portfolioDTO) {
|
||||
return Response.success(portfolioService.choose(portfolioDTO));
|
||||
}
|
||||
|
||||
|
||||
@@ -121,8 +121,8 @@ public class ProjectController {
|
||||
@GetMapping("/downloadZip")
|
||||
@ApiOperationSupport(order = 11)
|
||||
@ApiOperation(value = "下载", notes = "传入project")
|
||||
public void downloadZip(@RequestParam(value = "threeDSimpleId") Long threeDSimpleId, @RequestParam(value = "sizeType") String sizeType, @RequestParam(value = "size") String size, HttpServletResponse response) throws MinioException, IOException {
|
||||
userLikeGroupService.downloadZip(threeDSimpleId, sizeType, size, response);
|
||||
public Response<String> downloadZip(@RequestParam(value = "threeDSimpleId") Long threeDSimpleId, @RequestParam(value = "sizeType") String sizeType, @RequestParam(value = "size") String size, HttpServletResponse response) throws MinioException, IOException {
|
||||
return Response.success(userLikeGroupService.downloadZip(threeDSimpleId, sizeType, size, response));
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
|
||||
@@ -259,12 +259,24 @@ public class SavedCollectionController {
|
||||
return Response.success(userLikeGroupService.productImageInitialize(productImageInitializeDTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "getInitializeProgress")
|
||||
@PostMapping("/getInitializeProgress")
|
||||
public Response<InitializeProgressVO> getInitializeProgress(@Valid @RequestBody ProductImageInitializeDTO productImageInitializeDTO) {
|
||||
return Response.success(userLikeGroupService.getInitializeProgress(productImageInitializeDTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "brandDNASaveOrUpdate")
|
||||
@PostMapping("/brandDNASaveOrUpdate")
|
||||
public Response<Boolean> brandDNASaveOrUpdate(@Valid @RequestBody BrandDNADTO brandDNADTO) {
|
||||
return Response.success(userLikeGroupService.brandDNASaveOrUpdate(brandDNADTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "brandDNADelete")
|
||||
@PostMapping("/brandDNADelete")
|
||||
public Response<Boolean> brandDNADelete(@Valid @RequestBody BrandDNADTO brandDNADTO) {
|
||||
return Response.success(userLikeGroupService.brandDNADelete(brandDNADTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "brandDNAPage")
|
||||
@PostMapping("/brandDNAPage")
|
||||
public Response<PageBaseResponse<BrandDNAVO>> brandDNAPage(@Valid @RequestBody BrandDNAQueryDTO brandDNAQueryDTO) {
|
||||
|
||||
@@ -18,7 +18,7 @@ public class ProductImageAttribute implements Serializable {
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
private String imgName;
|
||||
// private String imgName;
|
||||
private String length;
|
||||
private String sleeveLength;
|
||||
private String sleeveShape;
|
||||
|
||||
@@ -9,4 +9,6 @@ public class ProductImageInitializeDTO {
|
||||
private List<Long> libraryIds;
|
||||
|
||||
private Long brandId;
|
||||
|
||||
private Boolean update;
|
||||
}
|
||||
|
||||
15
src/main/java/com/ai/da/model/dto/ProgressDTO.java
Normal file
15
src/main/java/com/ai/da/model/dto/ProgressDTO.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package com.ai.da.model.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProgressDTO {
|
||||
private int total;
|
||||
private int current;
|
||||
private boolean error;
|
||||
}
|
||||
|
||||
10
src/main/java/com/ai/da/model/vo/InitializeProgressVO.java
Normal file
10
src/main/java/com/ai/da/model/vo/InitializeProgressVO.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package com.ai.da.model.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class InitializeProgressVO {
|
||||
private Boolean analyzed;
|
||||
|
||||
private double percent;
|
||||
}
|
||||
@@ -19,7 +19,7 @@ public interface PortfolioService extends IService<Portfolio> {
|
||||
|
||||
PortfolioVO detail(PortfolioDTO portfolioDTO);
|
||||
|
||||
UserLikeChooseVO choose(PortfolioDTO portfolioDTO);
|
||||
ProjectChooseVO choose(PortfolioDTO portfolioDTO);
|
||||
|
||||
Boolean designWorksRegister(DesignWorksRegisterDTO designWorksRegisterDTO);
|
||||
|
||||
|
||||
8
src/main/java/com/ai/da/service/ProductImageService.java
Normal file
8
src/main/java/com/ai/da/service/ProductImageService.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package com.ai.da.service;
|
||||
|
||||
import com.ai.da.model.dto.ProgressDTO;
|
||||
|
||||
public interface ProductImageService {
|
||||
void asyncInitialize(Long brandId);
|
||||
// double getInitializeProgress(Long brandId);
|
||||
}
|
||||
@@ -76,6 +76,8 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
|
||||
|
||||
Boolean productImageInitialize(ProductImageInitializeDTO productImageInitializeDTO);
|
||||
|
||||
InitializeProgressVO getInitializeProgress(ProductImageInitializeDTO productImageInitializeDTO);
|
||||
|
||||
IPage<ProjectVO> getPage(ProjectQueryDTO projectQueryDTO);
|
||||
|
||||
ModuleChooseVO getModuleContent(ProjectDTO projectDTO);
|
||||
@@ -102,7 +104,9 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
|
||||
|
||||
void getThreeDGlb(Long threeDSimpleId, HttpServletResponse response) throws MinioException, IOException;
|
||||
|
||||
void downloadZip(Long threeDSimpleId, String sizeType, String size, HttpServletResponse response) throws MinioException, IOException;
|
||||
String downloadZip(Long threeDSimpleId, String sizeType, String size, HttpServletResponse response) throws MinioException, IOException;
|
||||
|
||||
Boolean delete(Long projectId);
|
||||
|
||||
Boolean brandDNADelete(BrandDNADTO brandDNADTO);
|
||||
}
|
||||
|
||||
@@ -125,6 +125,9 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
||||
@Resource
|
||||
private TagsMapper tagsMapper;
|
||||
|
||||
@Resource
|
||||
private ProjectMapper projectMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long publish(MultipartFile file, String data) {
|
||||
@@ -154,9 +157,26 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
||||
|
||||
if (portfolioDTO.getOpenSource() == 1) {
|
||||
UserLikeGroup userLikeGroup = userLikeGroupMapper.selectById(portfolioDTO.getUserLikeGroupId());
|
||||
|
||||
Long projectId = userLikeGroup.getProjectId();
|
||||
Project project = projectMapper.selectById(projectId);
|
||||
|
||||
Long workspaceServiceByProjectId = workspaceService.getByProjectId(project.getId());
|
||||
Workspace workspace = workspaceMapper.selectById(workspaceServiceByProjectId);
|
||||
|
||||
project.setId(null);
|
||||
project.setAccountId(-1L);
|
||||
project.setCreateTime(LocalDateTime.now());
|
||||
projectMapper.insert(project);
|
||||
|
||||
workspace.setProjectId(project.getId());
|
||||
workspace.setAccountId(-1L);
|
||||
workspaceMapper.insert(workspace);
|
||||
|
||||
UserLikeGroup userLikeGroupNew = CopyUtil.copyObject(userLikeGroup, UserLikeGroup.class);
|
||||
userLikeGroupNew.setId(null);
|
||||
userLikeGroupNew.setAccountId(-1L);
|
||||
userLikeGroupNew.setProjectId(project.getId());
|
||||
Long collectionIdOld = userLikeGroup.getCollectionId();
|
||||
QueryWrapper<Design> designQueryWrapper = new QueryWrapper<>();
|
||||
designQueryWrapper.lambda().eq(Design::getCollectionId, collectionIdOld);
|
||||
@@ -173,6 +193,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
||||
userLikeGroupMapper.insert(userLikeGroupNew);
|
||||
for (CollectionElement element : collectionElementListOld) {
|
||||
element.setCollectionId(collectionIdNew);
|
||||
element.setProjectId(project.getId());
|
||||
element.setId(null);
|
||||
collectionElementMapper.insert(element);
|
||||
TCollectionElementRelation collectionElementRelationNew = new TCollectionElementRelation();
|
||||
@@ -631,19 +652,29 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public UserLikeChooseVO choose(PortfolioDTO portfolioDTO) {
|
||||
public ProjectChooseVO choose(PortfolioDTO portfolioDTO) {
|
||||
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
|
||||
Portfolio portfolio = portfolioMapper.selectById(portfolioDTO.getId());
|
||||
QueryWrapper<UserLikeGroup> userLikeGroupQueryWrapper = new QueryWrapper<>();
|
||||
userLikeGroupQueryWrapper.lambda().eq(UserLikeGroup::getCollectionId, portfolio.getCollectionId());
|
||||
UserLikeGroup userLikeGroup = userLikeGroupMapper.selectOne(userLikeGroupQueryWrapper);
|
||||
Long portfolioUserLikeGroupId = userLikeGroup.getId();
|
||||
if (Objects.isNull(userLikeGroup)) {
|
||||
throw new BusinessException("");
|
||||
}
|
||||
Long portfolioUserLikeGroupId = userLikeGroup.getId();
|
||||
|
||||
Project project = projectMapper.selectById(userLikeGroup.getProjectId());
|
||||
Long projectIdOld = project.getId();
|
||||
project.setCreateTime(LocalDateTime.now());
|
||||
project.setId(null);
|
||||
project.setAccountId(authPrincipalVo.getId());
|
||||
project.setName(project.getName() + "_copy");
|
||||
projectMapper.insert(project);
|
||||
|
||||
UserLikeGroup userLikeGroupNew = CopyUtil.copyObject(userLikeGroup, UserLikeGroup.class);
|
||||
userLikeGroupNew.setId(null);
|
||||
userLikeGroupNew.setCreateDate(new Date());
|
||||
userLikeGroupNew.setProjectId(project.getId());
|
||||
if (portfolio.getOriginal() == 1) {
|
||||
if (Objects.equals(portfolio.getAccountId(), authPrincipalVo.getId())) {
|
||||
userLikeGroupNew.setOriginal(1);
|
||||
@@ -692,6 +723,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
||||
userLikeGroupMapper.insert(userLikeGroupNew);
|
||||
// List<TCollectionElementRelation> collectionElementRelationListNew = new ArrayList<>();
|
||||
for (CollectionElement element : collectionElementListOld) {
|
||||
element.setProjectId(project.getId());
|
||||
element.setCollectionId(collectionIdNew);
|
||||
element.setId(null);
|
||||
collectionElementMapper.insert(element);
|
||||
@@ -766,126 +798,136 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
||||
}
|
||||
}
|
||||
|
||||
Long collectionId = portfolio.getCollectionId();
|
||||
QueryWrapper<Design> getWorkspaceQw = new QueryWrapper<>();
|
||||
getWorkspaceQw.lambda().eq(Design::getCollectionId, collectionId);
|
||||
List<Design> designs = designMapper.selectList(getWorkspaceQw);
|
||||
if (!CollectionUtils.isEmpty(designs)) {
|
||||
Design design1 = designs.get(0);
|
||||
Long accountId = authPrincipalVo.getId();
|
||||
QueryWrapper<Workspace> currentWorkspaceQw = new QueryWrapper<>();
|
||||
currentWorkspaceQw.lambda().eq(Workspace::getAccountId, accountId);
|
||||
currentWorkspaceQw.lambda().eq(Workspace::getIsLastIndex, 1);
|
||||
List<Workspace> workspaces = workspaceMapper.selectList(currentWorkspaceQw);
|
||||
if (!CollectionUtils.isEmpty(workspaces)) {
|
||||
Workspace workspace1 = workspaces.get(0);
|
||||
workspace1.setIsLastIndex(0);
|
||||
workspaceMapper.updateById(workspace1);
|
||||
Workspace workspaceNew = new Workspace();
|
||||
String workspaceName = "workspace of " + accountMapper.selectById(portfolio.getAccountId()).getUserName() + portfolio.getPortfolioName();
|
||||
QueryWrapper<Workspace> existSameNameQw = new QueryWrapper<>();
|
||||
existSameNameQw.lambda().eq(Workspace::getWorkSpaceName, workspaceName);
|
||||
existSameNameQw.lambda().eq(Workspace::getAccountId, authPrincipalVo.getId());
|
||||
List<Workspace> existSameNameList = workspaceMapper.selectList(existSameNameQw);
|
||||
if (!CollectionUtils.isEmpty(existSameNameList)) {
|
||||
workspaceName = workspaceName + "_copy";
|
||||
}
|
||||
workspaceNew.setWorkSpaceName(workspaceName);
|
||||
workspaceNew.setAccountId(accountId);
|
||||
workspaceNew.setIsDeleted(0);
|
||||
workspaceNew.setIsLastIndex(1);
|
||||
workspaceNew.setCreateTime(LocalDateTime.now());
|
||||
workspaceNew.setSystemDesignerPercentage((design1.getSystemScale().multiply(BigDecimal.valueOf(100)).intValue()));
|
||||
if (design1.getSingleOverall().equals("overall")) {
|
||||
workspaceNew.setPosition("Overall");
|
||||
} else {
|
||||
workspaceNew.setPosition(design1.getSwitchCategory());
|
||||
}
|
||||
workspaceMapper.insert(workspaceNew);
|
||||
if (design1.getModelType().equals("System")) {
|
||||
SysFile sysFile = sysFileMapper.selectById(design1.getTemplateId());
|
||||
if (sysFile.getLevel2Type().equals("Female")) {
|
||||
workspaceNew.setSex("Female");
|
||||
workspaceNew.setMannequinFemaleId(design1.getTemplateId());
|
||||
workspaceNew.setMannequinFemaleType("System");
|
||||
QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Male");
|
||||
if (!StringUtils.isEmpty(sysFile.getLevel3Type())) {
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel3Type, sysFile.getLevel3Type());
|
||||
QueryWrapper<Style> styleQueryWrapper = new QueryWrapper<>();
|
||||
styleQueryWrapper.lambda().eq(Style::getName, sysFile.getLevel3Type());
|
||||
Style style = styleMapper.selectOne(styleQueryWrapper);
|
||||
WorkspaceRelStyle workspaceRelStyle = new WorkspaceRelStyle();
|
||||
workspaceRelStyle.setStyleId(style.getId());
|
||||
workspaceRelStyle.setWorkspaceId(workspaceNew.getId());
|
||||
workspaceRelStyleMapper.insert(workspaceRelStyle);
|
||||
}
|
||||
List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
SysFile anotherOne = anotherList.get(0);
|
||||
workspaceNew.setMannequinMaleId(anotherOne.getId());
|
||||
workspaceNew.setMannequinMaleType("System");
|
||||
}
|
||||
} else {
|
||||
workspaceNew.setSex("Male");
|
||||
workspaceNew.setMannequinMaleId(design1.getTemplateId());
|
||||
workspaceNew.setMannequinMaleType("System");
|
||||
QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Female");
|
||||
if (!StringUtils.isEmpty(sysFile.getLevel3Type())) {
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel3Type, sysFile.getLevel3Type());
|
||||
QueryWrapper<Style> styleQueryWrapper = new QueryWrapper<>();
|
||||
styleQueryWrapper.lambda().eq(Style::getName, sysFile.getLevel3Type());
|
||||
Style style = styleMapper.selectOne(styleQueryWrapper);
|
||||
WorkspaceRelStyle workspaceRelStyle = new WorkspaceRelStyle();
|
||||
workspaceRelStyle.setStyleId(style.getId());
|
||||
workspaceRelStyle.setWorkspaceId(workspaceNew.getId());
|
||||
workspaceRelStyleMapper.insert(workspaceRelStyle);
|
||||
}
|
||||
List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
SysFile anotherOne = anotherList.get(0);
|
||||
workspaceNew.setMannequinFemaleId(anotherOne.getId());
|
||||
workspaceNew.setMannequinFemaleType("System");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Library library = libraryMapper.selectById(design1.getTemplateId());
|
||||
if (library.getLevel2Type().equals("Female")) {
|
||||
workspaceNew.setSex("Female");
|
||||
workspaceNew.setMannequinFemaleId(design1.getTemplateId());
|
||||
workspaceNew.setMannequinFemaleType("Library");
|
||||
QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Male");
|
||||
List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
SysFile anotherOne = anotherList.get(0);
|
||||
workspaceNew.setMannequinMaleId(anotherOne.getId());
|
||||
workspaceNew.setMannequinMaleType("System");
|
||||
}
|
||||
} else {
|
||||
workspaceNew.setSex("Male");
|
||||
workspaceNew.setMannequinMaleId(design1.getTemplateId());
|
||||
workspaceNew.setMannequinMaleType("Library");
|
||||
QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Female");
|
||||
List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
SysFile anotherOne = anotherList.get(0);
|
||||
workspaceNew.setMannequinFemaleId(anotherOne.getId());
|
||||
workspaceNew.setMannequinFemaleType("System");
|
||||
}
|
||||
}
|
||||
}
|
||||
workspaceMapper.updateById(workspaceNew);
|
||||
}
|
||||
}
|
||||
// Long collectionId = portfolio.getCollectionId();
|
||||
// QueryWrapper<Design> getWorkspaceQw = new QueryWrapper<>();
|
||||
// getWorkspaceQw.lambda().eq(Design::getCollectionId, collectionId);
|
||||
// List<Design> designs = designMapper.selectList(getWorkspaceQw);
|
||||
// if (!CollectionUtils.isEmpty(designs)) {
|
||||
// Design design1 = designs.get(0);
|
||||
// Long accountId = authPrincipalVo.getId();
|
||||
// QueryWrapper<Workspace> currentWorkspaceQw = new QueryWrapper<>();
|
||||
// currentWorkspaceQw.lambda().eq(Workspace::getAccountId, accountId);
|
||||
// currentWorkspaceQw.lambda().eq(Workspace::getIsLastIndex, 1);
|
||||
// List<Workspace> workspaces = workspaceMapper.selectList(currentWorkspaceQw);
|
||||
// if (!CollectionUtils.isEmpty(workspaces)) {
|
||||
// Workspace workspace1 = workspaces.get(0);
|
||||
// workspace1.setIsLastIndex(0);
|
||||
// workspaceMapper.updateById(workspace1);
|
||||
// Workspace workspaceNew = new Workspace();
|
||||
// String workspaceName = "workspace of " + accountMapper.selectById(portfolio.getAccountId()).getUserName() + portfolio.getPortfolioName();
|
||||
// QueryWrapper<Workspace> existSameNameQw = new QueryWrapper<>();
|
||||
// existSameNameQw.lambda().eq(Workspace::getWorkSpaceName, workspaceName);
|
||||
// existSameNameQw.lambda().eq(Workspace::getAccountId, authPrincipalVo.getId());
|
||||
// List<Workspace> existSameNameList = workspaceMapper.selectList(existSameNameQw);
|
||||
// if (!CollectionUtils.isEmpty(existSameNameList)) {
|
||||
// workspaceName = workspaceName + "_copy";
|
||||
// }
|
||||
// workspaceNew.setWorkSpaceName(workspaceName);
|
||||
// workspaceNew.setAccountId(accountId);
|
||||
// workspaceNew.setIsDeleted(0);
|
||||
// workspaceNew.setIsLastIndex(1);
|
||||
// workspaceNew.setCreateTime(LocalDateTime.now());
|
||||
// workspaceNew.setSystemDesignerPercentage((design1.getSystemScale().multiply(BigDecimal.valueOf(100)).intValue()));
|
||||
// if (design1.getSingleOverall().equals("overall")) {
|
||||
// workspaceNew.setPosition("Overall");
|
||||
// } else {
|
||||
// workspaceNew.setPosition(design1.getSwitchCategory());
|
||||
// }
|
||||
// workspaceMapper.insert(workspaceNew);
|
||||
// if (design1.getModelType().equals("System")) {
|
||||
// SysFile sysFile = sysFileMapper.selectById(design1.getTemplateId());
|
||||
// if (sysFile.getLevel2Type().equals("Female")) {
|
||||
// workspaceNew.setSex("Female");
|
||||
// workspaceNew.setMannequinFemaleId(design1.getTemplateId());
|
||||
// workspaceNew.setMannequinFemaleType("System");
|
||||
// QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Male");
|
||||
// if (!StringUtils.isEmpty(sysFile.getLevel3Type())) {
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel3Type, sysFile.getLevel3Type());
|
||||
// QueryWrapper<Style> styleQueryWrapper = new QueryWrapper<>();
|
||||
// styleQueryWrapper.lambda().eq(Style::getName, sysFile.getLevel3Type());
|
||||
// Style style = styleMapper.selectOne(styleQueryWrapper);
|
||||
// WorkspaceRelStyle workspaceRelStyle = new WorkspaceRelStyle();
|
||||
// workspaceRelStyle.setStyleId(style.getId());
|
||||
// workspaceRelStyle.setWorkspaceId(workspaceNew.getId());
|
||||
// workspaceRelStyleMapper.insert(workspaceRelStyle);
|
||||
// }
|
||||
// List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
// if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
// SysFile anotherOne = anotherList.get(0);
|
||||
// workspaceNew.setMannequinMaleId(anotherOne.getId());
|
||||
// workspaceNew.setMannequinMaleType("System");
|
||||
// }
|
||||
// } else {
|
||||
// workspaceNew.setSex("Male");
|
||||
// workspaceNew.setMannequinMaleId(design1.getTemplateId());
|
||||
// workspaceNew.setMannequinMaleType("System");
|
||||
// QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Female");
|
||||
// if (!StringUtils.isEmpty(sysFile.getLevel3Type())) {
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel3Type, sysFile.getLevel3Type());
|
||||
// QueryWrapper<Style> styleQueryWrapper = new QueryWrapper<>();
|
||||
// styleQueryWrapper.lambda().eq(Style::getName, sysFile.getLevel3Type());
|
||||
// Style style = styleMapper.selectOne(styleQueryWrapper);
|
||||
// WorkspaceRelStyle workspaceRelStyle = new WorkspaceRelStyle();
|
||||
// workspaceRelStyle.setStyleId(style.getId());
|
||||
// workspaceRelStyle.setWorkspaceId(workspaceNew.getId());
|
||||
// workspaceRelStyleMapper.insert(workspaceRelStyle);
|
||||
// }
|
||||
// List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
// if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
// SysFile anotherOne = anotherList.get(0);
|
||||
// workspaceNew.setMannequinFemaleId(anotherOne.getId());
|
||||
// workspaceNew.setMannequinFemaleType("System");
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// Library library = libraryMapper.selectById(design1.getTemplateId());
|
||||
// if (library.getLevel2Type().equals("Female")) {
|
||||
// workspaceNew.setSex("Female");
|
||||
// workspaceNew.setMannequinFemaleId(design1.getTemplateId());
|
||||
// workspaceNew.setMannequinFemaleType("Library");
|
||||
// QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Male");
|
||||
// List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
// if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
// SysFile anotherOne = anotherList.get(0);
|
||||
// workspaceNew.setMannequinMaleId(anotherOne.getId());
|
||||
// workspaceNew.setMannequinMaleType("System");
|
||||
// }
|
||||
// } else {
|
||||
// workspaceNew.setSex("Male");
|
||||
// workspaceNew.setMannequinMaleId(design1.getTemplateId());
|
||||
// workspaceNew.setMannequinMaleType("Library");
|
||||
// QueryWrapper<SysFile> getAnotherOneQw = new QueryWrapper<>();
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models");
|
||||
// getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Female");
|
||||
// List<SysFile> anotherList = sysFileMapper.selectList(getAnotherOneQw);
|
||||
// if (!CollectionUtils.isEmpty(anotherList)) {
|
||||
// SysFile anotherOne = anotherList.get(0);
|
||||
// workspaceNew.setMannequinFemaleId(anotherOne.getId());
|
||||
// workspaceNew.setMannequinFemaleType("System");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// workspaceMapper.updateById(workspaceNew);
|
||||
// }
|
||||
// }
|
||||
Long workspaceIdOld = workspaceService.getByProjectId(projectIdOld);
|
||||
Workspace workspaceCopy = workspaceMapper.selectById(workspaceIdOld);
|
||||
workspaceCopy.setAccountId(authPrincipalVo.getId());
|
||||
workspaceCopy.setProjectId(project.getId());
|
||||
workspaceCopy.setId(null);
|
||||
workspaceMapper.insert(workspaceCopy);
|
||||
|
||||
return userLikeGroupService.choose(userLikeGroupNew.getId());
|
||||
ProjectDTO projectDTO = new ProjectDTO();
|
||||
projectDTO.setId(project.getId());
|
||||
|
||||
|
||||
return userLikeGroupService.choose(projectDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
package com.ai.da.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.ai.da.common.utils.RedisUtil;
|
||||
import com.ai.da.mapper.primary.BrandRelLibraryMapper;
|
||||
import com.ai.da.mapper.primary.LibraryMapper;
|
||||
import com.ai.da.mapper.primary.ProductImageAttributeMapper;
|
||||
import com.ai.da.mapper.primary.entity.BrandRelLibrary;
|
||||
import com.ai.da.mapper.primary.entity.Library;
|
||||
import com.ai.da.mapper.primary.entity.ProductImageAttribute;
|
||||
import com.ai.da.mapper.secondary.entity.AttributeRecognitionJSON;
|
||||
import com.ai.da.model.dto.ProgressDTO;
|
||||
import com.ai.da.python.PythonService;
|
||||
import com.ai.da.service.ProductImageService;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class ProductImageServiceImpl implements ProductImageService {
|
||||
|
||||
@Autowired
|
||||
private BrandRelLibraryMapper brandRelLibraryMapper;
|
||||
|
||||
@Autowired
|
||||
private LibraryMapper libraryMapper;
|
||||
|
||||
@Autowired
|
||||
private ProductImageAttributeMapper productImageAttributeMapper;
|
||||
|
||||
@Autowired
|
||||
private PythonService pythonService;
|
||||
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@Async
|
||||
@Override
|
||||
public void asyncInitialize(Long brandId) {
|
||||
System.out.println(">>> [asyncInitialize] 当前线程:" + Thread.currentThread().getName());
|
||||
|
||||
String progressKey = String.valueOf(brandId);
|
||||
ProgressDTO progressDTO = new ProgressDTO(0, 0, false);
|
||||
redisUtil.setTaskProgressDTO(progressKey, progressDTO);
|
||||
|
||||
try {
|
||||
List<BrandRelLibrary> brandRelLibraries = brandRelLibraryMapper.selectList(
|
||||
new QueryWrapper<BrandRelLibrary>().lambda().eq(BrandRelLibrary::getBrandId, brandId)
|
||||
);
|
||||
Set<Long> libraryIds = brandRelLibraries.stream().map(BrandRelLibrary::getLibraryId).collect(Collectors.toSet());
|
||||
|
||||
progressDTO.setTotal(libraryIds.size());
|
||||
|
||||
int current = 0;
|
||||
for (Long libraryId : libraryIds) {
|
||||
Library library = libraryMapper.selectById(libraryId);
|
||||
String url = library.getUrl();
|
||||
|
||||
QueryWrapper<ProductImageAttribute> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(ProductImageAttribute::getLibraryId, libraryId);
|
||||
List<ProductImageAttribute> productImageAttributes = productImageAttributeMapper.selectList(qw);
|
||||
if (!CollectionUtil.isNotEmpty(productImageAttributes)) {
|
||||
JSONObject result = pythonService.segProduct(url);
|
||||
JSONArray data = result.getJSONArray("data");
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
JSONObject obj = data.getJSONObject(i);
|
||||
JSONObject attribute = obj.getJSONObject("attribute");
|
||||
AttributeRecognitionJSON attrJSON = attribute.toJavaObject(AttributeRecognitionJSON.class);
|
||||
ProductImageAttribute attr = toAttrDict(attrJSON);
|
||||
attr.setLibraryId(libraryId);
|
||||
productImageAttributeMapper.insert(attr);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新当前进度
|
||||
current++;
|
||||
progressDTO.setCurrent(current);
|
||||
redisUtil.setTaskProgressDTO(progressKey, progressDTO);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
// log.error("初始化失败", e);
|
||||
redisUtil.setTaskProgressDTO(progressKey, new ProgressDTO(0, 0, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// public double getInitializeProgress(Long brandId) {
|
||||
// ProgressDTO dto = redisUtil.getTaskProgressDTO(String.valueOf(brandId));
|
||||
// if (dto.getTotal() == 0 || dto.isError()) return 0.0;
|
||||
// return (dto.getCurrent() * 1.0 / dto.getTotal());
|
||||
// }
|
||||
|
||||
private ProductImageAttribute toAttrDict(AttributeRecognitionJSON attrDictJSON) {
|
||||
ProductImageAttribute attributeRetrieval = new ProductImageAttribute();
|
||||
|
||||
// 处理 imgName
|
||||
// if (CollectionUtil.isNotEmpty(attrDictJSON.getImgName()) && attrDictJSON.getImgName().get(0) != null) {
|
||||
// attributeRetrieval.setImgName(attrDictJSON.getImgName().get(0));
|
||||
// }
|
||||
// 处理 length
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getLength()) && attrDictJSON.getLength().get(0) != null) {
|
||||
attributeRetrieval.setLength(attrDictJSON.getLength().get(0));
|
||||
}
|
||||
// 处理 sleeveLength
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getSleeveLength()) && attrDictJSON.getSleeveLength().get(0) != null) {
|
||||
attributeRetrieval.setSleeveLength(attrDictJSON.getSleeveLength().get(0));
|
||||
}
|
||||
// 处理 sleeveShape
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getSleeveShape()) && attrDictJSON.getSleeveShape().get(0) != null) {
|
||||
attributeRetrieval.setSleeveShape(attrDictJSON.getSleeveShape().get(0));
|
||||
}
|
||||
// 处理 sleeveShoulder
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getSleeveShoulder()) && attrDictJSON.getSleeveShoulder().get(0) != null) {
|
||||
attributeRetrieval.setSleeveShoulder(attrDictJSON.getSleeveShoulder().get(0));
|
||||
}
|
||||
// 处理 neckline
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getNeckline()) && attrDictJSON.getNeckline().get(0) != null) {
|
||||
attributeRetrieval.setNeckline(attrDictJSON.getNeckline().get(0));
|
||||
}
|
||||
// 处理 collar
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getCollar()) && attrDictJSON.getCollar().get(0) != null) {
|
||||
attributeRetrieval.setCollar(attrDictJSON.getCollar().get(0));
|
||||
}
|
||||
// 处理 design
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getDesign()) && attrDictJSON.getDesign().get(0) != null) {
|
||||
attributeRetrieval.setDesign(attrDictJSON.getDesign().get(0));
|
||||
}
|
||||
// 处理 silhouette
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getSilhouette()) && attrDictJSON.getSilhouette().get(0) != null) {
|
||||
attributeRetrieval.setSilhouette(attrDictJSON.getSilhouette().get(0));
|
||||
}
|
||||
// 处理 type
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getType()) && attrDictJSON.getType().get(0) != null) {
|
||||
attributeRetrieval.setType(attrDictJSON.getType().get(0));
|
||||
}
|
||||
// 处理 openingType
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getOpeningType()) && attrDictJSON.getOpeningType().get(0) != null) {
|
||||
attributeRetrieval.setOpeningType(attrDictJSON.getOpeningType().get(0));
|
||||
}
|
||||
// 处理 subtype
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getSubtype()) && attrDictJSON.getSubtype().get(0) != null) {
|
||||
attributeRetrieval.setSubtype(attrDictJSON.getSubtype().get(0));
|
||||
}
|
||||
|
||||
return attributeRetrieval;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,6 +129,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
private ThreeDSimpleMapper threeDSimpleMapper;
|
||||
@Resource
|
||||
private ThreeDModuleMapper threeDModuleMapper;
|
||||
@Resource
|
||||
private ProductImageService productImageService;
|
||||
|
||||
@Override
|
||||
public void deleteUserGroup(Long userGroupId) {
|
||||
@@ -1156,42 +1158,38 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
@Override
|
||||
public Boolean productImageInitialize(ProductImageInitializeDTO productImageInitializeDTO) {
|
||||
|
||||
Long brandId = productImageInitializeDTO.getBrandId();
|
||||
QueryWrapper<BrandRelLibrary> brandRelLibraryQueryWrapper = new QueryWrapper<>();
|
||||
brandRelLibraryQueryWrapper.lambda().eq(BrandRelLibrary::getBrandId, brandId);
|
||||
List<BrandRelLibrary> brandRelLibraries = brandRelLibraryMapper.selectList(brandRelLibraryQueryWrapper);
|
||||
Set<Long> collect = brandRelLibraries.stream().map(BrandRelLibrary::getLibraryId).collect(Collectors.toSet());
|
||||
productImageService.asyncInitialize(productImageInitializeDTO.getBrandId());
|
||||
return true;
|
||||
}
|
||||
|
||||
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
|
||||
accountService.getById(authPrincipalVo.getId());
|
||||
@Override
|
||||
public InitializeProgressVO getInitializeProgress(ProductImageInitializeDTO productImageInitializeDTO) {
|
||||
InitializeProgressVO vo = new InitializeProgressVO();
|
||||
|
||||
for (Long libraryId : collect) {
|
||||
Library library = libraryMapper.selectById(libraryId);
|
||||
String url = library.getUrl();
|
||||
String gender = library.getLevel2Type();
|
||||
// QueryWrapper<>
|
||||
|
||||
// 提取sketch
|
||||
JSONObject jsonObject = pythonService.segProduct(url);
|
||||
JSONArray data = jsonObject.getJSONArray("data");
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
JSONObject jsonObject1 = data.getJSONObject(i);
|
||||
JSONObject attribute = jsonObject1.getJSONObject("attribute");
|
||||
AttributeRecognitionJSON attrDictJSON = attribute.toJavaObject(AttributeRecognitionJSON.class);
|
||||
ProductImageAttribute productImageAttribute = toAttrDict(attrDictJSON);
|
||||
productImageAttribute.setLibraryId(library.getId());
|
||||
productImageAttributeMapper.insert(productImageAttribute);
|
||||
}
|
||||
ProgressDTO dto = redisUtil.getTaskProgressDTO(String.valueOf(productImageInitializeDTO.getBrandId()));
|
||||
|
||||
if (Objects.isNull(dto)) {
|
||||
vo.setAnalyzed(false);
|
||||
return vo;
|
||||
}
|
||||
return null;
|
||||
vo.setAnalyzed(true);
|
||||
if (dto.getTotal() == 0 || dto.isError()) {
|
||||
vo.setPercent(0.0);
|
||||
return vo;
|
||||
}
|
||||
vo.setPercent(dto.getCurrent() * 1.0 / dto.getTotal());
|
||||
return vo;
|
||||
}
|
||||
|
||||
private ProductImageAttribute toAttrDict(AttributeRecognitionJSON attrDictJSON) {
|
||||
ProductImageAttribute attributeRetrieval = new ProductImageAttribute();
|
||||
|
||||
// 处理 imgName
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getImgName()) && attrDictJSON.getImgName().get(0) != null) {
|
||||
attributeRetrieval.setImgName(attrDictJSON.getImgName().get(0));
|
||||
}
|
||||
// if (CollectionUtil.isNotEmpty(attrDictJSON.getImgName()) && attrDictJSON.getImgName().get(0) != null) {
|
||||
// attributeRetrieval.setImgName(attrDictJSON.getImgName().get(0));
|
||||
// }
|
||||
// 处理 length
|
||||
if (CollectionUtil.isNotEmpty(attrDictJSON.getLength()) && attrDictJSON.getLength().get(0) != null) {
|
||||
attributeRetrieval.setLength(attrDictJSON.getLength().get(0));
|
||||
@@ -2145,7 +2143,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downloadZip(Long threeDSimpleId, String sizeType, String size, HttpServletResponse response) throws MinioException, IOException {
|
||||
public String downloadZip(Long threeDSimpleId, String sizeType, String size, HttpServletResponse response) throws MinioException, IOException {
|
||||
QueryWrapper<ThreeDDetail> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(ThreeDDetail::getThreeDSimpleId, threeDSimpleId);
|
||||
qw.lambda().eq(ThreeDDetail::getSizeType, sizeType);
|
||||
@@ -2154,29 +2152,29 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
if (ObjectUtils.isAllFieldNull(threeDDetail)) {
|
||||
throw new BusinessException("3D file is not exist");
|
||||
}
|
||||
InputStream inputStream = minioUtil.download(threeDDetail.getUrl());
|
||||
return minioUtil.getPreSignedUrl(threeDDetail.getUrl(), 24 * 60);
|
||||
|
||||
// 设置响应头
|
||||
response.setContentType("application/zip"); // 确保 ZIP 格式
|
||||
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
||||
String fileName = threeDDetail.getName();
|
||||
if (!fileName.toLowerCase().endsWith(".zip")) {
|
||||
fileName += ".zip";
|
||||
}
|
||||
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString()));
|
||||
|
||||
// 将文件内容写入响应输出流
|
||||
try {
|
||||
byte[] buffer = new byte[8192];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
response.getOutputStream().write(buffer, 0, bytesRead);
|
||||
}
|
||||
inputStream.close();
|
||||
response.getOutputStream().flush();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to download ZIP file", e);
|
||||
}
|
||||
// // 设置响应头
|
||||
// response.setContentType("application/zip"); // 确保 ZIP 格式
|
||||
// response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
||||
// String fileName = threeDDetail.getName();
|
||||
// if (!fileName.toLowerCase().endsWith(".zip")) {
|
||||
// fileName += ".zip";
|
||||
// }
|
||||
// response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString()));
|
||||
//
|
||||
// // 将文件内容写入响应输出流
|
||||
// try {
|
||||
// byte[] buffer = new byte[8192];
|
||||
// int bytesRead;
|
||||
// while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
// response.getOutputStream().write(buffer, 0, bytesRead);
|
||||
// }
|
||||
// inputStream.close();
|
||||
// response.getOutputStream().flush();
|
||||
// } catch (Exception e) {
|
||||
// throw new RuntimeException("Failed to download ZIP file", e);
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -2184,4 +2182,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
projectMapper.deleteById(projectId);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean brandDNADelete(BrandDNADTO brandDNADTO) {
|
||||
brandDNAMapper.deleteById(brandDNADTO.getId());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user