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 |  168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 168 insertions(+), 0 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
new file mode 100644
index 0000000..9f060c4
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
@@ -0,0 +1,168 @@
+package com.ycl.service.user.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.*;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+/**
+ * 鍚庡彴瑙掕壊绠$悊Service瀹炵幇绫�
+ * Created by macro on 2018/9/30.
+ */
+@Service
+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());
+        role.setAdminCount(0);
+        role.setSort(0);
+        return save(role);
+    }
+
+    @Override
+    public boolean delete(List<Long> ids) {
+        boolean success = removeByIds(ids);
+        adminCacheService.delResourceListByRoleIds(ids);
+        return success;
+    }
+
+    @Override
+    public Page<UmsRole> list(String keyword, Integer pageSize, Integer pageNum) {
+        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);
+        }
+        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<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
+    public List<UmsMenu> listMenu(Long roleId) {
+        return umsMenuMapper.getMenuListByRoleId(roleId);
+    }
+
+    @Override
+    public List<UmsResource> listResource(Long roleId) {
+        return umsResourceMapper.getResourceListByRoleId(roleId);
+    }
+
+    @Override
+    public int allocMenu(Long roleId, List<Long> menuIds) {
+        //鍏堝垹闄ゅ師鏈夊叧绯�
+        QueryWrapper<UmsRoleMenuRelation> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(UmsRoleMenuRelation::getRoleId, roleId);
+        roleMenuRelationService.remove(wrapper);
+        //鎵归噺鎻掑叆鏂板叧绯�
+        List<UmsRoleMenuRelation> relationList = new ArrayList<>();
+        for (Long menuId : menuIds) {
+            UmsRoleMenuRelation relation = new UmsRoleMenuRelation();
+            relation.setRoleId(roleId);
+            relation.setMenuId(menuId);
+            relationList.add(relation);
+        }
+        roleMenuRelationService.saveBatch(relationList);
+        return menuIds.size();
+    }
+
+    @Override
+    public int allocResource(Long roleId, List<Long> resourceIds) {
+        //鍏堝垹闄ゅ師鏈夊叧绯�
+        QueryWrapper<UmsRoleResourceRelation> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(UmsRoleResourceRelation::getRoleId, roleId);
+        roleResourceRelationService.remove(wrapper);
+        //鎵归噺鎻掑叆鏂板叧绯�
+        List<UmsRoleResourceRelation> relationList = new ArrayList<>();
+        for (Long resourceId : resourceIds) {
+            UmsRoleResourceRelation relation = new UmsRoleResourceRelation();
+            relation.setRoleId(roleId);
+            relation.setResourceId(resourceId);
+            relationList.add(relation);
+        }
+        roleResourceRelationService.saveBatch(relationList);
+        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