From 6984757bfc75b4a25014de1eb71c2aa75ebdb86f Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期六, 26 八月 2023 15:59:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 standard-server/src/main/resources/mapper/OrganizationalMapper.xml                                     |   18 +
 user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java                            |    0 
 user-server/src/main/java/com/yuanchu/limslaboratory/mapper/UserMapper.java                            |    7 
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java                                    |    0 
 standard-server/src/main/resources/mapper/MaterialMapper.xml                                           |   11 
 user-server/src/main/java/com/yuanchu/limslaboratory/clients/UserLoginUtils.java                       |   27 
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/NewPersonnelVo.java                       |    5 
 framework/src/main/java/com/yuanchu/limslaboratory/utils/HttpUtils.java                                |  140 ++++++++
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/OrganizationalService.java            |    6 
 framework/src/main/java/com/yuanchu/limslaboratory/exception/AuthException.java                        |   31 +
 sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java                                |   69 ++++
 user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java              |   21 +
 framework/src/main/java/com/yuanchu/limslaboratory/controllerServerApi/LaboratoryServerApi.java        |   35 ++
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java                         |    0 
 user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java                          |    7 
 user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java          |   38 ++
 framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnum.java                                 |   60 +++
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/OrganizationalServiceImpl.java   |   22 
 standard-server/src/main/java/com/yuanchu/limslaboratory/controller/OrganizationalController.java      |   22 
 standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/OrganizationalMapper.java              |    4 
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UpdatePersonnelVo.java                    |    4 
 framework/pom.xml                                                                                      |   14 
 standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Organizational.java                      |    3 
 framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java                 |    7 
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateRoleMenuDto.java                   |   27 +
 standard-server/src/main/resources/mapper/ProductMapper.xml                                            |    1 
 user-server/src/main/resources/mapper/MenuMapper.xml                                                   |    0 
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java                                    |    7 
 user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java                      |   11 
 user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleController.java                    |   43 ++
 sys/src/main/resources/application-dev.yml                                                             |    2 
 framework/src/main/java/com/yuanchu/limslaboratory/annotation/RequestInfo.java                         |   19 +
 user-server/src/main/resources/mapper/UserMapper.xml                                                   |   33 +-
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java                                |    0 
 /dev/null                                                                                              |   39 --
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java |    1 
 user-server/src/main/resources/mapper/RoleManangeMapper.xml                                            |  127 +++++++
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java                      |    2 
 user-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java                   |    7 
 user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java                 |   67 +++-
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java                                |    6 
 user-server/src/main/java/com/yuanchu/limslaboratory/controller/UserController.java                    |   14 
 user-server/pom.xml                                                                                    |    1 
 43 files changed, 817 insertions(+), 141 deletions(-)

diff --git a/framework/pom.xml b/framework/pom.xml
index ce4fbb6..21d90b7 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -36,6 +36,11 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>knife4j-spring-ui</artifactId>
         </dependency>
+        <!--        aop-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
 
         <!--redis jar鍖�-->
         <dependency>
