TASK:workspace、design模块代码;

This commit is contained in:
shahaibo
2023-09-22 16:28:33 +08:00
parent 1870996244
commit 02d658dd0d
14 changed files with 171 additions and 24 deletions

View File

@@ -38,4 +38,6 @@ public interface WorkspaceService extends IService<Workspace> {
Workspace getByIdNew(Long id);
List<ModelsVO> getMannequins();
void systemFileCopy();
}

View File

@@ -5,10 +5,11 @@ import com.ai.da.common.config.FileProperties;
import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.context.UserContext;
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
import com.ai.da.common.enums.DesignTypeEnum;
import com.ai.da.common.enums.SingleOverallEnum;
import com.ai.da.common.enums.SysFileLevel2TypeEnum;
import com.ai.da.common.utils.*;
import com.ai.da.mapper.DesignMapper;
import com.ai.da.mapper.TDesignPythonOutfitMapper;
import com.ai.da.mapper.entity.*;
import com.ai.da.mapper.entity.Collection;
import com.ai.da.model.dto.*;
@@ -34,6 +35,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import java.io.File;
import java.math.BigDecimal;
import java.util.*;
@@ -82,6 +84,10 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
private PanToneService panToneService;
@Resource
private PythonTAllInfoService pythonTAllInfoService;
@Resource
private TDesignPythonOutfitMapper designPythonOutfitMapper;
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.bucketName.results}")
@@ -302,7 +308,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
List<Long> reLationelementIds = reLationelements.stream().map(CollectionElement::getId).collect(Collectors.toList());
handleCollectionElementRelation(collectionId, (null == collectionIdParam) ? false : true, reLationelementIds);
//保存python返回信息
return savePythonDesignItemAndDetail(pythonObjects, designId, collectionId, userInfo, designDTO.getTimeZone(), responseJSONObject);
return savePythonDesignItemAndDetail(pythonObjects, designId, collectionId, userInfo, designDTO.getTimeZone(), responseJSONObject, designDTO.getSingleOverall());
//保存designItem 和detail
// return saveDesignItemAndDetail(pythonObjects,designId,collectionId,userInfo,designDTO.getTimeZone());
}
@@ -406,7 +412,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
private MinioUtil minIoUtil;
private DesignCollectionVO savePythonDesignItemAndDetail(DesignPythonObjects pythonObjects
, Long designId, Long collectionId, AuthPrincipalVo userInfo, String timeZone, JSONObject responseJSONObject) {
, Long designId, Long collectionId, AuthPrincipalVo userInfo, String timeZone, JSONObject responseJSONObject, String singleOverall) {
DesignCollectionVO response = new DesignCollectionVO();
response.setDesignId(designId);
response.setCollectionId(collectionId);
@@ -438,11 +444,11 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
designPythonOutfit.setUserId(userInfo.getId());
designPythonOutfit.setDesignId(designId);
designPythonOutfit.setCollectionId(collectionId);
designPythonOutfit.setDesignUrl(outfit.getString("synthesis_url"));
designPythonOutfitService.save(designPythonOutfit);
JSONArray layers = outfit.getJSONArray("layers");
List<TDesignPythonOutfitDetail> list = new ArrayList<>();
DesignCollectionItemVO designCollectionItemVO = new DesignCollectionItemVO();
for (int i1 = 0; i1 < layers.size(); i1++) {
JSONObject jsonObject = layers.getJSONObject(i1);
TDesignPythonOutfitDetail designPythonOutfitDetail = new TDesignPythonOutfitDetail();
@@ -475,13 +481,15 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
// }
designPythonOutfitDetail.setImageSize(jsonObject.getString("image_size"));
designPythonOutfitDetail.setImageUrl(jsonObject.getString("image_url"));
if (singleOverall.equals(SingleOverallEnum.SINGLE.getRealName())) {
designCollectionItemVO.setDesignItemUrl(designItem.getDesignUrl());
}
designPythonOutfitDetail.setImageCategory(jsonObject.getString("image_category"));
designPythonOutfitDetail.setMaskUrl(jsonObject.getString("mask_url"));
designPythonOutfitDetail.setUserId(userInfo.getId());
list.add(designPythonOutfitDetail);
}
designPythonOutfitDetailService.saveBatch(list);
DesignCollectionItemVO designCollectionItemVO = new DesignCollectionItemVO();
designCollectionItemVO.setDesignItemId(designItemId);
designCollectionItemVO.setDesignItemUrl(designItem.getDesignUrl());
designCollectionItemVO.setDesignOutfitId(designPythonOutfit.getId());
@@ -671,15 +679,28 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
collectionElementService.relationCollection(newElementIds, userLikeGroup.getCollectionId());
//处理关联关系,修复element覆盖得情况
handleCollectionElementRelation(userLikeGroup.getCollectionId(), false, newElementIds);
QueryWrapper<TDesignPythonOutfit> qw = new QueryWrapper<>();
qw.lambda().eq(TDesignPythonOutfit::getDesignItemId, designLikeDTO.getDesignItemId());
List<TDesignPythonOutfit> tDesignPythonOutfits = designPythonOutfitMapper.selectList(qw);
if (CollectionUtils.isEmpty(tDesignPythonOutfits)) {
throw new BusinessException("DesignItemId not found elements for ax elements to like! ["+designLikeDTO.getDesignItemId());
}
UserLike userLike = resolveUserLike(designLikeDTO.getUserGroupId(), designItem.getDesignId(),
designLikeDTO.getDesignItemId(), designItem.getDesignUrl(), designLikeDTO.getTimeZone());
designLikeDTO.getDesignItemId(), tDesignPythonOutfits.get(0).getDesignUrl(), designLikeDTO.getTimeZone());
userLikeService.save(userLike);
groupDetailId = userLike.getId();
} else {
//第一次like
userGroupId = userLikeGroupService.insertUserGroup(userInfo.getId(), designItem.getCollectionId(), designLikeDTO.getTimeZone());
QueryWrapper<TDesignPythonOutfit> qw = new QueryWrapper<>();
qw.lambda().eq(TDesignPythonOutfit::getDesignItemId, designLikeDTO.getDesignItemId());
List<TDesignPythonOutfit> tDesignPythonOutfits = designPythonOutfitMapper.selectList(qw);
if (CollectionUtils.isEmpty(tDesignPythonOutfits)) {
throw new BusinessException("DesignItemId not found elements for ax elements to like! ["+designLikeDTO.getDesignItemId());
}
UserLike userLike = resolveUserLike(userGroupId,
designItem.getDesignId(), designLikeDTO.getDesignItemId(), designItem.getDesignUrl(), designLikeDTO.getTimeZone());
designItem.getDesignId(), designLikeDTO.getDesignItemId(), tDesignPythonOutfits.get(0).getDesignUrl(), designLikeDTO.getTimeZone());
userLikeService.save(userLike);
groupDetailId = userLike.getId();
}

