From c0e7f848236e1ab5f945b98c32d12c81e3e9c991 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期四, 24 八月 2023 18:04:09 +0800
Subject: [PATCH] 角色管理

---
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java                      |   33 ++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java                                    |    6 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java |   23 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java              |   21 ++
 laboratory-server/src/main/resources/mapper/MenuMapper.xml                                                   |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java          |   98 ++++++++++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java                   |   13 +
 /dev/null                                                                                                    |   26 ---
 framework/src/main/java/com/yuanchu/limslaboratory/utils/JackSonUtil.java                                    |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java                      |   33 ++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java                         |   22 ++
 laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml                                            |   76 +++++++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java                                |   49 ++++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java                                |   67 ++++++++
 14 files changed, 433 insertions(+), 38 deletions(-)

diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/JackSonUtil.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/JackSonUtil.java
index f272754..b9a569f 100644
--- a/framework/src/main/java/com/yuanchu/limslaboratory/utils/JackSonUtil.java
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/JackSonUtil.java
@@ -14,8 +14,6 @@
 
 /**
  * JSON瑙f瀽澶勭悊
- *
- * @author 寮犲
  */
 @Component
 public class JackSonUtil {
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
index d60ec4e..69ea1fd 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
@@ -1,12 +1,12 @@
 package com.yuanchu.limslaboratory.controller;
 
+import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto;
+import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto;
 import com.yuanchu.limslaboratory.service.RoleManagerService;
 import com.yuanchu.limslaboratory.vo.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 
@@ -28,6 +28,21 @@
       return Result.success(roleManagerService.getMenusTree());
     };
 
+    @ApiOperation("鏂板瑙掕壊")
+    @PostMapping("/addRoleInfo")
+    public Result<?>addRoleInfo(@RequestBody RoleInfoDto dto){
+        return Result.success(roleManagerService.addRoleInfo(dto));
+    }
 
+    @ApiOperation("鏌ヨ瑙掕壊鍚嶉噸澶�")
+    @GetMapping("/assertRepeat")
+    public Result<?> assertRepeat(String roleName){
+        return Result.success(roleManagerService.assertRepeat(roleName));
+    }
 
+    @ApiOperation("鑾峰彇瑙掕壊淇℃伅")
+    @GetMapping("/getAllRoleAndMenuInfo")
+    public Result<?> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto){
+        return Result.success(roleManagerService.getAllRoleAndMenuInfo(dto));
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
new file mode 100644
index 0000000..e85957b
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
@@ -0,0 +1,33 @@
+package com.yuanchu.limslaboratory.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.limslaboratory.pojo.LimitPage;
+import com.yuanchu.limslaboratory.pojo.Role;
+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.GetPlanMeasureInstrumentDto;
+import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/24
+ */
+@Repository
+public interface RoleManageMapper extends BaseMapper<RoleInfo> {
+
+    int insertBatchRoleMenu(@Param("roleMenuAddList") List<RoleMenu> roleMenuList);
+
+    int insertRole(RoleInfo roleInfo);
+
+    List<RoleInfo>getAssertName(@Param("roleName") String roleName);
+
+    List<RoleAndMenuDto>selectAllRoleAndMenu(@Param("dto") GetAllRoleAndMenuByConditionPageDto dto);
+
+    List<Role>getRoleByName(@Param("roleName") String roleName);
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
index b9cd220..12c7ddb 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
@@ -16,18 +16,18 @@
     /**
      * id
      */
-    private Integer value;
+    private Long id;
 
     /**
      * 鑿滃崟鍚�
      */
-    private String label;
+    private String name;
 
 
     /**
      * 鐖剁骇id
      */
-    private Integer parentId;
+    private Long parentId;
 
     /**
      * 瀛愮骇鑿滃崟淇℃伅
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Role.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Role.java
deleted file mode 100644
index 036a706..0000000
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Role.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.yuanchu.limslaboratory.pojo;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * @Author 寮犲
- * @Date 2023/8/23
- */
-@Data
-public class Role implements Serializable {
-
-
-    private Integer id;
-
-    private Integer name;
-
-    private LocalDateTime createTime;
-
-    private LocalDateTime updateTime;
-
-    private Integer state;
-
-}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java
new file mode 100644
index 0000000..854b391
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java
@@ -0,0 +1,49 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/23
+ */
+@Data
+@TableName("role")
+@Getter
+@Setter
+public class RoleInfo implements Serializable {
+
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    private String name;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
+    private LocalDateTime createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
+    private LocalDateTime updateTime;
+
+    private Integer state;
+
+    public RoleInfo(String name, LocalDateTime createTime, LocalDateTime updateTime) {
+        this.name = name;
+        this.createTime = createTime;
+        this.updateTime = updateTime;
+    }
+
+    public RoleInfo() {
+    }
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
new file mode 100644
index 0000000..2bb7b23
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
@@ -0,0 +1,67 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/24
+ */
+@Data
+@TableName("role_menu")
+public class RoleMenu implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    private Long roleId;
+
+    private String menuName;
+
+    private Long menuId;
+
+    private Boolean selected;
+
+    private Boolean added;
+
+    private Long parentId;
+
+    private Boolean updated;
+
+    private Boolean deleted;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
+    private LocalDateTime createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
+    private LocalDateTime updateTime;
+
+    private List<RoleMenu> children;
+
+    public RoleMenu() {
+    }
+
+    public RoleMenu(Long id, Long roleId, Long menuId, Boolean selected, Boolean added, Boolean updated, Boolean deleted, LocalDateTime createTime) {
+        this.id = id;
+        this.roleId = roleId;
+        this.menuId = menuId;
+        this.selected = selected;
+        this.added = added;
+        this.updated = updated;
+        this.deleted = deleted;
+        this.createTime = createTime;
+    }
+
+
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
new file mode 100644
index 0000000..51285e3
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
@@ -0,0 +1,23 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/24
+ */
+@Data
+@ApiModel(value = "GetAllRoleAndMenuByConditionPageDto瀵硅薄", description = "")
+public class GetAllRoleAndMenuByConditionPageDto implements Serializable {
+    @ApiModelProperty(value = "褰撳墠椤�", example = "1", required = true)
+    private Long currentPage;
+    @ApiModelProperty(value = "姣忛〉澶氬皯鏉�", required = true)
+    private Long pageSize;
+    @ApiModelProperty(value = "瑙掕壊鍚�")
+    private String name;
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
new file mode 100644
index 0000000..aa3d4d0
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
@@ -0,0 +1,33 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yuanchu.limslaboratory.pojo.RoleMenu;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/24
+ */
+@Data
+public class RoleAndMenuDto implements Serializable {
+
+    private Long  roleId;
+
+    private String roleName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
+    private LocalDateTime createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
+    private LocalDateTime updateTime;
+
+    private List<RoleMenu> roleMenuList;
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java
new file mode 100644
index 0000000..981712a
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java
@@ -0,0 +1,22 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/24
+ */
+@Data
+public class RoleInfoDto implements Serializable {
+
+    @ApiModelProperty(value = "瑙掕壊鍚�", required = true)
+    private String roleName;
+
+    @ApiModelProperty(value = "閫変腑鑿滃崟淇℃伅")
+    private List<Map<String, Object>>menuData;
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
index 6cb04de..9fde5f7 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
@@ -1,6 +1,11 @@
 package com.yuanchu.limslaboratory.service;
 
-import com.yuanchu.limslaboratory.vo.Result;
+import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto;
+import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto;
+import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Author 寮犲
@@ -8,4 +13,10 @@
  */
 public interface RoleManagerService {
     Object getMenusTree();
+
+    boolean addRoleInfo(RoleInfoDto dto);
+
+    boolean assertRepeat(String roleName);
+
+    Map<String, Object> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto);
 }
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);
+            }
+        });
+    }
 }
