DocInfoServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package com.doc.biz.service.impl;
  2. import com.doc.biz.domain.DocFavorite;
  3. import com.doc.biz.domain.DocInfo;
  4. import com.doc.biz.mapper.DocInfoMapper;
  5. import com.doc.biz.service.IDocFavoriteService;
  6. import com.doc.biz.service.IDocInfoService;
  7. import com.doc.biz.service.IDocSpaceService;
  8. import com.doc.biz.service.IElasticSearchService;
  9. import com.doc.common.utils.DateUtils;
  10. import com.doc.common.utils.SecurityUtils;
  11. import com.doc.common.utils.StringUtils;
  12. import org.springframework.stereotype.Service;
  13. import javax.annotation.Resource;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. /**
  17. * 文件基本信息表Service业务层处理
  18. *
  19. * @author wukai
  20. * @date 2023-08-15
  21. */
  22. @Service
  23. public class DocInfoServiceImpl implements IDocInfoService {
  24. @Resource
  25. private DocInfoMapper docInfoMapper;
  26. @Resource
  27. private IElasticSearchService elasticSearchService;
  28. @Resource
  29. private IDocSpaceService spaceService;
  30. @Resource
  31. private IDocFavoriteService favoriteService;
  32. /**
  33. * 查询文件基本信息表
  34. *
  35. * @param docId 文件基本信息表主键
  36. * @return 文件基本信息表
  37. */
  38. @Override
  39. public DocInfo selectDocInfoByDocId(Long docId) {
  40. return docInfoMapper.selectDocInfoByDocId(docId);
  41. }
  42. /**
  43. * 通过fileID查询文件基本信息
  44. *
  45. * @param fileId mongo文件ID
  46. */
  47. @Override
  48. public DocInfo selectDocInfoByFileId(String fileId) {
  49. return docInfoMapper.selectDocInfoByFileId(fileId);
  50. }
  51. /**
  52. * 查询文件基本信息表列表
  53. *
  54. * @param docInfo 文件基本信息表
  55. * @return 文件基本信息表
  56. */
  57. @Override
  58. public List<DocInfo> selectDocInfoList(DocInfo docInfo) {
  59. List<DocInfo> list = docInfoMapper.selectDocInfoList(docInfo);
  60. List<Long> favorites = new ArrayList<>();
  61. DocFavorite favorite = new DocFavorite();
  62. favorite.setOwner(SecurityUtils.getUserId());
  63. favorite.setIsFolder("N");
  64. favoriteService.selectDocFavoriteList(favorite).forEach(f -> {
  65. favorites.add(f.getRelaId());
  66. });
  67. list.forEach(i -> {
  68. if (favorites.contains(i.getDocId())) {
  69. i.setIsFavorite("Y");
  70. } else {
  71. i.setIsFavorite("N");
  72. }
  73. });
  74. return list;
  75. }
  76. /**
  77. * 新增文件基本信息表
  78. *
  79. * @param docInfo 文件基本信息表
  80. * @return 结果
  81. */
  82. @Override
  83. public int insertDocInfo(DocInfo docInfo) {
  84. docInfo.setCreateTime(DateUtils.getNowDate());
  85. checkDuplicateNames(docInfo);
  86. int i = docInfoMapper.insertDocInfo(docInfo);
  87. elasticSearchService.save(docInfo);
  88. //改变空间容量
  89. spaceService.updateUsedCap(docInfo.getSpaceId());
  90. return i;
  91. }
  92. /**
  93. * 检查重名
  94. *
  95. * @param docInfo 文件信息
  96. */
  97. private void checkDuplicateNames(DocInfo docInfo) {
  98. DocInfo query = new DocInfo();
  99. query.setDirId(docInfo.getDirId());
  100. query.setFileName(docInfo.getFileName());
  101. List list = selectDocInfoList(query);
  102. if (list.size() > 0) {
  103. String fileName = docInfo.getFileName();
  104. fileName = fileName + "-" + DateUtils.dateTimeNow();
  105. docInfo.setFileName(fileName);
  106. }
  107. }
  108. /**
  109. * 修改文件基本信息表
  110. *
  111. * @param docInfo 文件基本信息表
  112. * @return 结果
  113. */
  114. @Override
  115. public int updateDocInfo(DocInfo docInfo) {
  116. checkDuplicateNames(docInfo);
  117. docInfo.setUpdateTime(DateUtils.getNowDate());
  118. int i = docInfoMapper.updateDocInfo(docInfo);
  119. if (StringUtils.isNotEmpty(docInfo.getFileId())) {
  120. elasticSearchService.save(docInfo);
  121. }
  122. //改变空间容量
  123. spaceService.updateUsedCap(docInfo.getSpaceId());
  124. return i;
  125. }
  126. /**
  127. * 批量删除文件基本信息表
  128. *
  129. * @param docIds 需要删除的文件基本信息表主键
  130. * @return 结果
  131. */
  132. @Override
  133. public int deleteDocInfoByDocIds(Long[] docIds) {
  134. List<Long> spaceIds = new ArrayList<>();
  135. for (Long docId : docIds) {
  136. DocInfo docInfo = selectDocInfoByDocId(docId);
  137. spaceIds.add(docInfo.getSpaceId());
  138. }
  139. int i = docInfoMapper.deleteDocInfoByDocIds(docIds);
  140. //改变空间容量
  141. for (Long spaceId : spaceIds) {
  142. spaceService.updateUsedCap(spaceId);
  143. }
  144. return i;
  145. }
  146. /**
  147. * 删除文件基本信息表信息
  148. *
  149. * @param docId 文件基本信息表主键
  150. * @return 结果
  151. */
  152. @Override
  153. public int deleteDocInfoByDocId(Long docId) {
  154. DocInfo docInfo = selectDocInfoByDocId(docId);
  155. int i = docInfoMapper.deleteDocInfoByDocId(docId);
  156. //改变空间容量
  157. spaceService.updateUsedCap(docInfo.getSpaceId());
  158. return i;
  159. }
  160. }