@@ -47,6 +52,15 @@
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/annotation/RequestInfo.java b/framework/src/main/java/com/yuanchu/limslaboratory/annotation/RequestInfo.java
new file mode 100644
index 0000000..484c3f5
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/annotation/RequestInfo.java
@@ -0,0 +1,19 @@
+package com.yuanchu.limslaboratory.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author 寮犲
+ */
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RequestInfo {
+
+    String type();
+
+    String name() ;
+
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/controllerServerApi/LaboratoryServerApi.java b/framework/src/main/java/com/yuanchu/limslaboratory/controllerServerApi/LaboratoryServerApi.java
new file mode 100644
index 0000000..1460e5a
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/controllerServerApi/LaboratoryServerApi.java
@@ -0,0 +1,35 @@
+package com.yuanchu.limslaboratory.controllerServerApi;
+
+import com.yuanchu.limslaboratory.utils.HttpUtils;
+import com.yuanchu.limslaboratory.utils.JsonUtil;
+import com.yuanchu.limslaboratory.utils.RedisUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/26
+ */
+@Component
+public class LaboratoryServerApi {
+
+    private final String ROLE_MANAGER="/role-manager";
+
+    @Resource
+    HttpUtils  httpUtils;
+
+    public Map<String, Object> getRoleAndMenuByRole(Long roleId){
+        String url=ROLE_MANAGER+ "/getRoleAndMenuByRole";
+        HashMap<String, String>map=new HashMap<>();
+        map.put("roleId",String.valueOf(roleId));
+        String result = httpUtils.get(url, map, String.valueOf(RedisUtil.get("access_token")));
+        return JsonUtil.jsonToPojo(result,Map.class);
+    }
+
+
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnum.java b/framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnum.java
new file mode 100644
index 0000000..f44bb11
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnum.java
@@ -0,0 +1,60 @@
+package com.yuanchu.limslaboratory.enums;
+
+/**
+ * @Author 寮犲
+ * @Date 2023825
+ */
+public enum MenuEnum {
+    standardLibrary(1L,"鏍囧噯搴�"),
+    inspectionManagement(2L,"鎶ユ绠$悊"),
+    commissionInspection(3L,"濮旀墭妫�楠�"),
+    reportForInspection(4L,"鍘熸潗鏂欐姤妫�"),
+    experiment(5L,"璇曢獙绠$悊"),
+    inspectionApplication(6L,"鏂板妫�楠�"),
+    planAssignments(7L,"妫�楠岃鍒�"),
+    checkTheReport(8L,"妫�楠屾姤鍛�"),
+    reportAuditing(9L,"鎶ュ憡瀹℃牳"),
+    nonConformanceReview(10L,"涓嶅悎鏍煎搧鍙嶉"),
+    nonConformingFeedback(11L,"涓嶅悎鏍煎搧璇勫"),
+    passRateStatistics(12L,"鍚堟牸鐜囩粺璁�"),
+    laboratory(13L,"瀹為獙瀹ょ鐞�"),
+    ledger(14L,"璁惧鍙拌处"),
+    measure(15L,"璁¢噺绠$悊"),
+    gather(16L,"璁惧閲囬泦"),
+    personnel(17L,"浜哄憳绠$悊"),
+    role(18L,"瑙掕壊绠$悊"),
+    CNAS(19L,"CNS绠$悊"),
+    reviewAnnualPlan(20L,"瀹℃牳骞村害璁″垝"),
+    nonConformanceManage(21L,"涓嶇鍚堥」绠$悊"),
+    nonConformanceStatistics(22L,"涓嶇鍚堥」缁熻"),
+    satisfactionSurveys(23L,"婊℃剰搴﹁皟鏌�"),
+    chart(24L,"鏅鸿兘鍥捐〃"),
+    center(25L,"瀹為獙涓績"),
+    spc(26L,"SPC鎺у埗鍥�"),
+    shota(27L,"姝eお鍒嗗竷鍥�"),
+    work(28L,"宸ヤ綔缁熻"),
+    message(29L,"娑堟伅浠e姙"),
+    messages(30L,"鎴戠殑娑堟伅"),
+    toDo(31L,"鎴戠殑浠e姙"),
+    personal(32L,"浜哄憳绠$悊"),
+    myInformation(33L,"鎴戠殑淇℃伅"),
+    baseData(34L,"鍩虹鏁版嵁"),
+    basicDataMessage(35L,"鍩虹鏁版嵁"),
+    org(36L,"缁勭粐鏋舵瀯");
+
+    private Long menuId;
+    private String menuName;
+
+
+    MenuEnum(Long menuId, String menuName) {
+        this.menuId = menuId;
+        this.menuName = menuName;
+    }
+    public Long menuId() {
+        return this.menuId;
+    }
+
+    public String menuName() {
+        return this.menuName;
+    }
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/exception/AuthException.java b/framework/src/main/java/com/yuanchu/limslaboratory/exception/AuthException.java
new file mode 100644
index 0000000..c105ca8
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/exception/AuthException.java
@@ -0,0 +1,31 @@
+package com.yuanchu.limslaboratory.exception;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/25
+ */
+public class AuthException extends RuntimeException {
+
+    /**
+     * 涓氬姟缂栫爜瀹氫箟
+     * @return 涓氬姟缂栫爜
+     */
+    private String code;
+
+    /**
+     * 涓氬姟淇℃伅瀹氫箟
+     * @return 涓氬姟淇℃伅瀹氫箟
+     */
+    private String msg;
+
+
+    public AuthException(String code, String msg) {
+
+        super(msg);
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public AuthException() {
+    }
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java b/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
index e94b324..bb81a8f 100644
--- a/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
@@ -1,5 +1,6 @@
 package com.yuanchu.limslaboratory.handler;
 
+import com.yuanchu.limslaboratory.exception.AuthException;
 import com.yuanchu.limslaboratory.exception.MyFileException;
 import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.vo.Result;
@@ -212,4 +213,10 @@
         e.printStackTrace();
         return Result.fail("缃戠粶杩炴帴澶辫触锛岃閫�鍑哄悗鍐嶈瘯");
     }
+
+    @ExceptionHandler({AuthException.class})
+    public Result<?> noAuth(AuthException e){
+        e.printStackTrace();
+        return Result.fail(400,"鏃犳潈闄�");
+    }
 }
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/HttpUtils.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/HttpUtils.java
new file mode 100644
index 0000000..86283cf
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/HttpUtils.java
@@ -0,0 +1,140 @@
+package com.yuanchu.limslaboratory.utils;
+
+import com.google.gson.Gson;
+import okhttp3.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/26
+ */
+@Component
+public class HttpUtils {
+
+    private final String IP="http://localhost:";
+
+    @Value("${server.port}")
+    private String port;
+
+    public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
+
+    public static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
+
+    final OkHttpClient client
+            = new OkHttpClient.Builder()
+            .connectTimeout(10, TimeUnit.SECONDS)
+            .writeTimeout(10, TimeUnit.SECONDS)
+            .readTimeout(20, TimeUnit.SECONDS)
+            .build();
+
+    public String postJson(String url, Map<String, String> map,String token){
+        url=IP+port+url;
+        if (map == null || StringUtils.isEmpty(url)) {
+            throw new RuntimeException("url鎴栬姹傚弬鏁颁笉鑳戒负绌�");
+        }
+        Gson gson = new Gson();
+        String json = gson.toJson(map);
+        RequestBody body = RequestBody.create(JSON, json);
+        Request request = builderRequest(url, body, token);
+        try (Response response = client.newCall(request).execute()) {
+            ResponseBody responseBody = response.body();
+            if (Objects.isNull(responseBody)) {
+                throw new RuntimeException("鍝嶅簲浣撲负绌�");
+            }
+            return responseBody.string();
+        } catch (Exception e) {
+            logger.error(e.toString());
+            return "";
+        }
+    }
+
+    private Request builderRequest(String url,RequestBody body,String token) {
+        if(StringUtils.isNotEmpty(token)){
+            return new Request.Builder()
+                    .url(url)
+                    .post(body)
+                    .addHeader("X-Token", token)
+                    .build();
+        }else {
+            return new Request.Builder()
+                    .url(url)
+                    .post(body)
+                    .build();
+        }
+    }
+
+    /**
+     * 闇�瑕佷娇鐢ㄥ簭鍒楀寲宸ュ叿灏嗗璞″簭鍒楀寲鎴愬瓧绗︿覆锛氬gson
+     *
+     * @param url
+     * @param json
+     * @return
+     */
+    public String postJson(String url, String json,String token) {
+        url=IP+port+url;
+        if (StringUtils.isEmpty(json) || StringUtils.isEmpty(url)) {
+            throw new RuntimeException("url鎴栬姹傚弬鏁颁笉鑳戒负绌�");
+        }
+        RequestBody body = RequestBody.create(JSON, json);
+        Request request = builderRequest(url, body, token);
+        try (Response response = client.newCall(request).execute()) {
+            ResponseBody responseBody = response.body();
+            if (Objects.isNull(responseBody)) {
+                throw new RuntimeException("鍝嶅簲浣撲负绌�");
+            }
+            return responseBody.string();
+        } catch (Exception e) {
+            logger.error(e.toString());
+            return "";
+        }
+    }
+
+    /**
+     * @param url
+     * @param queryParamMap
+     * @return
+     */
+    public String get(String url, Map<String, String> queryParamMap, String token){
+        url=IP+port+url;
+        if (StringUtils.isEmpty(url)) {
+            throw new RuntimeException("url鎴栬姹傚弬鏁颁笉鑳戒负绌�");
+        }
+        System.out.println(url);
+        HttpUrl.Builder builder = Objects.requireNonNull(HttpUrl.parse(url)).newBuilder();
+        if (queryParamMap != null && queryParamMap.size() != 0) {
+            queryParamMap.forEach(builder::addQueryParameter);
+        }
+        url = builder.build().toString();
+        Request request=null;
+        if(StringUtils.isNotEmpty(token)){
+             request = new Request.Builder()
+                    .url(url)
+                    .addHeader("X-Token", token)
+                    .build();
+        }else {
+             request = new Request.Builder()
+                    .url(url)
+                    .build();
+        }
+        try (Response response = client.newCall(request).execute()) {
+            ResponseBody responseBody = response.body();
+            if (Objects.isNull(responseBody)) {
+                throw new RuntimeException("鍝嶅簲浣撲负绌�");
+            }
+            return responseBody.string();
+        } catch (Exception e) {
+            logger.error(e.toString());
+            return "";
+        }
+    }
+}
\ No newline at end of file
diff --git a/laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml b/laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml
deleted file mode 100644
index 8980e01..0000000
--- a/laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/OrganizationalController.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/OrganizationalController.java
index 2087a6a..db89721 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/OrganizationalController.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/OrganizationalController.java
@@ -2,6 +2,7 @@
 
 import com.yuanchu.limslaboratory.pojo.Organizational;
 import com.yuanchu.limslaboratory.service.OrganizationalService;
+import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.vo.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -34,8 +35,18 @@
     @ApiOperation(value = "渚ц竟鏍忔爲灞曞紑")
     @GetMapping("/list")
     public Result<?> getFourLevelInformation() {
-        Map<String, Object> organizationalTree = organizationalService.OrganizationalTree();
+        List<Map<String, Object>> organizationalTree = organizationalService.OrganizationalTree();
         return Result.success(organizationalTree);
+    }
+
+    @ApiOperation(value = "鏍规嵁鐐瑰嚮Id鏌ヨ閮ㄩ棬")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(value = "閮ㄩ棬ID", name = "departmentId", dataTypeClass = Integer.class)
+    })
+    @GetMapping("/table")
+    public Result<?> getDepartmentListTable(Integer departmentId) {
+        List<Map<String, Object>> departmentListTable = organizationalService.getDepartmentListTable(departmentId);
+        return Result.success(departmentListTable);
     }
 
     @ApiOperation(value = "娣诲姞閮ㄩ棬")
@@ -60,11 +71,8 @@
 
     @ApiOperation(value = "鍒犻櫎閮ㄩ棬")
     @DeleteMapping("/delete")
-    public Result<?> deleteDepartment(Integer id) {
-        Integer deleteDepartment = organizationalService.deleteDepartment(id);
-        if (deleteDepartment >= 1){
-            return Result.success("鍒犻櫎鎴愬姛锛�");
-        }
-        return Result.fail("鍒犻櫎澶辫触锛�");
+    public Result<?> deleteDepartment(String ids) {
+        organizationalService.deleteDepartment(ids);
+        return Result.success("鍒犻櫎鎴愬姛锛�");
     }
 }
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/OrganizationalMapper.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/OrganizationalMapper.java
index 3facef4..5198b03 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/OrganizationalMapper.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/OrganizationalMapper.java
@@ -17,4 +17,8 @@
 public interface OrganizationalMapper extends BaseMapper<Organizational> {
 
     List<Map<String, Object>> OrganizationalTree(Integer father_id);
+
+    List<Map<String, Object>> getDepartmentListTable(Integer departmentId);
+
+    void deleteDepartment(String ids);
 }
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Organizational.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Organizational.java
index f55104c..0c3425b 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Organizational.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Organizational.java
@@ -16,6 +16,7 @@
 import lombok.experimental.Accessors;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * <p>
@@ -41,7 +42,7 @@
     @ApiModelProperty(value = "閮ㄩ棬鍚嶇О", example = "寮�鍙戦儴", required = true)
     private String department;
 
-    @NotBlank(message = "璇烽�夋嫨涓婄骇閮ㄩ棬锛�")
+    @NotNull(message = "璇烽�夋嫨涓婄骇閮ㄩ棬锛�")
     @ApiModelProperty(value = "涓婄骇閮ㄩ棬ID", example = "1", required = true)
     private Integer fatherId;
 
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/OrganizationalService.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/OrganizationalService.java
index bfedae9..8854972 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/OrganizationalService.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/OrganizationalService.java
@@ -16,11 +16,13 @@
  */
 public interface OrganizationalService extends IService<Organizational> {
 
-    Map<String, Object> OrganizationalTree();
+    List<Map<String, Object>> OrganizationalTree();
 
     Integer addDepartment(Organizational organizational);
 
     Integer updateDepartment(Integer id, Organizational organizational);
 
-    Integer deleteDepartment(Integer id);
+    void deleteDepartment(String ids);
+
+    List<Map<String, Object>> getDepartmentListTable(Integer departmentId);
 }
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/OrganizationalServiceImpl.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/OrganizationalServiceImpl.java
index 77c0d32..56ca1fa 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/OrganizationalServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/OrganizationalServiceImpl.java
@@ -6,10 +6,12 @@
 import com.yuanchu.limslaboratory.service.EnterpriseService;
 import com.yuanchu.limslaboratory.service.OrganizationalService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.limslaboratory.utils.MyUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,14 +34,16 @@
     private EnterpriseService enterpriseService;
 
     @Override
-    public Map<String, Object> OrganizationalTree() {
+    public List<Map<String, Object>> OrganizationalTree() {
         String firstEnterpriseName = enterpriseService.getFirstEnterpriseName();
         List<Map<String, Object>> mapList = organizationalMapper.OrganizationalTree(0);
         Map<String, Object> map = new HashMap<>();
+        List<Map<String, Object>> mapData = new ArrayList<>();
+        map.put("children", mapList);
         map.put("id", 0);
         map.put("department", firstEnterpriseName);
-        map.put("children", mapList);
-        return map;
+        mapData.add(map);
+        return mapData;
     }
 
     @Override
@@ -55,10 +59,12 @@
     }
 
     @Override
-    public Integer deleteDepartment(Integer id) {
-        LambdaUpdateWrapper<Organizational> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.eq(Organizational::getId, id);
-        updateWrapper.set(Organizational::getState, 0);
-        return organizationalMapper.update(new Organizational(), updateWrapper);
+    public void deleteDepartment(String ids) {
+        organizationalMapper.deleteDepartment(ids);
+    }
+
+    @Override
+    public List<Map<String, Object>> getDepartmentListTable(Integer departmentId) {
+        return organizationalMapper.getDepartmentListTable(departmentId);
     }
 }
diff --git a/standard-server/src/main/resources/mapper/MaterialMapper.xml b/standard-server/src/main/resources/mapper/MaterialMapper.xml
index e879a4e..1d1cfe7 100644
--- a/standard-server/src/main/resources/mapper/MaterialMapper.xml
+++ b/standard-server/src/main/resources/mapper/MaterialMapper.xml
@@ -54,13 +54,14 @@
 
     <select id="FourTree" resultMap="OneLevelTreeMap">
         SELECT m.`type`, m.`id` materialId, m.`name` materialName, s.id standardId, s.name standardName,
-        f.id specificationsId, f.name specificationsName
+               f.id specificationsId, f.name specificationsName
         FROM material m
-        LEFT JOIN (SELECT s.`id`, s.`name`, s.`material_id` FROM standard s WHERE s.`state` = 1) s
-        ON s.material_id = m.`id`
-        LEFT JOIN (SELECT f.`id`, f.`name`, f.`standard_id` FROM specifications f WHERE f.`state` = 1) f
-        ON f.standard_id = s.id
+                 LEFT JOIN (SELECT s.`id`, s.`name`, s.`material_id` FROM standard s WHERE s.`state` = 1) s
+                           ON s.material_id = m.`id`
+                 LEFT JOIN (SELECT f.`id`, f.`name`, f.`standard_id`, f.`create_time` FROM specifications f WHERE f.`state` = 1) f
+                           ON f.standard_id = s.id
         WHERE m.`state` = 1
+        ORDER BY f.create_time DESC
     </select>
 
 </mapper>
diff --git a/standard-server/src/main/resources/mapper/OrganizationalMapper.xml b/standard-server/src/main/resources/mapper/OrganizationalMapper.xml
index 5d2e231..5fee3e9 100644
--- a/standard-server/src/main/resources/mapper/OrganizationalMapper.xml
+++ b/standard-server/src/main/resources/mapper/OrganizationalMapper.xml
@@ -9,6 +9,22 @@
     </resultMap>
 
     <select id="OrganizationalTree" resultMap="OrganizationalMap">
-        SELECT o.id, o.`department` FROM organizational o where o.`father_id` = #{father_id}
+        SELECT o.id, o.`department`
+        FROM organizational o
+        where o.`father_id` = #{father_id}
+        and o.state = 1
+    </select>
+
+    <select id="getDepartmentListTable" resultType="map">
+        SELECT o.`id`, o.`department`
+        FROM organizational o
+        WHERE o.`father_id` = #{departmentId}
+          AND o.`state` = 1
+    </select>
+
+    <select id="deleteDepartment">
+        update lims_laboratory.organizational
+        set state=0
+        where id in (${ids})
     </select>
 </mapper>
diff --git a/standard-server/src/main/resources/mapper/ProductMapper.xml b/standard-server/src/main/resources/mapper/ProductMapper.xml
index 7c63626..69f48ee 100644
--- a/standard-server/src/main/resources/mapper/ProductMapper.xml
+++ b/standard-server/src/main/resources/mapper/ProductMapper.xml
@@ -37,6 +37,7 @@
         from lims_laboratory.product
         where state = 1
           and specifications_id = #{specificationsId}
+        ORDER BY product.`create_time` DESC
           and version = #{version}
     </select>
 
diff --git a/sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java b/sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java
new file mode 100644
index 0000000..4e6b38f
--- /dev/null
+++ b/sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java
@@ -0,0 +1,69 @@
+package com.yuanchu.limslaboratory.aop;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yuanchu.limslaboratory.annotation.RequestInfo;
+import com.yuanchu.limslaboratory.exception.AuthException;
+import com.yuanchu.limslaboratory.utils.ServletUtils;
+import com.yuanchu.limslaboratory.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/25
+ */
+@Component
+@Slf4j
+@Aspect
+public class AuthRequestAspect {
+
+    @Pointcut("@annotation(com.yuanchu.limslaboratory.annotation.RequestInfo)")
+    public void pointCut() {
+    }
+
+    //private ThreadLocal<ConcurrentHashMap<String, Map>> threadLocal;
+
+    @SneakyThrows
+    @Before("pointCut()")
+    public void before(JoinPoint joinPoint) {
+        HttpServletRequest request = ServletUtils.getRequest();
+        log.info("鎷︽埅=====銆�"+request.getServletPath());
+        Class<?> clazz = joinPoint.getTarget().getClass();
+        String clazzName = joinPoint.getTarget().getClass().getName();
+        // 鑾峰彇璁块棶鐨勬柟娉曞悕
+        String methodName = joinPoint.getSignature().getName();
+        // 鑾峰彇鏂规硶鎵�鏈夊弬鏁板強鍏剁被鍨�
+        Class[] argClz = ((MethodSignature) joinPoint.getSignature()).getParameterTypes();
+        // 鑾峰彇璁块棶鐨勬柟娉曞璞�
+        Method method = clazz.getDeclaredMethod(methodName, argClz);
+        // 鍒ゆ柇褰撳墠璁块棶鐨勬柟娉曟槸鍚﹀瓨鍦ㄦ寚瀹氭敞瑙�
+        if (method.isAnnotationPresent(RequestInfo.class)) {
+            RequestInfo annotation = method.getAnnotation(RequestInfo.class);
+            System.out.println(annotation.name());
+            System.out.println(annotation.type());
+        }
+        //throw new AuthException("400","鏃犳潈闄�");
+    }
+
+
+
+
+}
diff --git a/sys/src/main/resources/application-dev.yml b/sys/src/main/resources/application-dev.yml
index 46a07a9..5bcc703 100644
--- a/sys/src/main/resources/application-dev.yml
+++ b/sys/src/main/resources/application-dev.yml
@@ -65,7 +65,7 @@
     # redis鏁版嵁搴撶储寮�(榛樿涓�0)锛屾垜浠娇鐢ㄧ储寮曚负3鐨勬暟鎹簱锛岄伩鍏嶅拰鍏朵粬鏁版嵁搴撳啿绐�
     database: 0
     # redis鏈嶅姟鍣ㄥ湴鍧�锛堥粯璁や负localhost锛�
-    host: 192.168.110.209
+    host:  192.168.110.209
     # redis绔彛锛堥粯璁や负6379锛�
     port: 6380
     # redis璁块棶瀵嗙爜锛堥粯璁や负绌猴級
diff --git a/user-server/pom.xml b/user-server/pom.xml
index a1f86af..1c70204 100644
--- a/user-server/pom.xml
+++ b/user-server/pom.xml
@@ -26,7 +26,6 @@
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
         </dependency>
-
         <!--okhttp-->
         <dependency>
             <groupId>io.github.openfeign</groupId>
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/clients/UserLoginUtils.java b/user-server/src/main/java/com/yuanchu/limslaboratory/clients/UserLoginUtils.java
index 7b1ead7..6c6c169 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/clients/UserLoginUtils.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/clients/UserLoginUtils.java
@@ -1,6 +1,12 @@
 package com.yuanchu.limslaboratory.clients;
 
+import com.yuanchu.limslaboratory.controllerServerApi.LaboratoryServerApi;
+import com.yuanchu.limslaboratory.mapper.RoleManageMapper;
+import com.yuanchu.limslaboratory.mapper.UserMapper;
+import com.yuanchu.limslaboratory.pojo.Menu;
+import com.yuanchu.limslaboratory.pojo.RoleMenu;
 import com.yuanchu.limslaboratory.pojo.User;
+import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto;
 import com.yuanchu.limslaboratory.shiro.utils.JwtUtils;
 import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.utils.RedisUtil;
@@ -10,7 +16,10 @@
 
 import javax.annotation.Resource;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Component
 public class UserLoginUtils {
@@ -23,6 +32,8 @@
 
     @Value("${login.secret}")
     private String LoginSecret;
+
+
 
     public Result<Map<String, Object>> LoginExamine(User user){
         Map<String, Object> mapData = new HashMap<>();
@@ -41,8 +52,11 @@
                 mapRedis.put("name", user.getName());
                 mapRedis.put("enterpriseId", user.getEnterpriseId());
                 mapRedis.put("data", data);
+                mapRedis.put("roleId",user.getRoleId());
                 //瀛樺叆redis,浜屼釜灏忔椂鍚庡垹闄�
                 RedisUtil.set(token, mapRedis, 120);
+                //
+                RedisUtil.set("access_token",token,120);
                 // 灏嗙鍙戠殑 JWT token 杩斿洖缁欏墠绔�
                 HashMap<String, Object> map = new HashMap<>();
                 String refresh = JwtUtils.sign(user.getAccount());
@@ -58,17 +72,4 @@
         }
     }
 
-
-//    public Result<Map<String, Object>> LoginExamine(User user){
-//        String token = JwtUtils.sign(user.getAccount());
-//        //瀛樺叆redis,浜屼釜灏忔椂鍚庡垹闄�
-//        RedisUtil.set(token, user, 2);
-//        // 灏嗙鍙戠殑 JWT token 杩斿洖缁欏墠绔�
-//        HashMap<String, Object> map = new HashMap<>();
-//        String refresh = JwtUtils.sign(user.getAccount());
-//        map.put("token", token);
-//        map.put("refresh", refresh);
-//        RedisUtil.set(user.getAccount(), map, 120);
-//        return Result.success(map);
-//    }
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleController.java b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleController.java
new file mode 100644
index 0000000..5f202d2
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleController.java
@@ -0,0 +1,43 @@
+package com.yuanchu.limslaboratory.controller;
+
+
+import com.yuanchu.limslaboratory.service.RoleService;
+import com.yuanchu.limslaboratory.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-07
+ */
+@Api(tags = "鐢ㄦ埛妯″潡")
+@RestController
+@RequestMapping("/role")
+public class RoleController {
+
+    @Autowired
+    private RoleService roleService;
+
+    @ApiOperation("鏂板鐢ㄦ埛-->鑾峰彇鐢ㄦ埛鏉冮檺鍒楄〃")
+    @GetMapping("/list")
+    public Result<?> getUserRoleList(){
+        //鏍规嵁token鑾峰彇鐢ㄦ埛淇℃伅
+//        Map<String,Object> data = roleService.getUserRoleList();
+//        if (data != null){
+//            return Result.success(data);
+//        }
+        return Result.fail(202,"鐢ㄦ埛鐧诲綍淇℃伅鏃犳晥锛岃閲嶆柊鐧诲綍");
+    }
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
similarity index 66%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
index 69ea1fd..e0b0cc5 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
@@ -1,7 +1,9 @@
 package com.yuanchu.limslaboratory.controller;
 
+import com.yuanchu.limslaboratory.annotation.RequestInfo;
 import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto;
 import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateRoleMenuDto;
 import com.yuanchu.limslaboratory.service.RoleManagerService;
 import com.yuanchu.limslaboratory.vo.Result;
 import io.swagger.annotations.Api;
@@ -24,6 +26,7 @@
 
     @ApiOperation("鑾峰彇鑿滃崟鍔熻兘鏍�")
     @GetMapping("/getMenusTree")
+    @RequestInfo(type = "add",name="ccc")
     public Result<?>getMenusTree() {
       return Result.success(roleManagerService.getMenusTree());
     };
@@ -45,4 +48,22 @@
     public Result<?> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto){
         return Result.success(roleManagerService.getAllRoleAndMenuInfo(dto));
     }
+
+    @ApiOperation("閫昏緫鍒犻櫎瑙掕壊")
+    @GetMapping("/deleteRole")
+    public Result<?> deleteRole(Long id){
+        return Result.success(roleManagerService.deleteRole(id));
+    }
+
+    @ApiOperation("淇敼鏉冮檺")
+    @PostMapping("/updateRoleMenu")
+    public Result<?> updateRoleMenu(@RequestBody UpdateRoleMenuDto dto){
+        return Result.success(roleManagerService.updateRoleMenu(dto));
+    }
+
+    @ApiOperation("/鏍规嵁瑙掕壊鑾峰彇Role")
+    @GetMapping("/getRoleAndMenuByRole")
+    public Result<?> getRoleAndMenuByRole(Long roleId){
+        return Result.success(roleManagerService.getRoleAndMenuByRole(roleId));
+    }
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/controller/UserController.java b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/UserController.java
index 9efad92..a01ef4c 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/controller/UserController.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/UserController.java
@@ -4,18 +4,15 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.clients.UserLoginUtils;
-import com.yuanchu.limslaboratory.pojo.Enterprise;
 import com.yuanchu.limslaboratory.pojo.User;
 import com.yuanchu.limslaboratory.service.UserService;
 import com.yuanchu.limslaboratory.shiro.realm.ShiroRealm;
 import com.yuanchu.limslaboratory.utils.JackSonUtil;
-import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.utils.RedisUtil;
 import com.yuanchu.limslaboratory.utils.SpringUtil;
-import com.yuanchu.limslaboratory.vo.NewPersonnelVo;
-import com.yuanchu.limslaboratory.vo.PagePersonnelVo;
+import com.yuanchu.limslaboratory.pojo.vo.NewPersonnelVo;
 import com.yuanchu.limslaboratory.vo.Result;
-import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo;
+import com.yuanchu.limslaboratory.pojo.vo.UpdatePersonnelVo;
 import io.swagger.annotations.*;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authc.IncorrectCredentialsException;
@@ -135,10 +132,11 @@
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "pageNo", value = "璧峰椤�", dataTypeClass = Integer.class, required = true),
             @ApiImplicitParam(name = "pageSize", value = "姣忎竴椤垫暟閲�", dataTypeClass = Integer.class, required = true),
