From 7ef4892f9f24f941aca37e6b3991b808a0aca619 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期五, 08 九月 2023 11:16:35 +0800
Subject: [PATCH] 优化

---
 ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java |   77 ++++++++++++++++++++++++++++++++------
 1 files changed, 64 insertions(+), 13 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
index 9bfaf58..9f060c4 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
@@ -5,14 +5,14 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.dto.UmsMenuNode;
+import com.ycl.entity.dict.DataDictionary;
 import com.ycl.entity.user.*;
+import com.ycl.mapper.dict.DataDictionary2Mapper;
 import com.ycl.mapper.user.UmsMenuMapper;
 import com.ycl.mapper.user.UmsResourceMapper;
 import com.ycl.mapper.user.UmsRoleMapper;
-import com.ycl.service.user.UmsAdminCacheService;
-import com.ycl.service.user.UmsRoleMenuRelationService;
-import com.ycl.service.user.UmsRoleResourceRelationService;
-import com.ycl.service.user.UmsRoleService;
+import com.ycl.service.user.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -20,23 +20,35 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鍚庡彴瑙掕壊绠$悊Service瀹炵幇绫�
  * Created by macro on 2018/9/30.
  */
 @Service
-public class UmsRoleServiceImpl extends ServiceImpl<UmsRoleMapper, UmsRole>implements UmsRoleService {
+public class UmsRoleServiceImpl extends ServiceImpl<UmsRoleMapper, UmsRole> implements UmsRoleService {
     @Autowired
     private UmsAdminCacheService adminCacheService;
     @Autowired
     private UmsRoleMenuRelationService roleMenuRelationService;
     @Autowired
     private UmsRoleResourceRelationService roleResourceRelationService;
+
+    private UmsMenuService umsMenuService;
+
+    @Autowired
+    public void setUmsMenuService(UmsMenuService umsMenuService) {
+        this.umsMenuService = umsMenuService;
+    }
+
     @Resource
     private UmsMenuMapper umsMenuMapper;
     @Resource
     private UmsResourceMapper umsResourceMapper;
+    @Resource
+    private DataDictionary2Mapper dataDictionary2Mapper;
+
     @Override
     public boolean create(UmsRole role) {
         role.setCreateTime(new Date());
@@ -54,18 +66,44 @@
 
     @Override
     public Page<UmsRole> list(String keyword, Integer pageSize, Integer pageNum) {
-        Page<UmsRole> page = new Page<>(pageNum,pageSize);
+        Page<UmsRole> page = new Page<>(pageNum, pageSize);
         QueryWrapper<UmsRole> wrapper = new QueryWrapper<>();
         LambdaQueryWrapper<UmsRole> lambda = wrapper.lambda();
-        if(StrUtil.isNotEmpty(keyword)){
-            lambda.like(UmsRole::getName,keyword);
+        if (StrUtil.isNotEmpty(keyword)) {
+            lambda.like(UmsRole::getName, keyword);
         }
-        return page(page,wrapper);
+        Page<UmsRole> resultPage = page(page, wrapper);
+        List<UmsRole> roles = resultPage.getRecords();
+        List<Long> types = roles.stream().map(UmsRole::getType).collect(Collectors.toList());
+        if (types.size() > 0) {
+            LambdaQueryWrapper<DataDictionary> dicQuery = new LambdaQueryWrapper<>();
+            dicQuery.in(DataDictionary::getId, types);
+            List<DataDictionary> dics = dataDictionary2Mapper.selectList(dicQuery);
+            for (UmsRole role : roles) {
+                for (DataDictionary dic : dics) {
+                    if (dic.getId().equals(role.getType())) {
+                        role.setTypeText(dic.getName());
+                    }
+                }
+            }
+        }
+        return resultPage;
     }
 
     @Override
-    public List<UmsMenu> getMenuList(Long adminId) {
-        return umsMenuMapper.getMenuList(adminId);
+    public List<UmsMenuNode> getMenuList(Long adminId) {
+        List<UmsMenu> menuList = umsMenuMapper.getMenuList(adminId);
+        List<UmsMenuNode> result = menuList.stream()
+                .filter(menu -> menu.getParentId().equals(0L))
+                .map(menu -> umsMenuService.covertMenuNode(menu, menuList)).collect(Collectors.toList());
+        return result;
+    }
+
+
+    @Override
+    public List<UmsRole> getRoleListByCodes(List<String> codes) {
+        LambdaQueryWrapper<UmsRole> wrapper = new LambdaQueryWrapper<UmsRole>().in(UmsRole::getCode, codes);
+        return baseMapper.selectList(wrapper);
     }
 
     @Override
@@ -82,7 +120,7 @@
     public int allocMenu(Long roleId, List<Long> menuIds) {
         //鍏堝垹闄ゅ師鏈夊叧绯�
         QueryWrapper<UmsRoleMenuRelation> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsRoleMenuRelation::getRoleId,roleId);
+        wrapper.lambda().eq(UmsRoleMenuRelation::getRoleId, roleId);
         roleMenuRelationService.remove(wrapper);
         //鎵归噺鎻掑叆鏂板叧绯�
         List<UmsRoleMenuRelation> relationList = new ArrayList<>();
@@ -100,7 +138,7 @@
     public int allocResource(Long roleId, List<Long> resourceIds) {
         //鍏堝垹闄ゅ師鏈夊叧绯�
         QueryWrapper<UmsRoleResourceRelation> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsRoleResourceRelation::getRoleId,roleId);
+        wrapper.lambda().eq(UmsRoleResourceRelation::getRoleId, roleId);
         roleResourceRelationService.remove(wrapper);
         //鎵归噺鎻掑叆鏂板叧绯�
         List<UmsRoleResourceRelation> relationList = new ArrayList<>();
@@ -114,4 +152,17 @@
         adminCacheService.delResourceListByRole(roleId);
         return resourceIds.size();
     }
+
+    @Override
+    public Boolean updateStatusBatch(List<Long> ids, Integer status) {
+        List<UmsRole> roles = new ArrayList<>();
+        for (Long id : ids) {
+            UmsRole umsRole = UmsRole.builder().
+                    id(id).status(status).build();
+            roles.add(umsRole);
+        }
+        updateBatchById(roles, roles.size());
+        adminCacheService.delResourceListByRoleIds(ids);
+        return true;
+    }
 }

--
Gitblit v1.8.0