瀏覽代碼

update 修改原有框架用户、部门为多租户模式
add 新增医院接口
add 新增单元测试范例
update 修改多租户逻辑配置、swagger扫描包配置

18339543638 3 年之前
父節點
當前提交
d3de108811
共有 24 個文件被更改,包括 324 次插入26 次删除
  1. 9 0
      coffee-admin/pom.xml
  2. 30 0
      coffee-admin/src/main/test/java/com/coffee/admin/SpringBootApplicationTests.java
  3. 10 0
      coffee-common/src/main/java/com/coffee/common/bo/LoginUser.java
  4. 4 0
      coffee-common/src/main/java/com/coffee/common/bo/SysUserBO.java
  5. 3 2
      coffee-common/src/main/java/com/coffee/common/crud/controller/BaseQueryController.java
  6. 2 0
      coffee-common/src/main/java/com/coffee/common/entity/GenericEntity.java
  7. 23 0
      coffee-common/src/main/java/com/coffee/common/entity/GenericTreeEntity.java
  8. 2 0
      coffee-framework/src/main/java/com/coffee/framework/config/SaTokenConfig.java
  9. 15 0
      coffee-framework/src/main/java/com/coffee/framework/config/SwaggerConfig.java
  10. 15 7
      coffee-framework/src/main/java/com/coffee/framework/config/mybatisplus/MybatisPlusConfig.java
  11. 6 3
      coffee-framework/src/main/java/com/coffee/framework/config/mybatisplus/TenantIdManager.java
  12. 2 0
      coffee-framework/src/main/java/com/coffee/framework/test/controller/TestController.java
  13. 0 1
      coffee-framework/src/main/java/com/coffee/framework/test/entity/Test.java
  14. 2 0
      coffee-framework/src/main/java/com/coffee/framework/web/service/impl/UserServiceImpl.java
  15. 41 0
      coffee-system/src/main/java/com/coffee/bus/controller/BusHospitalController.java
  16. 69 0
      coffee-system/src/main/java/com/coffee/bus/entity/BusHospitalEntity.java
  17. 16 0
      coffee-system/src/main/java/com/coffee/bus/mapper/BusHospitalMapper.java
  18. 31 0
      coffee-system/src/main/java/com/coffee/bus/service/LocalBusHospitalService.java
  19. 6 0
      coffee-system/src/main/java/com/coffee/system/common/dto/SysUserEditDTO.java
  20. 2 0
      coffee-system/src/main/java/com/coffee/system/common/vo/UserInfoVO.java
  21. 4 7
      coffee-system/src/main/java/com/coffee/system/entity/SysDept.java
  22. 12 6
      coffee-system/src/main/java/com/coffee/system/entity/SysUser.java
  23. 19 0
      coffee-system/src/main/java/com/coffee/system/service/impl/SysUserServiceImpl.java
  24. 1 0
      pom.xml

+ 9 - 0
coffee-admin/pom.xml

@@ -22,6 +22,15 @@
             <groupId>com.coffee</groupId>
             <artifactId>coffee-oss</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 30 - 0
coffee-admin/src/main/test/java/com/coffee/admin/SpringBootApplicationTests.java

@@ -0,0 +1,30 @@
+package com.coffee.admin;
+
+import com.coffee.framework.test.controller.TestController;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName SpringBootApplicationTests.java
+ * @Description TODO
+ * @createTime 2022年03月17日 13:50:00
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AdminApplication.class)
+public class SpringBootApplicationTests {
+
+    @Autowired
+    public TestController testController;
+
+    @Test
+    public void init(){
+        long count = testController.getService().count();
+        Assert.assertEquals(count,1);
+    }
+}

+ 10 - 0
coffee-common/src/main/java/com/coffee/common/bo/LoginUser.java

@@ -74,4 +74,14 @@ public class LoginUser implements Serializable {
      */
     private Set<String> permissions;
 
+    /**
+     * (医院)租户id
+     **/
+    private String tenantId;
+
+    /**
+     * 是否为系统级别用户
+     *
+     **/
+    private Integer isSys;
 }

+ 4 - 0
coffee-common/src/main/java/com/coffee/common/bo/SysUserBO.java

