update the code until 25 May 2023
This commit is contained in:
LiaoFJ
2023-05-25 14:58:38 +08:00
parent efb2a67b4c
commit 57009998a0
58 changed files with 273 additions and 17 deletions

View File

@@ -97,6 +97,7 @@ public interface CollectionElementService extends IService<CollectionElement> {
*/
List<CollectionElementVO> saveColorBoard(List<CollectionColorDTO> colorBoards, Long collectionId, String timeZone);
/**
* 根据collection查询
*
@@ -105,6 +106,13 @@ public interface CollectionElementService extends IService<CollectionElement> {
*/
List<CollectionElement> getByCollectionId(Long collectionId);
List<CollectionElement> getByOnlyCollectionId(Long collectionId);
DesignLibraryModelPointVO calculateTemplatePoint(LibraryModelPoint modelPoint, Integer high, Integer width, String templateUrl);
/**
* 刷新历史数据
*/
void refreshHistoryData() ;
}

View File

@@ -0,0 +1,20 @@
package com.ai.da.service;
import com.ai.da.mapper.entity.TCollectionElementRelation;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* collection和element的关联表 服务类
* </p>
*
* @author yanglei
* @since 2023-05-07
*/
public interface TCollectionElementRelationService extends IService<TCollectionElementRelation> {
void deleteByCollectionId(Long collectionId);
List<Long> getByCollectionId(Long collectionId);
}

View File