diff --git a/laboratory-server/src/main/resources/mapper/MenuMapper.xml b/laboratory-server/src/main/resources/mapper/MenuMapper.xml
index 586dcb7..1ea9b2d 100644
--- a/laboratory-server/src/main/resources/mapper/MenuMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/MenuMapper.xml
@@ -3,7 +3,7 @@
 <mapper namespace="com.yuanchu.limslaboratory.mapper.MenuMapper">
 
     <select id="getMenuList" resultType="com.yuanchu.limslaboratory.pojo.Menu">
-        select id value,name label,parent_id parentId
+        select id,name,parent_id parentId
         from menu
         where state =1
     </select>
diff --git a/laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml b/laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml
new file mode 100644
index 0000000..8980e01
--- /dev/null
+++ b/laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.limslaboratory.mapper.RoleManageMapper">
+    <insert id="insertBatchRoleMenu" useGeneratedKeys="true" keyProperty="id">
+        insert
+        role_menu (id,`role_id`,`menu_id`,`selected`,`added`,`updated`,`deleted`,`create_time`)
+        values
+        <foreach collection="roleMenuAddList" separator="," item="r">
+            (#{r.id},#{r.roleId},#{r.menuId},#{r.selected},#{r.added},#{r.updated},#{r.deleted},#{r.createTime})
+        </foreach>
+    </insert>
+    <insert id="insertRole">
+        insert
+        role(id,name,create_time) value (
+        #{id},
+        #{name},
+        #{createTime}
+        )
+    </insert>
+    <select id="getAssertName" resultType="com.yuanchu.limslaboratory.pojo.RoleInfo">
+        select id
+        from role
+        where name = #{roleName}
+    </select>
+    <select id="selectAllRoleAndMenu" resultMap="roleAndMenu">
+        SELECT r.id roleId,
+        r.`name` roleName,
+        menu_id menuId,
+        parent_id parentId,
+        m.`name` menuName,
+        rm.selected,
+        rm.added,
+        rm.updated,
+        rm.deleted,
+        r.create_time createTime,
+        r.update_time updateTime
+        FROM role_menu rm,
+        (select id, name, createTime, updateTime
+        from role
+        where 1=1
+        <if test="dto.name!=null and dto.name!=''">
+            and name=#{dto.name}
+        </if>
+        limit #{dto.currentPage}, #{dto.pageSize}) r,
+        menu m
+        WHERE rm.role_id = r.id
+        AND rm.menu_id = m.id
+        AND r.state = 1
+        AND rm.state = 1
+        AND m.state = 1
+    </select>
+    <select id="getRoleByName" resultType="com.yuanchu.limslaboratory.pojo.Role">
+        select id
+        from role
+        where 1=1
+        <if test="dto.name!=null and dto.name!=''">
+            and name=#{dto.name}
+        </if>
+    </select>
+
+    <resultMap id="roleAndMenu" type="com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto">
+        <result property="roleId" column="roleId"/>
+        <result property="roleName" column="roleName"/>
+        <result property="createTime" column="createTime"/>
+        <result property="updateTime" column="updateTime"/>
+        <collection property="roleMenuList" ofType="roleMenu">
+            <result property="menuId" column="menuId"/>
+            <result property="added" column="added"/>
+            <result property="deleted" column="deleted"/>
+            <result property="updated" column="updated"/>
+            <result property="selected" column="selected"/>
+            <result property="menuName" column="menuName"/>
+            <result property="parentId" column="parentId"/>
+        </collection>
+    </resultMap>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3