@@ -103,4 +103,8 @@ public class SysUserBO implements Serializable {
      */
     private List<SysRoleBO> roles;
 
+    /**
+     * (医院)租户id
+     **/
+    private String tenantId;
 }

+ 3 - 2
coffee-common/src/main/java/com/coffee/common/crud/controller/BaseQueryController.java

@@ -1,5 +1,6 @@
 package com.coffee.common.crud.controller;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
@@ -40,9 +41,9 @@ public interface BaseQueryController<E, K extends Serializable> extends
 
     @PostMapping("/_count")
     @Operation(summary = "使用POST方式查询总数")
-    default R<Long> count(@Parameter(hidden = true) @RequestBody QueryParamEntity<E> query) {
+    default R<Long> count(@Parameter(hidden = true) @RequestBody(required = false) QueryParamEntity<E> query) {
         queryAuth();
-        return R.success(this.getService().count(query));
+        return R.success(ObjectUtil.isNull(query)?this.getService().count():this.getService().count(query));
     }
 
 

+ 2 - 0
coffee-common/src/main/java/com/coffee/common/entity/GenericEntity.java

@@ -3,11 +3,13 @@ package com.coffee.common.entity;
 import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
+import lombok.Setter;
 
 
 public abstract class  GenericEntity<PK> implements Entity {
     @TableId
     @Schema(description = "id")
     @Getter
+    @Setter
     private PK id;
 }

+ 23 - 0
coffee-common/src/main/java/com/coffee/common/entity/GenericTreeEntity.java

@@ -0,0 +1,23 @@
+package com.coffee.common.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import java.util.*;
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName GenericTreeEntity.java
+ * @Description 树结构基类
+ * @createTime 2022年03月17日 20:57:00
+ */
+@Data
+public abstract class GenericTreeEntity<PK> extends GenericEntity<PK> {
+    @TableField("parent_id")
+    private PK parentId;
+
+    @TableField("sort")
+    private Integer sort;
+
+    @TableField(exist = false)
+    private List<? super GenericTreeEntity<PK>> children;
+}

+ 2 - 0
coffee-framework/src/main/java/com/coffee/framework/config/SaTokenConfig.java

@@ -37,6 +37,8 @@ public class SaTokenConfig implements WebMvcConfigurer {
         IGNORE_URL.add("/v2/api-docs");
 
         IGNORE_URL.add("/system/curl/**");
+
+        IGNORE_URL.add("/system/sysDept/**");
     }
 
     @Override

+ 15 - 0
coffee-framework/src/main/java/com/coffee/framework/config/SwaggerConfig.java

@@ -49,6 +49,21 @@ public class SwaggerConfig implements WebMvcConfigurer {
                 .enable(true);
     }
 
+    @Bean
+    public Docket bus(){
+        return new Docket(DocumentationType.SWAGGER_2)
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.coffee.bus"))
+                .paths(PathSelectors.any())
+                .build()
+                .groupName("业务模块")
+                .apiInfo(apiInfo())
+                .securitySchemes(security())
+                .securityContexts(securityContexts())
+                .enable(true);
+    }
+
+
     @Bean
     public Docket admin(){
         return new Docket(DocumentationType.SWAGGER_2)

+ 15 - 7
coffee-framework/src/main/java/com/coffee/framework/config/mybatisplus/MybatisPlusConfig.java

@@ -1,5 +1,7 @@
 package com.coffee.framework.config.mybatisplus;
 
+import cn.dev33.satoken.session.SaSession;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ClassUtil;
@@ -14,25 +16,21 @@ import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionIntercepto
 import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
+import com.coffee.common.Constants;
+import com.coffee.common.bo.LoginUser;
 import com.coffee.common.entity.TenantGenericEntity;
 import com.coffee.framework.config.mybatisplus.handler.CreateAndUpdateMetaObjectHandler;
 import com.coffee.framework.config.mybatisplus.handler.CustomDataPermissionHandler;
-import lombok.AllArgsConstructor;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.StringValue;
 import net.sf.jsqlparser.schema.Column;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.annotation.PostConstruct;
-import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -69,6 +67,7 @@ public class MybatisPlusConfig {
                             .collect(Collectors.toSet());
         }
         ignoreTableName = Optional.ofNullable(ignoreTableName).orElse(new HashSet<>());
+        //兼容框架已有entity
         ignoreTableName.addAll(classes
                 .stream()
                 .filter(aClass -> ObjectUtil.isNull(aClass.getAnnotation(TableName.class)))
@@ -132,7 +131,7 @@ public class MybatisPlusConfig {
 
             @Override
             public String getTenantIdColumn() {
-                return null;
+                return "tenant_id";
             }
 
             @Override
@@ -142,6 +141,15 @@ public class MybatisPlusConfig {
                 if(request==null){
                     return true;
                 }
+                StringBuffer url = request.getRequest().getRequestURL();
+                if(url.toString().endsWith("/login")){
+                    return true;
+                }
+                //判断当前有用户是否为系统级用户,若是,则忽略逻辑隔离
+                LoginUser loginUser = (LoginUser) StpUtil.getTokenSession().get(Constants.LOGIN_USER_KEY);
+                if(1==loginUser.getIsSys()){
+                    return true;
+                }
                 return CollectionUtil.isEmpty(ignoreTableName)||ignoreTableName.contains(tableName);
             }
 

+ 6 - 3
coffee-framework/src/main/java/com/coffee/framework/config/mybatisplus/TenantIdManager.java

@@ -1,6 +1,5 @@
 package com.coffee.framework.config.mybatisplus;
 
-import cn.dev33.satoken.spring.SpringMVCUtil;
 import cn.dev33.satoken.stp.StpUtil;
 import com.coffee.common.Constants;
 import com.coffee.common.bo.LoginUser;
@@ -8,7 +7,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
-import javax.servlet.http.HttpServletRequest;
+import java.util.Optional;
 
 /**
  * 管理当前用户的租户ID
@@ -25,8 +24,12 @@ public class TenantIdManager {
         if(request==null){
             return "";
         }
+        StringBuffer url = request.getRequest().getRequestURL();
+        if(url.toString().endsWith("/login")){
+            return "";
+        }
         LoginUser loginUser = (LoginUser) StpUtil.getTokenSession().get(Constants.LOGIN_USER_KEY);
-        return  loginUser.getSysUser().getDeptId();
+        return Optional.ofNullable(loginUser.getSysUser().getTenantId()).orElse("");
     }
 
 }

+ 2 - 0
coffee-framework/src/main/java/com/coffee/framework/test/controller/TestController.java

@@ -43,4 +43,6 @@ public class TestController extends BaseCrudController<Test,String> {
         return service;
     }
 
+
+
 }

+ 0 - 1
coffee-framework/src/main/java/com/coffee/framework/test/entity/Test.java

@@ -22,7 +22,6 @@ import java.util.Date;
 public class Test extends GenericEntity<String> implements RecordCreationEntity, RecordModifierEntity {
 
     @Override
-
     public String getId() {
         return super.getId();
     }

+ 2 - 0
coffee-framework/src/main/java/com/coffee/framework/web/service/impl/UserServiceImpl.java

@@ -133,6 +133,7 @@ public class UserServiceImpl implements IUserService {
         loginUser.setUserPlatform(UserPlatformEnum.WEB.getCode());
         loginUser.setGrantType(req.getGrantType());
         loginUser.setSysUser(sysUserBO);
+        loginUser.setIsSys(sysUser.getIsSys());
         if (req.getGrantType().equals(GrantTypeEnum.USERNAME_PASSWORD.getCode())) {
             loginUser.setUsername(req.getUsername());
         }
@@ -171,6 +172,7 @@ public class UserServiceImpl implements IUserService {
         userInfoVO.setAvatar(sysUser.getAvatar());
         userInfoVO.setDesc(sysUser.getRemarks());
         userInfoVO.setRoles(roleInfoVOList);
+        userInfoVO.setIsSys(sysUser.getIsSys());
         return userInfoVO;
     }
 

+ 41 - 0
coffee-system/src/main/java/com/coffee/bus/controller/BusHospitalController.java

@@ -0,0 +1,41 @@
+package com.coffee.bus.controller;
+
+import com.baomidou.mybatisplus.core.mapper.Mapper;
+import com.coffee.bus.entity.BusHospitalEntity;
+import com.coffee.bus.service.LocalBusHospitalService;
+import com.coffee.common.crud.BaseService;
+import com.coffee.common.crud.controller.BaseCrudController;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName BusHospitalController.java
+ * @Description TODO
+ * @createTime 2022年03月19日 09:28:00
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/bus/hospital")
+@Api(tags = "医院管理",description = "统一权限前缀(bus:hospital),例如新增bus:hospital:add")
+public class BusHospitalController extends BaseCrudController<BusHospitalEntity, String> {
+    private final LocalBusHospitalService hospitalService;
+
+
+    /**
+     * 权限控制前缀
+     * @return
+     */
+    @Override
+    public String getPermissionPrefix() {
+        return "bus:hospital";
+    }
+
+    @Override
+    public BaseService<? extends Mapper<BusHospitalEntity>, BusHospitalEntity, String> getService() {
+        return hospitalService;
+    }
+}

+ 69 - 0
coffee-system/src/main/java/com/coffee/bus/entity/BusHospitalEntity.java

@@ -0,0 +1,69 @@
+package com.coffee.bus.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.coffee.common.entity.GenericEntity;
+import com.coffee.common.entity.RecordCreationEntity;
+import com.coffee.common.entity.RecordModifierEntity;
+import io.lettuce.core.GeoCoordinates;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName BusHospitalEntity.java
+ * @Description TODO
+ * @createTime 2022年03月19日 09:15:00
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("bus_hospital")
+public class BusHospitalEntity extends GenericEntity<String> implements RecordModifierEntity, RecordCreationEntity {
+
+
+    /**
+     * 医院所在区域编码
+     */
+    private String areaCode;
+
+    /**
+     * 医院地址
+     */
+    private String address;
+
+    /**
+     * 医院名称
+     */
+    private String name;
+
+    /**
+     * 联系电话
+     */
+    private String telephone;
+
+    /**
+     * 邮箱联系地址
+     */
+    private String email;
+
+    /**
+     * 经纬度坐标
+     */
+    @TableField(typeHandler = FastjsonTypeHandler.class )
+    private GeoPoint coordinate;
+
+    private String createBy;
+    private String updateBy;
+    private Date createTime;
+    private Date updateTime;
+
+    @Data
+    private static class  GeoPoint{
+        private String lon;
+        private String lat;
+    }
+}

+ 16 - 0
coffee-system/src/main/java/com/coffee/bus/mapper/BusHospitalMapper.java

@@ -0,0 +1,16 @@
+package com.coffee.bus.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.coffee.bus.entity.BusHospitalEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName BusHospitalMapper.java
+ * @Description TODO
+ * @createTime 2022年03月19日 09:15:00
+ */
+@Mapper
+public interface BusHospitalMapper extends BaseMapper<BusHospitalEntity> {
+}

+ 31 - 0
coffee-system/src/main/java/com/coffee/bus/service/LocalBusHospitalService.java

@@ -0,0 +1,31 @@
+package com.coffee.bus.service;
+
+import com.coffee.bus.entity.BusHospitalEntity;
+import com.coffee.bus.mapper.BusHospitalMapper;
+import com.coffee.common.crud.BaseService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName LocalBusHospitalService.java
+ * @Description TODO
+ * @createTime 2022年03月19日 09:27:00
+ */
+@Service
+public class LocalBusHospitalService extends BaseService<BusHospitalMapper, BusHospitalEntity,String> {
+    @Override
+    public void validateBeforeSave(BusHospitalEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeUpdate(BusHospitalEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeDelete(String id) {
+
+    }
+}

+ 6 - 0
coffee-system/src/main/java/com/coffee/system/common/dto/SysUserEditDTO.java

@@ -120,6 +120,12 @@ public class SysUserEditDTO implements Serializable {
     @NotBlank(message = "状态不能为空")
     private String status;
 
+    /**
+     * 状态 0否;1是
+     */
+    @NotBlank(message = "是否为系统级别用户")
+    private Boolean isSys;
+
     /**
      * 岗位组
      */

+ 2 - 0
coffee-system/src/main/java/com/coffee/system/common/vo/UserInfoVO.java

@@ -25,7 +25,9 @@ public class UserInfoVO implements Serializable {
 
     private String desc;
 
+    private String tenantId;
 
     private List<RoleInfoVO> roles;
 
+    private Integer isSys;
 }

+ 4 - 7
coffee-system/src/main/java/com/coffee/system/entity/SysDept.java

@@ -2,6 +2,8 @@ package com.coffee.system.entity;
 
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.coffee.common.entity.TenantGenericEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -20,16 +22,11 @@ import java.util.List;
  * @since 2021-06-10
  */
 @Data
-public class SysDept implements Serializable {
+//@TableName("sys_dept")
+public class SysDept extends TenantGenericEntity<Long,String>{
 
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 主键
-     */
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long id;
-
     /**
      * 父部门ID
      */

+ 12 - 6
coffee-system/src/main/java/com/coffee/system/entity/SysUser.java

@@ -6,12 +6,16 @@ import com.alibaba.excel.annotation.write.style.*;
 import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.coffee.common.annotation.ExcelDict;
 import com.coffee.common.convert.ExcelDictConverter;
+import com.coffee.common.entity.TenantGenericEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.models.auth.In;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -35,16 +39,13 @@ import java.util.List;
 @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER)
 @ContentFontStyle(fontHeightInPoints = 10)
 @ExcelIgnoreUnannotated
-public class SysUser implements Serializable {
+@TableName("sys_user")
+public class SysUser  {
 
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 主键
-     */
-    @JsonSerialize(using = ToStringSerializer.class)
+    @TableId
     private Long id;
-
     /**
      * 账号
      */
@@ -202,4 +203,9 @@ public class SysUser implements Serializable {
     @TableField(exist = false)
     private List<String> roleIds;
 
+    /**
+     * 是否为系统级别用户
+     *  0、否  1、是
+     **/
+    private Integer isSys;
 }

+ 19 - 0
coffee-system/src/main/java/com/coffee/system/service/impl/SysUserServiceImpl.java

@@ -1,5 +1,8 @@
 package com.coffee.system.service.impl;
 
+import cn.dev33.satoken.SaManager;
+import cn.dev33.satoken.exception.NotLoginException;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -7,6 +10,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.coffee.common.Constants;
+import com.coffee.common.bo.LoginUser;
 import com.coffee.common.enums.DelFlagEnum;
 import com.coffee.common.enums.StatusEnum;
 import com.coffee.common.enums.YesNoEnum;
@@ -168,6 +173,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (!this.checkUniqueStaffNumber(req.getStaffNumber(), req.getId())) {
             throw new CustomException("工号已存在");
         }
+        if(Boolean.TRUE.equals(req.getIsSys())){
+            try {
+                LoginUser loginUser = (LoginUser) StpUtil.getSession().get(Constants.LOGIN_USER_KEY);
+                if(!Boolean.TRUE.equals(loginUser.getIsSys())){
+                    throw new CustomException("当前用户没有操作系统级别用户的权限");
+                }
+            }catch (Exception e){
+                StpUtil.logout();
+                throw NotLoginException.newInstance("", NotLoginException.DEFAULT_MESSAGE);
+            }
+        }
         // 当前用户不是超级管理员,不允许修改
         if (!SecurityUtil.getSysUser().getId().equals(req.getId()) && SecurityUtil.isSuperAdmin(req.getId())) {
             throw new CustomException("超管账户不允许修改");
@@ -217,6 +233,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     public SysUser view(String id) {
         SysUser sysUser = this.getById(id);
+        if(sysUser==null){
+            throw new CustomException("查询用户不存在");
+        }
         List<SysUserRole> sysUserRoleList = sysUserRoleService.list(Wrappers.lambdaQuery(SysUserRole.class)
                 .eq(SysUserRole::getUserId, sysUser.getId()));
         sysUser.setRoleIds(sysUserRoleList.stream().map(item2 -> item2.getRoleId().toString()).collect(Collectors.toList()));

+ 1 - 0
pom.xml

@@ -240,6 +240,7 @@
         </pluginManagement>
     </build>
 
+
     <profiles>
         <profile>
             <id>dev</id>