From eb34edfc7cf46e5cb5e3969d04315e6129dcbbd2 Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期六, 26 八月 2023 11:43:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java |   98 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 96 insertions(+), 2 deletions(-)

diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
index 38f0db1..eedf808 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
@@ -1,12 +1,25 @@
 package com.yuanchu.limslaboratory.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.mapper.MenuMapper;
+import com.yuanchu.limslaboratory.mapper.RoleManageMapper;
+import com.yuanchu.limslaboratory.pojo.LimitPage;
 import com.yuanchu.limslaboratory.pojo.Menu;
+import com.yuanchu.limslaboratory.pojo.RoleInfo;
+import com.yuanchu.limslaboratory.pojo.RoleMenu;
+import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto;
+import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto;
+import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto;
 import com.yuanchu.limslaboratory.service.RoleManagerService;
+import com.yuanchu.limslaboratory.utils.JsonUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -20,6 +33,9 @@
     @Resource
     private MenuMapper menuMapper;
 
+    @Resource
+    private RoleManageMapper roleManageMapper;
+
     @Override
     public Object getMenusTree() {
         List<Menu> menus = menuMapper.getMenuList();
@@ -29,10 +45,69 @@
                 .collect(Collectors.toList());
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addRoleInfo(RoleInfoDto dto) {
+        //鏂板瑙掕壊
+        //System.out.println(dto);
+        LocalDateTime createTime = DateUtil.toLocalDateTime(DateUtil.date());
+        RoleInfo role=new RoleInfo();
+        long nextId = IdUtil.getSnowflake().nextId();
+        role.setId(nextId);
+        role.setName(dto.getRoleName());
+        role.setCreateTime(createTime);
+        int insert = roleManageMapper.insertRole(role);
+        List<Map<String, Object>>addBranch=new ArrayList<>();
+        reverseTree(dto.getMenuData(),addBranch);
+        List<RoleMenu> roleMenuList =new ArrayList<>();
+        addBranch.forEach(item->{
+            roleMenuList.add(new RoleMenu(null,nextId,
+                    Long.valueOf(String.valueOf(item.get("id")))
+                    ,Boolean.valueOf(String.valueOf(item.get("selected")))
+                    ,Boolean.valueOf(String.valueOf(item.get("added")))
+                    ,Boolean.valueOf(String.valueOf(item.get("deleted")))
+                    ,Boolean.valueOf(String.valueOf(item.get("updated")))
+                    ,createTime
+            ));
+        });
+        //roleMenuAddList.forEach(System.out::println);
+        int i = roleManageMapper.insertBatchRoleMenu(roleMenuList);
+        return insert>0&&i>0;
+    }
+
+    @Override
+    public boolean assertRepeat(String roleName) {
+        List<RoleInfo> assertName = roleManageMapper.getAssertName(roleName);
+        return assertName.size()<1;
+    }
+
+    @Override
+    public Map<String, Object> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto) {
+        dto.setCurrentPage((dto.getCurrentPage()-1)*dto.getCurrentPage());
+        List<RoleAndMenuDto> roleAndMenuDtos = roleManageMapper.selectAllRoleAndMenu(dto);
+        roleAndMenuDtos.forEach(r->{
+            List<RoleMenu>roleMenuList=r.getRoleMenuList();
+            System.out.println(roleMenuList);
+            List<RoleMenu> collect = roleMenuList.stream()
+                    .filter(t -> t.getParentId() == 0)
+                    .peek((menu) -> menu.setChildren(this.getRoleMenuChildren(menu, roleMenuList)))
+                    .collect(Collectors.toList());
+            r.setRoleMenuList(collect);
+        });
+        roleAndMenuDtos.forEach(r->{
+            r.getRoleMenuList().forEach(System.out::println);
+        });
+        Map<String, Object>result=new HashMap<>(3);
+        result.put("list",roleAndMenuDtos);
+        int size = roleManageMapper.getRoleByName(dto.getName()).size();
+        result.put("total",size);
+        return result;
+    }
+
 
     private List<Menu> getEnumChildren(Menu root, List<Menu> all) {
         return all.stream()
-                .filter(t -> Objects.equals(t.getParentId(), root.getValue()))
+                .filter(t -> Objects.equals(t.getParentId(), root.getId()))
                 .peek(g -> {
                     //鎵惧瓙鑿滃崟
                     g.setChildren(getEnumChildren(g, all));
@@ -40,4 +115,23 @@
                 .collect(Collectors.toList());
     }
 
+    private List<RoleMenu> getRoleMenuChildren(RoleMenu root, List<RoleMenu> all) {
+        return all.stream()
+                .filter(t -> Objects.equals(t.getParentId(), root.getMenuId()))
+                .peek(g -> {
+                    //鎵惧瓙鑿滃崟
+                    g.setChildren(getRoleMenuChildren(g, all));
+                })
+                .collect(Collectors.toList());
+    }
+
+    private void reverseTree(List<Map<String, Object>>tree, List<Map<String, Object>>addBranch){
+        tree.forEach(t->{
+            addBranch.add(t);
+            if(t.get("children")!=null){
+                List<Map<String, Object>> children = JsonUtil.jsonToPojo( JsonUtil.jsonToString(t.get("children")), List.class);
+                addBranch.addAll(children);
+            }
+        });
+    }
 }

--
Gitblit v1.9.3