View File

@@ -3,6 +3,7 @@ package com.ai.da.service.impl;
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.MinioUtil;
import com.ai.da.mapper.UserLikeGroupMapper;
import com.ai.da.mapper.entity.Account;
import com.ai.da.mapper.entity.UserLikeGroup;
@@ -40,6 +41,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
@Resource
private UserLikeService userLikeService;
@Resource
private MinioUtil minioUtil;
@Override
public void deleteUserGroup(Long userGroupId) {
UserLikeGroup group = getById(userGroupId);
@@ -96,6 +100,11 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
UserLikeGroup group = getById(userGroupId);
Assert.notNull(group,"History does not exist!");
List<UserLikeVO> userLikeVOS = userLikeService.getGroupDetail(userGroupId);
userLikeVOS.forEach(o -> {
if (o.getUrl().startsWith("aida-")) {
o.setDesignOutfitUrl(minioUtil.getPresignedUrl(o.getUrl(), 5));
}
});
UserLikeCollectionVO userLikeCollection = collectionService.chooseCollection(group.getCollectionId());
return new UserLikeChooseVO(userGroupId,userLikeVOS,userLikeCollection);
}

View File

@@ -41,12 +41,13 @@ public class UserLikeServiceImpl extends ServiceImpl<UserLikeMapper, UserLike> i
if(CollectionUtils.isEmpty(userLikes)){
return Lists.newArrayList();
}
List<Long> designItemIds = userLikes.stream().map(UserLike::getDesignItemId).collect(Collectors.toList());
List<DesignItem> designItems = designItemService.listByIds(designItemIds);
Map<Long,String> idToUrlMap = designItems.stream().collect(Collectors.toMap(DesignItem::getId,DesignItem::getDesignUrl));
return CopyUtil.copyList(userLikes,UserLikeVO.class,(o,d) ->{
d.setUrl(idToUrlMap.get(o.getDesignItemId()));
});
return CopyUtil.copyList(userLikes,UserLikeVO.class);
// List<Long> designItemIds = userLikes.stream().map(UserLike::getDesignItemId).collect(Collectors.toList());
// List<DesignItem> designItems = designItemService.listByIds(designItemIds);
// Map<Long,String> idToUrlMap = designItems.stream().collect(Collectors.toMap(DesignItem::getId,DesignItem::getDesignUrl));
// return CopyUtil.copyList(userLikes,UserLikeVO.class,(o,d) ->{
// d.setUrl(idToUrlMap.get(o.getDesignItemId()));
// });
}
@Override

