|
@@ -1,17 +1,33 @@
|
|
|
package com.fdkankan.ucenter.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.fdkankan.common.constant.SceneConstant;
|
|
|
+import com.fdkankan.common.exception.BusinessException;
|
|
|
+import com.fdkankan.ucenter.constant.LoginConstant;
|
|
|
import com.fdkankan.ucenter.entity.Folder;
|
|
|
+import com.fdkankan.ucenter.entity.FolderScene;
|
|
|
import com.fdkankan.ucenter.entity.User;
|
|
|
import com.fdkankan.ucenter.mapper.IFolderMapper;
|
|
|
+import com.fdkankan.ucenter.service.IFolderSceneService;
|
|
|
import com.fdkankan.ucenter.service.IFolderService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fdkankan.ucenter.service.IUserService;
|
|
|
+import com.fdkankan.ucenter.util.DateUserUtil;
|
|
|
+import com.fdkankan.ucenter.util.FolderTree;
|
|
|
+import com.fdkankan.ucenter.util.FolderTreeUtil;
|
|
|
import com.fdkankan.ucenter.vo.request.FolderParam;
|
|
|
+import com.fdkankan.ucenter.vo.request.SceneParam;
|
|
|
+import com.fdkankan.ucenter.vo.response.FolderVo;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -26,14 +42,177 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
|
|
|
|
|
|
@Autowired
|
|
|
IUserService userService;
|
|
|
+ @Autowired
|
|
|
+ IFolderSceneService folderSceneService;
|
|
|
|
|
|
@Override
|
|
|
public void add(FolderParam param) {
|
|
|
User user = userService.getByUserName(param.getUserName());
|
|
|
List<Folder> list = findByParentIdAndName(param.getParentId(), param.getName(), user.getId(), param.getType());
|
|
|
+ if(list != null && list.size() > 0){
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
|
|
|
+ }
|
|
|
+ Folder folderEntity = new Folder();
|
|
|
+ BeanUtils.copyProperties(param, folderEntity);
|
|
|
+ folderEntity.setUserId(user.getId());
|
|
|
+ this.save(folderEntity);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateByParam(FolderParam param, String username) {
|
|
|
+ User user = userService.getByUserName(param.getUserName());
|
|
|
+ if(StringUtils.isEmpty(param.getName()) || param.getId() == null){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
|
|
|
+ }
|
|
|
+ List<Folder> list = findByParentIdAndName(param.getParentId(), param.getName(), user.getId(), param.getType());
|
|
|
+ if(list != null && list.size() > 0){
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
|
|
|
+ }
|
|
|
+ Folder folder = checkFolder(param.getId(), user.getId());
|
|
|
+ folder.setName(param.getName());
|
|
|
+ this.updateById(folder);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(Long id, String username) {
|
|
|
+ if(id == null){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
|
|
|
+ }
|
|
|
+ User user = userService.getByUserName(username);
|
|
|
+ Folder folder = checkFolder(id, user.getId());
|
|
|
+
|
|
|
+ //删除子文件夹
|
|
|
+ List<Folder> list = getAllFolder(id);
|
|
|
+ list.add(folder);
|
|
|
+ List<Long> delIds = list.parallelStream().map(Folder::getId).collect(Collectors.toList());
|
|
|
+ folderSceneService.deleteByFolderIds(delIds);
|
|
|
+ this.removeByIds(delIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<FolderTree> findListTree(Integer type, String username) {
|
|
|
+ if(type == null){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
|
|
|
+ }
|
|
|
+ User user = userService.getByUserName(username);
|
|
|
+ if(user == null){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3004, LoginConstant.FAILURE_MSG_3004);
|
|
|
+ }
|
|
|
+ List<Folder> list = this.getByUserAndType(user.getId(),type);
|
|
|
+ return new FolderTreeUtil(list).buildTree();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void move(FolderParam param, String username) {
|
|
|
+ User user = userService.getByUserName(username);
|
|
|
+ if(user == null){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3004, LoginConstant.FAILURE_MSG_3004);
|
|
|
+ }
|
|
|
+ if(StringUtils.isEmpty(param.getFolderIds()) && StringUtils.isEmpty(param.getSceneIds())){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
|
|
|
+ }
|
|
|
+ if(param.getType() == null){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotEmpty(param.getFolderIds())){
|
|
|
+ String[] folderIds = param.getFolderIds().split(",");
|
|
|
+ Folder folderEntity = null;
|
|
|
+ for (String folderId : folderIds) {
|
|
|
+ folderEntity = this.getById(Long.valueOf(folderId));
|
|
|
+ folderEntity.setParentId(param.getParentId());
|
|
|
+ if(!folderEntity.getType().equals(param.getType())){
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
|
|
|
+ }
|
|
|
+ List<Folder> byParentIdAndName = findByParentIdAndName(param.getParentId(), folderEntity.getName(), user.getId(),param.getType());
|
|
|
+ if(byParentIdAndName != null && byParentIdAndName.size() > 0){
|
|
|
+ //表示迁移回当前目录,不做处理
|
|
|
+ if(byParentIdAndName.get(0).getId() == Long.parseLong(folderId)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
|
|
|
+ }
|
|
|
+ this.updateById(folderEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotEmpty(param.getSceneIds())){
|
|
|
+ String[] sceneIds = param.getSceneIds().split(",");
|
|
|
+
|
|
|
+ FolderScene folderSceneEntity = null;
|
|
|
+
|
|
|
+ for (String sceneId : sceneIds) {
|
|
|
+
|
|
|
+ folderSceneEntity = folderSceneService.getByType(Long.valueOf(sceneId), param.getType());
|
|
|
+ if(folderSceneEntity != null){
|
|
|
+ folderSceneService.removeById(folderSceneEntity.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(param.getParentId() != null){
|
|
|
+ Folder folderEntity = getById(param.getParentId());
|
|
|
+ if(!folderEntity.getType().equals(param.getType())){
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
|
|
|
+ }
|
|
|
+ folderSceneEntity = new FolderScene();
|
|
|
+ folderSceneEntity.setSceneId(Long.valueOf(sceneId));
|
|
|
+ folderSceneEntity.setFolderId(param.getParentId());
|
|
|
+ folderSceneService.save(folderSceneEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Folder> getAllFolderIds(List<Long> folderIds) {
|
|
|
+ List<Folder> list = new ArrayList<>();
|
|
|
+ for (Long id : folderIds) {
|
|
|
+ Folder byId = this.getById(id);
|
|
|
+ List<Folder> allFolder = this.getAllFolder(id);
|
|
|
+ list.add(byId);
|
|
|
+ if(allFolder.size() >0){
|
|
|
+ list.addAll(allFolder);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
- private List<Folder> findByParentIdAndName(Long parentId, String name, Long userId,Integer type){
|
|
|
+
|
|
|
+ private List<Folder> getByUserAndType(Long userId, Integer type) {
|
|
|
+ LambdaQueryWrapper<Folder> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(Folder::getUserId,userId)
|
|
|
+ .eq(Folder::getType,type);
|
|
|
+ return this.list(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Folder> getAllFolder(Long id ){
|
|
|
+ LambdaQueryWrapper<Folder> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(Folder::getParentId,id);
|
|
|
+ List<Folder> list = this.list(wrapper);
|
|
|
+ if(list.size() <= 0){
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+ for (Folder folder : list) {
|
|
|
+ List<Folder> folders = getAllFolder(folder.getId());
|
|
|
+ if(folders.size() >0){
|
|
|
+ list.addAll(folders);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Folder checkFolder(Long id, Long userId){
|
|
|
+ Folder folderEntity = this.getById(id);
|
|
|
+ if(folderEntity == null){
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5027, SceneConstant.FAILURE_MSG_5027);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(folderEntity.getUserId().longValue() != userId){
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5028, SceneConstant.FAILURE_MSG_5028);
|
|
|
+ }
|
|
|
+ return folderEntity;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Folder> findByParentIdAndName(Long parentId, String name, Long userId, Integer type){
|
|
|
LambdaQueryWrapper<Folder> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(Folder::getName,name)
|
|
|
.eq(Folder::getUserId,userId)
|
|
@@ -43,4 +222,6 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
|
|
|
}
|
|
|
return this.list(wrapper);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|