ead21b9f38d807eac9404f46c6c8d8ae5f891356
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.base.domain.service;
2
3 import java.util.ArrayList;
4 import java.util.LinkedHashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import lombok.extern.slf4j.Slf4j;
9
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.stereotype.Service;
12
13 import com.supwisdom.institute.backend.base.domain.entity.Permission;
14 import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
15 import com.supwisdom.institute.backend.base.domain.repo.PermissionRepository;
16 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
17 import com.supwisdom.institute.backend.common.framework.service.ABaseService;
18
19 @Slf4j
20 @Service
21 public class PermissionService extends ABaseService<Permission, PermissionRepository> {
22   
23   @Override
24   public PermissionRepository getRepo() {
25     return permissionRepository;
26   }
27
28   @Autowired
29   private PermissionRepository permissionRepository;
30   
31   @Override
32   public Permission insert(Permission entity) {
33     Permission parentPermission = permissionRepository.selectById(entity.getParentId());
34     if (parentPermission != null) {
35       entity.setApplicationId(parentPermission.getApplicationId());
36     }
37     
38     return super.insert(entity);
39   }
40
41   public void deleteBatch(List<String> ids) {
42     
43     ids.stream().forEach(id -> {
44       this.deleteById(id);
45     });
46   }
47   
48   private Permission selectApplicationPermission() {
49     Permission permission = permissionRepository.selectById(Permission.APPLICATION_ID);
50     
51     return permission;
52   }
53
54   public PermissionTreeNode selectPermissionTree(Map<String, Object> mapBean) {
55     
56     Permission applicationPermission = this.selectApplicationPermission();
57     
58     Map<String, PermissionTreeNode> parentTreeNode = new LinkedHashMap<String, PermissionTreeNode>();
59     
60     PermissionTreeNode rootTreeNode = EntityUtils.copy(applicationPermission, new PermissionTreeNode());
61     rootTreeNode.setChildren(new ArrayList<PermissionTreeNode>());
62     
63     parentTreeNode.put(rootTreeNode.getId(), rootTreeNode);
64
65     List<Permission> permissions = permissionRepository.selectList(true, -1, -1, mapBean, null);
66     for (Permission permission : permissions) {
67       PermissionTreeNode treeNode = EntityUtils.copy(permission, new PermissionTreeNode());
68       treeNode.setChildren(new ArrayList<PermissionTreeNode>());
69       
70       if (parentTreeNode.containsKey(treeNode.getId())) {
71         continue;
72       }
73       parentTreeNode.put(treeNode.getId(), treeNode);
74     }
75     
76     for (PermissionTreeNode treeNode : parentTreeNode.values()) {
77       if (!parentTreeNode.containsKey(treeNode.getParentId())) {
78         continue;
79       }
80       
81       parentTreeNode.get(treeNode.getParentId()).getChildren().add(treeNode);
82     }
83     
84     return rootTreeNode;
85   }
86
87 }