123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package com.doc.biz.service.impl;
- import com.doc.biz.domain.DocDir;
- import com.doc.biz.domain.DocFavorite;
- import com.doc.biz.domain.DocSpace;
- import com.doc.biz.mapper.DocDirMapper;
- import com.doc.biz.service.IDocDirService;
- import com.doc.biz.service.IDocFavoriteService;
- import com.doc.biz.service.IDocSpaceService;
- import com.doc.common.utils.DateUtils;
- import com.doc.common.utils.SecurityUtils;
- import com.doc.common.utils.StringUtils;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 文档目录管理Service业务层处理
- *
- * @author wukai
- * @date 2023-08-15
- */
- @Service
- public class DocDirServiceImpl implements IDocDirService {
- @Resource
- private DocDirMapper docDirMapper;
- @Resource
- private IDocSpaceService docSpaceService;
- @Resource
- private IDocFavoriteService favoriteService;
- /**
- * 查询文档目录管理
- *
- * @param dirId 文档目录管理主键
- * @return 文档目录管理
- */
- @Override
- public DocDir selectDocDirByDirId(Long dirId) {
- return docDirMapper.selectDocDirByDirId(dirId);
- }
- /**
- * 验证访问码
- *
- * @param dirId 文档目录管理主键
- * @param accessCode SM3加密之后的访问码
- * @return 文档目录管理
- */
- @Override
- public boolean matchesCode(Long dirId, String accessCode) {
- DocDir dir = docDirMapper.selectById(dirId);
- return SecurityUtils.matchesPassword(accessCode, dir.getAccessCode());
- }
- /**
- * 查询文档目录管理列表
- *
- * @param docDir 文档目录管理
- * @return 文档目录管理
- */
- @Override
- public List<DocDir> selectDocDirList(DocDir docDir) {
- List<DocDir> list = docDirMapper.selectDocDirList(docDir);
- DocFavorite favorite = new DocFavorite();
- favorite.setOwner(SecurityUtils.getUserId());
- favorite.setIsFolder("Y");
- List<Long> favorites = new ArrayList<>();
- favoriteService.selectDocFavoriteList(favorite).forEach(f -> {
- favorites.add(f.getRelaId());
- });
- list.forEach(d -> {
- if (favorites.contains(d.getDirId())) {
- d.setIsFavorite("Y");
- } else {
- d.setIsFavorite("N");
- }
- });
- return list;
- }
- /**
- * 新增文档目录管理
- *
- * @param docDir 文档目录管理
- * @return 结果
- */
- @Override
- public int insertDocDir(DocDir docDir) {
- docDir.setCreateTime(DateUtils.getNowDate());
- DocDir query = new DocDir();
- query.setParentId(docDir.getParentId());
- query.setSearchValue(docDir.getDirName());
- List list = selectDocDirList(query);
- if (list.size() > 0) {
- String dirName = docDir.getDirName();
- dirName = DateUtils.dateTimeNow() + "-" + dirName;
- docDir.setDirName(dirName);
- }
- //如果设置了访问码,则需要加密存储
- if (StringUtils.isNotEmpty(docDir.getAccessCode())) {
- String pass = SecurityUtils.encryptPassword(docDir.getAccessCode());
- docDir.setAccessCode(pass);
- }
- return docDirMapper.insertDocDir(docDir);
- }
- /**
- * 修改文档目录管理
- *
- * @param docDir 文档目录管理
- * @return 结果
- */
- @Override
- public int updateDocDir(DocDir docDir) {
- docDir.setUpdateTime(DateUtils.getNowDate());
- return docDirMapper.updateDocDir(docDir);
- }
- /**
- * 批量删除文档目录管理
- *
- * @param dirIds 需要删除的文档目录管理主键
- * @return 结果
- */
- @Override
- public int deleteDocDirByDirIds(Long[] dirIds) {
- return docDirMapper.deleteDocDirByDirIds(dirIds);
- }
- /**
- * 删除文档目录管理信息
- *
- * @param dirId 文档目录管理主键
- * @return 结果
- */
- @Override
- public int deleteDocDirByDirId(Long dirId) {
- return docDirMapper.deleteDocDirByDirId(dirId);
- }
- /**
- * 初始化顶层目录
- *
- * @param space 空间信息
- */
- @Override
- public void initTopDir(DocSpace space) {
- //初始化顶层目录
- DocDir dir = new DocDir();
- dir.setSpaceId(space.getSpaceId());
- dir.setDirName(space.getSpaceName());
- dir.setParentId(0L);
- List<DocDir> dirList = selectDocDirList(dir);
- if (dirList.size() > 0) {
- //如果有记录,则更新顶层目录
- dir.setDirId(dirList.get(0).getDirId());
- updateDocDir(dir);
- } else {
- //如果没有,则插入
- insertDocDir(dir);
- }
- }
- /**
- * 查询当前用户下所有有权限的目录
- *
- * @param userId 用户ID
- * @return 结果集
- */
- @Override
- public Map<String, Object> selectDirByUser(Long userId) {
- Map<String, Object> result = new HashMap<>(4);
- List<DocSpace> spaceList = docSpaceService.getSpaceByUser(userId);
- result.put("space", spaceList);
- List<Long> spaceIds = new ArrayList<>();
- spaceList.forEach(space -> {
- spaceIds.add(space.getSpaceId());
- });
- result.put("dir", docDirMapper.selectDirByUser(spaceIds, userId));
- return result;
- }
- /**
- * 根据权限控制查询目录列表
- *
- * @param docDir 对象
- * @return 结果
- */
- @Override
- public List<DocDir> selectDocDirList4type(DocDir docDir) {
- return null;
- }
- }
|