View File

@@ -6,6 +6,7 @@ import com.ai.da.common.enums.LibraryLevel1TypeEnum;
import com.ai.da.common.enums.SysFileLevel1TypeEnum;
import com.ai.da.common.enums.SysFileLevel2TypeEnum;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.utils.FileUtil;
import com.ai.da.common.utils.MinioUtil;
import com.ai.da.mapper.LibraryMapper;
import com.ai.da.mapper.SysFileMapper;
@@ -26,9 +27,19 @@ 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
@@ -216,6 +227,50 @@ public class WorkspaceServiceImpl extends ServiceImpl<WorkspaceMapper, Workspace
return result;
}
@Override
public void systemFileCopy() {
QueryWrapper<SysFile> sysFileQueryWrapper = new QueryWrapper<>();
List<SysFile> sysFiles = sysFileMapper.selectList(sysFileQueryWrapper);
sysFiles.forEach(o -> {
String url = o.getUrl();
String[] downloads = url.split("/download/");
if (downloads.length == 2) {
String path = "/workspace/home/aida/file/" + downloads[1];
File file = FileUtil.getFile("");
if (file != null) {
String uploadMinioPath = o.getLevel1Type().toLowerCase() + "/" + o.getLevel2Type().toLowerCase() + "/" + file.getName();
String bucketName = "aida-sys-image";
FileItem a = getMultipartFile(file, "A");
MultipartFile multipartFile = new CommonsMultipartFile(a);
minioUtil.upload(bucketName, uploadMinioPath, multipartFile);
}
}
});
}
private FileItem getMultipartFile(File file, String fieldName){
// 使用 DiskFileItemFactory 创建一个 FileItemFactory
FileItemFactory factory = new DiskFileItemFactory(16, null);
// 使用 FileItemFactory 创建一个 FileItem 对象
FileItem item = factory.createItem(fieldName, "text/plain", true, file.getName());
byte[] buffer = new byte[8192];
int bytesRead;
try (FileInputStream fis = new FileInputStream(file);
OutputStream os = item.getOutputStream()) {
// 从文件中读取数据并写入 FileItem
while ((bytesRead = fis.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
private List<BizJson> getEnumValues(Class clazz) {
List<BizJson> kvs = new ArrayList<BizJson>();
IEnumDisplay[] items = (IEnumDisplay[]) clazz.getEnumConstants();