zss
2023-08-26 6984757bfc75b4a25014de1eb71c2aa75ebdb86f
Merge remote-tracking branch 'origin/master'

# Conflicts:
# user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/NewPersonnelVo.java
已修改19个文件
已重命名14个文件
已删除2个文件
已添加9个文件
1034 ■■■■ 文件已修改
framework/pom.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/annotation/RequestInfo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/controllerServerApi/LaboratoryServerApi.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnum.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/exception/AuthException.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/utils/HttpUtils.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/OrganizationalController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/OrganizationalMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Organizational.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/OrganizationalService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/OrganizationalServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/MaterialMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/OrganizationalMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/ProductMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sys/src/main/resources/application-dev.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/clients/UserLoginUtils.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/controller/UserController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/UserMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateRoleMenuDto.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/NewPersonnelVo.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UpdatePersonnelVo.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/vo/PagePersonnelVo.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/MenuMapper.xml 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/RoleManangeMapper.xml 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/UserMapper.xml 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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() ;
}
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);
    }
}
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,"正太分布图"),
    work(28L,"工作统计"),
    message(29L,"消息代办"),
    messages(30L,"我的消息"),
    toDo(31L,"我的代办"),
    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;
    }
}
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() {
    }
}
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,"无权限");
    }
}
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 "";
        }
    }
}
laboratory-server/src/main/resources/mapper/RoleManangeMapper.xml
ÎļþÒÑɾ³ý
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("删除成功!");
    }
}
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);
}
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;
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);
}
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);
    }
}
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>
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>
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>
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","无权限");
    }
}
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访问密码(默认为空)
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>
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);
//    }
}
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,"用户登录信息无效,请重新登录");
    }
}
user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
ÎļþÃû´Ó laboratory-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));
    }
}
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());
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
ÎļþÃû´Ó laboratory-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);
}
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();
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleInfo.java
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java
ÎļþÃû´Ó laboratory-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;
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 = "逻辑删除 æ­£å¸¸>=1,删除<=0")
    private Integer state;
    public User(String account, String name, String phone, String email, String info) {
        this.account = account;
        this.name = name;
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java
ÎļþÃû´Ó laboratory-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)
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java
ÎļþÃû´Ó laboratory-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;
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleInfoDto.java
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;
}
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/NewPersonnelVo.java
ÎļþÃû´Ó user-server/src/main/java/com/yuanchu/limslaboratory/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;
}
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UpdatePersonnelVo.java
ÎļþÃû´Ó user-server/src/main/java/com/yuanchu/limslaboratory/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;
}
user-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
ÎļþÃû´Ó laboratory-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);
}
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);
    /**
     * ç™»å½•获取用户基本信息与系统超时时间提醒
user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
ÎļþÃû´Ó laboratory-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()
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());
    }
}
user-server/src/main/java/com/yuanchu/limslaboratory/vo/PagePersonnelVo.java
ÎļþÒÑɾ³ý
user-server/src/main/resources/mapper/MenuMapper.xml
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>
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">