DocDirServiceImpl.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.doc.biz.service.impl;
  2. import com.doc.biz.domain.DocDir;
  3. import com.doc.biz.domain.DocFavorite;
  4. import com.doc.biz.domain.DocSpace;
  5. import com.doc.biz.mapper.DocDirMapper;
  6. import com.doc.biz.service.IDocDirService;
  7. import com.doc.biz.service.IDocFavoriteService;
  8. import com.doc.biz.service.IDocSpaceService;
  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.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. /**
  19. * 文档目录管理Service业务层处理
  20. *
  21. * @author wukai
  22. * @date 2023-08-15
  23. */
  24. @Service
  25. public class DocDirServiceImpl implements IDocDirService {
  26. @Resource
  27. private DocDirMapper docDirMapper;
  28. @Resource
  29. private IDocSpaceService docSpaceService;
  30. @Resource
  31. private IDocFavoriteService favoriteService;
  32. /**
  33. * 查询文档目录管理
  34. *
  35. * @param dirId 文档目录管理主键
  36. * @return 文档目录管理
  37. */
  38. @Override
  39. public DocDir selectDocDirByDirId(Long dirId) {
  40. return docDirMapper.selectDocDirByDirId(dirId);
  41. }
  42. /**
  43. * 验证访问码
  44. *
  45. * @param dirId 文档目录管理主键
  46. * @param accessCode SM3加密之后的访问码
  47. * @return 文档目录管理
  48. */
  49. @Override
  50. public boolean matchesCode(Long dirId, String accessCode) {
  51. DocDir dir = docDirMapper.selectById(dirId);
  52. return SecurityUtils.matchesPassword(accessCode, dir.getAccessCode());
  53. }
  54. /**
  55. * 查询文档目录管理列表
  56. *
  57. * @param docDir 文档目录管理
  58. * @return 文档目录管理
  59. */
  60. @Override
  61. public List<DocDir> selectDocDirList(DocDir docDir) {
  62. List<DocDir> list = docDirMapper.selectDocDirList(docDir);
  63. DocFavorite favorite = new DocFavorite();
  64. favorite.setOwner(SecurityUtils.getUserId());
  65. favorite.setIsFolder("Y");
  66. List<Long> favorites = new ArrayList<>();
  67. favoriteService.selectDocFavoriteList(favorite).forEach(f -> {
  68. favorites.add(f.getRelaId());
  69. });
  70. list.forEach(d -> {
  71. if (favorites.contains(d.getDirId())) {
  72. d.setIsFavorite("Y");
  73. } else {
  74. d.setIsFavorite("N");
  75. }
  76. });
  77. return list;
  78. }
  79. /**
  80. * 新增文档目录管理
  81. *
  82. * @param docDir 文档目录管理
  83. * @return 结果
  84. */
  85. @Override
  86. public int insertDocDir(DocDir docDir) {
  87. docDir.setCreateTime(DateUtils.getNowDate());
  88. DocDir query = new DocDir();
  89. query.setParentId(docDir.getParentId());
  90. query.setSearchValue(docDir.getDirName());
  91. List list = selectDocDirList(query);
  92. if (list.size() > 0) {
  93. String dirName = docDir.getDirName();
  94. dirName = DateUtils.dateTimeNow() + "-" + dirName;
  95. docDir.setDirName(dirName);
  96. }
  97. //如果设置了访问码,则需要加密存储
  98. if (StringUtils.isNotEmpty(docDir.getAccessCode())) {
  99. String pass = SecurityUtils.encryptPassword(docDir.getAccessCode());
  100. docDir.setAccessCode(pass);
  101. }
  102. return docDirMapper.insertDocDir(docDir);
  103. }
  104. /**
  105. * 修改文档目录管理
  106. *
  107. * @param docDir 文档目录管理
  108. * @return 结果
  109. */
  110. @Override
  111. public int updateDocDir(DocDir docDir) {
  112. docDir.setUpdateTime(DateUtils.getNowDate());
  113. return docDirMapper.updateDocDir(docDir);
  114. }
  115. /**
  116. * 批量删除文档目录管理
  117. *
  118. * @param dirIds 需要删除的文档目录管理主键
  119. * @return 结果
  120. */
  121. @Override
  122. public int deleteDocDirByDirIds(Long[] dirIds) {
  123. return docDirMapper.deleteDocDirByDirIds(dirIds);
  124. }
  125. /**
  126. * 删除文档目录管理信息
  127. *
  128. * @param dirId 文档目录管理主键
  129. * @return 结果
  130. */
  131. @Override
  132. public int deleteDocDirByDirId(Long dirId) {
  133. return docDirMapper.deleteDocDirByDirId(dirId);
  134. }
  135. /**
  136. * 初始化顶层目录
  137. *
  138. * @param space 空间信息
  139. */
  140. @Override
  141. public void initTopDir(DocSpace space) {
  142. //初始化顶层目录
  143. DocDir dir = new DocDir();
  144. dir.setSpaceId(space.getSpaceId());
  145. dir.setDirName(space.getSpaceName());
  146. dir.setParentId(0L);
  147. List<DocDir> dirList = selectDocDirList(dir);
  148. if (dirList.size() > 0) {
  149. //如果有记录,则更新顶层目录
  150. dir.setDirId(dirList.get(0).getDirId());
  151. updateDocDir(dir);
  152. } else {
  153. //如果没有,则插入
  154. insertDocDir(dir);
  155. }
  156. }
  157. /**
  158. * 查询当前用户下所有有权限的目录
  159. *
  160. * @param userId 用户ID
  161. * @return 结果集
  162. */
  163. @Override
  164. public Map<String, Object> selectDirByUser(Long userId) {
  165. Map<String, Object> result = new HashMap<>(4);
  166. List<DocSpace> spaceList = docSpaceService.getSpaceByUser(userId);
  167. result.put("space", spaceList);
  168. List<Long> spaceIds = new ArrayList<>();
  169. spaceList.forEach(space -> {
  170. spaceIds.add(space.getSpaceId());
  171. });
  172. result.put("dir", docDirMapper.selectDirByUser(spaceIds, userId));
  173. return result;
  174. }
  175. /**
  176. * 根据权限控制查询目录列表
  177. *
  178. * @param docDir 对象
  179. * @return 结果
  180. */
  181. @Override
  182. public List<DocDir> selectDocDirList4type(DocDir docDir) {
  183. return null;
  184. }
  185. }