@@ -18,6 +18,7 @@ import com.ai.da.model.vo.AccountPreLoginVO;
import com.ai.da.model.vo.AuthPrincipalVo;
import com.ai.da.service.AccountLoginLogService;
import com.ai.da.service.AccountService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,6 +62,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
@Override
public AccountPreLoginVO preLogin(AccountPreLoginDTO accountDTO) {
log.info("aida预先登入accountDTO###{}", JSON.toJSONString(accountDTO));
Account account = getOneByUserName(accountDTO.getUserName());
Assert.isTrue(Objects.nonNull(account),"User does not exist!");
//用户有效期校验
@@ -77,9 +79,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
@Transactional
@Override
public AccountLoginVO login(AccountLoginDTO accountLoginDTO, HttpServletRequest request) {
Account accountExist = getOneByUserId(accountLoginDTO.getUserId());
log.info("aida确认登入###accountLoginDTO###{}", JSON.toJSONString(accountLoginDTO));
Account accountExist = getOneByEmail(accountLoginDTO.getEmail().trim());
Assert.notNull(accountExist,"User does not exist!");
Assert.isTrue(accountLoginDTO.getEmail().equals(accountExist.getUserEmail()),"Email not registered!");
LoginTypeEnum accountType = LoginTypeEnum.of(accountLoginDTO.getLoginType());
if (Objects.isNull(accountType)|| accountType.equals(LoginTypeEnum.PASSWORD)) {
@@ -101,7 +103,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
case EMAIL:
Assert.isTrue(StringUtils.isNotBlank(accountLoginDTO.getEmail()), "Please input a email !");
Assert.isTrue(StringUtils.isNotBlank(accountLoginDTO.getEmailVerifyCode()), "Please input the email verification code !");
account = getOneByEmail(accountLoginDTO.getEmail());
account = getOneByEmail(accountLoginDTO.getEmail().trim());
if (Objects.isNull(account)) {
throw new BusinessException("Email not registered!");
}

View File

@@ -5,25 +5,23 @@ 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.*;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.utils.CopyUtil;
import com.ai.da.common.utils.DateUtil;
import com.ai.da.common.utils.FileUtil;
import com.ai.da.common.utils.MD5Utils;
import com.ai.da.mapper.CollectionElementMapper;
import com.ai.da.mapper.entity.*;
import com.ai.da.mapper.entity.Collection;
import com.ai.da.mapper.entity.CollectionElement;
import com.ai.da.mapper.entity.Library;
import com.ai.da.mapper.entity.LibraryModelPoint;
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.*;
import com.ai.da.python.PythonService;
import com.ai.da.python.vo.DesignPythonItem;
import com.ai.da.service.CollectionElementService;
import com.ai.da.service.LibraryModelPointService;
import com.ai.da.service.LibraryService;
import com.ai.da.service.PanToneService;
import com.ai.da.service.*;
import com.alibaba.fastjson.JSON;
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 com.google.common.collect.Lists;
import javafx.scene.chart.ValueAxis;
@@ -32,6 +30,7 @@ import org.bouncycastle.LICENSE;
import org.bouncycastle.cms.CMSAuthenticatedGenerator;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.reactive.AbstractReactiveTransactionManager;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@@ -65,6 +64,8 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
private LibraryService libraryService;
@Resource
private LibraryModelPointService libraryModelPointService;
@Resource
private TCollectionElementRelationService tCollectionElementRelationService;
@Transactional
@Override
@@ -477,6 +478,36 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
}
return CopyUtil.copyList(colorElements, CollectionElementVO.class);
}
@Override
public void refreshHistoryData() {
//幂等
if(!CollectionUtils.isEmpty(tCollectionElementRelationService.getByCollectionId(1083L))){
return;
}
// 分页数据
QueryWrapper<CollectionElement> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("id");
PageQueryBaseVo pageQuery = new PageQueryBaseVo();
pageQuery.setPage(1);
pageQuery.setSize(200);
while(true){
IPage<CollectionElement> page = getBaseMapper().selectPage(
new Page<>(pageQuery.getPage(), pageQuery.getSize()), queryWrapper);
List<CollectionElement> list = page.getRecords();
if(CollectionUtils.isEmpty(list)){
break;
}
//保存
List<TCollectionElementRelation> relations = list.stream().map(element->
TCollectionElementRelation.builder().elementId(element.getId())
.collectionId(element.getCollectionId()).createDate(new Date()).build())
.collect(Collectors.toList());
tCollectionElementRelationService.saveBatch(relations);
pageQuery.setPage(pageQuery.getPage()+1);
log.info("refreshHistoryData###process###page###"+pageQuery.getPage());
}
}
private List<CollectionElement> resolveColorData(List<CollectionColorDTO> colorBoards, AuthPrincipalVo userInfo, Long collectionId, String timeZone) {
List<CollectionElement> elements = Lists.newArrayList();
@@ -505,6 +536,16 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
@Override
public List<CollectionElement> getByCollectionId(Long collectionId) {
List<Long> elementIds = tCollectionElementRelationService.getByCollectionId(collectionId);
if (CollectionUtils.isEmpty(elementIds)){
return null;
}
QueryWrapper<CollectionElement> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id", elementIds);
return collectionElementMapper.selectList(queryWrapper);
}
@Override
public List<CollectionElement> getByOnlyCollectionId(Long collectionId) {
QueryWrapper<CollectionElement> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("collection_id", collectionId);
return collectionElementMapper.selectList(queryWrapper);

View File

@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -118,7 +119,7 @@ public class CollectionServiceImpl extends ServiceImpl<CollectionMapper, Collect
}else {
String[] idName = name.split("_");
if (idName.length >1){
d.setId(Integer.valueOf(idName[0]));
d.setId(StringUtil.isNullOrEmpty(idName[0]) ? null : Integer.valueOf(idName[0]));
d.setName(idName[1]);
d.setTcx(idName[2]);
}

View File

@@ -72,6 +72,8 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
private UserLikeService userLikeService;
@Resource
private SysFileService sysFileService;
@Resource
private TCollectionElementRelationService tCollectionElementRelationService;
// @Transactional
@Override
@@ -167,7 +169,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
//library转化为collection(生成)
saveCollectionElemntsByLibrarys(elementVO,collectionId);
//保存颜色版
collectionElementService.saveColorBoard(designDTO.getColorBoards(),collectionId,designDTO.getTimeZone());
List<CollectionElementVO> colorElementList = collectionElementService.saveColorBoard(designDTO.getColorBoards(),collectionId,designDTO.getTimeZone());
//保存design
Long designId = saveOne(designDTO,collectionId,userInfo.getId());
//计算library
@@ -181,9 +183,30 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
pythonService.design(pythonObjects);
//生成library
generateLibrary(elementVO,designDTO.getTimeZone());
//处理关联关系,修复element覆盖得情况
List<CollectionElement> reLationelements =collectionElementService.getByOnlyCollectionId(collectionId);
List<Long> reLationelementIds = reLationelements.stream().map(CollectionElement::getId).collect(Collectors.toList());
handleCollectionElementRelation(collectionId,(null == collectionIdParam) ? false :true,reLationelementIds);
//保存designItem 和detail
return saveDesignItemAndDetail(pythonObjects,designId,collectionId,userInfo,designDTO.getTimeZone());
}
private void handleCollectionElementRelation(Long collectionId ,Boolean isEdit,List<Long> elementIds ){
if (CollectionUtils.isEmpty(elementIds) || collectionId == null){
return;
}
if(isEdit){
//删除
tCollectionElementRelationService.deleteByCollectionId(collectionId);
}
//新增
tCollectionElementRelationService.saveBatch(elementIds.stream().map(elementId ->
TCollectionElementRelation.builder()
.collectionId(collectionId)
.elementId(elementId)
.createDate(new Date())
.build()
).collect(Collectors.toList()));
}
private void generateLibrary(ValidateElementVO elementVO,String timeZone){
List<CollectionElement> elements = Lists.newArrayList();
if(!CollectionUtils.isEmpty(elementVO.getMoodBoardElements())){
@@ -382,6 +405,8 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
List<Long> newElementIds = validateMergeElement(oldElements,designItemDetails);
//合并,关联新的element到collection
collectionElementService.relationCollection(newElementIds,userLikeGroup.getCollectionId());
//处理关联关系,修复element覆盖得情况
handleCollectionElementRelation(userLikeGroup.getCollectionId(),false,newElementIds);
UserLike userLike = resolveUserLike(designLikeDTO.getUserGroupId(), designItem.getDesignId(),
designLikeDTO.getDesignItemId(),designItem.getDesignUrl(),designLikeDTO.getTimeZone());
userLikeService.save(userLike);
@@ -398,6 +423,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
designItemService.updateLikeStatus(designLikeDTO.getDesignItemId(),(byte)1);
return new DesignLikeVO(userGroupId,groupDetailId);
}
private List<Long> validateMergeElement(List<CollectionElement> oldElements,List<DesignItemDetail> designItemDetails){
List<DesignItemDetail> hasCollections = designItemDetails.stream()
.filter(f->Objects.nonNull(f.getCollectionElementId()))

View File

@@ -0,0 +1,44 @@
package com.ai.da.service.impl;
import com.ai.da.mapper.TCollectionElementRelationMapper;
import com.ai.da.mapper.UserLikeMapper;
import com.ai.da.mapper.entity.TCollectionElementRelation;
import com.ai.da.mapper.entity.UserLike;
import com.ai.da.service.TCollectionElementRelationService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
* collection和element的关联表 服务实现类
* </p>
*
* @author yanglei
* @since 2023-05-07
*/
@Service
public class TCollectionElementRelationServiceImpl extends ServiceImpl<TCollectionElementRelationMapper, TCollectionElementRelation> implements TCollectionElementRelationService {
@Resource
private TCollectionElementRelationMapper tCollectionElementRelationMapper;
public void deleteByCollectionId(Long collectionId) {
QueryWrapper<TCollectionElementRelation> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("collection_id", collectionId);
tCollectionElementRelationMapper.delete(queryWrapper);
}
public List<Long> getByCollectionId(Long collectionId) {
QueryWrapper<TCollectionElementRelation> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("collection_id", collectionId);
List<TCollectionElementRelation> tCollectionElementRelations = tCollectionElementRelationMapper.selectList(queryWrapper);
return CollectionUtils.isEmpty(tCollectionElementRelations) ? null :
tCollectionElementRelations.stream().map(TCollectionElementRelation::getElementId).collect(Collectors.toList());
}
}