-            @ApiImplicitParam(name = "name", value = "浜哄憳鍚嶇О", dataTypeClass = String.class)
+            @ApiImplicitParam(name = "name", value = "浜哄憳鍚嶇О", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "status", value = "鍦ㄨ亴鐘舵��", dataTypeClass = Integer.class)
     })
-    public Result<Map<String, Object>> getNewPersonnelPage(Integer pageNo, Integer pageSize, String name) {
-        IPage<PagePersonnelVo> PageList = userService.getNewPersonnelPage(name, new Page<Objects>(pageNo, pageSize));
+    public Result<Map<String, Object>> getNewPersonnelPage(Integer pageNo, Integer pageSize, String name, Integer status) {
+        IPage<Map<String, Object>> PageList = userService.getNewPersonnelPage(name, new Page<Objects>(pageNo, pageSize), status);
         Map<String, Object> map = new HashMap<>();
         map.put("row", PageList.getRecords());
         map.put("total", PageList.getTotal());
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
similarity index 100%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
similarity index 79%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
index e85957b..f0c2e12 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
@@ -1,12 +1,9 @@
 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;
@@ -29,5 +26,11 @@
 
     List<RoleAndMenuDto>selectAllRoleAndMenu(@Param("dto") GetAllRoleAndMenuByConditionPageDto dto);
 
-    List<Role>getRoleByName(@Param("roleName") String roleName);
+    List<RoleInfo>getRoleInfoByName(@Param("roleName") String roleName);
+
+    int updateRoleState(Long id);
+
+    int deleteRoleMenuByRoleId(Long id);
+
+    RoleAndMenuDto selectAllRoleAndMenuByRoleId(Long roleId);
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/UserMapper.java b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/UserMapper.java
index add3f16..27aa78b 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/UserMapper.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/UserMapper.java
@@ -4,14 +4,9 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.pojo.User;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.yuanchu.limslaboratory.vo.PagePersonnelVo;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
 
-import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 
 /**
  * <p>
@@ -24,7 +19,7 @@
 public interface UserMapper extends BaseMapper<User> {
     Map<String, String> selectUserByUserId(int userId);
 
-    IPage<PagePersonnelVo> getNewPersonnelPage(String name, Page page);
+    IPage<Map<String, Object>> getNewPersonnelPage(String name, Page page, Integer status);
 
     List<Map<String,Object>> selectUser();
 
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
similarity index 100%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java
similarity index 100%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
similarity index 94%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
index 2bb7b23..a826b94 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
@@ -26,6 +26,12 @@
 
     private String menuName;
 
+    private String menuUrl;
+
+    private String redirect;
+
+    private String icon;
+
     private Long menuId;
 
     private Boolean selected;
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java
index c6e8d74..26cc155 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java
@@ -78,6 +78,13 @@
     @ApiModelProperty(value = "鍏宠仈 浼佷笟id")
     private Integer enterpriseId;
 
+    @ApiModelProperty(value = "缁勭粐鏋舵瀯Id", example = "2")
+    private Integer organizationId;
+
+    @TableLogic(value = "1", delval = "0")
+    @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0")
+    private Integer state;
+
     public User(String account, String name, String phone, String email, String info) {
         this.account = account;
         this.name = name;
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
similarity index 99%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
index 51285e3..d311511 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
@@ -13,6 +13,7 @@
 @Data
 @ApiModel(value = "GetAllRoleAndMenuByConditionPageDto瀵硅薄", description = "")
 public class GetAllRoleAndMenuByConditionPageDto implements Serializable {
+
     @ApiModelProperty(value = "褰撳墠椤�", example = "1", required = true)
     private Long currentPage;
     @ApiModelProperty(value = "姣忛〉澶氬皯鏉�", required = true)
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
similarity index 96%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
index aa3d4d0..d66e780 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
@@ -16,7 +16,7 @@
 @Data
 public class RoleAndMenuDto implements Serializable {
 
-    private Long  roleId;
+    private String  roleId;
 
     private String roleName;
 
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java
similarity index 100%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateRoleMenuDto.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateRoleMenuDto.java
new file mode 100644
index 0000000..756cce2
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateRoleMenuDto.java
@@ -0,0 +1,27 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import com.yuanchu.limslaboratory.pojo.RoleMenu;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/25
+ */
+@Data
+public class UpdateRoleMenuDto implements Serializable {
+
+    @ApiModelProperty(value = "瑙掕壊ID", required = true)
+    private Long roleId;
+    @ApiModelProperty(value = "瑙掕壊鍚�", required = true)
+    private String roleName;
+    //@ApiModelProperty(value = "淇敼鍓�", required = true)
+    //private List<RoleMenu> lastMenuSelect;
+    @ApiModelProperty(value = "褰撳墠閫夋嫨", required = true)
+    private List<RoleMenu> menuData;
+
+
+}
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/vo/NewPersonnelVo.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/NewPersonnelVo.java
similarity index 87%
rename from user-server/src/main/java/com/yuanchu/limslaboratory/vo/NewPersonnelVo.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/NewPersonnelVo.java
index 4628708..e7b9667 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/vo/NewPersonnelVo.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/NewPersonnelVo.java
@@ -1,4 +1,4 @@
-package com.yuanchu.limslaboratory.vo;
+package com.yuanchu.limslaboratory.pojo.vo;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
@@ -31,4 +31,7 @@
 
     @ApiModelProperty(value = "閭", example = "12345678@qq.com")
     private String email;
+
+    @ApiModelProperty(value = "缁勭粐鏋舵瀯Id", example = "2")
+    private Integer organizationId;
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdatePersonnelVo.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UpdatePersonnelVo.java
similarity index 96%
rename from user-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdatePersonnelVo.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UpdatePersonnelVo.java
index b8a2758..dd75f80 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdatePersonnelVo.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UpdatePersonnelVo.java
@@ -1,4 +1,4 @@
-package com.yuanchu.limslaboratory.vo;
+package com.yuanchu.limslaboratory.pojo.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -36,6 +36,4 @@
 
     @ApiModelProperty(value = "璐﹀彿瀵嗙爜", example = "654321")
     private String password;
-
-
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java b/user-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
similarity index 73%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
index 9fde5f7..c051e02 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
@@ -3,6 +3,7 @@
 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.pojo.dto.UpdateRoleMenuDto;
 
 import java.util.List;
 import java.util.Map;
@@ -19,4 +20,10 @@
     boolean assertRepeat(String roleName);
 
     Map<String, Object> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto);
+
+    boolean deleteRole(Long id);
+
+    boolean updateRoleMenu(UpdateRoleMenuDto dto);
+
+    RoleAndMenuDto getRoleAndMenuByRole(Long roleId);
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java b/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java
index 29107b5..3b7a54e 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java
@@ -4,9 +4,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.pojo.User;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yuanchu.limslaboratory.vo.NewPersonnelVo;
-import com.yuanchu.limslaboratory.vo.PagePersonnelVo;
-import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo;
+import com.yuanchu.limslaboratory.pojo.vo.NewPersonnelVo;
+import com.yuanchu.limslaboratory.pojo.vo.UpdatePersonnelVo;
 
 import java.util.List;
 import java.util.Map;
@@ -50,7 +49,7 @@
      * @param page
      * @return
      */
-    IPage<PagePersonnelVo> getNewPersonnelPage(String name, Page page);
+    IPage<Map<String, Object>> getNewPersonnelPage(String name, Page page, Integer status);
 
     /**
      * 鐧诲綍鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅涓庣郴缁熻秴鏃舵椂闂存彁閱�
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
similarity index 76%
rename from laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
rename to user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
index eedf808..735ee30 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
@@ -2,17 +2,18 @@
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 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.pojo.dto.UpdateRoleMenuDto;
 import com.yuanchu.limslaboratory.service.RoleManagerService;
 import com.yuanchu.limslaboratory.utils.JsonUtil;
 import org.springframework.stereotype.Service;
@@ -87,7 +88,6 @@
         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)))
@@ -99,11 +99,43 @@
         });
         Map<String, Object>result=new HashMap<>(3);
         result.put("list",roleAndMenuDtos);
-        int size = roleManageMapper.getRoleByName(dto.getName()).size();
+        int size = roleManageMapper.getRoleInfoByName(dto.getName()).size();
         result.put("total",size);
         return result;
     }
 
+    @Override
+    public boolean deleteRole(Long id) {
+        return roleManageMapper.updateRoleState(id)>0;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateRoleMenu(UpdateRoleMenuDto dto) {
+        //淇敼role琛ㄤ俊鎭�
+        UpdateWrapper<RoleInfo>updateWrapper=new UpdateWrapper<>();
+        updateWrapper.lambda()
+                        .set(RoleInfo::getName,dto.getRoleName())
+                .set(RoleInfo::getUpdateTime,DateUtil.toLocalDateTime(DateUtil.date()))
+                                .eq(RoleInfo::getId,dto.getRoleId());
+        int update = roleManageMapper.update(null, updateWrapper);
+        //鍒犻櫎role_menu淇℃伅
+        int deleteRoleMenuByRoleId = roleManageMapper.deleteRoleMenuByRoleId(dto.getRoleId());
+        //娣诲姞鏈�鏂伴�夋嫨銆�
+        dto.getMenuData().forEach(l->{
+            l.setRoleId(dto.getRoleId());
+            l.setCreateTime(DateUtil.toLocalDateTime(DateUtil.date()));
+            l.setUpdateTime(DateUtil.toLocalDateTime(DateUtil.date()));
+        });
+        int insertBatchRoleMenu = roleManageMapper.insertBatchRoleMenu(dto.getMenuData());
+        return update>0&&deleteRoleMenuByRoleId>0&&insertBatchRoleMenu>0;
+    }
+
+    @Override
+    public RoleAndMenuDto getRoleAndMenuByRole(Long roleId) {
+        return roleManageMapper.selectAllRoleAndMenuByRoleId(roleId);
+    }
+
 
     private List<Menu> getEnumChildren(Menu root, List<Menu> all) {
         return all.stream()
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
index b3013e4..72e2822 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
@@ -4,14 +4,18 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.mapper.RoleManageMapper;
+import com.yuanchu.limslaboratory.pojo.RoleMenu;
 import com.yuanchu.limslaboratory.pojo.User;
 import com.yuanchu.limslaboratory.mapper.UserMapper;
+import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto;
 import com.yuanchu.limslaboratory.service.UserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.limslaboratory.utils.JackSonUtil;
+import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.utils.RedisUtil;
-import com.yuanchu.limslaboratory.vo.NewPersonnelVo;
-import com.yuanchu.limslaboratory.vo.PagePersonnelVo;
-import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo;
+import com.yuanchu.limslaboratory.pojo.vo.NewPersonnelVo;
+import com.yuanchu.limslaboratory.pojo.vo.UpdatePersonnelVo;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
@@ -19,6 +23,8 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -33,6 +39,9 @@
 
     @Resource
     private UserMapper userMapper;
+
+    @Resource
+    private RoleManageMapper roleManageMapper;
 
     @Override
     public Map<String, Object> getUserInfo(String token) {
@@ -51,6 +60,11 @@
             data.put("name",loginUser.get("name"));
             data.put("id",loginUser.get("id"));
             data.put("remind", remind);
+            RoleAndMenuDto role = getRoleInfo(Long.valueOf(String.valueOf(loginUser.get("roleId"))));
+            System.out.println("+++++++++++++++++++++++++++++++++++++++++++++");
+            System.out.println(role);
+            System.out.println("++++++++++++++++++++++++++++++++++++++++++++++");
+            data.put("role",role);
             return data;
         }
         return null;
@@ -95,22 +109,19 @@
     public User AccordingUsernameSelectAll(String account) {
         LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(User::getAccount, account);
-        wrapper.select(User::getPassword, User::getId, User::getName, User::getAccount, User::getEnterpriseId);
+        wrapper.select(User::getPassword, User::getRoleId,User::getId, User::getName, User::getAccount, User::getEnterpriseId);
         return userMapper.selectOne(wrapper);
     }
 
     @Override
     public Integer addNewPersonnel(NewPersonnelVo newPersonnelVo, String enterpriseId) {
-        User user = new User()
-                .setName(newPersonnelVo.getName())
-                .setAccount(newPersonnelVo.getAccount())
-                .setAge(String.valueOf(newPersonnelVo.getAge()))
-                .setPhone(newPersonnelVo.getPhone())
-                .setEmail(newPersonnelVo.getEmail())
-                .setRoleId(newPersonnelVo.getRole_id())
-                .setPassword(newPersonnelVo.getPassword())
-                .setEnterpriseId(Integer.valueOf(enterpriseId));
-        return userMapper.insert(user);
+        try {
+            User unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(newPersonnelVo), User.class);
+            unmarshal.setEnterpriseId(Integer.valueOf(enterpriseId));
+            return userMapper.insert(unmarshal);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
     @Override
@@ -130,7 +141,31 @@
     }
 
     @Override
-    public IPage<PagePersonnelVo> getNewPersonnelPage(String name, Page page) {
-        return userMapper.getNewPersonnelPage(name, page);
+    public IPage<Map<String, Object>> getNewPersonnelPage(String name, Page page, Integer status) {
+        MyUtil.PrintLog(name + status + "=============");
+        return userMapper.getNewPersonnelPage(name, page, status);
+    }
+
+
+    public RoleAndMenuDto getRoleInfo(Long roleId) {
+        RoleAndMenuDto roleAndMenuDto = roleManageMapper.selectAllRoleAndMenuByRoleId(roleId);
+        List<RoleMenu> collect = roleAndMenuDto.getRoleMenuList()
+                .stream()
+                .filter(t -> t.getParentId() == 0)
+                .peek((menu) -> menu.setChildren(this.getRoleMenuChildren(menu, roleAndMenuDto.getRoleMenuList())))
+                .collect(Collectors.toList());
+        roleAndMenuDto.setRoleMenuList(collect);
+        return roleAndMenuDto;
+    }
+
+
+    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());
     }
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/vo/PagePersonnelVo.java b/user-server/src/main/java/com/yuanchu/limslaboratory/vo/PagePersonnelVo.java
deleted file mode 100644
index ec6866e..0000000
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/vo/PagePersonnelVo.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.yuanchu.limslaboratory.vo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.Date;
-
-@Data
-@EqualsAndHashCode(callSuper = false)
-@ApiModel(value="UpdatePersonnelVo瀵硅薄", description="鐢ㄤ簬瀵硅鑹茬鐞嗙殑鏇存柊")
-public class PagePersonnelVo {
-
-    @ApiModelProperty(value = "涓婚敭ID", example = "1", required = true)
-    private String id;
-
-    @ApiModelProperty(value = "濮撳悕", example = "灏忛粦", required = true)
-    private String username;
-
-    @ApiModelProperty(value = "瑙掕壊鏉冮檺", example = "灏忛粦", required = true)
-    private String roleName;
-
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
-    private Date createTime;
-
-    @ApiModelProperty(value = "骞撮緞", example = "23")
-    private String age;
-
-    @ApiModelProperty(value = "鎵嬫満鍙�", example = "12345678981")
-    private String phone;
-
-    @ApiModelProperty(value = "閭", example = "12345678@qq.com")
-    private String email;
-
-    @ApiModelProperty(value = "鍦ㄨ亴鐘舵�� 姝e父>=1,绂昏亴<=0", example = "0")
-    private Integer jobState;
-}
diff --git a/laboratory-server/src/main/resources/mapper/MenuMapper.xml b/user-server/src/main/resources/mapper/MenuMapper.xml
similarity index 100%
rename from laboratory-server/src/main/resources/mapper/MenuMapper.xml
rename to user-server/src/main/resources/mapper/MenuMapper.xml
diff --git a/user-server/src/main/resources/mapper/RoleManangeMapper.xml b/user-server/src/main/resources/mapper/RoleManangeMapper.xml
new file mode 100644
index 0000000..f2d1cc1
--- /dev/null
+++ b/user-server/src/main/resources/mapper/RoleManangeMapper.xml
@@ -0,0 +1,127 @@
+<?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>
+    <update id="updateRoleState">
+        UPDATE role SET state = 0 WHERE (id = #{id})
+    </update>
+    <delete id="deleteRoleMenuByRoleId">
+        delete from role_menu where role_id =#{id}
+    </delete>
+    <select id="getAssertName" resultType="com.yuanchu.limslaboratory.pojo.RoleInfo">
+        select id
+        from role
+        where name = #{roleName}
+        and state=1
+    </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, create_Time, update_Time,state
+        from role
+        where 1=1
+        <if test="dto.name!=null and dto.name!=''">
+            and name like CONCAT('%',#{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="getRoleInfoByName" resultType="com.yuanchu.limslaboratory.pojo.RoleInfo">
+        select id
+        from role
+        where 1=1
+          and state=1
+        <if test="roleName!=null and roleName!=''">
+            and name like CONCAT('%',#{roleName},'%')
+        </if>
+    </select>
+    <select id="selectAllRoleAndMenuByRoleId" resultMap="roleAndMenuById">
+        SELECT
+            r.`name` roleName,
+            menu_id menuId,
+            parent_id parentId,
+            m.`name` menuName,
+            m.url menuUrl,
+--             m.redirect redirect,
+--             m.icon icon,
+            rm.selected,
+            rm.added,
+            rm.updated,
+            rm.deleted
+        FROM
+            role_menu rm,
+            role 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
+        and r.id=#{roleId}
+    </select>
+
+    <resultMap id="roleAndMenuById" type="com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto">
+        <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="menuUrl" column="menuUrl"/>
+            <result property="redirect" column="redirect"/>
+            <result property="icon" column="icon"/>
+            <result property="parentId" column="parentId"/>
+        </collection>
+    </resultMap>
+
+    <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
diff --git a/user-server/src/main/resources/mapper/UserMapper.xml b/user-server/src/main/resources/mapper/UserMapper.xml
index 8220b5a..039f57c 100644
--- a/user-server/src/main/resources/mapper/UserMapper.xml
+++ b/user-server/src/main/resources/mapper/UserMapper.xml
@@ -17,24 +17,23 @@
           AND u.id = #{userId}
     </select>
 
-    <resultMap id="PagePersonnelVoMap" type="com.yuanchu.limslaboratory.vo.PagePersonnelVo">
-        <result property="id" column="id"/>
-        <result property="username" column="username"/>
-        <result property="roleName" column="roleName"/>
-        <result property="createTime" column="create_time"/>
-        <result property="age" column="age"/>
-        <result property="phone" column="phone"/>
-        <result property="email" column="email"/>
-        <result property="jobState" column="job_state"/>
-    </resultMap>
-    <select id="getNewPersonnelPage" resultMap="PagePersonnelVoMap">
-        SELECT u.`id`, u.`name` username, r.`name` roleName, u.`create_time`, IFNULL(u.`age`, '---') age,
-        IFNULL(u.`phone`, '---') phone, IFNULL(u.`email`, '---') email, u.`job_state`
-        FROM `user` u, role r
-        WHERE u.`role_id` = r.`id`
-        <if test="name != null and name!=''">
-            AND u.name = #{name}
+
+    <select id="getNewPersonnelPage" resultType="map">
+        SELECT u.`id`, u.`name` username, r.`name` roleName, DATE_FORMAT(u.`create_time`, '%Y-%m-%d') createTime, u.`age`,
+        u.`phone`, u.`email`, u.`job_state` jobState, o.`department`, u.`account`, o.`id` departmentId
+        FROM `user` u
+        LEFT JOIN role r
+        ON u.`role_id` = r.`id` AND r.`state` = 1
+        LEFT JOIN organizational o
+        ON u.`organization_id` = o.`id` AND o.`state` = 1
+        WHERE u.`state` = 1
+        <if test="name != null and name != ''">
+            AND u.`name` LIKE CONCAT('%',#{name}, '%')
         </if>
+        <if test="status != null">
+            AND u.`job_state` in (#{status})
+        </if>
+        ORDER BY u.`create_time` DESC
     </select>
 
     <select id="selectUser" resultType="Map">

--
Gitblit v1.9.3