|
@@ -1,5 +1,6 @@
|
|
|
package com.redxun.knowledge.album.service;
|
|
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -11,12 +12,11 @@ import com.redxun.common.base.db.PageHelper;
|
|
|
import com.redxun.common.base.search.QueryFilter;
|
|
|
import com.redxun.common.service.impl.SuperServiceImpl;
|
|
|
import com.redxun.common.tool.IdGenerator;
|
|
|
+import com.redxun.common.tool.StringUtils;
|
|
|
import com.redxun.dto.user.OsUserDto;
|
|
|
+import com.redxun.knowledge.album.entity.consts.AlbumConst;
|
|
|
import com.redxun.knowledge.album.entity.dao.*;
|
|
|
-import com.redxun.knowledge.album.entity.dto.AlbumApprovalNodeDto;
|
|
|
-import com.redxun.knowledge.album.entity.dto.AlbumCatalogueDto;
|
|
|
-import com.redxun.knowledge.album.entity.dto.AlbumInfoDto;
|
|
|
-import com.redxun.knowledge.album.entity.dto.TransferOwnerDto;
|
|
|
+import com.redxun.knowledge.album.entity.dto.*;
|
|
|
import com.redxun.knowledge.album.entity.enums.AlbumInfoEnum;
|
|
|
import com.redxun.knowledge.album.entity.enums.AlbumVersionEnum;
|
|
|
import com.redxun.knowledge.album.entity.vo.*;
|
|
@@ -26,25 +26,26 @@ import com.redxun.knowledge.entity.dao.Knowledge;
|
|
|
import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
|
|
|
import com.redxun.knowledge.service.KnowledgeCategoryServiceImpl;
|
|
|
import com.redxun.knowledge.service.KnowledgeServiceImpl;
|
|
|
+import com.redxun.knowledge.utils.PageListUtils;
|
|
|
import com.sun.xml.bind.v2.TODO;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.io.Serializable;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
-* [业务--专辑基本信息表]业务服务类
|
|
|
-*/
|
|
|
+ * [业务--专辑基本信息表]业务服务类
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, AlbumInfo> implements BaseService<AlbumInfo> {
|
|
|
|
|
@@ -76,10 +77,13 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
private AlbumApproveServiceImpl albumApproveService;
|
|
|
|
|
|
@Autowired
|
|
|
- private KnowledgeServiceImpl knowledgeService;
|
|
|
+ private AlbumCatalogueServiceImpl albumCatalogueService;
|
|
|
|
|
|
@Autowired
|
|
|
- private KnowledgeCategoryServiceImpl knowledgeCategoryService;
|
|
|
+ private AlbumYelpServiceImpl albumYelpService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AlbumYelpApproveServiceImpl albumYelpApproveService;
|
|
|
|
|
|
@Autowired
|
|
|
private UserService userService;
|
|
@@ -94,6 +98,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
|
|
|
/**
|
|
|
* 新增专辑
|
|
|
+ *
|
|
|
* @param albumInfoDto 专辑基本信息&专辑目录&目录下收录知识
|
|
|
* @return
|
|
|
*/
|
|
@@ -120,78 +125,76 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
albumVersion.setSummary(albumInfoDto.getSummary());
|
|
|
albumVersion.setUpdateBy(osUserDto.getUserId());
|
|
|
albumVersionMapper.insert(albumVersion);
|
|
|
- //拉取专辑审核节点表
|
|
|
- List<AlbumApprovalNode> albumApprovalNodeList = albumApprovalNodeService.
|
|
|
- findAll(new QueryWrapper<AlbumApprovalNode>().orderByAsc("IS_FINAL", "CREATE_TIME_"));
|
|
|
- //将版本推送至专辑审核表中(各个节点都推送)
|
|
|
- AtomicInteger sort = new AtomicInteger(1);
|
|
|
- List<AlbumApprove> albumApproveList = albumApprovalNodeList.stream().map(albumApprovalNode -> {
|
|
|
- AlbumApprove albumApprove = new AlbumApprove();
|
|
|
- albumApprove.setPkId(IdGenerator.getIdStr());
|
|
|
- albumApprove.setAlbumId(albumInfo.getPkId());
|
|
|
- albumApprove.setVersionId(albumVersion.getPkId());
|
|
|
- albumApprove.setApproverId(albumApprovalNode.getApproverId());
|
|
|
- albumApprove.setApproverName(albumApprovalNode.getApproverName());
|
|
|
- albumApprove.setSort(sort.getAndIncrement());
|
|
|
- albumApprove.setIsFinal(albumApprovalNode.getIsFinal());
|
|
|
- albumApprove.setUpdateBy(userService.queryLoginUser());
|
|
|
- albumApprove.setName(albumApprovalNode.getName());
|
|
|
- return albumApprove;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- albumApproveService.saveBatch(albumApproveList);
|
|
|
- // 向专辑目录表中添加记录
|
|
|
- if (CollectionUtils.isNotEmpty(albumInfoDto.getCatalogues())){
|
|
|
- List<AlbumCatalogueDto> catalogueDtoList = albumInfoDto.getCatalogues();
|
|
|
- AtomicInteger i = new AtomicInteger(1);
|
|
|
- catalogueDtoList.forEach(catalogueDto -> {
|
|
|
- AlbumCatalogue albumCatalogue = new AlbumCatalogue();
|
|
|
- albumCatalogue.setPkId(IdGenerator.getIdStr());
|
|
|
- albumCatalogue.setAlbumId(albumInfo.getPkId());
|
|
|
- albumCatalogue.setVersionId(albumVersion.getPkId());
|
|
|
- albumCatalogue.setName(catalogueDto.getName());
|
|
|
- albumCatalogue.setSort(i.getAndIncrement());
|
|
|
- albumCatalogue.setUpdateBy(osUserDto.getUserId());
|
|
|
- //向专辑目录知识表中添加记录
|
|
|
- if (CollectionUtils.isNotEmpty(catalogueDto.getContents())){
|
|
|
- List<Long> contentIdList = catalogueDto.getContents();
|
|
|
- contentIdList.forEach(contentId -> {
|
|
|
- AlbumCatalogueKnowledge albumCatalogueKnowledge = new AlbumCatalogueKnowledge();
|
|
|
- albumCatalogueKnowledge.setPkId(IdGenerator.getIdStr());
|
|
|
- albumCatalogueKnowledge.setCatalogueId(albumCatalogue.getPkId());
|
|
|
- albumCatalogueKnowledge.setKnowledgeId(contentId.toString());
|
|
|
- albumCatalogueKnowledge.setUpdateBy(osUserDto.getUserId());
|
|
|
- albumCatalogueKnowledgeMapper.insert(albumCatalogueKnowledge);
|
|
|
- });
|
|
|
- }
|
|
|
- albumCatalogueMapper.insert(albumCatalogue);
|
|
|
- });
|
|
|
+ //生成目录
|
|
|
+ if (CollectionUtils.isNotEmpty(albumInfoDto.getCatalogues())) {
|
|
|
+ createCatalogue(albumInfoDto.getCatalogues(), albumInfo.getPkId(), albumVersion.getPkId());
|
|
|
}
|
|
|
+ //生成最新版审核流程数据
|
|
|
+ createAlbumApprove(albumInfo.getPkId(), albumVersion.getPkId());
|
|
|
+
|
|
|
return albumInfo.getPkId();
|
|
|
}
|
|
|
|
|
|
public IPage query(QueryFilter queryFilter) {
|
|
|
Map<String, Object> params = PageHelper.constructParams(queryFilter);
|
|
|
+ //构建PC端参数
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
//PC端条件过滤
|
|
|
- if (queryFilter.getParams().containsKey("scope")){
|
|
|
+ if (queryFilter.getParams().containsKey("scope")) {
|
|
|
String scope = (String) queryFilter.getParams().get("scope");
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- if (scope.equals("1")){
|
|
|
- //我的专辑
|
|
|
- map.put("ownerId",userService.queryLoginUser());
|
|
|
- queryFilter.setParams(map);
|
|
|
- }else if (scope.equals("2")){
|
|
|
- // TODO: 2023/2/6 查看已发布的专辑和我自己的待审核的专辑
|
|
|
- //已发布的专辑
|
|
|
- map.put("state",2);
|
|
|
- queryFilter.setParams(map);
|
|
|
- }else if (scope.equals("3")){
|
|
|
- // TODO: 2023/2/3 我点评过的专辑
|
|
|
- map.put("yelp",1);
|
|
|
+
|
|
|
+ switch (scope) {
|
|
|
+ case "1":
|
|
|
+ //我的专辑
|
|
|
+ map.put("ownerIds", userService.queryLoginUser());
|
|
|
+ queryFilter.setParams(map);
|
|
|
+ //查询我的专辑
|
|
|
+ IPage page1 = albumInfoMapper.findAllAlbumInfoByOwnerIds(queryFilter.getPage(), queryFilter.getParams(), params);
|
|
|
+ List<AlbumInfo> records = page1.getRecords();
|
|
|
+ List<AlbumInfoVo> albumInfoVoList = pageInfo(records);
|
|
|
+ page1.setRecords(albumInfoVoList);
|
|
|
+ return page1;
|
|
|
+ case "2":
|
|
|
+ //我的专辑
|
|
|
+ QueryWrapper<AlbumInfo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("OWNER_ID",userService.queryLoginUser());
|
|
|
+ queryWrapper.eq("STATE",1);
|
|
|
+ queryWrapper.like(StringUtils.isNotEmpty((String) queryFilter.getParams().get("name")),"NAME",(String) queryFilter.getParams().get("name"));
|
|
|
+ queryWrapper.orderByDesc("CREATE_TIME_");
|
|
|
+ List<AlbumInfo> ownerIdsList = albumInfoMapper.selectList(queryWrapper);
|
|
|
+ //已发布的专辑
|
|
|
+ map.put("versionState", 2);
|
|
|
+ queryFilter.setParams(map);
|
|
|
+ List<AlbumInfo> albumInfoList = albumInfoMapper.findAllAlbumInfoByVersionState(queryFilter.getPage(), queryFilter.getParams(), params);
|
|
|
+ if (albumInfoList != null){
|
|
|
+ ownerIdsList.addAll(albumInfoList);
|
|
|
+ }
|
|
|
+ List<AlbumInfo> collect = ownerIdsList.stream().distinct().collect(Collectors.toList());
|
|
|
+ List<AlbumInfoVo> albumInfoVoListResult = pageInfo(collect);
|
|
|
+ Page page2 = PageListUtils.getPages(queryFilter.getPage().getCurrent(), queryFilter.getPage().getSize(), albumInfoVoListResult);
|
|
|
+ return page2;
|
|
|
+ case "3":
|
|
|
+ // TODO: 2023/2/3 我点评过的专辑
|
|
|
+ map.put("scope", 3);
|
|
|
+ map.put("scope","3");
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
IPage page = albumInfoMapper.findAllAlbumInfo(queryFilter.getPage(), queryFilter.getParams(), params);
|
|
|
- List<AlbumInfo> records = page.getRecords();
|
|
|
- List<AlbumInfoVo> albumInfoVoList = records.parallelStream().map(e -> {
|
|
|
+ List<AlbumInfo> collect = page.getRecords();
|
|
|
+ List<AlbumInfoVo> albumInfoVoList = pageInfo(collect);
|
|
|
+ page.setRecords(albumInfoVoList);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页方法封装
|
|
|
+ * @param collect
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<AlbumInfoVo> pageInfo(List<AlbumInfo> collect){
|
|
|
+ String userId = userService.queryLoginUser();
|
|
|
+ List<AlbumInfoVo> albumInfoVoList = collect.parallelStream().map(e -> {
|
|
|
AlbumInfoVo albumInfoVo = new AlbumInfoVo();
|
|
|
BeanUtils.copyProperties(e, albumInfoVo);
|
|
|
//专辑分类信息
|
|
@@ -205,7 +208,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
selectOne(new LambdaQueryWrapper<AlbumCategory>().eq(AlbumCategory::getPkId, albumCategory.getParent()));
|
|
|
albumInfoVo.setCategoryName(albumCategoryParent.getName() + "|" + albumCategory.getName());
|
|
|
}
|
|
|
- },threadPoolExecutor);
|
|
|
+ }, threadPoolExecutor);
|
|
|
//专辑收录知识量(当前生效版本各个目录中知识数量总和)
|
|
|
CompletableFuture<Void> countKnowledgeCompletableFuture = CompletableFuture.runAsync(() -> {
|
|
|
AlbumVersion albumVersion = albumVersionMapper.
|
|
@@ -218,7 +221,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
selectOne(new LambdaQueryWrapper<AlbumVersion>().
|
|
|
eq(AlbumVersion::getAlbumId, e.getPkId()).
|
|
|
eq(AlbumVersion::getState, 1));
|
|
|
- if (albumVersionFirst == null){
|
|
|
+ if (albumVersionFirst == null) {
|
|
|
AlbumVersion albumVersionFour = albumVersionMapper.
|
|
|
selectOne(new LambdaQueryWrapper<AlbumVersion>().
|
|
|
eq(AlbumVersion::getAlbumId, e.getPkId()).
|
|
@@ -233,14 +236,14 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
Integer countKnowledge = albumInfoMapper.selectCountKnowledge(e.getPkId(), albumVersion.getPkId());
|
|
|
albumInfoVo.setKnowledgeTotal(countKnowledge);
|
|
|
}
|
|
|
- },threadPoolExecutor);
|
|
|
+ }, threadPoolExecutor);
|
|
|
//专辑点评量(当前专辑中通过审核的点评量总和)
|
|
|
CompletableFuture<Void> countYelpCompletableFuture = CompletableFuture.runAsync(() -> {
|
|
|
Integer countYelp = albumYelpMapper.selectCount(new LambdaQueryWrapper<AlbumYelp>().
|
|
|
eq(AlbumYelp::getAlbumId, e.getPkId()).
|
|
|
eq(AlbumYelp::getState, 1));
|
|
|
albumInfoVo.setYelpTotal(countYelp);
|
|
|
- },threadPoolExecutor);
|
|
|
+ }, threadPoolExecutor);
|
|
|
//其他参数
|
|
|
CompletableFuture<Void> anotherCompletableFuture = CompletableFuture.runAsync(() -> {
|
|
|
//专辑负责人姓名
|
|
@@ -250,7 +253,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
//专辑状态名称(0 显示专辑状态,不显示版本状态 1 显示版本状态)
|
|
|
List<AlbumVersion> albumVersions = albumVersionMapper.selectList(new LambdaQueryWrapper<AlbumVersion>().
|
|
|
eq(AlbumVersion::getAlbumId, e.getPkId()).orderByDesc(AlbumVersion::getCreateTime));
|
|
|
- if (e.getState() == 0){
|
|
|
+ if (e.getState() == 0) {
|
|
|
albumInfoVo.setStateName(AlbumInfoEnum.getMessage(e.getState()));
|
|
|
} else {
|
|
|
albumInfoVo.setVersionState(albumVersions.get(0).getState());
|
|
@@ -261,25 +264,27 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
albumInfoVo.setUpdateTime(e.getUpdateTime());
|
|
|
//动作标记(M 管理端)
|
|
|
List<String> actionFlagM = new ArrayList<>();
|
|
|
- List<String> actionFlag = new ArrayList<>();
|
|
|
- if (e.getState() == 0){
|
|
|
+ if (e.getState() == 0) {
|
|
|
actionFlagM.add("delete");
|
|
|
- //actionFlag.add("view");
|
|
|
- } else if (e.getState() == 1 && albumVersions.get(0).getState() == 1){
|
|
|
actionFlagM.add("view");
|
|
|
- //actionFlag.add("view");
|
|
|
- //actionFlag.add("edit");
|
|
|
- } else if (e.getState() == 1 && albumVersions.get(0).getState() == 2){
|
|
|
+ } else if (e.getState() == 1 && albumVersions.get(0).getState() == 1) {
|
|
|
+ actionFlagM.add("view");
|
|
|
+ } else if (e.getState() == 1 && albumVersions.get(0).getState() == 2) {
|
|
|
actionFlagM.add("edit");
|
|
|
- }else if (e.getState() == 1 && albumVersions.get(0).getState() == 4){
|
|
|
+ } else if (e.getState() == 1 && albumVersions.get(0).getState() == 4) {
|
|
|
actionFlagM.add("view");
|
|
|
- //actionFlag.add("delete");
|
|
|
- //actionFlag.add("view");
|
|
|
- //actionFlag.add("edit");
|
|
|
}
|
|
|
- albumInfoVo.setActionFlagM(actionFlagM);
|
|
|
+ //动作标记PC端
|
|
|
+ List<String> actionFlag = new ArrayList<>();
|
|
|
+ if (albumVersions.get(0).getState() == 2 && e.getOwnerId().equals(userId)){
|
|
|
+ actionFlag.add("edit");
|
|
|
+ } else if(albumVersions.get(0).getState() == 4 && e.getOwnerId().equals(userId)){
|
|
|
+ actionFlag.add("delete");
|
|
|
+ actionFlag.add("edit");
|
|
|
+ }
|
|
|
albumInfoVo.setActionFlag(actionFlag);
|
|
|
- },threadPoolExecutor);
|
|
|
+ albumInfoVo.setActionFlagM(actionFlagM);
|
|
|
+ }, threadPoolExecutor);
|
|
|
CompletableFuture.allOf(
|
|
|
categoryCompletableFuture,
|
|
|
countKnowledgeCompletableFuture,
|
|
@@ -287,19 +292,19 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
anotherCompletableFuture).join();
|
|
|
return albumInfoVo;
|
|
|
}).collect(Collectors.toList());
|
|
|
- page.setRecords(albumInfoVoList);
|
|
|
- return page;
|
|
|
+ return albumInfoVoList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 专辑详情
|
|
|
+ *
|
|
|
* @param pkId
|
|
|
* @return
|
|
|
*/
|
|
|
public AlbumInfoDetailVo detail(String pkId) {
|
|
|
AlbumInfoDetailVo albumInfoDetailVo = new AlbumInfoDetailVo();
|
|
|
AlbumInfo albumInfo = albumInfoMapper.selectById(pkId);
|
|
|
- BeanUtils.copyProperties(albumInfo,albumInfoDetailVo);
|
|
|
+ BeanUtils.copyProperties(albumInfo, albumInfoDetailVo);
|
|
|
//专辑负责人姓名
|
|
|
albumInfoDetailVo.setOwner(userService.queryOsUserDto(albumInfo.getOwnerId()).getFullName());
|
|
|
//所属公司名称
|
|
@@ -324,7 +329,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
albumInfoDetailVo.setYelpTotal(countYelp);
|
|
|
//专辑版本信息
|
|
|
QueryWrapper<AlbumVersion> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.eq("ALBUM_ID",pkId);
|
|
|
+ queryWrapper.eq("ALBUM_ID", pkId);
|
|
|
queryWrapper.orderByDesc("CREATE_TIME_");
|
|
|
List<AlbumVersion> albumVersions = albumVersionMapper.selectList(queryWrapper);
|
|
|
//最新版本状态
|
|
@@ -333,7 +338,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
//专辑版本集合
|
|
|
List<AlbumVersionVo> albumVersionVoList = albumVersions.parallelStream().map(albumVersion -> {
|
|
|
AlbumVersionVo albumVersionVo = new AlbumVersionVo();
|
|
|
- BeanUtils.copyProperties(albumVersion,albumVersionVo);
|
|
|
+ BeanUtils.copyProperties(albumVersion, albumVersionVo);
|
|
|
//版本状态名称
|
|
|
albumVersionVo.setStateName(AlbumVersionEnum.getMessage(albumVersion.getState()));
|
|
|
return albumVersionVo;
|
|
@@ -342,11 +347,11 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
//专辑详情动作标记
|
|
|
long count = albumVersions.stream().filter(e -> e.getState() == 2).count();
|
|
|
List<String> actionFlag = new ArrayList<>();
|
|
|
- if (albumInfo.getState() == 1 && count > 0){
|
|
|
+ if (albumInfo.getState() == 1 && count > 0) {
|
|
|
actionFlag.add("edit");
|
|
|
actionFlag.add("transfer");
|
|
|
actionFlag.add("close");
|
|
|
- } else if (albumInfo.getState() == 0 && count > 0){
|
|
|
+ } else if (albumInfo.getState() == 0 && count > 0) {
|
|
|
actionFlag.add("edit");
|
|
|
actionFlag.add("transfer");
|
|
|
actionFlag.add("open");
|
|
@@ -357,6 +362,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
|
|
|
/**
|
|
|
* 专辑版本详情
|
|
|
+ *
|
|
|
* @param pkId
|
|
|
* @return
|
|
|
*/
|
|
@@ -371,42 +377,42 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
eq(AlbumApprove::getVersionId, pkId).
|
|
|
isNull(AlbumApprove::getResult).
|
|
|
orderByAsc(AlbumApprove::getSort));
|
|
|
- if (CollectionUtils.isNotEmpty(albumApproveLists)){
|
|
|
+ if (CollectionUtils.isNotEmpty(albumApproveLists)) {
|
|
|
albumVersionDetailVo.setApprovalId(albumApproveLists.get(0).getPkId());
|
|
|
}
|
|
|
//目录下知识的动作标记
|
|
|
List<String> actionFlag = new ArrayList<>();
|
|
|
- if (albumVersion.getState() == 1){
|
|
|
+ if (albumVersion.getState() == 1) {
|
|
|
actionFlag.add("view");
|
|
|
- } else if (albumVersion.getState() == 2){
|
|
|
+ } else if (albumVersion.getState() == 2) {
|
|
|
actionFlag.add("delete");
|
|
|
actionFlag.add("view");
|
|
|
- } else if (albumVersion.getState() == 3){
|
|
|
+ } else if (albumVersion.getState() == 3) {
|
|
|
actionFlag.add("view");
|
|
|
}
|
|
|
//审批流程节点
|
|
|
QueryWrapper<AlbumApprove> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.eq("ALBUM_ID",albumVersion.getAlbumId());
|
|
|
- queryWrapper.eq("VERSION_ID",pkId);
|
|
|
+ queryWrapper.eq("ALBUM_ID", albumVersion.getAlbumId());
|
|
|
+ queryWrapper.eq("VERSION_ID", pkId);
|
|
|
queryWrapper.orderByAsc("SORT");
|
|
|
List<AlbumApprove> albumApproveList = albumApproveService.findAll(queryWrapper);
|
|
|
List<AlbumApproveVo> albumApproveVoList = new ArrayList<>();
|
|
|
boolean flag = true;
|
|
|
for (int i = 0; i < albumApproveList.size(); i++) {
|
|
|
AlbumApproveVo albumApproveVo = new AlbumApproveVo();
|
|
|
- BeanUtils.copyProperties(albumApproveList.get(i),albumApproveVo);
|
|
|
+ BeanUtils.copyProperties(albumApproveList.get(i), albumApproveVo);
|
|
|
albumApproveVo.setComment(albumApproveList.get(i).getRemark());
|
|
|
- if (albumApproveList.get(i).getResult() == null){
|
|
|
- if (flag){
|
|
|
+ if (albumApproveList.get(i).getResult() == null) {
|
|
|
+ if (flag) {
|
|
|
albumApproveVo.setApprovalStatus("提交审核");
|
|
|
flag = false;
|
|
|
} else {
|
|
|
albumApproveVo.setApprovalStatus("");
|
|
|
}
|
|
|
- } else if (albumApproveList.get(i).getResult() == 0){
|
|
|
+ } else if (albumApproveList.get(i).getResult() == 0) {
|
|
|
albumApproveVo.setApprovalStatus("审核驳回");
|
|
|
flag = false;
|
|
|
- } else if (albumApproveList.get(i).getResult() == 1){
|
|
|
+ } else if (albumApproveList.get(i).getResult() == 1) {
|
|
|
albumApproveVo.setApprovalStatus("审核通过");
|
|
|
}
|
|
|
albumApproveVoList.add(albumApproveVo);
|
|
@@ -418,6 +424,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
|
|
|
/**
|
|
|
* 批量更新审核流程节点数据
|
|
|
+ *
|
|
|
* @param albumApprovalNodeDtoList
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -458,6 +465,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
|
|
|
/**
|
|
|
* 查询专辑审核节点表数据
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
public List<AlbumApproverNodeVo> approveFlowsAlbumApprovalNode() {
|
|
@@ -473,6 +481,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
|
|
|
/**
|
|
|
* 查询点评审核节点表数据
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
public List<AlbumApproverNodeVo> approveFlowsAlbumYelpApprovalNode() {
|
|
@@ -487,6 +496,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
|
|
|
/**
|
|
|
* PC端根据知识专辑ID获取知识专辑详情
|
|
|
+ *
|
|
|
* @param pkId
|
|
|
* @return
|
|
|
*/
|
|
@@ -497,7 +507,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
AlbumInfo albumInfo = this.get(pkId);
|
|
|
//专辑详情(封装数据)
|
|
|
AlbumInfoDetailVo albumInfoDetailVo = detail(pkId);
|
|
|
- BeanUtils.copyProperties(albumInfoDetailVo,albumInfoDetailPcVo);
|
|
|
+ BeanUtils.copyProperties(albumInfoDetailVo, albumInfoDetailPcVo);
|
|
|
albumInfoDetailPcVo.setVersions(new ArrayList<>());
|
|
|
//专辑分类赋值
|
|
|
AlbumCategory albumCategory = albumCategoryMapper.selectById(albumInfo.getCategoryId());
|
|
@@ -512,19 +522,19 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
}
|
|
|
//判断登录人是否是专辑所属人(是 查看审核中的版本(没有审核中的,查看已发布的) 不是 查看已发布的版本)
|
|
|
String userId = userService.queryLoginUser();
|
|
|
- if (albumInfo.getOwnerId().equals(userId)){
|
|
|
+ if (albumInfo.getOwnerId().equals(userId)) {
|
|
|
//查询版本信息(审核中)
|
|
|
AlbumVersion albumVersion1 = albumVersionMapper.
|
|
|
selectOne(new QueryWrapper<AlbumVersion>().eq("ALBUM_ID", pkId).eq("STATE", 1));
|
|
|
//查询版本信息(驳回)
|
|
|
AlbumVersion albumVersion4 = albumVersionMapper.
|
|
|
selectOne(new QueryWrapper<AlbumVersion>().eq("ALBUM_ID", pkId).eq("STATE", 4));
|
|
|
- if (albumVersion1 != null){
|
|
|
+ if (albumVersion1 != null) {
|
|
|
albumInfoDetailPcVo.setSummary(albumVersion1.getSummary());
|
|
|
albumInfoDetailPcVo.setVersionId(albumVersion1.getPkId());
|
|
|
albumInfoDetailPcVo.setState(albumVersion1.getState());
|
|
|
albumInfoDetailPcVo.setStateName(AlbumInfoEnum.getMessage(albumVersion1.getState()));
|
|
|
- } else if (albumVersion4 != null){
|
|
|
+ } else if (albumVersion4 != null) {
|
|
|
albumInfoDetailPcVo.setSummary(albumVersion4.getSummary());
|
|
|
albumInfoDetailPcVo.setVersionId(albumVersion4.getPkId());
|
|
|
albumInfoDetailPcVo.setState(albumVersion4.getState());
|
|
@@ -539,6 +549,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
albumInfoDetailPcVo.setStateName(AlbumInfoEnum.getMessage(albumVersion2.getState()));
|
|
|
}
|
|
|
albumInfoDetailPcVo.setShowStatus(1);
|
|
|
+ albumInfoDetailPcVo.setOwnerId(albumInfo.getOwnerId());
|
|
|
List<String> actionFlag = new ArrayList<>();
|
|
|
actionFlag.add("edit");
|
|
|
albumInfoDetailPcVo.setActionFlag(actionFlag);
|
|
@@ -546,7 +557,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
//不是专辑所属人,查看已发布的版本信息
|
|
|
AlbumVersion albumVersion2 = albumVersionMapper.
|
|
|
selectOne(new QueryWrapper<AlbumVersion>().eq("ALBUM_ID", pkId).eq("STATE", 2));
|
|
|
- if (albumVersion2 == null){
|
|
|
+ if (albumVersion2 == null) {
|
|
|
albumInfoDetailPcVo.setShowStatus(0);
|
|
|
return albumInfoDetailPcVo;
|
|
|
}
|
|
@@ -554,13 +565,16 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
albumInfoDetailPcVo.setVersionId(albumVersion2.getPkId());
|
|
|
albumInfoDetailPcVo.setState(albumVersion2.getState());
|
|
|
albumInfoDetailPcVo.setStateName(AlbumInfoEnum.getMessage(albumVersion2.getState()));
|
|
|
+ albumInfoDetailPcVo.setOwnerId(albumInfo.getOwnerId());
|
|
|
albumInfoDetailPcVo.setShowStatus(0);
|
|
|
+ albumInfoDetailPcVo.setActionFlag(new ArrayList<>());
|
|
|
}
|
|
|
return albumInfoDetailPcVo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 转移专辑负责人
|
|
|
+ *
|
|
|
* @param transferOwnerDto
|
|
|
*/
|
|
|
public void transferOwner(TransferOwnerDto transferOwnerDto) {
|
|
@@ -574,18 +588,167 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
|
|
|
|
|
|
/**
|
|
|
* 关闭专辑&开启专辑
|
|
|
+ *
|
|
|
* @param transferOwnerDto
|
|
|
*/
|
|
|
- public void close(TransferOwnerDto transferOwnerDto) {
|
|
|
+ public synchronized void close(TransferOwnerDto transferOwnerDto) {
|
|
|
String pkId = transferOwnerDto.getPkId();
|
|
|
AlbumInfo albumInfoById = albumInfoMapper.selectById(pkId);
|
|
|
AlbumInfo albumInfo = new AlbumInfo();
|
|
|
albumInfo.setPkId(pkId);
|
|
|
- if (albumInfoById.getState() == 1){
|
|
|
+ if (albumInfoById.getState() == 1) {
|
|
|
albumInfo.setState(0);
|
|
|
} else {
|
|
|
albumInfo.setState(1);
|
|
|
}
|
|
|
albumInfoMapper.updateById(albumInfo);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * PC端编辑知识专辑
|
|
|
+ *
|
|
|
+ * @param albumInfoEditDto
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String edit(AlbumInfoEditDto albumInfoEditDto) {
|
|
|
+ //判断当前登录人是否是专辑负责人
|
|
|
+ String userId = userService.queryLoginUser();
|
|
|
+ String albumId = albumInfoEditDto.getPkId();
|
|
|
+ AlbumInfo albumInfo = albumInfoMapper.selectById(albumId);
|
|
|
+ if (userId.equals(albumInfo.getOwnerId())) {
|
|
|
+ //修改专辑信息表
|
|
|
+ AlbumInfo albumInfoEdit = new AlbumInfo();
|
|
|
+ BeanUtils.copyProperties(albumInfoEditDto, albumInfoEdit);
|
|
|
+ albumInfoMapper.updateById(albumInfoEdit);
|
|
|
+ //如果有驳回版本的,在驳回的版本上进行修改,不新增版本
|
|
|
+ AlbumVersion albumVersion4 = albumVersionMapper.selectOne(new LambdaQueryWrapper<AlbumVersion>().
|
|
|
+ eq(AlbumVersion::getAlbumId, albumId).eq(AlbumVersion::getState, 4));
|
|
|
+ AlbumVersion albumVersion = new AlbumVersion();
|
|
|
+ if (albumVersion4 != null) {
|
|
|
+ //修改版本表数据
|
|
|
+ albumVersion.setPkId(albumVersion4.getPkId());
|
|
|
+ albumVersion.setApplyUserId(userId);
|
|
|
+ albumVersion.setSummary(albumInfoEditDto.getSummary());
|
|
|
+ albumVersion.setState(1);
|
|
|
+ albumVersion.setApprovalState(1);
|
|
|
+ albumVersionMapper.updateById(albumVersion);
|
|
|
+ //生成目录
|
|
|
+ if (CollectionUtils.isNotEmpty(albumInfoEditDto.getCatalogues())) {
|
|
|
+ //清除该版本下原有目录
|
|
|
+ albumCatalogueService.deleteByVersionId(albumVersion4.getPkId());
|
|
|
+ //在该版本下生成新的目录
|
|
|
+ createCatalogue(albumInfoEditDto.getCatalogues(), albumInfo.getPkId(), albumVersion4.getPkId());
|
|
|
+ }
|
|
|
+ //修改审核记录(删除原有流程,生成新的流程)
|
|
|
+ albumApproveService.deleteByVersionId(albumVersion4.getPkId());
|
|
|
+ //生成最新版审核流程数据
|
|
|
+ createAlbumApprove(albumInfo.getPkId(), albumVersion4.getPkId());
|
|
|
+ } else {
|
|
|
+ //新增版本表数据
|
|
|
+ albumVersion.setPkId(IdGenerator.getIdStr());
|
|
|
+ albumVersion.setAlbumId(albumId);
|
|
|
+ albumVersion.setApplyUserId(userId);
|
|
|
+ albumVersion.setSummary(albumInfoEditDto.getSummary());
|
|
|
+ albumVersion.setUpdateBy(userId);
|
|
|
+ albumVersion.setState(1);
|
|
|
+ albumVersion.setApprovalState(1);
|
|
|
+ albumVersionMapper.insert(albumVersion);
|
|
|
+ //在该版本下新增目录
|
|
|
+ if (CollectionUtils.isNotEmpty(albumInfoEditDto.getCatalogues())) {
|
|
|
+ //在该版本下生成新的目录
|
|
|
+ createCatalogue(albumInfoEditDto.getCatalogues(), albumInfo.getPkId(), albumVersion.getPkId());
|
|
|
+ }
|
|
|
+ //生成最新版审核流程数据
|
|
|
+ createAlbumApprove(albumInfo.getPkId(), albumVersion.getPkId());
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ } else {
|
|
|
+ return AlbumConst.EDIT_FAIL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成最新版审核流程数据
|
|
|
+ */
|
|
|
+ private void createAlbumApprove(String albumId, String versionId) {
|
|
|
+ //拉取专辑审核节点表
|
|
|
+ List<AlbumApprovalNode> albumApprovalNodeList = albumApprovalNodeService.
|
|
|
+ findAll(new QueryWrapper<AlbumApprovalNode>().orderByAsc("IS_FINAL", "CREATE_TIME_"));
|
|
|
+ //将版本推送至专辑审核表中(各个节点都推送)
|
|
|
+ AtomicInteger sort = new AtomicInteger(1);
|
|
|
+ List<AlbumApprove> albumApproveList = albumApprovalNodeList.stream().map(albumApprovalNode -> {
|
|
|
+ AlbumApprove albumApprove = new AlbumApprove();
|
|
|
+ albumApprove.setPkId(IdGenerator.getIdStr());
|
|
|
+ albumApprove.setAlbumId(albumId);
|
|
|
+ albumApprove.setVersionId(versionId);
|
|
|
+ albumApprove.setApproverId(albumApprovalNode.getApproverId());
|
|
|
+ albumApprove.setApproverName(albumApprovalNode.getApproverName());
|
|
|
+ albumApprove.setSort(sort.getAndIncrement());
|
|
|
+ albumApprove.setIsFinal(albumApprovalNode.getIsFinal());
|
|
|
+ albumApprove.setUpdateBy(userService.queryLoginUser());
|
|
|
+ albumApprove.setName(albumApprovalNode.getName());
|
|
|
+ return albumApprove;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ //批量添加
|
|
|
+ albumApproveService.saveBatch(albumApproveList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成专辑目录
|
|
|
+ *
|
|
|
+ * @param catalogueDtoList
|
|
|
+ * @param albumId
|
|
|
+ * @param versionId
|
|
|
+ */
|
|
|
+ private void createCatalogue(List<AlbumCatalogueDto> catalogueDtoList, String albumId, String versionId) {
|
|
|
+ // 向专辑目录表中添加记录
|
|
|
+ AtomicInteger i = new AtomicInteger(1);
|
|
|
+ catalogueDtoList.forEach(catalogueDto -> {
|
|
|
+ AlbumCatalogue albumCatalogue = new AlbumCatalogue();
|
|
|
+ albumCatalogue.setPkId(IdGenerator.getIdStr());
|
|
|
+ albumCatalogue.setAlbumId(albumId);
|
|
|
+ albumCatalogue.setVersionId(versionId);
|
|
|
+ albumCatalogue.setName(catalogueDto.getName());
|
|
|
+ albumCatalogue.setSort(i.getAndIncrement());
|
|
|
+ albumCatalogue.setUpdateBy(userService.queryLoginUser());
|
|
|
+ //向专辑目录知识表中添加记录
|
|
|
+ if (CollectionUtils.isNotEmpty(catalogueDto.getContents())) {
|
|
|
+ List<String> contentIdList = catalogueDto.getContents();
|
|
|
+ contentIdList.forEach(contentId -> {
|
|
|
+ AlbumCatalogueKnowledge albumCatalogueKnowledge = new AlbumCatalogueKnowledge();
|
|
|
+ albumCatalogueKnowledge.setPkId(IdGenerator.getIdStr());
|
|
|
+ albumCatalogueKnowledge.setCatalogueId(albumCatalogue.getPkId());
|
|
|
+ albumCatalogueKnowledge.setKnowledgeId(contentId);
|
|
|
+ albumCatalogueKnowledge.setUpdateBy(userService.queryLoginUser());
|
|
|
+ albumCatalogueKnowledgeMapper.insert(albumCatalogueKnowledge);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ albumCatalogueMapper.insert(albumCatalogue);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除知识专辑
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String del(String ids) {
|
|
|
+ List<AlbumVersion> albumVersions = albumVersionMapper.selectList(new LambdaQueryWrapper<AlbumVersion>().eq(AlbumVersion::getAlbumId, ids));
|
|
|
+ //删除专辑信息
|
|
|
+ albumInfoMapper.deleteByIds(ids);
|
|
|
+ //删除专辑版本
|
|
|
+ albumVersionMapper.deleteByAlbumId(ids);
|
|
|
+ albumVersions.forEach(e -> {
|
|
|
+ //删除专辑目录及下面的知识
|
|
|
+ albumCatalogueService.deleteByVersionId(e.getPkId());
|
|
|
+ //删除专辑审核流程
|
|
|
+ albumApproveService.deleteByVersionId(e.getPkId());
|
|
|
+ });
|
|
|
+ //删除专辑的点评信息
|
|
|
+ albumYelpService.deleteByAlbumId(ids);
|
|
|
+ //删除专辑的点评审核流程
|
|
|
+ albumYelpApproveService.deleteByAlbumId(ids);
|
|
|
+ return AlbumConst.DEL_SUCCESS;
|
|
|
+ }
|
|
|
}
|