From 3e194c0902c307b0cfa2ec14bf303310eb1fb6e9 Mon Sep 17 00:00:00 2001
From: wl <173@qq.com>
Date: 星期三, 26 十月 2022 16:52:35 +0800
Subject: [PATCH] 解决用户权限问题

---
 ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java |   78 +++++++++++++++++++++++++++++++++++----
 1 files changed, 70 insertions(+), 8 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java
index e9cf66c..b9f8f3a 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java
@@ -4,19 +4,23 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.api.BasePageDTO;
-import com.ycl.entity.depart.SccgDepart;
-import com.ycl.entity.user.UmsAdmin;
-import com.ycl.entity.user.UmsDepartManage;
+import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.user.*;
+import com.ycl.mapper.user.AdminMenuRelationMapper;
+import com.ycl.mapper.user.UmsAdminRoleRelationMapper;
 import com.ycl.mapper.user.UmsDepartManageMapper;
-import com.ycl.service.depart.SccgDepartService;
-import com.ycl.service.user.UmsDepartManageService;
+import com.ycl.mapper.user.UmsRoleMenuRelationMapper;
+import com.ycl.service.depart.UmsDepartService;
 import com.ycl.service.user.UmsAdminService;
+import com.ycl.service.user.UmsDepartManageService;
 import com.ycl.vo.depart.DepartVO;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -32,9 +36,15 @@
     @Resource
     private UmsDepartManageMapper umsDepartManageMapper;
     @Resource
-    private SccgDepartService sccgDepartService;
+    private UmsDepartService sccgDepartService;
     @Resource
     private UmsAdminService umsAdminService;
+    @Resource
+    UmsAdminRoleRelationMapper umsAdminRoleRelationMapper;
+    @Resource
+    AdminMenuRelationMapper adminMenuRelationMapper;
+    @Resource
+    UmsRoleMenuRelationMapper roleMenuRelationMapper;
 
     @Override
     public List<UmsDepartManage> queryByDepartId(Long departId) {
@@ -72,7 +82,7 @@
             DepartVO.AdminDepartInfoVO adminDepartInfoVO = null;
             for (UmsDepartManage umsAdminDepart : departList) {
                 adminDepartInfoVO = new DepartVO.AdminDepartInfoVO();
-                SccgDepart sccgDepart = sccgDepartService.loadDepartById(umsAdminDepart.getDepartId());
+                UmsDepart sccgDepart = sccgDepartService.loadDepartById(umsAdminDepart.getDepartId());
                 UmsAdmin umsAdmin = umsAdminService.getById(userId);
                 adminDepartInfoVO.setDepartId(umsAdminDepart.getDepartId());
                 adminDepartInfoVO.setDepartName(sccgDepart.getDepartName());
@@ -87,4 +97,56 @@
         return basePageDTO;
     }
 
-}
+    @Override
+    public void userUpdateRoles(Long id, List<Long> roles) {
+        //瑙i櫎鐢ㄦ埛瑙掕壊缁戝畾
+        umsAdminRoleRelationMapper.delete(new LambdaQueryWrapper<UmsAdminRoleRelation>().eq(UmsAdminRoleRelation::getAdminId, id));
+        //瑙i櫎鐢ㄦ埛缁戝畾瑙掕壊缁戝畾鑿滃崟
+        adminMenuRelationMapper.delete(new LambdaQueryWrapper<AdminMenuRelation>().eq(AdminMenuRelation::getAdminId, id));
+        //缁戝畾瑙掕壊浜庣敤鎴�
+        if (!roles.isEmpty()) {
+            for (Long role : roles) {
+                UmsAdminRoleRelation urr = new UmsAdminRoleRelation();
+                urr.setAdminId(id);
+                urr.setRoleId(role);
+                umsAdminRoleRelationMapper.insert(urr);
+            }
+        }
+        //缁戝畾鑿滃崟浜庣敤鎴�
+            ArrayList<UmsRoleMenuRelation> umsRoleMenuRelations = new ArrayList<>();
+            for (Long role : roles) {
+                umsRoleMenuRelations.addAll(roleMenuRelationMapper
+                        .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>()
+                                .eq(UmsRoleMenuRelation::getRoleId, role)));
+            }
+            umsRoleMenuRelations
+                    .stream()
+                    .map(item->item.getMenuId())
+                    .collect(Collectors.toList())
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList())
+                    .stream()
+                    .forEach(item -> {
+                        AdminMenuRelation adminMenuRelation = new AdminMenuRelation();
+                        adminMenuRelation.setAdminId(id);
+                        adminMenuRelation.setMenuId(item);
+                        adminMenuRelationMapper.insert(adminMenuRelation);
+                    });
+    }
+
+    @Override
+    public void userUpdateDepart(Long id, List<UmsDepartManage> departIds) {
+        umsDepartManageMapper.delete(new LambdaQueryWrapper<UmsDepartManage>().eq(UmsDepartManage::getUserId,id));
+        departIds
+                .stream()
+                .forEach(item->{
+                    UmsDepartManage umsDepartManage = new UmsDepartManage();
+                    umsDepartManage.setDepartId(item.getDepartId());
+                    umsDepartManage.setUserId(id);
+                    umsDepartManage.setIsLeader(item.getIsLeader());
+                    umsDepartManage.setCreateTime(new Date());
+                    umsDepartManageMapper.insert(umsDepartManage);
+                });
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0