Explorar o código

fix 修复提醒查询sql问题
update 将授权代码单独提取成模块,便于后续开发

A17404李放 %!s(int64=3) %!d(string=hai) anos
pai
achega
59fd863c39
Modificáronse 100 ficheiros con 2305 adicións e 1317 borrados
  1. 3 7
      nb-admin/src/main/java/com/nb/admin/controller/common/CommonController.java
  2. 4 5
      nb-admin/src/main/java/com/nb/admin/controller/monitor/OnlineUserController.java
  3. 120 120
      nb-admin/src/main/java/com/nb/admin/controller/system/SysLoginController.java
  4. 22 2
      nb-auth/pom.xml
  5. 29 0
      nb-auth/src/main/java/com/nb/auth/bean/AuthInfo.java
  6. 92 0
      nb-auth/src/main/java/com/nb/auth/bean/LoginUser.java
  7. 40 0
      nb-auth/src/main/java/com/nb/auth/bean/SysRoleInfo.java
  8. 116 1
      nb-auth/src/main/java/com/nb/auth/controller/AuthController.java
  9. 45 0
      nb-auth/src/main/java/com/nb/auth/enums/GrantTypeEnum.java
  10. 54 0
      nb-auth/src/main/java/com/nb/auth/granter/IAccountOperator.java
  11. 70 0
      nb-auth/src/main/java/com/nb/auth/granter/IAuthGranter.java
  12. 9 4
      nb-auth/src/main/java/com/nb/auth/granter/TokenParameter.java
  13. 51 0
      nb-auth/src/main/java/com/nb/auth/utils/AddressUtil.java
  14. 53 0
      nb-auth/src/main/java/com/nb/auth/utils/IpUtil.java
  15. 111 0
      nb-auth/src/main/java/com/nb/auth/utils/SecurityUtil.java
  16. 62 0
      nb-auth/src/main/java/com/nb/auth/vo/AccountInfoVO.java
  17. 17 0
      nb-auth/src/main/java/com/nb/auth/vo/BaseTemplateVO.java
  18. 21 0
      nb-auth/src/main/java/com/nb/auth/vo/RoleInfoVO.java
  19. 30 0
      nb-auth/src/main/java/com/nb/auth/vo/RouteItemVO.java
  20. 49 0
      nb-auth/src/main/java/com/nb/auth/vo/RouteMetoVO.java
  21. 35 0
      nb-auth/src/main/java/com/nb/auth/vo/UserInfoVO.java
  22. 1 1
      nb-codegen/src/main/resources/templates/controller.java.vm
  23. 8 0
      nb-common/pom.xml
  24. 3 3
      nb-common/src/main/java/com/nb/common/aspect/DataSourceAspect.java
  25. 1 1
      nb-common/src/main/java/com/nb/common/aspect/DemoModelAspect.java
  26. 90 90
      nb-common/src/main/java/com/nb/common/bo/LoginUser.java
  27. 24 24
      nb-common/src/main/java/com/nb/common/bo/SysApplyBO.java
  28. 112 112
      nb-common/src/main/java/com/nb/common/bo/SysUserBO.java
  29. 3 3
      nb-common/src/main/java/com/nb/common/config/web/handler/CheckRequestHandler.java
  30. 3 3
      nb-common/src/main/java/com/nb/common/config/web/handler/TenantIdHandler.java
  31. 1 1
      nb-common/src/main/java/com/nb/common/config/websocket/handler/Subscribe.java
  32. 1 1
      nb-common/src/main/java/com/nb/common/convert/ExcelDictConverter.java
  33. 5 5
      nb-common/src/main/java/com/nb/common/crud/BaseService.java
  34. 1 1
      nb-common/src/main/java/com/nb/common/crud/controller/BaseDeleteController.java
  35. 1 1
      nb-common/src/main/java/com/nb/common/crud/controller/BaseQueryController.java
  36. 1 3
      nb-common/src/main/java/com/nb/common/crud/controller/BaseSaveController.java
  37. 36 0
      nb-common/src/main/java/com/nb/common/dto/TokenParameter.java
  38. 1 1
      nb-common/src/main/java/com/nb/common/util/FileUtil.java
  39. 1 1
      nb-common/src/main/java/com/nb/common/util/MinioUtil.java
  40. 118 111
      nb-common/src/main/java/com/nb/common/util/SecurityUtil.java
  41. 39 0
      nb-core/pom.xml
  42. 1 1
      nb-core/src/main/java/com/nb/core/annotation/DataScope.java
  43. 2 2
      nb-core/src/main/java/com/nb/core/annotation/DataSource.java
  44. 1 1
      nb-core/src/main/java/com/nb/core/annotation/ExcelDict.java
  45. 1 1
      nb-core/src/main/java/com/nb/core/annotation/IgnoreToken.java
  46. 2 2
      nb-core/src/main/java/com/nb/core/annotation/Log.java
  47. 151 0
      nb-core/src/main/java/com/nb/core/aop/LogAspect.java
  48. 1 1
      nb-core/src/main/java/com/nb/core/enums/DataSourceTypeEnum.java
  49. 1 1
      nb-core/src/main/java/com/nb/core/enums/UserPlatformEnum.java
  50. 1 1
      nb-core/src/main/java/com/nb/core/exception/CaptchaException.java
  51. 1 1
      nb-core/src/main/java/com/nb/core/exception/CustomException.java
  52. 1 1
      nb-core/src/main/java/com/nb/core/exception/DemoModeException.java
  53. 1 1
      nb-core/src/main/java/com/nb/core/exception/ExecuteResult.java
  54. 1 1
      nb-core/src/main/java/com/nb/core/exception/RequestParmErrorException.java
  55. 1 1
      nb-core/src/main/java/com/nb/core/exception/RequestRepeatException.java
  56. 1 1
      nb-core/src/main/java/com/nb/core/exception/RequestSignErrorException.java
  57. 1 1
      nb-core/src/main/java/com/nb/core/exception/RequestTimeOutException.java
  58. 1 1
      nb-core/src/main/java/com/nb/core/exception/ScriptException.java
  59. 1 1
      nb-core/src/main/java/com/nb/core/exception/TenantException.java
  60. 1 1
      nb-core/src/main/java/com/nb/core/exception/apply/ApplyException.java
  61. 1 1
      nb-core/src/main/java/com/nb/core/exception/apply/ApplyTokenParamException.java
  62. 1 1
      nb-core/src/main/java/com/nb/core/exception/apply/NoExistAppKeyException.java
  63. 1 1
      nb-core/src/main/java/com/nb/core/result/IResultCode.java
  64. 1 1
      nb-core/src/main/java/com/nb/core/result/R.java
  65. 1 1
      nb-core/src/main/java/com/nb/core/result/ResultCode.java
  66. 0 151
      nb-framework/src/main/java/com/nb/framework/aop/LogAspect.java
  67. 1 1
      nb-framework/src/main/java/com/nb/framework/config/DruidConfig.java
  68. 2 2
      nb-framework/src/main/java/com/nb/framework/config/SwaggerConfig.java
  69. 14 15
      nb-framework/src/main/java/com/nb/framework/config/mybatisplus/MybatisPlusConfig.java
  70. 7 7
      nb-framework/src/main/java/com/nb/framework/config/mybatisplus/handler/CreateAndUpdateMetaObjectHandler.java
  71. 137 135
      nb-framework/src/main/java/com/nb/framework/config/mybatisplus/handler/CustomDataPermissionHandler.java
  72. 4 3
      nb-framework/src/main/java/com/nb/framework/satoken/service/CustomStpInterface.java
  73. 6 5
      nb-framework/src/main/java/com/nb/framework/web/exception/GlobalExceptionHandler.java
  74. 61 61
      nb-framework/src/main/java/com/nb/framework/web/service/IUserService.java
  75. 360 364
      nb-framework/src/main/java/com/nb/framework/web/service/impl/UserServiceImpl.java
  76. 1 1
      nb-oss/src/main/java/com/nb/oss/strategy/context/FileStorageContext.java
  77. 1 2
      nb-oss/src/main/java/com/nb/oss/strategy/impl/AbstractFileStorage.java
  78. 14 0
      nb-system/pom.xml
  79. 1 1
      nb-system/src/main/java/com/nb/bus/controller/BusAlarmController.java
  80. 3 3
      nb-system/src/main/java/com/nb/bus/controller/BusClinicController.java
  81. 2 2
      nb-system/src/main/java/com/nb/bus/controller/BusConstantController.java
  82. 3 3
      nb-system/src/main/java/com/nb/bus/controller/BusDeviceController.java
  83. 1 1
      nb-system/src/main/java/com/nb/bus/controller/BusDeviceHistoryController.java
  84. 1 1
      nb-system/src/main/java/com/nb/bus/controller/BusDeviceManualController.java
  85. 1 4
      nb-system/src/main/java/com/nb/bus/controller/BusDeviceRunningController.java
  86. 1 1
      nb-system/src/main/java/com/nb/bus/controller/BusDocController.java
  87. 1 1
      nb-system/src/main/java/com/nb/bus/controller/BusEvaluationController.java
  88. 2 2
      nb-system/src/main/java/com/nb/bus/controller/BusHospitalConfigController.java
  89. 2 4
      nb-system/src/main/java/com/nb/bus/controller/BusHospitalController.java
  90. 2 2
      nb-system/src/main/java/com/nb/bus/controller/BusInfusionHistoryController.java
  91. 3 4
      nb-system/src/main/java/com/nb/bus/controller/BusPatientController.java
  92. 3 3
      nb-system/src/main/java/com/nb/bus/controller/BusStatsAnalyseController.java
  93. 1 1
      nb-system/src/main/java/com/nb/bus/controller/BusVersionController.java
  94. 1 1
      nb-system/src/main/java/com/nb/bus/entity/BusHospitalLogEntity.java
  95. 1 1
      nb-system/src/main/java/com/nb/bus/hospital/his/HisRequest.java
  96. 4 4
      nb-system/src/main/java/com/nb/bus/hospital/his/HisScriptSession.java
  97. 1 1
      nb-system/src/main/java/com/nb/bus/hospital/script/DefaultParse.java
  98. 2 2
      nb-system/src/main/java/com/nb/bus/hospital/script/PythonParse.java
  99. 1 1
      nb-system/src/main/java/com/nb/bus/hospital/script/ScriptManager.java
  100. 1 1
      nb-system/src/main/java/com/nb/bus/hospital/script/ScriptParse.java

+ 3 - 7
nb-admin/src/main/java/com/nb/admin/controller/common/CommonController.java

@@ -1,16 +1,13 @@
 package com.nb.admin.controller.common;
 
 import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.StrUtil;
-import com.nb.common.config.AppConfig;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
-import com.nb.common.result.ResultCode;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
+import com.nb.core.result.ResultCode;
 import com.nb.oss.strategy.FileStorageStrategy;
 import com.nb.oss.strategy.context.FileStorageContext;
 import com.nb.oss.strategy.storage.SysStorage;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiOperation;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -20,7 +17,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedInputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URLEncoder;

+ 4 - 5
nb-admin/src/main/java/com/nb/admin/controller/monitor/OnlineUserController.java

@@ -5,17 +5,16 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.text.CharSequenceUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nb.auth.bean.LoginUser;
 import com.nb.common.Constants;
-import com.nb.common.annotation.Log;
-import com.nb.common.bo.LoginUser;
+import com.nb.core.annotation.Log;
 import com.nb.common.redis.RedisUtils;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import com.google.common.collect.Lists;
 import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -64,7 +63,7 @@ public class OnlineUserController {
             }
         }
         // 进行排序,以登陆时间倒序
-        loginUserList = loginUserList.stream().sorted(Comparator.comparing(LoginUser::getLoginTime).reversed()).collect(Collectors.toList());
+        loginUserList = loginUserList.stream().sorted((s1, s2) -> s1.getLoginTime().compareTo(s2.getLoginTime())).collect(Collectors.toList());
 
         IPage<LoginUser> page = new Page<>(reqPage.getCurrent(), reqPage.getSize(), loginUserList.size());
         if (page.getPages() > 0) {

+ 120 - 120
nb-admin/src/main/java/com/nb/admin/controller/system/SysLoginController.java

@@ -1,120 +1,120 @@
-package com.nb.admin.controller.system;
-
-import cn.dev33.satoken.stp.StpUtil;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.nb.admin.controller.system.vo.UserPassVo;
-import com.nb.common.annotation.Log;
-import com.nb.common.dto.LoginDTO;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
-import com.nb.common.util.SecurityUtil;
-import com.nb.framework.web.service.IUserService;
-import com.nb.system.common.vo.AccountInfoVO;
-import com.nb.system.entity.SysUser;
-import com.nb.system.service.ISysUserService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-
-/**
- * <p>
- * 登录 前端控制器
- * </p>
- *
- * @author Kevin
- */
-@RestController
-@Api(tags = "登录接口")
-public class SysLoginController {
-
-    @Resource
-    IUserService userService;
-
-    @Resource
-    ISysUserService sysUserService;
-
-    @Value("${sa-token.token-name}")
-    private String tokenName;
-    @Value("${sa-token.activity-timeout}")
-    private String activityTimeout;
-    @Log(title = "登录")
-    @PostMapping({"/login","/token"})
-    @ApiOperation("登录")
-    public R login(@Validated @RequestBody LoginDTO req) {
-        String token = userService.login(req);
-        JSONObject result = new JSONObject();
-        result.put("token", token);
-        result.put("tokenName",tokenName);
-        result.put("activityTimeout",activityTimeout);
-        return R.success(result);
-    }
-
-    @ApiOperation("修改密码")
-    @PostMapping(value = "/updatePass")
-    public R<Boolean> updatePass(@RequestBody @Validated UserPassVo passVo) {
-        // 密码解密
-        Long userId = SecurityUtil.getSysUser().getId();
-        SysUser sysUser = sysUserService.getById(userId);
-        if (!SecurityUtil.matchesPassword(passVo.getOldPass(), sysUser.getPassword())) {
-            throw new CustomException("旧密码不正确");
-        }
-        String encryptPassword = SecurityUtil.encryptPassword(passVo.getNewPass());
-        sysUserService
-                .update(new UpdateWrapper<SysUser>()
-                        .lambda().eq(SysUser::getId,userId)
-                        .set(SysUser::getPassword,encryptPassword));
-        return R.success(true);
-    }
-    @Log(title = "获取当前用户信息")
-    @ApiOperation("获取当前用户信息")
-    @GetMapping("/getUserInfo")
-    public R getUserInfo() {
-        return R.success(userService.getUserInfo());
-    }
-
-    @Log(title = "获取权限集合")
-    @ApiOperation("获取当前用户权限集合")
-    @GetMapping("/getPermCode")
-    public R getPermCode() {
-        return R.success(userService.getPermCode());
-    }
-
-    @Log(title = "获取菜单集合")
-    @ApiOperation("获取当前用户菜单集合")
-    @GetMapping("/getMenuList")
-    public R getMenuList() {
-        return R.success(userService.getMenuList());
-    }
-
-    @Log(title = "获取账户信息")
-    @ApiOperation("获取当前用户账户信息")
-    @GetMapping("/getAccountInfo")
-    public R getAccountInfo() {
-        return R.success(userService.getAccountInfo());
-    }
-
-    @Log(title = "保存用户信息")
-    @ApiOperation("保存用户信息")
-    @PostMapping("/saveAccountInfo")
-    public R saveAccountInfo(@Validated @RequestBody AccountInfoVO req) {
-        userService.saveAccountInfo(req);
-        return R.success();
-    }
-
-    @Log(title = "退出")
-    @ApiOperation("用户登出")
-    @PostMapping("/logout")
-    public R logout() {
-        StpUtil.logout();
-        return R.success();
-    }
-
-}
+//package com.nb.admin.controller.system;
+//
+//import cn.dev33.satoken.stp.StpUtil;
+//import com.alibaba.fastjson.JSONObject;
+//import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+//import com.nb.admin.controller.system.vo.UserPassVo;
+//import com.nb.core.annotation.Log;
+//import com.nb.common.dto.TokenParameter;
+//import com.nb.core.exception.CustomException;
+//import com.nb.core.result.R;
+//import com.nb.common.util.SecurityUtil;
+//import com.nb.framework.web.service.IUserService;
+//import com.nb.system.common.vo.AccountInfoVO;
+//import com.nb.system.entity.SysUser;
+//import com.nb.system.service.ISysUserService;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.validation.annotation.Validated;
+//import org.springframework.web.bind.annotation.GetMapping;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.annotation.Resource;
+//
+///**
+// * <p>
+// * 登录 前端控制器
+// * </p>
+// *
+// * @author Kevin
+// */
+//@RestController
+//@Api(tags = "登录接口")
+//public class SysLoginController {
+//
+//    @Resource
+//    IUserService userService;
+//
+//    @Resource
+//    ISysUserService sysUserService;
+//
+//    @Value("${sa-token.token-name}")
+//    private String tokenName;
+//    @Value("${sa-token.activity-timeout}")
+//    private String activityTimeout;
+//    @Log(title = "登录")
+//    @PostMapping({"/login","/token"})
+//    @ApiOperation("登录")
+//    public R login(@Validated @RequestBody TokenParameter req) {
+//        String token = userService.login(req);
+//        JSONObject result = new JSONObject();
+//        result.put("token", token);
+//        result.put("tokenName",tokenName);
+//        result.put("activityTimeout",activityTimeout);
+//        return R.success(result);
+//    }
+//
+//    @ApiOperation("修改密码")
+//    @PostMapping(value = "/updatePass")
+//    public R<Boolean> updatePass(@RequestBody @Validated UserPassVo passVo) {
+//        // 密码解密
+//        Long userId = SecurityUtil.getSysUser().getId();
+//        SysUser sysUser = sysUserService.getById(userId);
+//        if (!SecurityUtil.matchesPassword(passVo.getOldPass(), sysUser.getPassword())) {
+//            throw new CustomException("旧密码不正确");
+//        }
+//        String encryptPassword = SecurityUtil.encryptPassword(passVo.getNewPass());
+//        sysUserService
+//                .update(new UpdateWrapper<SysUser>()
+//                        .lambda().eq(SysUser::getId,userId)
+//                        .set(SysUser::getPassword,encryptPassword));
+//        return R.success(true);
+//    }
+//    @Log(title = "获取当前用户信息")
+//    @ApiOperation("获取当前用户信息")
+//    @GetMapping("/getUserInfo")
+//    public R getUserInfo() {
+//        return R.success(userService.getUserInfo());
+//    }
+//
+//    @Log(title = "获取权限集合")
+//    @ApiOperation("获取当前用户权限集合")
+//    @GetMapping("/getPermCode")
+//    public R getPermCode() {
+//        return R.success(userService.getPermCode());
+//    }
+//
+//    @Log(title = "获取菜单集合")
+//    @ApiOperation("获取当前用户菜单集合")
+//    @GetMapping("/getMenuList")
+//    public R getMenuList() {
+//        return R.success(userService.getMenuList());
+//    }
+//
+//    @Log(title = "获取账户信息")
+//    @ApiOperation("获取当前用户账户信息")
+//    @GetMapping("/getAccountInfo")
+//    public R getAccountInfo() {
+//        return R.success(userService.getAccountInfo());
+//    }
+//
+//    @Log(title = "保存用户信息")
+//    @ApiOperation("保存用户信息")
+//    @PostMapping("/saveAccountInfo")
+//    public R saveAccountInfo(@Validated @RequestBody AccountInfoVO req) {
+//        userService.saveAccountInfo(req);
+//        return R.success();
+//    }
+//
+//    @Log(title = "退出")
+//    @ApiOperation("用户登出")
+//    @PostMapping("/logout")
+//    public R logout() {
+//        StpUtil.logout();
+//        return R.success();
+//    }
+//
+//}

+ 22 - 2
nb-auth/pom.xml

@@ -13,17 +13,37 @@
 
 
     <dependencies>
+        <dependency>
+            <groupId>com.tuoren</groupId>
+            <artifactId>nb-core</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
             <optional>true</optional>
-            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-http</artifactId>
+            <version>${hutool.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
         </dependency>
         <dependency>
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>knife4j-spring-boot-starter</artifactId>
             <optional>true</optional>
-            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-spring-boot-starter</artifactId>
         </dependency>
     </dependencies>
 </project>

+ 29 - 0
nb-auth/src/main/java/com/nb/auth/bean/AuthInfo.java

@@ -0,0 +1,29 @@
+package com.nb.auth.bean;
+
+import com.nb.auth.enums.GrantTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName AuthInfo.java
+ * @Description TODO
+ * @createTime 2022年08月01日 14:28:00
+ */
+@Data
+@ApiModel("授权结果")
+@Builder
+public class AuthInfo {
+
+    @ApiModelProperty("令牌")
+    private String token;
+    @ApiModelProperty("令牌在请求头中名称")
+    private String tokenName;
+    @ApiModelProperty("授权类型")
+    private GrantTypeEnum grantType;
+    @ApiModelProperty("令牌失效时间")
+    private long activityTimeout;
+}

+ 92 - 0
nb-auth/src/main/java/com/nb/auth/bean/LoginUser.java

@@ -0,0 +1,92 @@
+package com.nb.auth.bean;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.nb.auth.enums.GrantTypeEnum;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 登录用户
+ *
+ * @author Kevin
+ */
+@Data
+public class LoginUser<T> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private T Id;
+    /**
+     * token
+     */
+    private String token;
+
+    /**
+     * 用户平台
+     */
+    private String userPlatform;
+
+    /**
+     * 授权类型
+     */
+    private GrantTypeEnum grantType;
+
+    /**
+     * 用户名 或者 appkey
+     */
+    private String username;
+
+    /**
+     * 登录时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date loginTime;
+
+    /**
+     * 登录IP地址
+     */
+    private String ipAddress;
+
+    /**
+     * 登录地点
+     */
+    private String loginLocation;
+
+    /**
+     * 浏览器类型
+     */
+    private String browser;
+
+    /**
+     * 操作系统
+     */
+    private String os;
+
+    /**
+     * 权限列表
+     */
+    private Set<String> permissions;
+
+    /**
+     * 角色列表
+     */
+    private List<SysRoleInfo> roles;
+
+
+    private T tenantId;
+
+    /**
+     * 是否为系统级别用户
+     *
+     **/
+    private boolean isSys;
+
+    /**
+     * 是否为超级管理员
+     */
+    private boolean isSuperAdmin;
+}

+ 40 - 0
nb-auth/src/main/java/com/nb/auth/bean/SysRoleInfo.java

@@ -0,0 +1,40 @@
+package com.nb.auth.bean;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 角色
+ *
+ * @author Kevin
+ */
+@Data
+public class SysRoleInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 角色编码
+     */
+    private String roleCode;
+
+    /**
+     * 角色名称
+     */
+    private String roleName;
+
+    /**
+     * 数据范围 1全部数据权限;2自定数据权限;3本部门数据权限;4本部门及以下数据权限
+     */
+    private String dataScope;
+
+}

+ 116 - 1
nb-auth/src/main/java/com/nb/auth/controller/AuthController.java

@@ -1,7 +1,25 @@
 package com.nb.auth.controller;
+import cn.dev33.satoken.stp.StpUtil;
+import com.nb.auth.bean.AuthInfo;
+import com.nb.auth.bean.LoginUser;
+import com.nb.auth.granter.IAccountOperator;
+import com.nb.auth.granter.IAuthGranter;
+import com.nb.auth.granter.TokenParameter;
+import com.nb.auth.vo.AccountInfoVO;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
+import java.util.*;
+import com.nb.core.annotation.Log;
 
+import javax.validation.constraints.NotBlank;
 
 /**
  * @author lifang
@@ -12,6 +30,103 @@ import org.springframework.web.bind.annotation.RestController;
  */
 
 @RestController
-@Api(tags = "登录/授权 接口")
+@Api(tags = "登录、授权接口")
 public class AuthController {
+
+    private final List<IAuthGranter> tokenGranter;
+
+    private final IAccountOperator accountOperator;
+
+    public AuthController(List<IAuthGranter> tokenGranter,
+                          IAccountOperator accountOperator) {
+        this.tokenGranter = tokenGranter;
+        this.accountOperator = accountOperator;
+    }
+
+    @Value("${sa-token.token-name}")
+    private String tokenName;
+
+    @Value("${sa-token.activity-timeout}")
+    private Long activityTimeout;
+
+    //    @Log(title = "登录")
+    @PostMapping({"/login","/token"})
+    @ApiOperation("登录")
+    public R<AuthInfo> login(@Validated @RequestBody TokenParameter req) {
+        if(req.getGrantType()==null){
+            throw new CustomException("授权类型不能为空");
+        }
+        Optional<IAuthGranter> granter = tokenGranter.stream().filter(grant -> req.getGrantType().equals(grant.getType()))
+                .findFirst();
+        if(!granter.isPresent()){
+            throw new CustomException("暂不支持该登录方式");
+        }
+        LoginUser grant = granter.get().grant(req);
+        return R.success(AuthInfo.builder()
+                .activityTimeout(activityTimeout)
+                .grantType(req.getGrantType())
+                .token(grant.getToken())
+                .build());
+    }
+
+//    @ApiOperation("修改密码")
+//    @PostMapping(value = "/updatePass")
+//    public R<Boolean> updatePass(@RequestBody @Validated UserPassVo passVo) {
+//        // 密码解密
+//        Long userId = SecurityUtil.getSysUser().getId();
+//        SysUser sysUser = sysUserService.getById(userId);
+//        if (!SecurityUtil.matchesPassword(passVo.getOldPass(), sysUser.getPassword())) {
+//            throw new CustomException("旧密码不正确");
+//        }
+//        String encryptPassword = SecurityUtil.encryptPassword(passVo.getNewPass());
+//        sysUserService
+//                .update(new UpdateWrapper<SysUser>()
+//                        .lambda().eq(SysUser::getId,userId)
+//                        .set(SysUser::getPassword,encryptPassword));
+//        return R.success(true);
+//    }
+
+    @Log(title = "获取当前用户信息")
+    @ApiOperation("获取当前用户信息")
+    @GetMapping("/getUserInfo")
+    public R getUserInfo() {
+        return R.success(accountOperator.getUserInfo());
+    }
+
+    @Log(title = "获取权限集合")
+    @ApiOperation("获取当前用户权限集合")
+    @GetMapping("/getPermCode")
+    public R getPermCode() {
+        return R.success(accountOperator.getPermCode());
+    }
+
+    @Log(title = "获取菜单集合")
+    @ApiOperation("获取当前用户菜单集合")
+    @GetMapping("/getMenuList")
+    public R getMenuList() {
+        return R.success(accountOperator.getMenuList());
+    }
+
+    @Log(title = "获取账户信息")
+    @ApiOperation("获取当前用户账户信息")
+    @GetMapping("/getAccountInfo")
+    public R getAccountInfo() {
+        return R.success(accountOperator.getAccountInfo());
+    }
+
+    @Log(title = "保存用户信息")
+    @ApiOperation("保存用户信息")
+    @PostMapping("/saveAccountInfo")
+    public R saveAccountInfo(@Validated @RequestBody AccountInfoVO req) {
+        accountOperator.saveAccountInfo(req);
+        return R.success();
+    }
+
+    @Log(title = "退出")
+    @ApiOperation("用户登出")
+    @PostMapping("/logout")
+    public R logout() {
+        StpUtil.logout();
+        return R.success();
+    }
 }

+ 45 - 0
nb-auth/src/main/java/com/nb/auth/enums/GrantTypeEnum.java

@@ -0,0 +1,45 @@
+package com.nb.auth.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+/**
+ * 授权类型
+ *
+ * @author Kevin
+ */
+@Getter
+@AllArgsConstructor
+public enum GrantTypeEnum{
+
+    /**
+     * 网页端用户名密码模式
+     */
+    WEB_USERNAME_PASSWORD("1", "用户名密码模式"),
+    /**
+     * 手机号短信模式
+     */
+    MOBILE_CODE("2", "手机号短信模式"),
+
+    /**
+     * appkey、appSecret模式
+     */
+    APPKEY_APPSECRET("3", "第三方应用登录"),;
+
+    private String code;
+    private String desc;
+
+
+    public static Boolean contains(String code) {
+        return Arrays.stream(GrantTypeEnum.values()).anyMatch(temp -> temp.getCode().equals(code));
+    }
+
+    public static GrantTypeEnum valueOfCode(String code) {
+        Optional<GrantTypeEnum> first = Arrays.stream(GrantTypeEnum.values()).filter(temp -> temp.getCode().equals(code)).findFirst();
+        return
+                first.isPresent()?first.get():null;
+    }
+}

+ 54 - 0
nb-auth/src/main/java/com/nb/auth/granter/IAccountOperator.java

@@ -0,0 +1,54 @@
+package com.nb.auth.granter;
+
+import com.nb.auth.vo.AccountInfoVO;
+import com.nb.auth.vo.RouteItemVO;
+import com.nb.auth.vo.UserInfoVO;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName IAccountOperator.java
+ * @Description 账户操作符
+ * @createTime 2022年08月01日 14:45:00
+ */
+public interface IAccountOperator {
+    /**
+     * 描述: 获取当前用户信息
+     * @author lifang
+     * @date 2022/8/1 14:39
+     * @param
+     * @return UserInfoVO
+     */
+    UserInfoVO getUserInfo();
+
+    /**
+     * 描述: 获取当前用户权限标识
+     * @author lifang
+     * @date 2022/8/1 14:39
+     * @return Set<String>
+     */
+    Set<String> getPermCode();
+
+    /**
+     * 描述: 获取当前用户菜单列表
+     * @author lifang
+     * @date 2022/8/1 14:39
+     * @return Set<String>
+     */
+    List<RouteItemVO> getMenuList();
+
+
+    AccountInfoVO getAccountInfo();
+
+    /**
+     * 描述: 设置当前用户账户信息
+     * @author lifang
+     * @date 2022/8/1 14:39
+     * @param req 账户信息
+     * @return Set<String>
+     */
+    void saveAccountInfo(AccountInfoVO req);
+}

+ 70 - 0
nb-auth/src/main/java/com/nb/auth/granter/IAuthGranter.java

@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.nb.auth.granter;
+
+
+import cn.dev33.satoken.spring.SpringMVCUtil;
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentUtil;
+import com.nb.auth.bean.LoginUser;
+import com.nb.auth.enums.GrantTypeEnum;
+import com.nb.auth.utils.AddressUtil;
+import com.nb.auth.utils.IpUtil;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+
+/**
+ * 授权认证统一接口.
+ *
+ * @author Chill
+ */
+public interface IAuthGranter {
+
+	/**
+	 * 描述: 授权类型
+	 * @author lifang
+	 * @date 2022/8/1 14:46
+	 * @param
+	 * @see com.nb.auth.enums.GrantTypeEnum
+	 */
+	GrantTypeEnum getType();
+	/**
+	 * 获取用户信息
+	 *
+	 * @param source 授权参数
+	 * @return UserInfo
+	 */
+	LoginUser grant(TokenParameter source);
+
+	/**
+	 * 描述: 填充用户登录信息
+	 * @author lifang
+	 * @date 2022/8/1 15:22
+	 * @param loginUser
+	 * @return void
+	 */
+	default void fillUserAgentInfo(LoginUser loginUser){
+		HttpServletRequest request = SpringMVCUtil.getRequest();
+		UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
+		String ipAddress = IpUtil.getClientIp(request);
+		loginUser.setIpAddress(ipAddress);
+		loginUser.setLoginLocation(AddressUtil.getRealAddressByIp(ipAddress));
+		loginUser.setBrowser(userAgent.getBrowser().getName());
+		loginUser.setOs(userAgent.getOs().getName());
+		loginUser.setLoginTime(new Date());
+	};
+}

+ 9 - 4
nb-common/src/main/java/com/nb/common/dto/LoginDTO.java → nb-auth/src/main/java/com/nb/auth/granter/TokenParameter.java

@@ -1,5 +1,6 @@
-package com.nb.common.dto;
+package com.nb.auth.granter;
 
+import com.nb.auth.enums.GrantTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -11,15 +12,16 @@ import javax.validation.constraints.NotBlank;
  * @author Kevin
  */
 @Data
-public class LoginDTO {
+public class TokenParameter {
 
-    @NotBlank(message = "授权类型不能为空")
-    String grantType;
+    GrantTypeEnum grantType;
 
     String username;
+
     String password;
 
     String mobile;
+
     String code;
 
     String codeKey;
@@ -33,4 +35,7 @@ public class LoginDTO {
     @ApiModelProperty("第三方应用登录时使用的时间戳,用来获取签名")
     String timestamp;
 
+    public void setGrantType(String grantType) {
+        this.grantType = GrantTypeEnum.valueOfCode(grantType);
+    }
 }

+ 51 - 0
nb-auth/src/main/java/com/nb/auth/utils/AddressUtil.java

@@ -0,0 +1,51 @@
+package com.nb.auth.utils;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 获取地址类
+ *
+ * @author Kevin
+ */
+@Slf4j
+public class AddressUtil {
+    /**
+     * IP地址查询
+     */
+    public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp";
+
+    /**
+     * 未知地址
+     */
+    public static final String UNKNOWN = "XX XX";
+
+    public static String getRealAddressByIp(String ip) {
+        String address = UNKNOWN;
+        // 内网不查询
+//        try {
+//            if (NetUtil.isInnerIP(ip)) {
+//                return "内网IP";
+//            }
+//            if (AppConfig.isAddressEnabled()) {
+//                try {
+//                    String rspStr = HttpUtil.get(IP_URL + "?ip=" + ip + "&json=true", CharsetUtil.CHARSET_GBK);
+//                    if (CharSequenceUtil.isEmpty(rspStr)) {
+//                        log.error("获取地理位置异常 {}", ip);
+//                        return UNKNOWN;
+//                    }
+//                    JSONObject obj = JSONUtil.parseObj(rspStr);
+//                    String region = obj.getStr("pro");
+//                    String city = obj.getStr("city");
+//                    return String.format("%s %s", region, city);
+//                } catch (Exception e) {
+//                    log.error("获取地理位置异常 {}", ip);
+//                }
+//            }
+//            return address;
+//        }catch (Exception e){
+//            return UNKNOWN;
+//        }
+        return address;
+
+    }
+}

+ 53 - 0
nb-auth/src/main/java/com/nb/auth/utils/IpUtil.java

@@ -0,0 +1,53 @@
+package com.nb.auth.utils;
+
+import cn.hutool.core.util.StrUtil;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * IP获取工具
+ *
+ * @author Kevin
+ */
+public class IpUtil {
+
+    public static String getClientIp(HttpServletRequest request) {
+//        // natapp穿透工具搭建的环境,通过header,X-Natapp-Ip,获取
+//        String ipAddress = ServletUtil.getClientIPByHeader(request, "X-Natapp-Ip");
+//        if (StrUtil.isBlank(ipAddress)) {
+//            ipAddress = ServletUtil.getClientIP(request);
+//        }
+//        // 本地开发,客户端和服务器在同一台机器,获取到是0:0:0:0:0:0:0:1,ip6地址,需要进行转换
+//        ipAddress = "0:0:0:0:0:0:0:1".equals(ipAddress) ? "127.0.0.1" : ipAddress;
+        return getIpAddress(request);
+    }
+
+    public static String getIpAddress(HttpServletRequest request) {
+
+        String sourceIp = null;
+
+        String ipAddresses = request.getHeader("x-forwarded-for");
+
+        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+            ipAddresses = request.getHeader("Proxy-Client-IP");
+        }
+        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+            ipAddresses = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+            ipAddresses = request.getHeader("HTTP_CLIENT_IP");
+        }
+        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+            ipAddresses = request.getHeader("HTTP_X_FORWARDED_FOR");
+        }
+        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+            ipAddresses = request.getRemoteAddr();
+        }
+        if (!StrUtil.isEmpty(ipAddresses)) {
+            sourceIp = ipAddresses.split(",")[0];
+        }
+
+        return sourceIp;
+    }
+
+}

+ 111 - 0
nb-auth/src/main/java/com/nb/auth/utils/SecurityUtil.java

@@ -0,0 +1,111 @@
+package com.nb.auth.utils;
+
+import cn.dev33.satoken.secure.BCrypt;
+import cn.dev33.satoken.spring.SpringMVCUtil;
+import cn.dev33.satoken.stp.StpUtil;
+//import cn.hutool.crypto.digest.BCrypt;
+import com.nb.auth.bean.LoginUser;
+import com.nb.auth.enums.GrantTypeEnum;
+
+import java.util.Objects;
+
+/**
+ * 安全服务工具类
+ *
+ * @author Kevin
+ */
+public class SecurityUtil {
+    private static final String LOGIN_USER_KEY="loginUser";
+    /**
+     * 获取用户账户
+     **/
+    public static String getUsername() {
+        return getLoginUser().getUsername();
+    }
+
+
+    /**
+     * 获取用户
+     **/
+    public static LoginUser getLoginUser() {
+        try {
+            return (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY);
+        } catch (Exception ex) {
+            return null;
+        }
+    }
+
+    /**
+     * 获取用户
+     **/
+    public static void  setLogin(LoginUser loginUser) {
+        StpUtil.getTokenSession().set(LOGIN_USER_KEY,loginUser);
+    }
+
+    public static boolean isSys(){
+        LoginUser loginUser = getLoginUser();
+        if(loginUser==null){
+            return false;
+        }
+        GrantTypeEnum grantType = loginUser.getGrantType();
+        if (GrantTypeEnum.APPKEY_APPSECRET.equals(grantType)) {
+            return false;
+        }
+        return Boolean.TRUE.equals(loginUser.isSys());
+    }
+
+    public static String getTenantId(){
+        return String.valueOf(SpringMVCUtil.getRequest().getAttribute("tenantId"));
+    }
+    /**
+     * 是否是超级管理员
+     **/
+    public static Boolean isSuperAdmin() {
+        return getLoginUser().isSuperAdmin();
+//        LoginUser loginUser = getLoginUser();
+//        String grantType = getLoginUser().getGrantType();
+//        if (GrantTypeEnum.APPKEY_APPSECRET.getCode().equalsIgnoreCase(grantType)) {
+//            return false;
+//        }
+//        List<SysRoleBO> roles = getSysUser().getRoles();
+//        if(CollUtil.isEmpty(roles)){
+//            return false;
+//        }
+//        return roles.stream().filter(role-> StrUtil.isNotBlank(role.getRoleCode()))
+//                .map(SysRoleBO::getRoleCode)
+//                .collect(Collectors.toSet())
+//                .contains("admin");
+    }
+
+    /**
+     * 是否是超级管理员
+     **/
+    public static Boolean isSysSuperAdmin(Long userId) {
+        return Objects.nonNull(userId) && userId == 1L;
+    }
+
+    /**
+     * 生成BCryptPasswordEncoder密码
+     *
+     * @param password 密码
+     * @return 加密字符串
+     */
+    public static String encryptPassword(String password) {
+        return BCrypt.hashpw(password);
+    }
+
+    /**
+     * 判断密码是否相同
+     *
+     * @param rawPassword     真实密码
+     * @param encodedPassword 加密后字符
+     * @return 结果
+     */
+    public static boolean matchesPassword(String rawPassword, String encodedPassword) {
+        return BCrypt.checkpw(rawPassword, encodedPassword);
+    }
+
+    public static Object getId() {
+        return getLoginUser().getId();
+    }
+}

+ 62 - 0
nb-auth/src/main/java/com/nb/auth/vo/AccountInfoVO.java

@@ -0,0 +1,62 @@
+package com.nb.auth.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 账户信息VO
+ *
+ * @author Kevin
+ */
+@Data
+public class AccountInfoVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 昵称
+     */
+    @NotBlank(message = "昵称不能为空")
+    @Size(max = 100, message = "昵称长度不能超过100个字符")
+    private String nickname;
+
+    /**
+     * 姓名
+     */
+    @Size(max = 100, message = "姓名长度不能超过100个字符")
+    private String realname;
+
+    /**
+     * 英文名
+     */
+    @Size(max = 100, message = "英文名长度不能超过100个字符")
+    private String englishName;
+
+    /**
+     * 头像
+     */
+    @Size(max = 100, message = "头像长度不能超过100个字符")
+    private String avatar;
+
+    /**
+     * 邮箱
+     */
+    @Size(max = 100, message = "邮箱长度不能超过100个字符")
+    private String email;
+
+    /**
+     * 性别 1男;2女;3未知
+     */
+    @NotBlank(message = "性别不能为空")
+    private String sex;
+
+    /**
+     * 备注
+     */
+    @Size(max = 500, message = "备注长度不能超过500个字符")
+    private String remarks;
+
+}

+ 17 - 0
nb-auth/src/main/java/com/nb/auth/vo/BaseTemplateVO.java

@@ -0,0 +1,17 @@
+package com.nb.auth.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * VO模板类,方便复制该类,创建新类
+ *
+ * @author Kevin
+ */
+@Data
+public class BaseTemplateVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 21 - 0
nb-auth/src/main/java/com/nb/auth/vo/RoleInfoVO.java

@@ -0,0 +1,21 @@
+package com.nb.auth.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 角色VO
+ *
+ * @author Kevin
+ */
+@Data
+public class RoleInfoVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String roleName;
+
+    private String value;
+
+}

+ 30 - 0
nb-auth/src/main/java/com/nb/auth/vo/RouteItemVO.java

@@ -0,0 +1,30 @@
+package com.nb.auth.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 路由项VO
+ *
+ * @author Kevin
+ */
+@Data
+public class RouteItemVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String path;
+
+    private String component;
+
+    private RouteMetoVO meta;
+
+    private String name;
+
+    private String redirect;
+
+    private List<RouteItemVO> children;
+
+}

+ 49 - 0
nb-auth/src/main/java/com/nb/auth/vo/RouteMetoVO.java

@@ -0,0 +1,49 @@
+package com.nb.auth.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 路由MetoVO
+ *
+ * @author Kevin
+ */
+@Data
+public class RouteMetoVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String title;
+
+    private Boolean ignoreAuth;
+
+    private String roles;
+
+    private Boolean ignoreKeepAlive;
+
+    private Boolean affix;
+
+    private String icon;
+
+    private String frameSrc;
+
+    private String transitionName;
+
+    private Boolean hideBreadcrumb;
+
+    private Boolean hideChildrenInMenu;
+
+    private Boolean carryParam;
+
+    private Boolean single;
+
+    private String currentActiveMenu;
+
+    private Boolean hideTab;
+
+    private Boolean hideMenu;
+
+    private Boolean isLink;
+
+}

+ 35 - 0
nb-auth/src/main/java/com/nb/auth/vo/UserInfoVO.java

@@ -0,0 +1,35 @@
+package com.nb.auth.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 用户信息VO
+ *
+ * @author Kevin
+ */
+@Data
+public class UserInfoVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String userId;
+
+    private String username;
+
+    private String realName;
+
+    private String avatar;
+
+    private String desc;
+
+    private String tenantId;
+
+    private String tenantName;
+
+    private List<RoleInfoVO> roles;
+
+    private Boolean isSys;
+}

+ 1 - 1
nb-codegen/src/main/resources/templates/controller.java.vm

@@ -1,6 +1,6 @@
 package ${package.Controller};
 
-import com.nb.common.annotation.Log;
+import com.nb.core.annotation.Log;
 import ${package.Controller.replace(".${package.ModuleName}.controller", "")}.common.result.R;
 import ${package.Controller.replace(".${package.ModuleName}.controller", "")}.common.utils.ExcelUtils;
 import ${package.Controller.replace(".controller", "")}.common.dto.${table.entityName}AddDTO;

+ 8 - 0
nb-common/pom.xml

@@ -12,10 +12,18 @@
     <artifactId>nb-common</artifactId>
 
     <dependencies>
+        <dependency>
+            <groupId>com.tuoren</groupId>
+            <artifactId>nb-auth</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.t-io</groupId>
             <artifactId>tio-websocket-spring-boot-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-aop</artifactId>

+ 3 - 3
nb-common/src/main/java/com/nb/common/aspect/DataSourceAspect.java

@@ -1,6 +1,6 @@
 package com.nb.common.aspect;
 
-import com.nb.common.annotation.DataSource;
+import com.nb.core.annotation.DataSource;
 import com.nb.common.datasource.DynamicDataSourceContextHolder;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
@@ -25,8 +25,8 @@ import java.util.Objects;
 @Slf4j
 public class DataSourceAspect {
 
-    @Pointcut("@annotation(com.nb.common.annotation.DataSource)"
-            + "|| @within(com.nb.common.annotation.DataSource)")
+    @Pointcut("@annotation(com.nb.core.annotation.DataSource)"
+            + "|| @within(com.nb.core.annotation.DataSource)")
     public void dsPointCut() {
 
     }

+ 1 - 1
nb-common/src/main/java/com/nb/common/aspect/DemoModelAspect.java

@@ -1,7 +1,7 @@
 package com.nb.common.aspect;
 
 import com.nb.common.config.AppConfig;
-import com.nb.common.exception.DemoModeException;
+import com.nb.core.exception.DemoModeException;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;

+ 90 - 90
nb-common/src/main/java/com/nb/common/bo/LoginUser.java

@@ -1,90 +1,90 @@
-package com.nb.common.bo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Set;
-
-/**
- * 登录用户
- *
- * @author Kevin
- */
-@Data
-public class LoginUser implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * token
-     */
-    private String token;
-
-    /**
-     * 用户平台
-     */
-    private String userPlatform;
-
-    /**
-     * 授权类型
-     */
-    private String grantType;
-
-    /**
-     * 系统用户
-     */
-    private SysUserBO sysUser;
-
-    /**
-     * 系统用户
-     */
-    private SysApplyBO sysApply;
-
-    /**
-     * 用户名 或者 appkey
-     */
-    private String username;
-
-    /**
-     * 登录时间
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date loginTime;
-
-    /**
-     * 登录IP地址
-     */
-    private String ipAddress;
-
-    /**
-     * 登录地点
-     */
-    private String loginLocation;
-
-    /**
-     * 浏览器类型
-     */
-    private String browser;
-
-    /**
-     * 操作系统
-     */
-    private String os;
-
-    /**
-     * 权限列表
-     */
-    private Set<String> permissions;
-
-
-    public String getTenantId(){
-        return sysUser==null?sysApply.getTenantId():sysUser.getTenantId();
-    }
-    /**
-     * 是否为系统级别用户
-     *
-     **/
-    private Boolean isSys;
-}
+//package com.nb.common.bo;
+//
+//import com.fasterxml.jackson.annotation.JsonFormat;
+//import lombok.Data;
+//
+//import java.io.Serializable;
+//import java.util.Date;
+//import java.util.Set;
+//
+///**
+// * 登录用户
+// *
+// * @author Kevin
+// */
+//@Data
+//public class LoginUser implements Serializable {
+//
+//    private static final long serialVersionUID = 1L;
+//
+//    /**
+//     * token
+//     */
+//    private String token;
+//
+//    /**
+//     * 用户平台
+//     */
+//    private String userPlatform;
+//
+//    /**
+//     * 授权类型
+//     */
+//    private String grantType;
+//
+//    /**
+//     * 系统用户
+//     */
+//    private SysUserBO sysUser;
+//
+//    /**
+//     * 系统用户
+//     */
+//    private SysApplyBO sysApply;
+//
+//    /**
+//     * 用户名 或者 appkey
+//     */
+//    private String username;
+//
+//    /**
+//     * 登录时间
+//     */
+//    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+//    private Date loginTime;
+//
+//    /**
+//     * 登录IP地址
+//     */
+//    private String ipAddress;
+//
+//    /**
+//     * 登录地点
+//     */
+//    private String loginLocation;
+//
+//    /**
+//     * 浏览器类型
+//     */
+//    private String browser;
+//
+//    /**
+//     * 操作系统
+//     */
+//    private String os;
+//
+//    /**
+//     * 权限列表
+//     */
+//    private Set<String> permissions;
+//
+//
+//    public String getTenantId(){
+//        return sysUser==null?sysApply.getTenantId():sysUser.getTenantId();
+//    }
+//    /**
+//     * 是否为系统级别用户
+//     *
+//     **/
+//    private Boolean isSys;
+//}

+ 24 - 24
nb-common/src/main/java/com/nb/common/bo/SysApplyBO.java

@@ -1,24 +1,24 @@
-package com.nb.common.bo;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName SysApplyBO.java
- * @Description TODO
- * @createTime 2022年07月27日 11:53:00
- */
-@Data
-public class SysApplyBO   implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String appKey;
-
-    /**
-     * (医院)租户id
-     **/
-    private String tenantId;
-}
+//package com.nb.common.bo;
+//
+//import lombok.Data;
+//
+//import java.io.Serializable;
+//
+///**
+// * @author lifang
+// * @version 1.0.0
+// * @ClassName SysApplyBO.java
+// * @Description TODO
+// * @createTime 2022年07月27日 11:53:00
+// */
+//@Data
+//public class SysApplyBO   implements Serializable {
+//    private static final long serialVersionUID = 1L;
+//
+//    private String appKey;
+//
+//    /**
+//     * (医院)租户id
+//     **/
+//    private String tenantId;
+//}

+ 112 - 112
nb-common/src/main/java/com/nb/common/bo/SysUserBO.java

@@ -1,112 +1,112 @@
-package com.nb.common.bo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 用户
- *
- * @author Kevin
- */
-@Data
-public class SysUserBO implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long id;
-
-    /**
-     * 账号
-     */
-    private String account;
-
-    /**
-     * 昵称
-     */
-    private String nickname;
-
-    /**
-     * 姓名
-     */
-    private String realname;
-
-    /**
-     * 英文名
-     */
-    private String englishName;
-
-    /**
-     * 头像
-     */
-    private String avatar;
-
-    /**
-     * 邮箱
-     */
-    private String email;
-
-    /**
-     * 手机号
-     */
-    private String phone;
-
-    /**
-     * 工号
-     */
-    private String staffNumber;
-
-    /**
-     * 生日
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    private Date birthday;
-
-    /**
-     * 性别 1男;2女;3未知
-     */
-    private String sex;
-
-    /**
-     * 部门ID
-     */
-    private String deptId;
-
-    /**
-     * 锁定标记 0正常;1锁定
-     */
-    private String lockFlag;
-
-    /**
-     * 排序
-     */
-    private Integer sort;
-
-    /**
-     * 备注
-     */
-    private String remarks;
-
-    private String status;
-
-    /**
-     * 角色列表
-     */
-    private List<SysRoleBO> roles;
-
-    /**
-     * (医院)租户id
-     **/
-    private String tenantId;
-
-    private String tenantName;
-}
+//package com.nb.common.bo;
+//
+//import com.fasterxml.jackson.annotation.JsonFormat;
+//import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+//import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+//import lombok.Data;
+//
+//import java.io.Serializable;
+//import java.util.Date;
+//import java.util.List;
+//
+///**
+// * 用户
+// *
+// * @author Kevin
+// */
+//@Data
+//public class SysUserBO implements Serializable {
+//
+//    private static final long serialVersionUID = 1L;
+//
+//    /**
+//     * 主键
+//     */
+//    @JsonSerialize(using = ToStringSerializer.class)
+//    private Long id;
+//
+//    /**
+//     * 账号
+//     */
+//    private String account;
+//
+//    /**
+//     * 昵称
+//     */
+//    private String nickname;
+//
+//    /**
+//     * 姓名
+//     */
+//    private String realname;
+//
+//    /**
+//     * 英文名
+//     */
+//    private String englishName;
+//
+//    /**
+//     * 头像
+//     */
+//    private String avatar;
+//
+//    /**
+//     * 邮箱
+//     */
+//    private String email;
+//
+//    /**
+//     * 手机号
+//     */
+//    private String phone;
+//
+//    /**
+//     * 工号
+//     */
+//    private String staffNumber;
+//
+//    /**
+//     * 生日
+//     */
+//    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+//    private Date birthday;
+//
+//    /**
+//     * 性别 1男;2女;3未知
+//     */
+//    private String sex;
+//
+//    /**
+//     * 部门ID
+//     */
+//    private String deptId;
+//
+//    /**
+//     * 锁定标记 0正常;1锁定
+//     */
+//    private String lockFlag;
+//
+//    /**
+//     * 排序
+//     */
+//    private Integer sort;
+//
+//    /**
+//     * 备注
+//     */
+//    private String remarks;
+//
+//    private String status;
+//
+//    /**
+//     * 角色列表
+//     */
+//    private List<SysRoleBO> roles;
+//
+//    /**
+//     * (医院)租户id
+//     **/
+//    private String tenantId;
+//
+//    private String tenantName;
+//}

+ 3 - 3
nb-common/src/main/java/com/nb/common/config/web/handler/CheckRequestHandler.java

@@ -6,9 +6,9 @@ import cn.hutool.crypto.digest.DigestUtil;
 import cn.hutool.json.JSONObject;
 import com.nb.common.config.web.RequestCheckProperties;
 import com.nb.common.config.CacheHttpServletRequestWrapper;
-import com.nb.common.exception.RequestParmErrorException;
-import com.nb.common.exception.RequestSignErrorException;
-import com.nb.common.exception.RequestTimeOutException;
+import com.nb.core.exception.RequestParmErrorException;
+import com.nb.core.exception.RequestSignErrorException;
+import com.nb.core.exception.RequestTimeOutException;
 import com.nb.common.util.IpUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;

+ 3 - 3
nb-common/src/main/java/com/nb/common/config/web/handler/TenantIdHandler.java

@@ -1,7 +1,7 @@
 package com.nb.common.config.web.handler;
 
-import com.nb.common.bo.LoginUser;
-import com.nb.common.util.SecurityUtil;
+import com.nb.auth.bean.LoginUser;
+import com.nb.auth.utils.SecurityUtil;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.HandlerInterceptor;
@@ -27,7 +27,7 @@ public class TenantIdHandler implements HandlerInterceptor {
             //未登录且未带 Tenant-Id 请求头
             return true;
         }
-        if(!Boolean.TRUE.equals(loginUser.getIsSys())){
+        if(!Boolean.TRUE.equals(loginUser.isSys())){
             request.setAttribute("tenantId",loginUser.getTenantId());
         }else {
             request.setAttribute("tenantId",header);

+ 1 - 1
nb-common/src/main/java/com/nb/common/config/websocket/handler/Subscribe.java

@@ -2,8 +2,8 @@ package com.nb.common.config.websocket.handler;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
+import com.nb.auth.bean.LoginUser;
 import com.nb.common.Constants;
-import com.nb.common.bo.LoginUser;
 import com.nb.common.config.websocket.DefaultMessageListener;
 import com.nb.common.config.websocket.MessagingRequest;
 import com.nb.common.config.websocket.TopicMessage;

+ 1 - 1
nb-common/src/main/java/com/nb/common/convert/ExcelDictConverter.java

@@ -8,7 +8,7 @@ import com.alibaba.excel.metadata.GlobalConfiguration;
 import com.alibaba.excel.metadata.data.ReadCellData;
 import com.alibaba.excel.metadata.data.WriteCellData;
 import com.alibaba.excel.metadata.property.ExcelContentProperty;
-import com.nb.common.annotation.ExcelDict;
+import com.nb.core.annotation.ExcelDict;
 import com.nb.common.util.DictUtil;
 
 import java.lang.reflect.Field;

+ 5 - 5
nb-common/src/main/java/com/nb/common/crud/BaseService.java

@@ -1,6 +1,5 @@
 package com.nb.common.crud;
 
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.text.CharSequenceUtil;
@@ -20,10 +19,11 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
-import com.nb.common.bo.LoginUser;
+import com.nb.auth.bean.LoginUser;
+import com.nb.auth.utils.SecurityUtil;
 import com.nb.common.entity.QueryParamEntity;
 import com.nb.common.entity.param.Term;
-import com.nb.common.exception.CustomException;
+import com.nb.core.exception.CustomException;
 import org.apache.ibatis.binding.MapperMethod;
 import org.springframework.jdbc.BadSqlGrammarException;
 import org.springframework.transaction.annotation.Transactional;
@@ -281,9 +281,9 @@ public abstract class BaseService<M extends BaseMapper<E>, E,PK extends Serializ
             queryWrapper.orderByDesc("create_time");
         }
         if(CharSequenceUtil.isNotEmpty(param.getTenantId())&&!CharSequenceUtil.isNullOrUndefined(param.getTenantId())){
-            LoginUser loginUser = (LoginUser) StpUtil.getTokenSession().get(com.nb.common.Constants.LOGIN_USER_KEY);
+            LoginUser loginUser = (LoginUser) SecurityUtil.getLoginUser();
             //是否为系统用户
-            if(loginUser!=null&&Boolean.TRUE.equals(loginUser.getIsSys())){
+            if(loginUser!=null&&loginUser.isSys()){
                 queryWrapper.eq("tenant_id",param.getTenantId());
             }
         }

+ 1 - 1
nb-common/src/main/java/com/nb/common/crud/controller/BaseDeleteController.java

@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.text.CharSequenceUtil;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.nb.common.crud.BaseService;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;

+ 1 - 1
nb-common/src/main/java/com/nb/common/crud/controller/BaseQueryController.java

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.nb.common.crud.BaseService;
 import com.nb.common.entity.QueryParamEntity;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;

+ 1 - 3
nb-common/src/main/java/com/nb/common/crud/controller/BaseSaveController.java

@@ -3,10 +3,8 @@ package com.nb.common.crud.controller;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.nb.common.crud.BaseService;
 import com.nb.common.entity.GenericEntity;
-import com.nb.common.entity.TenantGenericEntity;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 

+ 36 - 0
nb-common/src/main/java/com/nb/common/dto/TokenParameter.java

@@ -0,0 +1,36 @@
+//package com.nb.common.dto;
+//
+//import io.swagger.annotations.ApiModelProperty;
+//import lombok.Data;
+//
+//import javax.validation.constraints.NotBlank;
+//
+///**
+// * 登录实体类
+// *
+// * @author Kevin
+// */
+//@Data
+//public class TokenParameter {
+//
+//    @NotBlank(message = "授权类型不能为空")
+//    String grantType;
+//
+//    String username;
+//    String password;
+//
+//    String mobile;
+//    String code;
+//
+//    String codeKey;
+//
+//    @ApiModelProperty("appkey 第三方应用登录时使用,换取token")
+//    String appKey;
+//
+//    @ApiModelProperty("第三方应用登录时使用时的签名")
+//    String sign;
+//
+//    @ApiModelProperty("第三方应用登录时使用的时间戳,用来获取签名")
+//    String timestamp;
+//
+//}

+ 1 - 1
nb-common/src/main/java/com/nb/common/util/FileUtil.java

@@ -20,7 +20,7 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.poi.excel.BigExcelWriter;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
-import com.nb.common.exception.CustomException;
+import com.nb.core.exception.CustomException;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.util.IOUtils;
 import org.springframework.web.multipart.MultipartFile;

+ 1 - 1
nb-common/src/main/java/com/nb/common/util/MinioUtil.java

@@ -1,7 +1,7 @@
 package com.nb.common.util;
 
 import com.nb.common.config.MinioConfig;
-import com.nb.common.exception.CustomException;
+import com.nb.core.exception.CustomException;
 import io.minio.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Bean;

+ 118 - 111
nb-common/src/main/java/com/nb/common/util/SecurityUtil.java

@@ -1,111 +1,118 @@
-package com.nb.common.util;
-
-import cn.dev33.satoken.spring.SpringMVCUtil;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.crypto.digest.BCrypt;
-import com.nb.common.Constants;
-import com.nb.common.bo.LoginUser;
-import com.nb.common.bo.SysRoleBO;
-import com.nb.common.bo.SysUserBO;
-import com.nb.common.enums.GrantTypeEnum;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 安全服务工具类
- *
- * @author Kevin
- */
-public class SecurityUtil {
-    /**
-     * 获取用户账户
-     **/
-    public static String getUsername() {
-        return getLoginUser().getUsername();
-    }
-
-    /**
-     * 获取系统用户
-     **/
-    public static SysUserBO getSysUser() {
-        return getLoginUser().getSysUser();
-    }
-
-
-    /**
-     * 获取用户
-     **/
-    public static LoginUser getLoginUser() {
-        try {
-            return (LoginUser) StpUtil.getTokenSession().get(Constants.LOGIN_USER_KEY);
-        } catch (Exception ex) {
-            return null;
-        }
-    }
-
-    public static boolean isSys(){
-        LoginUser loginUser = getLoginUser();
-        if(loginUser==null){
-            return false;
-        }
-        String grantType = loginUser.getGrantType();
-        if (GrantTypeEnum.APPKEY_APPSECRET.getCode().equalsIgnoreCase(grantType)) {
-            return false;
-        }
-        return Boolean.TRUE.equals(loginUser.getIsSys());
-    }
-
-    public static String getTenantId(){
-        return String.valueOf(SpringMVCUtil.getRequest().getAttribute("tenantId"));
-    }
-    /**
-     * 是否是超级管理员
-     **/
-    public static Boolean isSuperAdmin() {
-        String grantType = getLoginUser().getGrantType();
-        if (GrantTypeEnum.APPKEY_APPSECRET.getCode().equalsIgnoreCase(grantType)) {
-            return false;
-        }
-        List<SysRoleBO> roles = getSysUser().getRoles();
-        if(CollUtil.isEmpty(roles)){
-            return false;
-        }
-        return roles.stream().filter(role-> StrUtil.isNotBlank(role.getRoleCode()))
-                .map(SysRoleBO::getRoleCode)
-                .collect(Collectors.toSet())
-                .contains("admin");
-    }
-
-    /**
-     * 是否是超级管理员
-     **/
-    public static Boolean isSysSuperAdmin(Long userId) {
-        return Objects.nonNull(userId) && userId == 1L;
-    }
-
-    /**
-     * 生成BCryptPasswordEncoder密码
-     *
-     * @param password 密码
-     * @return 加密字符串
-     */
-    public static String encryptPassword(String password) {
-        return BCrypt.hashpw(password);
-    }
-
-    /**
-     * 判断密码是否相同
-     *
-     * @param rawPassword     真实密码
-     * @param encodedPassword 加密后字符
-     * @return 结果
-     */
-    public static boolean matchesPassword(String rawPassword, String encodedPassword) {
-        return BCrypt.checkpw(rawPassword, encodedPassword);
-    }
-
-}
+//package com.nb.common.util;
+//
+//import cn.dev33.satoken.spring.SpringMVCUtil;
+//import cn.dev33.satoken.stp.StpUtil;
+//import cn.hutool.core.collection.CollUtil;
+//import cn.hutool.core.util.StrUtil;
+//import cn.hutool.crypto.digest.BCrypt;
+//import com.nb.common.Constants;
+//import com.nb.common.bo.LoginUser;
+//import com.nb.common.bo.SysRoleBO;
+//import com.nb.common.bo.SysUserBO;
+//import com.nb.common.enums.GrantTypeEnum;
+//
+//import java.util.List;
+//import java.util.Objects;
+//import java.util.stream.Collectors;
+//
+///**
+// * 安全服务工具类
+// *
+// * @author Kevin
+// */
+//public class SecurityUtil {
+//    /**
+//     * 获取用户账户
+//     **/
+//    public static String getUsername() {
+//        return getLoginUser().getUsername();
+//    }
+//
+//    /**
+//     * 获取系统用户
+//     **/
+//    public static SysUserBO getSysUser() {
+//        return getLoginUser().getSysUser();
+//    }
+//
+//
+//    /**
+//     * 获取用户
+//     **/
+//    public static LoginUser getLoginUser() {
+//        try {
+//            return (LoginUser) StpUtil.getTokenSession().get(Constants.LOGIN_USER_KEY);
+//        } catch (Exception ex) {
+//            return null;
+//        }
+//    }
+//
+//    /**
+//     * 获取用户
+//     **/
+//    public static void  setLogin(LoginUser loginUser) {
+//        StpUtil.getTokenSession().set(Constants.LOGIN_USER_KEY,loginUser);
+//    }
+//
+//    public static boolean isSys(){
+//        LoginUser loginUser = getLoginUser();
+//        if(loginUser==null){
+//            return false;
+//        }
+//        String grantType = loginUser.getGrantType();
+//        if (GrantTypeEnum.APPKEY_APPSECRET.getCode().equalsIgnoreCase(grantType)) {
+//            return false;
+//        }
+//        return Boolean.TRUE.equals(loginUser.getIsSys());
+//    }
+//
+//    public static String getTenantId(){
+//        return String.valueOf(SpringMVCUtil.getRequest().getAttribute("tenantId"));
+//    }
+//    /**
+//     * 是否是超级管理员
+//     **/
+//    public static Boolean isSuperAdmin() {
+//        String grantType = getLoginUser().getGrantType();
+//        if (GrantTypeEnum.APPKEY_APPSECRET.getCode().equalsIgnoreCase(grantType)) {
+//            return false;
+//        }
+//        List<SysRoleBO> roles = getSysUser().getRoles();
+//        if(CollUtil.isEmpty(roles)){
+//            return false;
+//        }
+//        return roles.stream().filter(role-> StrUtil.isNotBlank(role.getRoleCode()))
+//                .map(SysRoleBO::getRoleCode)
+//                .collect(Collectors.toSet())
+//                .contains("admin");
+//    }
+//
+//    /**
+//     * 是否是超级管理员
+//     **/
+//    public static Boolean isSysSuperAdmin(Long userId) {
+//        return Objects.nonNull(userId) && userId == 1L;
+//    }
+//
+//    /**
+//     * 生成BCryptPasswordEncoder密码
+//     *
+//     * @param password 密码
+//     * @return 加密字符串
+//     */
+//    public static String encryptPassword(String password) {
+//        return BCrypt.hashpw(password);
+//    }
+//
+//    /**
+//     * 判断密码是否相同
+//     *
+//     * @param rawPassword     真实密码
+//     * @param encodedPassword 加密后字符
+//     * @return 结果
+//     */
+//    public static boolean matchesPassword(String rawPassword, String encodedPassword) {
+//        return BCrypt.checkpw(rawPassword, encodedPassword);
+//    }
+//
+//}

+ 39 - 0
nb-core/pom.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>nb-root</artifactId>
+        <groupId>com.tuoren</groupId>
+        <version>1.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>nb-core</artifactId>
+
+    <description>核心包,包含了一些基础信息</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 1 - 1
nb-common/src/main/java/com/nb/common/annotation/DataScope.java → nb-core/src/main/java/com/nb/core/annotation/DataScope.java

@@ -1,4 +1,4 @@
-package com.nb.common.annotation;
+package com.nb.core.annotation;
 
 import java.lang.annotation.*;
 

+ 2 - 2
nb-common/src/main/java/com/nb/common/annotation/DataSource.java → nb-core/src/main/java/com/nb/core/annotation/DataSource.java

@@ -1,6 +1,6 @@
-package com.nb.common.annotation;
+package com.nb.core.annotation;
 
-import com.nb.common.enums.DataSourceTypeEnum;
+import com.nb.core.enums.DataSourceTypeEnum;
 
 import java.lang.annotation.*;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/annotation/ExcelDict.java → nb-core/src/main/java/com/nb/core/annotation/ExcelDict.java

@@ -1,4 +1,4 @@
-package com.nb.common.annotation;
+package com.nb.core.annotation;
 
 import java.lang.annotation.*;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/annotation/IgnoreToken.java → nb-core/src/main/java/com/nb/core/annotation/IgnoreToken.java

@@ -1,4 +1,4 @@
-package com.nb.common.annotation;
+package com.nb.core.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;

+ 2 - 2
nb-common/src/main/java/com/nb/common/annotation/Log.java → nb-core/src/main/java/com/nb/core/annotation/Log.java

@@ -1,6 +1,6 @@
-package com.nb.common.annotation;
+package com.nb.core.annotation;
 
-import com.nb.common.enums.UserPlatformEnum;
+import com.nb.core.enums.UserPlatformEnum;
 
 import java.lang.annotation.*;
 

+ 151 - 0
nb-core/src/main/java/com/nb/core/aop/LogAspect.java

@@ -0,0 +1,151 @@
+//package com.nb.core.aop;
+//
+//import cn.dev33.satoken.stp.StpUtil;
+//import cn.hutool.core.thread.ThreadUtil;
+//import cn.hutool.extra.spring.SpringUtil;
+//import cn.hutool.http.useragent.UserAgent;
+//import cn.hutool.http.useragent.UserAgentUtil;
+//import cn.hutool.json.JSONUtil;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.nb.core.annotation.Log;
+//import com.nb.common.enums.LogStatusEnum;
+//import com.nb.common.util.AddressUtil;
+//import com.nb.common.util.IpUtil;
+//import com.nb.common.util.SecurityUtil;
+//import com.nb.system.entity.SysLog;
+//import com.nb.system.service.ISysLogService;
+//import lombok.SneakyThrows;
+//import lombok.extern.slf4j.Slf4j;
+//import org.aspectj.lang.JoinPoint;
+//import org.aspectj.lang.ProceedingJoinPoint;
+//import org.aspectj.lang.Signature;
+//import org.aspectj.lang.annotation.Around;
+//import org.aspectj.lang.annotation.Aspect;
+//import org.aspectj.lang.annotation.Pointcut;
+//import org.aspectj.lang.reflect.MethodSignature;
+//import org.springframework.core.annotation.AnnotationUtils;
+//import org.springframework.stereotype.Component;
+//import org.springframework.validation.BindingResult;
+//import org.springframework.web.context.request.RequestContextHolder;
+//import org.springframework.web.context.request.ServletRequestAttributes;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.util.*;
+//import java.util.stream.Collectors;
+//
+///**
+// * 日志注解
+// *
+// * @author Kevin
+// */
+//@Aspect
+//@Component
+//@Slf4j
+//public class LogAspect {
+//
+//    @Pointcut("@annotation(com.nb.core.annotation.Log)")
+//    public void logPointCut() {
+//    }
+//
+//    @Around("logPointCut()")
+//    @SneakyThrows
+//    public Object around(ProceedingJoinPoint point) {
+//        Long startTime = System.currentTimeMillis();
+//        Object obj = null;
+//        Exception exception = null;
+//        try {
+//            obj = point.proceed();
+//        } catch (Exception e) {
+//            exception = e;
+//            throw e;
+//        } finally {
+//            Long endTime = System.currentTimeMillis();
+//            handleLog(point, exception, obj, endTime - startTime);
+//        }
+//        return obj;
+//    }
+//
+//    protected void handleLog(final JoinPoint joinPoint, final Exception e, Object retValue, long time) {
+//        try {
+//            // 获得注解
+//            Signature signature = joinPoint.getSignature();
+//            MethodSignature methodSignature = (MethodSignature) signature;
+//            Log controllerLog = AnnotationUtils.findAnnotation(methodSignature.getMethod(), Log.class);
+//            if (Objects.isNull(controllerLog)) {
+//                return;
+//            }
+//            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+//            SysLog sysLog = new SysLog();
+//            sysLog.setTitle(controllerLog.title());
+//            sysLog.setLogStatus(LogStatusEnum.SUCCESS.getCode());
+//            sysLog.setUserPlatform(controllerLog.userPlatform().getCode());
+//            sysLog.setRequsetUri(request.getRequestURI());
+//            sysLog.setRequsetType(request.getMethod());
+//            // 设置方法名称
+//            String className = joinPoint.getTarget().getClass().getName();
+//            String methodName = joinPoint.getSignature().getName();
+//            sysLog.setRequsetMethod(className + "." + methodName + "()");
+//
+//            List<Object> objectList = Arrays.stream(joinPoint.getArgs()).filter(item -> Objects.nonNull(item) && !isFilterObject(item)).collect(Collectors.toList());
+//            sysLog.setRequsetParams(JSONUtil.toJsonStr(objectList));
+//            sysLog.setResponseResult(JSONUtil.toJsonStr(retValue));
+//            sysLog.setRequsetTime(String.valueOf(time));
+//
+//            String ipAddress = IpUtil.getClientIp(request);
+//            sysLog.setIpAddress(ipAddress);
+//            try {
+//                sysLog.setOperLocation(AddressUtil.getRealAddressByIp(ipAddress));
+//            }catch (Exception i){
+//
+//            }
+//
+//            UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
+//            sysLog.setBrowser(userAgent.getBrowser().getName());
+//            sysLog.setOs(userAgent.getOs().getName());
+//
+//            if (StpUtil.isLogin()) {
+//                sysLog.setOperName(SecurityUtil.getUsername());
+//            }
+//            if (e != null) {
+//                sysLog.setLogStatus(LogStatusEnum.FAILURE.getCode());
+//                sysLog.setException(e.getMessage());
+//            }
+//            ThreadUtil.execAsync(() -> {
+//                ISysLogService sysLogService = SpringUtil.getBean(ISysLogService.class);
+//                sysLogService.save(sysLog);
+//            });
+//            log.debug("接口:{},URI:{},执行耗时:{}", sysLog.getTitle(), sysLog.getRequsetUri(), time >= 1000 ? time / 1000 + "s" : time + "ms");
+//        } catch (Exception exception) {
+//            log.error("异常信息:{}", exception.getMessage());
+//            exception.printStackTrace();
+//        }
+//    }
+//
+//    /**
+//     * 判断是否需要过滤的对象。
+//     *
+//     * @param o 对象信息。
+//     * @return 如果是需要过滤的对象,则返回true;否则返回false。
+//     */
+//    public boolean isFilterObject(final Object o) {
+//        Class<?> clazz = o.getClass();
+//        if (clazz.isArray()) {
+//            return clazz.getComponentType().isAssignableFrom(MultipartFile.class);
+//        } else if (Collection.class.isAssignableFrom(clazz)) {
+//            Collection collection = (Collection) o;
+//            for (Object value : collection) {
+//                return value instanceof MultipartFile;
+//            }
+//        } else if (Map.class.isAssignableFrom(clazz)) {
+//            Map map = (Map) o;
+//            for (Object value : map.entrySet()) {
+//                Map.Entry entry = (Map.Entry) value;
+//                return entry.getValue() instanceof MultipartFile;
+//            }
+//        }
+//        return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse
+//                || o instanceof BindingResult || o instanceof Page;
+//    }
+//}

+ 1 - 1
nb-common/src/main/java/com/nb/common/enums/DataSourceTypeEnum.java → nb-core/src/main/java/com/nb/core/enums/DataSourceTypeEnum.java

@@ -1,4 +1,4 @@
-package com.nb.common.enums;
+package com.nb.core.enums;
 
 /**
  * 数据源

+ 1 - 1
nb-common/src/main/java/com/nb/common/enums/UserPlatformEnum.java → nb-core/src/main/java/com/nb/core/enums/UserPlatformEnum.java

@@ -1,4 +1,4 @@
-package com.nb.common.enums;
+package com.nb.core.enums;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/CaptchaException.java → nb-core/src/main/java/com/nb/core/exception/CaptchaException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 import lombok.Data;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/CustomException.java → nb-core/src/main/java/com/nb/core/exception/CustomException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 import lombok.Data;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/DemoModeException.java → nb-core/src/main/java/com/nb/core/exception/DemoModeException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 /**
  * 演示模式异常

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/ExecuteResult.java → nb-core/src/main/java/com/nb/core/exception/ExecuteResult.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 import cn.hutool.json.JSON;
 import com.fasterxml.jackson.annotation.JsonIgnore;

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/RequestParmErrorException.java → nb-core/src/main/java/com/nb/core/exception/RequestParmErrorException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 /**
  * @author lifang

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/RequestRepeatException.java → nb-core/src/main/java/com/nb/core/exception/RequestRepeatException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 /**
  * @author lifang

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/RequestSignErrorException.java → nb-core/src/main/java/com/nb/core/exception/RequestSignErrorException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 /**
  * @author lifang

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/RequestTimeOutException.java → nb-core/src/main/java/com/nb/core/exception/RequestTimeOutException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 /**
  * @author lifang

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/ScriptException.java → nb-core/src/main/java/com/nb/core/exception/ScriptException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 import lombok.Data;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/TenantException.java → nb-core/src/main/java/com/nb/core/exception/TenantException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception;
+package com.nb.core.exception;
 
 import lombok.Data;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/apply/ApplyException.java → nb-core/src/main/java/com/nb/core/exception/apply/ApplyException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception.apply;
+package com.nb.core.exception.apply;
 
 /**
  * @author lifang

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/apply/ApplyTokenParamException.java → nb-core/src/main/java/com/nb/core/exception/apply/ApplyTokenParamException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception.apply;
+package com.nb.core.exception.apply;
 
 import lombok.Data;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/exception/apply/NoExistAppKeyException.java → nb-core/src/main/java/com/nb/core/exception/apply/NoExistAppKeyException.java

@@ -1,4 +1,4 @@
-package com.nb.common.exception.apply;
+package com.nb.core.exception.apply;
 
 /**
  * @author lifang

+ 1 - 1
nb-common/src/main/java/com/nb/common/result/IResultCode.java → nb-core/src/main/java/com/nb/core/result/IResultCode.java

@@ -1,4 +1,4 @@
-package com.nb.common.result;
+package com.nb.core.result;
 
 import java.io.Serializable;
 

+ 1 - 1
nb-common/src/main/java/com/nb/common/result/R.java → nb-core/src/main/java/com/nb/core/result/R.java

@@ -1,4 +1,4 @@
-package com.nb.common.result;
+package com.nb.core.result;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;

+ 1 - 1
nb-common/src/main/java/com/nb/common/result/ResultCode.java → nb-core/src/main/java/com/nb/core/result/ResultCode.java

@@ -1,4 +1,4 @@
-package com.nb.common.result;
+package com.nb.core.result;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;

+ 0 - 151
nb-framework/src/main/java/com/nb/framework/aop/LogAspect.java

@@ -1,151 +0,0 @@
-package com.nb.framework.aop;
-
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.thread.ThreadUtil;
-import cn.hutool.extra.spring.SpringUtil;
-import cn.hutool.http.useragent.UserAgent;
-import cn.hutool.http.useragent.UserAgentUtil;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.nb.common.annotation.Log;
-import com.nb.common.enums.LogStatusEnum;
-import com.nb.common.util.AddressUtil;
-import com.nb.common.util.IpUtil;
-import com.nb.common.util.SecurityUtil;
-import com.nb.system.entity.SysLog;
-import com.nb.system.service.ISysLogService;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.Signature;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.core.annotation.AnnotationUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.validation.BindingResult;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 日志注解
- *
- * @author Kevin
- */
-@Aspect
-@Component
-@Slf4j
-public class LogAspect {
-
-    @Pointcut("@annotation(com.nb.common.annotation.Log)")
-    public void logPointCut() {
-    }
-
-    @Around("logPointCut()")
-    @SneakyThrows
-    public Object around(ProceedingJoinPoint point) {
-        Long startTime = System.currentTimeMillis();
-        Object obj = null;
-        Exception exception = null;
-        try {
-            obj = point.proceed();
-        } catch (Exception e) {
-            exception = e;
-            throw e;
-        } finally {
-            Long endTime = System.currentTimeMillis();
-            handleLog(point, exception, obj, endTime - startTime);
-        }
-        return obj;
-    }
-
-    protected void handleLog(final JoinPoint joinPoint, final Exception e, Object retValue, long time) {
-        try {
-            // 获得注解
-            Signature signature = joinPoint.getSignature();
-            MethodSignature methodSignature = (MethodSignature) signature;
-            Log controllerLog = AnnotationUtils.findAnnotation(methodSignature.getMethod(), Log.class);
-            if (Objects.isNull(controllerLog)) {
-                return;
-            }
-            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-            SysLog sysLog = new SysLog();
-            sysLog.setTitle(controllerLog.title());
-            sysLog.setLogStatus(LogStatusEnum.SUCCESS.getCode());
-            sysLog.setUserPlatform(controllerLog.userPlatform().getCode());
-            sysLog.setRequsetUri(request.getRequestURI());
-            sysLog.setRequsetType(request.getMethod());
-            // 设置方法名称
-            String className = joinPoint.getTarget().getClass().getName();
-            String methodName = joinPoint.getSignature().getName();
-            sysLog.setRequsetMethod(className + "." + methodName + "()");
-
-            List<Object> objectList = Arrays.stream(joinPoint.getArgs()).filter(item -> Objects.nonNull(item) && !isFilterObject(item)).collect(Collectors.toList());
-            sysLog.setRequsetParams(JSONUtil.toJsonStr(objectList));
-            sysLog.setResponseResult(JSONUtil.toJsonStr(retValue));
-            sysLog.setRequsetTime(String.valueOf(time));
-
-            String ipAddress = IpUtil.getClientIp(request);
-            sysLog.setIpAddress(ipAddress);
-            try {
-                sysLog.setOperLocation(AddressUtil.getRealAddressByIp(ipAddress));
-            }catch (Exception i){
-
-            }
-
-            UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
-            sysLog.setBrowser(userAgent.getBrowser().getName());
-            sysLog.setOs(userAgent.getOs().getName());
-
-            if (StpUtil.isLogin()) {
-                sysLog.setOperName(SecurityUtil.getUsername());
-            }
-            if (e != null) {
-                sysLog.setLogStatus(LogStatusEnum.FAILURE.getCode());
-                sysLog.setException(e.getMessage());
-            }
-            ThreadUtil.execAsync(() -> {
-                ISysLogService sysLogService = SpringUtil.getBean(ISysLogService.class);
-                sysLogService.save(sysLog);
-            });
-            log.debug("接口:{},URI:{},执行耗时:{}", sysLog.getTitle(), sysLog.getRequsetUri(), time >= 1000 ? time / 1000 + "s" : time + "ms");
-        } catch (Exception exception) {
-            log.error("异常信息:{}", exception.getMessage());
-            exception.printStackTrace();
-        }
-    }
-
-    /**
-     * 判断是否需要过滤的对象。
-     *
-     * @param o 对象信息。
-     * @return 如果是需要过滤的对象,则返回true;否则返回false。
-     */
-    public boolean isFilterObject(final Object o) {
-        Class<?> clazz = o.getClass();
-        if (clazz.isArray()) {
-            return clazz.getComponentType().isAssignableFrom(MultipartFile.class);
-        } else if (Collection.class.isAssignableFrom(clazz)) {
-            Collection collection = (Collection) o;
-            for (Object value : collection) {
-                return value instanceof MultipartFile;
-            }
-        } else if (Map.class.isAssignableFrom(clazz)) {
-            Map map = (Map) o;
-            for (Object value : map.entrySet()) {
-                Map.Entry entry = (Map.Entry) value;
-                return entry.getValue() instanceof MultipartFile;
-            }
-        }
-        return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse
-                || o instanceof BindingResult || o instanceof Page;
-    }
-}

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/config/DruidConfig.java

@@ -5,7 +5,7 @@ import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
 import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
 import com.alibaba.druid.util.Utils;
-import com.nb.common.enums.DataSourceTypeEnum;
+import com.nb.core.enums.DataSourceTypeEnum;
 import com.nb.framework.config.properties.DruidProperties;
 import com.nb.common.datasource.DynamicDataSource;
 import com.google.common.collect.Maps;

+ 2 - 2
nb-framework/src/main/java/com/nb/framework/config/SwaggerConfig.java

@@ -83,10 +83,10 @@ public class SwaggerConfig implements WebMvcConfigurer {
 
         return new Docket(DocumentationType.SWAGGER_2)
                 .select()
-                .apis(RequestHandlerSelectors.basePackage("com.nb.admin.controller"))
+                .apis(RequestHandlerSelectors.basePackage("com.nb.auth.controller"))
                 .paths(PathSelectors.any())
                 .build()
-                .groupName("登录模块")
+                .groupName("授权模块")
                 .apiInfo(apiInfo())
                 .globalOperationParameters(pars)
                 .securitySchemes(security())

+ 14 - 15
nb-framework/src/main/java/com/nb/framework/config/mybatisplus/MybatisPlusConfig.java

@@ -11,11 +11,10 @@ import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
 import com.baomidou.mybatisplus.extension.plugins.inner.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.MySqlDialect;
-import com.nb.common.bo.LoginUser;
+import com.nb.auth.bean.LoginUser;
+import com.nb.auth.utils.SecurityUtil;
 import com.nb.common.entity.TenantGenericEntity;
-import com.nb.common.util.SecurityUtil;
 import com.nb.framework.config.mybatisplus.handler.CreateAndUpdateMetaObjectHandler;
-import com.nb.framework.config.mybatisplus.handler.CustomDataPermissionHandler;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.StringValue;
 import net.sf.jsqlparser.schema.Column;
@@ -80,8 +79,8 @@ public class MybatisPlusConfig {
     @Bean
     public MybatisPlusInterceptor mybatisPlusInterceptor() {
         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-        // 数据权限插件
-        interceptor.addInnerInterceptor(dataPermissionInterceptor());
+//         数据权限插件
+//        interceptor.addInnerInterceptor(dataPermissionInterceptor());
         //多租户插件
         interceptor.addInnerInterceptor(tenantLineInnerInterceptor());
 
@@ -97,15 +96,15 @@ public class MybatisPlusConfig {
         return interceptor;
     }
 
-    /**
-     * 数据权限插件
-     */
-    public DataPermissionInterceptor dataPermissionInterceptor() {
-        DataPermissionInterceptor dataPermissionInterceptor = new DataPermissionInterceptor();
-        CustomDataPermissionHandler customDataPermissionHandler = new CustomDataPermissionHandler();
-        dataPermissionInterceptor.setDataPermissionHandler(customDataPermissionHandler);
-        return dataPermissionInterceptor;
-    }
+//    /**
+//     * 数据权限插件
+//     */
+//    public DataPermissionInterceptor dataPermissionInterceptor() {
+//        DataPermissionInterceptor dataPermissionInterceptor = new DataPermissionInterceptor();
+//        CustomDataPermissionHandler customDataPermissionHandler = new CustomDataPermissionHandler();
+//        dataPermissionInterceptor.setDataPermissionHandler(customDataPermissionHandler);
+//        return dataPermissionInterceptor;
+//    }
 
     /**
      * 分页插件
@@ -160,7 +159,7 @@ public class MybatisPlusConfig {
                     //未登录
                     return false;
                 }
-                if(Boolean.TRUE.equals(loginUser.getIsSys())){
+                if(Boolean.TRUE.equals(loginUser.isSys())){
                     String tenantId = String.valueOf( request.getAttribute("tenantId", SCOPE_REQUEST));
                     if(StrUtil.isNullOrUndefined(tenantId)){
                         return true;

+ 7 - 7
nb-framework/src/main/java/com/nb/framework/config/mybatisplus/handler/CreateAndUpdateMetaObjectHandler.java

@@ -1,10 +1,10 @@
 package com.nb.framework.config.mybatisplus.handler;
 
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-import com.nb.common.bo.LoginUser;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.ResultCode;
-import com.nb.common.util.SecurityUtil;
+import com.nb.auth.bean.LoginUser;
+import com.nb.auth.utils.SecurityUtil;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.ResultCode;
 import org.apache.ibatis.reflection.MetaObject;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -42,14 +42,14 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
             }
             if (metaObject.hasGetter(CREATE_BY) && metaObject.getValue(CREATE_BY) == null) {
                 LoginUser loginUser = SecurityUtil.getLoginUser();
-                this.strictInsertFill(metaObject, CREATE_BY, String.class, Objects.isNull(loginUser) ? "1" : loginUser.getSysUser().getId().toString());
+                this.strictInsertFill(metaObject, CREATE_BY, String.class, Objects.isNull(loginUser) ? "1" : loginUser.getId().toString());
             }
             if (metaObject.hasGetter(UPDATE_TIME) && metaObject.getValue(UPDATE_TIME) == null) {
                 this.strictUpdateFill(metaObject, UPDATE_TIME, Date.class, new Date());
             }
             if (metaObject.hasGetter(UPDATE_BY) && metaObject.getValue(UPDATE_BY) == null) {
                 LoginUser loginUser = SecurityUtil.getLoginUser();
-                this.strictUpdateFill(metaObject, UPDATE_BY, String.class, Objects.isNull(loginUser) ? "1" : loginUser.getSysUser().getId().toString());
+                this.strictUpdateFill(metaObject, UPDATE_BY, String.class, Objects.isNull(loginUser) ? "1" : loginUser.getId().toString());
             }
             if (metaObject.hasGetter(TENANT_ID) && metaObject.getValue(TENANT_ID) == null) {
                 ServletRequestAttributes request = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
@@ -72,7 +72,7 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
             }
             if (metaObject.hasGetter(UPDATE_BY) && metaObject.getValue(UPDATE_BY) == null) {
                 LoginUser loginUser = SecurityUtil.getLoginUser();
-                this.strictUpdateFill(metaObject, UPDATE_BY, String.class, Objects.isNull(loginUser) ? null : loginUser.getSysUser().getId().toString());
+                this.strictUpdateFill(metaObject, UPDATE_BY, String.class, Objects.isNull(loginUser) ? null : loginUser.getId().toString());
             }
         } catch (Exception e) {
             throw new CustomException(ResultCode.INTERNAL_SERVER_ERROR.getMessage());

+ 137 - 135
nb-framework/src/main/java/com/nb/framework/config/mybatisplus/handler/CustomDataPermissionHandler.java

@@ -1,135 +1,137 @@
-package com.nb.framework.config.mybatisplus.handler;
-
-import cn.hutool.core.annotation.AnnotationUtil;
-import cn.hutool.core.util.ReflectUtil;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
-import com.nb.common.annotation.DataScope;
-import com.nb.common.bo.LoginUser;
-import com.nb.common.bo.SysRoleBO;
-import com.nb.common.bo.SysUserBO;
-import com.nb.common.enums.DataScopeEnum;
-import com.nb.common.util.SecurityUtil;
-import lombok.SneakyThrows;
-import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.expression.Function;
-import net.sf.jsqlparser.expression.LongValue;
-import net.sf.jsqlparser.expression.Parenthesis;
-import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
-import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
-import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
-import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
-import net.sf.jsqlparser.expression.operators.relational.InExpression;
-import net.sf.jsqlparser.schema.Column;
-import net.sf.jsqlparser.schema.Table;
-import net.sf.jsqlparser.statement.select.PlainSelect;
-import net.sf.jsqlparser.statement.select.SelectExpressionItem;
-import net.sf.jsqlparser.statement.select.SubSelect;
-
-import java.util.Collections;
-import java.util.Objects;
-
-/**
- * 自定义数据权限
- *
- * @author Kevin
- */
-public class CustomDataPermissionHandler implements DataPermissionHandler {
-
-    /**
-     * 构建过滤条件
-     *
-     * @param user  当前登录用户
-     * @param where 当前查询条件
-     * @return 构建后查询条件
-     */
-    public static Expression dataScopeFilter(SysUserBO user, DataScope data, Expression where) {
-        String tableAlias = data.tableAlias();
-        String deptColumnName = data.deptColumnName();
-        String userColumnName = data.userColumnName();
-        Expression expression = null;
-        for (SysRoleBO role : user.getRoles()) {
-            String dataScope = role.getDataScope();
-            if (DataScopeEnum.ALL.getCode().equals(dataScope)) {
-                return where;
-            }
-            if (DataScopeEnum.CUSTOM.getCode().equals(dataScope)) {
-                InExpression inExpression = new InExpression();
-                inExpression.setLeftExpression(buildColumn(tableAlias, deptColumnName));
-                SubSelect subSelect = new SubSelect();
-                PlainSelect select = new PlainSelect();
-                select.setSelectItems(Collections.singletonList(new SelectExpressionItem(new Column("dept_id"))));
-                select.setFromItem(new Table("sys_role_dept"));
-                EqualsTo equalsTo = new EqualsTo();
-                equalsTo.setLeftExpression(new Column("role_id"));
-                equalsTo.setRightExpression(new LongValue(role.getId()));
-                select.setWhere(equalsTo);
-                subSelect.setSelectBody(select);
-                inExpression.setRightExpression(subSelect);
-                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, inExpression) : inExpression;
-            }
-            if (DataScopeEnum.DEPT.getCode().equals(dataScope)) {
-                EqualsTo equalsTo = new EqualsTo();
-                equalsTo.setLeftExpression(buildColumn(tableAlias, deptColumnName));
-                equalsTo.setRightExpression(new LongValue(user.getDeptId()));
-                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, equalsTo) : equalsTo;
-            }
-            if (DataScopeEnum.DEPT_AND_CHILD.getCode().equals(dataScope)) {
-                InExpression inExpression = new InExpression();
-                inExpression.setLeftExpression(buildColumn(tableAlias, deptColumnName));
-                SubSelect subSelect = new SubSelect();
-                PlainSelect select = new PlainSelect();
-                select.setSelectItems(Collections.singletonList(new SelectExpressionItem(new Column("dept_id"))));
-                select.setFromItem(new Table("sys_dept"));
-                EqualsTo equalsTo = new EqualsTo();
-                equalsTo.setLeftExpression(new Column("dept_id"));
-                equalsTo.setRightExpression(new LongValue(user.getDeptId()));
-                Function function = new Function();
-                function.setName("find_in_set");
-                function.setParameters(new ExpressionList(new LongValue(user.getDeptId()), new Column("ancestors")));
-                select.setWhere(new OrExpression(equalsTo, function));
-                subSelect.setSelectBody(select);
-                inExpression.setRightExpression(subSelect);
-                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, inExpression) : inExpression;
-            }
-            if (DataScopeEnum.SELF.getCode().equals(dataScope)) {
-                EqualsTo equalsTo = new EqualsTo();
-                equalsTo.setLeftExpression(buildColumn(tableAlias, userColumnName));
-                equalsTo.setRightExpression(new LongValue(user.getId()));
-                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, equalsTo) : equalsTo;
-            }
-        }
-        return ObjectUtils.isNotEmpty(where) ? new AndExpression(where, new Parenthesis(expression)) : expression;
-    }
-
-    /**
-     * 构建Column
-     *
-     * @param tableAlias 表别名
-     * @param columnName 字段名称
-     * @return 带表别名字段
-     */
-    public static Column buildColumn(String tableAlias, String columnName) {
-        if (StringUtils.isNotEmpty(tableAlias)) {
-            columnName = tableAlias + "." + columnName;
-        }
-        return new Column(columnName);
-    }
-
-    @Override
-    @SneakyThrows
-    public Expression getSqlSegment(Expression where, String mappedStatementId) {
-        Class<?> clazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(".")));
-        String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(".") + 1);
-        DataScope dataScope = AnnotationUtil.getAnnotation(ReflectUtil.getMethodByName(clazz, methodName), DataScope.class);
-        if (Objects.isNull(dataScope)) {
-            return where;
-        }
-        LoginUser loginUser = SecurityUtil.getLoginUser();
-        if (Objects.isNull(loginUser) || SecurityUtil.isSuperAdmin()) {
-            return where;
-        }
-        return dataScopeFilter(loginUser.getSysUser(), dataScope, where);
-    }
-}
+//package com.nb.framework.config.mybatisplus.handler;
+//
+//import cn.hutool.core.annotation.AnnotationUtil;
+//import cn.hutool.core.util.ReflectUtil;
+//import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+//import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
+//import com.nb.auth.bean.LoginUser;
+//import com.nb.auth.bean.SysRoleInfo;
+//import com.nb.auth.utils.SecurityUtil;
+//import com.nb.core.annotation.DataScope;
+//import com.nb.common.bo.SysRoleBO;
+//import com.nb.common.enums.DataScopeEnum;
+//import lombok.SneakyThrows;
+//import net.sf.jsqlparser.expression.Expression;
+//import net.sf.jsqlparser.expression.Function;
+//import net.sf.jsqlparser.expression.LongValue;
+//import net.sf.jsqlparser.expression.Parenthesis;
+//import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
+//import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
+//import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
+//import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
+//import net.sf.jsqlparser.expression.operators.relational.InExpression;
+//import net.sf.jsqlparser.schema.Column;
+//import net.sf.jsqlparser.schema.Table;
+//import net.sf.jsqlparser.statement.select.PlainSelect;
+//import net.sf.jsqlparser.statement.select.SelectExpressionItem;
+//import net.sf.jsqlparser.statement.select.SubSelect;
+//
+//import java.util.Collections;
+//import java.util.List;
+//import java.util.Objects;
+//
+///**
+// * 自定义数据权限
+// *
+// * @author Kevin
+// */
+//public class CustomDataPermissionHandler implements DataPermissionHandler {
+//
+//    /**
+//     * 构建过滤条件
+//     *
+//     * @param user  当前登录用户
+//     * @param where 当前查询条件
+//     * @return 构建后查询条件
+//     */
+//    public static Expression dataScopeFilter(LoginUser user, DataScope data, Expression where) {
+//        String tableAlias = data.tableAlias();
+//        String deptColumnName = data.deptColumnName();
+//        String userColumnName = data.userColumnName();
+//        Expression expression = null;
+//        List<SysRoleInfo> roles = user.getRoles();
+//        for (SysRoleInfo role : roles) {
+//            String dataScope = role.getDataScope();
+//            if (DataScopeEnum.ALL.getCode().equals(dataScope)) {
+//                return where;
+//            }
+//            if (DataScopeEnum.CUSTOM.getCode().equals(dataScope)) {
+//                InExpression inExpression = new InExpression();
+//                inExpression.setLeftExpression(buildColumn(tableAlias, deptColumnName));
+//                SubSelect subSelect = new SubSelect();
+//                PlainSelect select = new PlainSelect();
+//                select.setSelectItems(Collections.singletonList(new SelectExpressionItem(new Column("dept_id"))));
+//                select.setFromItem(new Table("sys_role_dept"));
+//                EqualsTo equalsTo = new EqualsTo();
+//                equalsTo.setLeftExpression(new Column("role_id"));
+//                equalsTo.setRightExpression(new LongValue(role.getId()));
+//                select.setWhere(equalsTo);
+//                subSelect.setSelectBody(select);
+//                inExpression.setRightExpression(subSelect);
+//                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, inExpression) : inExpression;
+//            }
+//            if (DataScopeEnum.DEPT.getCode().equals(dataScope)) {
+//                EqualsTo equalsTo = new EqualsTo();
+//                equalsTo.setLeftExpression(buildColumn(tableAlias, deptColumnName));
+//                equalsTo.setRightExpression(new LongValue(user.getDeptId()));
+//                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, equalsTo) : equalsTo;
+//            }
+//            if (DataScopeEnum.DEPT_AND_CHILD.getCode().equals(dataScope)) {
+//                InExpression inExpression = new InExpression();
+//                inExpression.setLeftExpression(buildColumn(tableAlias, deptColumnName));
+//                SubSelect subSelect = new SubSelect();
+//                PlainSelect select = new PlainSelect();
+//                select.setSelectItems(Collections.singletonList(new SelectExpressionItem(new Column("dept_id"))));
+//                select.setFromItem(new Table("sys_dept"));
+//                EqualsTo equalsTo = new EqualsTo();
+//                equalsTo.setLeftExpression(new Column("dept_id"));
+//                equalsTo.setRightExpression(new LongValue(user.getDeptId()));
+//                Function function = new Function();
+//                function.setName("find_in_set");
+//                function.setParameters(new ExpressionList(new LongValue(user.getDeptId()), new Column("ancestors")));
+//                select.setWhere(new OrExpression(equalsTo, function));
+//                subSelect.setSelectBody(select);
+//                inExpression.setRightExpression(subSelect);
+//                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, inExpression) : inExpression;
+//            }
+//            if (DataScopeEnum.SELF.getCode().equals(dataScope)) {
+//                EqualsTo equalsTo = new EqualsTo();
+//                equalsTo.setLeftExpression(buildColumn(tableAlias, userColumnName));
+//                equalsTo.setRightExpression(new LongValue(user.getId()));
+//                expression = ObjectUtils.isNotEmpty(expression) ? new OrExpression(expression, equalsTo) : equalsTo;
+//            }
+//        }
+//        return ObjectUtils.isNotEmpty(where) ? new AndExpression(where, new Parenthesis(expression)) : expression;
+//    }
+//
+//    /**
+//     * 构建Column
+//     *
+//     * @param tableAlias 表别名
+//     * @param columnName 字段名称
+//     * @return 带表别名字段
+//     */
+//    public static Column buildColumn(String tableAlias, String columnName) {
+//        if (StringUtils.isNotEmpty(tableAlias)) {
+//            columnName = tableAlias + "." + columnName;
+//        }
+//        return new Column(columnName);
+//    }
+//
+//    @Override
+//    @SneakyThrows
+//    public Expression getSqlSegment(Expression where, String mappedStatementId) {
+//        Class<?> clazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(".")));
+//        String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(".") + 1);
+//        DataScope dataScope = AnnotationUtil.getAnnotation(ReflectUtil.getMethodByName(clazz, methodName), DataScope.class);
+//        if (Objects.isNull(dataScope)) {
+//            return where;
+//        }
+//        LoginUser loginUser = SecurityUtil.getLoginUser();
+//        if (Objects.isNull(loginUser) || SecurityUtil.isSuperAdmin()) {
+//            return where;
+//        }
+//        return dataScopeFilter(loginUser, dataScope, where);
+//    }
+//}

+ 4 - 3
nb-framework/src/main/java/com/nb/framework/satoken/service/CustomStpInterface.java

@@ -1,8 +1,8 @@
 package com.nb.framework.satoken.service;
 
 import cn.dev33.satoken.stp.StpInterface;
-import com.nb.common.bo.SysRoleBO;
-import com.nb.common.util.SecurityUtil;
+import com.nb.auth.bean.SysRoleInfo;
+import com.nb.auth.utils.SecurityUtil;
 import com.google.common.collect.Lists;
 import org.springframework.stereotype.Component;
 
@@ -24,6 +24,7 @@ public class CustomStpInterface implements StpInterface {
 
     @Override
     public List<String> getRoleList(Object loginId, String loginType) {
-        return SecurityUtil.getLoginUser().getSysUser().getRoles().stream().map(SysRoleBO::getRoleCode).collect(Collectors.toList());
+        List<SysRoleInfo> roles = SecurityUtil.getLoginUser().getRoles();
+        return roles.stream().map(SysRoleInfo::getRoleCode).collect(Collectors.toList());
     }
 }

+ 6 - 5
nb-framework/src/main/java/com/nb/framework/web/exception/GlobalExceptionHandler.java

@@ -3,11 +3,12 @@ package com.nb.framework.web.exception;
 import cn.dev33.satoken.exception.NotLoginException;
 import cn.dev33.satoken.exception.NotPermissionException;
 import cn.dev33.satoken.exception.NotRoleException;
-import com.nb.common.exception.*;
-import com.nb.common.exception.apply.ApplyTokenParamException;
-import com.nb.common.exception.apply.NoExistAppKeyException;
-import com.nb.common.result.R;
-import com.nb.common.result.ResultCode;
+import com.nb.core.exception.CustomException;
+import com.nb.core.exception.*;
+import com.nb.core.exception.apply.ApplyTokenParamException;
+import com.nb.core.exception.apply.NoExistAppKeyException;
+import com.nb.core.result.R;
+import com.nb.core.result.ResultCode;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.BindException;
 import org.springframework.web.bind.MethodArgumentNotValidException;

+ 61 - 61
nb-framework/src/main/java/com/nb/framework/web/service/IUserService.java

@@ -1,61 +1,61 @@
-package com.nb.framework.web.service;
-
-import com.nb.common.dto.LoginDTO;
-import com.nb.system.common.vo.AccountInfoVO;
-import com.nb.system.common.vo.RouteItemVO;
-import com.nb.system.common.vo.UserInfoVO;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * 用户接口
- *
- * @author Kevin
- */
-public interface IUserService {
-
-    /**
-     * 登录接口
-     *
-     * @param req
-     * @return
-     */
-    String login(LoginDTO req);
-
-    /**
-     * 获取用户信息
-     *
-     * @return
-     */
-    UserInfoVO getUserInfo();
-
-    /**
-     * 获取权限标识
-     *
-     * @return
-     */
-    Set<String> getPermCode();
-
-    /**
-     * 获取菜单列表
-     *
-     * @return
-     */
-    List<RouteItemVO> getMenuList();
-
-    /**
-     * 获取账户信息
-     *
-     * @return
-     */
-    AccountInfoVO getAccountInfo();
-
-    /**
-     * 更新账户信息
-     *
-     * @param req
-     */
-    void saveAccountInfo(AccountInfoVO req);
-
-}
+//package com.nb.framework.web.service;
+//
+//import com.nb.common.dto.TokenParameter;
+//import com.nb.system.common.vo.AccountInfoVO;
+//import com.nb.system.common.vo.RouteItemVO;
+//import com.nb.system.common.vo.UserInfoVO;
+//
+//import java.util.List;
+//import java.util.Set;
+//
+///**
+// * 用户接口
+// *
+// * @author Kevin
+// */
+//public interface IUserService {
+//
+//    /**
+//     * 登录接口
+//     *
+//     * @param req
+//     * @return
+//     */
+//    String login(TokenParameter req);
+//
+//    /**
+//     * 获取用户信息
+//     *
+//     * @return
+//     */
+//    UserInfoVO getUserInfo();
+//
+//    /**
+//     * 获取权限标识
+//     *
+//     * @return
+//     */
+//    Set<String> getPermCode();
+//
+//    /**
+//     * 获取菜单列表
+//     *
+//     * @return
+//     */
+//    List<RouteItemVO> getMenuList();
+//
+//    /**
+//     * 获取账户信息
+//     *
+//     * @return
+//     */
+//    AccountInfoVO getAccountInfo();
+//
+//    /**
+//     * 更新账户信息
+//     *
+//     * @param req
+//     */
+//    void saveAccountInfo(AccountInfoVO req);
+//
+//}

+ 360 - 364
nb-framework/src/main/java/com/nb/framework/web/service/impl/UserServiceImpl.java

@@ -1,366 +1,362 @@
-package com.nb.framework.web.service.impl;
-
-import cn.dev33.satoken.spring.SpringMVCUtil;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.crypto.digest.DigestUtil;
-import cn.hutool.http.useragent.UserAgent;
-import cn.hutool.http.useragent.UserAgentUtil;
-import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.nb.common.Constants;
-import com.nb.common.MenuConstants;
-import com.nb.common.apply.ApplyManager;
-import com.nb.common.bo.LoginUser;
-import com.nb.common.bo.SysApplyBO;
-import com.nb.common.bo.SysRoleBO;
-import com.nb.common.bo.SysUserBO;
-import com.nb.common.dto.LoginDTO;
-import com.nb.common.enums.*;
-import com.nb.common.exception.CustomException;
-import com.nb.common.exception.apply.ApplyTokenParamException;
-import com.nb.common.exception.apply.NoExistAppKeyException;
-import com.nb.common.util.AddressUtil;
-import com.nb.common.util.IpUtil;
-import com.nb.common.util.SecurityUtil;
-import com.nb.framework.web.service.IUserService;
-import com.nb.system.common.vo.*;
-import com.nb.system.entity.SysApply;
-import com.nb.system.entity.SysMenu;
-import com.nb.system.entity.SysRole;
-import com.nb.system.entity.SysUser;
-import com.nb.system.properties.CaptchaProperties;
-import com.nb.system.service.ISysMenuService;
-import com.nb.system.service.ISysRoleService;
-import com.nb.system.service.ISysUserService;
-import com.nb.system.utils.CaptchaTool;
-import com.google.common.collect.Sets;
-import com.nb.system.utils.TenantUtil;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 用户实现类
- *
- * @author Kevin
- */
-@Slf4j
-@Service
-@AllArgsConstructor
-@EnableConfigurationProperties(CaptchaProperties.class)
-public class UserServiceImpl implements IUserService {
-
-    private final ISysMenuService sysMenuService;
-
-    private final CaptchaTool captchaTool;
-
-    private final CaptchaProperties captchaProperties;
-
-    private final ISysUserService sysUserService;
-
-    private final ISysRoleService sysRoleService;
-
-    private final ApplyManager applyManager;
-
-    @Override
-    public String login(LoginDTO req) {
-        if (StrUtil.isBlank(req.getGrantType())) {
-            throw new CustomException("授权类型不能为空");
-        }
-        if (!GrantTypeEnum.contains(req.getGrantType())) {
-            throw new CustomException("授权类型暂不支持");
-        }
-        //用户登录
-        userLogin(req);
-        //第三方应用登录
-        applyLogin(req);
-        return StpUtil.getTokenValue();
-    }
-
-    @Override
-    public UserInfoVO getUserInfo() {
-        UserInfoVO userInfoVO = new UserInfoVO();
-        SysUser sysUser = sysUserService.getById(StpUtil.getLoginIdAsLong());
-        // 查询角色列表
-        List<SysRole> sysRoleList = sysRoleService.listSysRoleByUserId(sysUser.getId());
-        List<RoleInfoVO> roleInfoVOList = sysRoleList.stream().map(item -> {
-            RoleInfoVO roleInfoVO = new RoleInfoVO();
-            roleInfoVO.setRoleName(item.getRoleName());
-            roleInfoVO.setValue(item.getRoleCode());
-            return roleInfoVO;
-        }).collect(Collectors.toList());
-        userInfoVO.setUserId(sysUser.getId().toString());
-        userInfoVO.setUsername(sysUser.getAccount());
-        userInfoVO.setRealName(sysUser.getNickname());
-        userInfoVO.setAvatar(sysUser.getAvatar());
-        userInfoVO.setDesc(sysUser.getRemarks());
-        userInfoVO.setRoles(roleInfoVOList);
-        userInfoVO.setIsSys(sysUser.getIsSys());
-        userInfoVO.setTenantId(String.valueOf(sysUser.getTenantId()));
-        userInfoVO.setTenantName(sysUser.getTenantName());
-        return userInfoVO;
-    }
-
-    @Override
-    public Set<String> getPermCode() {
-        return SecurityUtil.getLoginUser().getPermissions();
-    }
-
-    @Override
-    public List<RouteItemVO> getMenuList() {
-        List<SysMenu> sysMenuList;
-        SysUserBO sysUserBO = SecurityUtil.getSysUser();
-        if (SecurityUtil.isSuperAdmin()) {
-            LambdaQueryWrapper<SysMenu> queryWrapper = Wrappers.lambdaQuery();
-            queryWrapper.eq(SysMenu::getStatus, StatusEnum.YES.getCode());
-            queryWrapper.in(SysMenu::getMenuType, MenuTypeEnum.DIR.getCode(), MenuTypeEnum.MENU.getCode());
-            queryWrapper.eq(!TenantUtil.isTuoRen(),SysMenu::getTenantMenu,true);
-            sysMenuList = sysMenuService.list(queryWrapper);
-        } else {
-            sysMenuList = sysMenuService.listGrantMenuByUserId(sysUserBO.getId());
-        }
-        List<RouteItemVO> routeItemVOList = sysMenuList.stream()
-                .filter(item -> item.getParentId().intValue() == 0)
-                .sorted(Comparator.comparing(SysMenu::getSort))
-                .map(item -> {
-                    RouteItemVO node = convertToRoute(item);
-                    node.setChildren(getChildrenList(item, sysMenuList));
-                    return node;
-                }).collect(Collectors.toList());
-        return routeItemVOList;
-    }
-
-    @Override
-    public AccountInfoVO getAccountInfo() {
-        LoginUser loginUser = SecurityUtil.getLoginUser();
-        SysUser sysUser = sysUserService.getById(loginUser.getSysUser().getId());
-        return BeanUtil.copyProperties(sysUser, AccountInfoVO.class);
-    }
-
-    @Override
-    public void saveAccountInfo(AccountInfoVO req) {
-        LoginUser loginUser = SecurityUtil.getLoginUser();
-        SysUser entity = BeanUtil.copyProperties(req, SysUser.class);
-        entity.setId(loginUser.getSysUser().getId());
-        sysUserService.updateById(entity);
-    }
-
-    private List<RouteItemVO> getChildrenList(SysMenu root, List<SysMenu> list) {
-        List<RouteItemVO> childrenList = list.stream()
-                .filter(item -> item.getParentId().equals(root.getId()))
-                .sorted(Comparator.comparing(SysMenu::getSort))
-                .map(item -> {
-                    RouteItemVO node = convertToRoute(item);
-                    node.setChildren(getChildrenList(item, list));
-                    return node;
-                }).collect(Collectors.toList());
-        return childrenList;
-    }
-
-    private RouteItemVO convertToRoute(SysMenu item) {
-        RouteItemVO node = new RouteItemVO();
-        node.setName(StrUtil.upperFirst(item.getRoutePath()));
-        node.setPath(item.getRoutePath());
-        node.setComponent(item.getComponent());
-        // 一级目录
-        if (Objects.equals(item.getMenuType(), MenuTypeEnum.DIR.getCode()) && item.getParentId().intValue() == 0) {
-            node.setPath("/" + item.getRoutePath());
-            node.setComponent(MenuConstants.LAYOUT);
-        }
-        // 外部链接
-        if (Objects.equals(item.getMenuType(), MenuTypeEnum.MENU.getCode()) && Objects.equals(item.getLinkExternal(), LinkExternalEnum.YES.getCode())) {
-            node.setComponent(MenuConstants.IFRAME);
-        }
-        RouteMetoVO routeMetoVO = new RouteMetoVO();
-        routeMetoVO.setTitle(item.getMenuName());
-        routeMetoVO.setIcon(item.getIcon());
-        routeMetoVO.setHideMenu(StrUtil.isNotBlank(item.getVisible()) && item.getVisible().equals(VisibleEnum.HIDE.getCode()));
-        // 菜单
-        if (Objects.equals(item.getMenuType(), MenuTypeEnum.MENU.getCode())) {
-            routeMetoVO.setIgnoreKeepAlive(item.getKeepalive().equals(KeepaliveEnum.YES.getCode()));
-        }
-        // 外部链接
-        if (Objects.equals(item.getMenuType(), MenuTypeEnum.MENU.getCode()) && Objects.equals(item.getLinkExternal(), LinkExternalEnum.YES.getCode())) {
-            // 内嵌
-            if (Objects.equals(item.getFrame(), FrameEnum.YES.getCode())) {
-                routeMetoVO.setFrameSrc(item.getLinkUrl());
-            }
-            // 外嵌
-            if (item.getFrame().equals(FrameEnum.NO.getCode())) {
-                node.setPath(item.getLinkUrl());
-            }
-        }
-        node.setMeta(routeMetoVO);
-        return node;
-    }
-
-
-
-    private void userLogin(LoginDTO req){
-        SysUser sysUser = null;
-        if (req.getGrantType().equals(GrantTypeEnum.USERNAME_PASSWORD.getCode())) {
-            if (StrUtil.isBlank(req.getUsername())) {
-                throw new CustomException("用户名不能为空");
-            }
-            if (StrUtil.isBlank(req.getPassword())) {
-                throw new CustomException("密码不能为空");
-            }
-            if(captchaProperties.isEnable()){
-                HttpServletRequest request = SpringMVCUtil.getRequest();
-                String requestFrom = request.getHeader("RequestFrom");
-                //来自app的请求不需要验证码
-                if(!"TuoRenApp".equals(requestFrom)){
-//                    captchaTool.ver(req.getCodeKey(),req.getCode());
-                }
-            }
-            sysUser = sysUserService.getOne(Wrappers.lambdaQuery(SysUser.class).eq(SysUser::getAccount, req.getUsername()));
-            if (Objects.isNull(sysUser)) {
-                log.info("登录用户:{}不存在", req.getUsername());
-                throw new CustomException("登录用户不存在");
-            }
-            if (!SecurityUtil.matchesPassword(req.getPassword(), sysUser.getPassword())) {
-                throw new CustomException("账号或密码不正确");
-            }
-            if (sysUser.getDelFlag().equals(DelFlagEnum.YES.getCode())) {
-                log.info("登录用户:{}已被删除", req.getUsername());
-                throw new CustomException("对不起,您的账号已被删除");
-            }
-            if (sysUser.getStatus().equals(StatusEnum.NO.getCode())) {
-                log.info("登录用户:{}已被停用", req.getUsername());
-                throw new CustomException("对不起,您的账号已被停用");
-            }
-        }else if (req.getGrantType().equals(GrantTypeEnum.MOBILE_CODE.getCode())) {
-            if (StrUtil.isBlank(req.getMobile())) {
-                throw new CustomException("手机号不能为空");
-            }
-            if (StrUtil.isBlank(req.getCode())) {
-                throw new CustomException("验证码不能为空");
-            }
-            // TODO,短信验证码校验,自行实现
-            if (!Objects.equals(req.getCode(), Constants.DEFAULT_SMS_CODE)) {
-                throw new CustomException("账号或密码不正确");
-            }
-            sysUser = sysUserService.getOne(Wrappers.lambdaQuery(SysUser.class).eq(SysUser::getPhone, req.getMobile()));
-            if (Objects.isNull(sysUser)) {
-                log.info("登录用户:{}不存在", req.getUsername());
-                throw new CustomException("登录用户不存在");
-            }
-            if (sysUser.getDelFlag().equals(DelFlagEnum.YES.getCode())) {
-                log.info("登录用户:{}已被删除", req.getUsername());
-                throw new CustomException("对不起,您的账号已被删除");
-            }
-            if (sysUser.getStatus().equals(StatusEnum.NO.getCode())) {
-                log.info("登录用户:{}已被停用", req.getUsername());
-                throw new CustomException("对不起,您的账号已被停用");
-            }
-        }else {
-            return;
-        }
-        log.info("登录用户:{}", req.getUsername());
-        SysUserBO sysUserBO = BeanUtil.copyProperties(sysUser, SysUserBO.class);
-        // 查询角色列表
-        List<SysRole> sysRoleList = sysRoleService.listSysRoleByUserId(sysUser.getId());
-        // 设置角色列表
-        sysUserBO.setRoles(sysRoleList.stream().map(item -> BeanUtil.copyProperties(item, SysRoleBO.class)).collect(Collectors.toList()));
-        // 查询权限标识
-        Set<String> permissions = Sets.newHashSet();
-//        if (CollUtil.isNotEmpty(sysRoleList)&&
-//                sysRoleList.stream().anyMatch(sysRole -> "admin".equalsIgnoreCase(sysRole.getRoleCode()))) {
-//            permissions.add(Constants.ALL_PERMISSION);
+//package com.nb.framework.web.service.impl;
+//
+//import cn.dev33.satoken.spring.SpringMVCUtil;
+//import cn.dev33.satoken.stp.StpUtil;
+//import cn.hutool.core.bean.BeanUtil;
+//import cn.hutool.core.util.StrUtil;
+//import cn.hutool.crypto.digest.DigestUtil;
+//import cn.hutool.http.useragent.UserAgent;
+//import cn.hutool.http.useragent.UserAgentUtil;
+//import cn.hutool.json.JSONObject;
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+//import com.nb.common.Constants;
+//import com.nb.common.MenuConstants;
+//import com.nb.common.apply.ApplyManager;
+//import com.nb.common.bo.LoginUser;
+//import com.nb.common.bo.SysApplyBO;
+//import com.nb.common.bo.SysRoleBO;
+//import com.nb.common.bo.SysUserBO;
+//import com.nb.common.dto.TokenParameter;
+//import com.nb.common.enums.*;
+//import com.nb.core.exception.CustomException;
+//import com.nb.core.exception.apply.ApplyTokenParamException;
+//import com.nb.core.exception.apply.NoExistAppKeyException;
+//import com.nb.common.util.AddressUtil;
+//import com.nb.common.util.IpUtil;
+//import com.nb.common.util.SecurityUtil;
+//import com.nb.framework.web.service.IUserService;
+//import com.nb.system.common.vo.*;
+//import com.nb.system.entity.SysMenu;
+//import com.nb.system.entity.SysRole;
+//import com.nb.system.entity.SysUser;
+//import com.nb.system.properties.CaptchaProperties;
+//import com.nb.system.service.ISysMenuService;
+//import com.nb.system.service.ISysRoleService;
+//import com.nb.system.service.ISysUserService;
+//import com.nb.system.utils.CaptchaTool;
+//import com.google.common.collect.Sets;
+//import com.nb.system.utils.TenantUtil;
+//import lombok.AllArgsConstructor;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.boot.context.properties.EnableConfigurationProperties;
+//import org.springframework.stereotype.Service;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import java.util.*;
+//import java.util.stream.Collectors;
+//
+///**
+// * 用户实现类
+// *
+// * @author Kevin
+// */
+//@Slf4j
+//@Service
+//@AllArgsConstructor
+//@EnableConfigurationProperties(CaptchaProperties.class)
+//public class UserServiceImpl implements IUserService {
+//
+//    private final ISysMenuService sysMenuService;
+//
+//    private final CaptchaTool captchaTool;
+//
+//    private final CaptchaProperties captchaProperties;
+//
+//    private final ISysUserService sysUserService;
+//
+//    private final ISysRoleService sysRoleService;
+//
+//    private final ApplyManager applyManager;
+//
+//    @Override
+//    public String login(TokenParameter req) {
+//        if (StrUtil.isBlank(req.getGrantType())) {
+//            throw new CustomException("授权类型不能为空");
+//        }
+//        if (!GrantTypeEnum.contains(req.getGrantType())) {
+//            throw new CustomException("授权类型暂不支持");
+//        }
+//        //用户登录
+//        userLogin(req);
+//        //第三方应用登录
+//        applyLogin(req);
+//        return StpUtil.getTokenValue();
+//    }
+//
+//    @Override
+//    public UserInfoVO getUserInfo() {
+//        UserInfoVO userInfoVO = new UserInfoVO();
+//        SysUser sysUser = sysUserService.getById(StpUtil.getLoginIdAsLong());
+//        // 查询角色列表
+//        List<SysRole> sysRoleList = sysRoleService.listSysRoleByUserId(sysUser.getId());
+//        List<RoleInfoVO> roleInfoVOList = sysRoleList.stream().map(item -> {
+//            RoleInfoVO roleInfoVO = new RoleInfoVO();
+//            roleInfoVO.setRoleName(item.getRoleName());
+//            roleInfoVO.setValue(item.getRoleCode());
+//            return roleInfoVO;
+//        }).collect(Collectors.toList());
+//        userInfoVO.setUserId(sysUser.getId().toString());
+//        userInfoVO.setUsername(sysUser.getAccount());
+//        userInfoVO.setRealName(sysUser.getNickname());
+//        userInfoVO.setAvatar(sysUser.getAvatar());
+//        userInfoVO.setDesc(sysUser.getRemarks());
+//        userInfoVO.setRoles(roleInfoVOList);
+//        userInfoVO.setIsSys(sysUser.getIsSys());
+//        userInfoVO.setTenantId(String.valueOf(sysUser.getTenantId()));
+//        userInfoVO.setTenantName(sysUser.getTenantName());
+//        return userInfoVO;
+//    }
+//
+//    @Override
+//    public Set<String> getPermCode() {
+//        return SecurityUtil.getLoginUser().getPermissions();
+//    }
+//
+//    @Override
+//    public List<RouteItemVO> getMenuList() {
+//        List<SysMenu> sysMenuList;
+//        SysUserBO sysUserBO = SecurityUtil.getSysUser();
+//        if (SecurityUtil.isSuperAdmin()) {
+//            LambdaQueryWrapper<SysMenu> queryWrapper = Wrappers.lambdaQuery();
+//            queryWrapper.eq(SysMenu::getStatus, StatusEnum.YES.getCode());
+//            queryWrapper.in(SysMenu::getMenuType, MenuTypeEnum.DIR.getCode(), MenuTypeEnum.MENU.getCode());
+//            queryWrapper.eq(!TenantUtil.isTuoRen(),SysMenu::getTenantMenu,true);
+//            sysMenuList = sysMenuService.list(queryWrapper);
 //        } else {
-            permissions = sysMenuService.getPermissionsByUserId(sysUser.getId());
+//            sysMenuList = sysMenuService.listGrantMenuByUserId(sysUserBO.getId());
+//        }
+//        List<RouteItemVO> routeItemVOList = sysMenuList.stream()
+//                .filter(item -> item.getParentId().intValue() == 0)
+//                .sorted(Comparator.comparing(SysMenu::getSort))
+//                .map(item -> {
+//                    RouteItemVO node = convertToRoute(item);
+//                    node.setChildren(getChildrenList(item, sysMenuList));
+//                    return node;
+//                }).collect(Collectors.toList());
+//        return routeItemVOList;
+//    }
+//
+//    @Override
+//    public AccountInfoVO getAccountInfo() {
+//        LoginUser loginUser = SecurityUtil.getLoginUser();
+//        SysUser sysUser = sysUserService.getById(loginUser.getSysUser().getId());
+//        return BeanUtil.copyProperties(sysUser, AccountInfoVO.class);
+//    }
+//
+//    @Override
+//    public void saveAccountInfo(AccountInfoVO req) {
+//        LoginUser loginUser = SecurityUtil.getLoginUser();
+//        SysUser entity = BeanUtil.copyProperties(req, SysUser.class);
+//        entity.setId(loginUser.getSysUser().getId());
+//        sysUserService.updateById(entity);
+//    }
+//
+//    private List<RouteItemVO> getChildrenList(SysMenu root, List<SysMenu> list) {
+//        List<RouteItemVO> childrenList = list.stream()
+//                .filter(item -> item.getParentId().equals(root.getId()))
+//                .sorted(Comparator.comparing(SysMenu::getSort))
+//                .map(item -> {
+//                    RouteItemVO node = convertToRoute(item);
+//                    node.setChildren(getChildrenList(item, list));
+//                    return node;
+//                }).collect(Collectors.toList());
+//        return childrenList;
+//    }
+//
+//    private RouteItemVO convertToRoute(SysMenu item) {
+//        RouteItemVO node = new RouteItemVO();
+//        node.setName(StrUtil.upperFirst(item.getRoutePath()));
+//        node.setPath(item.getRoutePath());
+//        node.setComponent(item.getComponent());
+//        // 一级目录
+//        if (Objects.equals(item.getMenuType(), MenuTypeEnum.DIR.getCode()) && item.getParentId().intValue() == 0) {
+//            node.setPath("/" + item.getRoutePath());
+//            node.setComponent(MenuConstants.LAYOUT);
+//        }
+//        // 外部链接
+//        if (Objects.equals(item.getMenuType(), MenuTypeEnum.MENU.getCode()) && Objects.equals(item.getLinkExternal(), LinkExternalEnum.YES.getCode())) {
+//            node.setComponent(MenuConstants.IFRAME);
+//        }
+//        RouteMetoVO routeMetoVO = new RouteMetoVO();
+//        routeMetoVO.setTitle(item.getMenuName());
+//        routeMetoVO.setIcon(item.getIcon());
+//        routeMetoVO.setHideMenu(StrUtil.isNotBlank(item.getVisible()) && item.getVisible().equals(VisibleEnum.HIDE.getCode()));
+//        // 菜单
+//        if (Objects.equals(item.getMenuType(), MenuTypeEnum.MENU.getCode())) {
+//            routeMetoVO.setIgnoreKeepAlive(item.getKeepalive().equals(KeepaliveEnum.YES.getCode()));
+//        }
+//        // 外部链接
+//        if (Objects.equals(item.getMenuType(), MenuTypeEnum.MENU.getCode()) && Objects.equals(item.getLinkExternal(), LinkExternalEnum.YES.getCode())) {
+//            // 内嵌
+//            if (Objects.equals(item.getFrame(), FrameEnum.YES.getCode())) {
+//                routeMetoVO.setFrameSrc(item.getLinkUrl());
+//            }
+//            // 外嵌
+//            if (item.getFrame().equals(FrameEnum.NO.getCode())) {
+//                node.setPath(item.getLinkUrl());
+//            }
+//        }
+//        node.setMeta(routeMetoVO);
+//        return node;
+//    }
+//
+//
+//
+//    private void userLogin(TokenParameter req){
+//        SysUser sysUser = null;
+//        if (req.getGrantType().equals(GrantTypeEnum.USERNAME_PASSWORD.getCode())) {
+//            if (StrUtil.isBlank(req.getUsername())) {
+//                throw new CustomException("用户名不能为空");
+//            }
+//            if (StrUtil.isBlank(req.getPassword())) {
+//                throw new CustomException("密码不能为空");
+//            }
+//            if(captchaProperties.isEnable()){
+//                HttpServletRequest request = SpringMVCUtil.getRequest();
+//                String requestFrom = request.getHeader("RequestFrom");
+//                //来自app的请求不需要验证码
+//                if(!"TuoRenApp".equals(requestFrom)){
+////                    captchaTool.ver(req.getCodeKey(),req.getCode());
+//                }
+//            }
+//            sysUser = sysUserService.getOne(Wrappers.lambdaQuery(SysUser.class).eq(SysUser::getAccount, req.getUsername()));
+//            if (Objects.isNull(sysUser)) {
+//                log.info("登录用户:{}不存在", req.getUsername());
+//                throw new CustomException("登录用户不存在");
+//            }
+//            if (!SecurityUtil.matchesPassword(req.getPassword(), sysUser.getPassword())) {
+//                throw new CustomException("账号或密码不正确");
+//            }
+//            if (sysUser.getDelFlag().equals(DelFlagEnum.YES.getCode())) {
+//                log.info("登录用户:{}已被删除", req.getUsername());
+//                throw new CustomException("对不起,您的账号已被删除");
+//            }
+//            if (sysUser.getStatus().equals(StatusEnum.NO.getCode())) {
+//                log.info("登录用户:{}已被停用", req.getUsername());
+//                throw new CustomException("对不起,您的账号已被停用");
+//            }
+//        }else if (req.getGrantType().equals(GrantTypeEnum.MOBILE_CODE.getCode())) {
+//            if (StrUtil.isBlank(req.getMobile())) {
+//                throw new CustomException("手机号不能为空");
+//            }
+//            if (StrUtil.isBlank(req.getCode())) {
+//                throw new CustomException("验证码不能为空");
+//            }
+//            // TODO,短信验证码校验,自行实现
+//            if (!Objects.equals(req.getCode(), Constants.DEFAULT_SMS_CODE)) {
+//                throw new CustomException("账号或密码不正确");
+//            }
+//            sysUser = sysUserService.getOne(Wrappers.lambdaQuery(SysUser.class).eq(SysUser::getPhone, req.getMobile()));
+//            if (Objects.isNull(sysUser)) {
+//                log.info("登录用户:{}不存在", req.getUsername());
+//                throw new CustomException("登录用户不存在");
+//            }
+//            if (sysUser.getDelFlag().equals(DelFlagEnum.YES.getCode())) {
+//                log.info("登录用户:{}已被删除", req.getUsername());
+//                throw new CustomException("对不起,您的账号已被删除");
+//            }
+//            if (sysUser.getStatus().equals(StatusEnum.NO.getCode())) {
+//                log.info("登录用户:{}已被停用", req.getUsername());
+//                throw new CustomException("对不起,您的账号已被停用");
+//            }
+//        }else {
+//            return;
+//        }
+//        log.info("登录用户:{}", req.getUsername());
+//        SysUserBO sysUserBO = BeanUtil.copyProperties(sysUser, SysUserBO.class);
+//        // 查询角色列表
+//        List<SysRole> sysRoleList = sysRoleService.listSysRoleByUserId(sysUser.getId());
+//        // 设置角色列表
+//        sysUserBO.setRoles(sysRoleList.stream().map(item -> BeanUtil.copyProperties(item, SysRoleBO.class)).collect(Collectors.toList()));
+//        // 查询权限标识
+//        Set<String> permissions = Sets.newHashSet();
+////        if (CollUtil.isNotEmpty(sysRoleList)&&
+////                sysRoleList.stream().anyMatch(sysRole -> "admin".equalsIgnoreCase(sysRole.getRoleCode()))) {
+////            permissions.add(Constants.ALL_PERMISSION);
+////        } else {
+//            permissions = sysMenuService.getPermissionsByUserId(sysUser.getId());
+////        }
+//        // 登录
+//        StpUtil.login(sysUser.getId());
+//        LoginUser loginUser = new LoginUser();
+//        loginUser.setToken(StpUtil.getTokenValue());
+//        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());
+//        }
+//        if (req.getGrantType().equals(GrantTypeEnum.MOBILE_CODE.getCode())) {
+//            loginUser.setUsername(req.getMobile());
+//        }
+//        loginUser.setLoginTime(new Date());
+//        HttpServletRequest request = SpringMVCUtil.getRequest();
+//        UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
+//        String ipAddress = IpUtil.getClientIp(request);
+//        loginUser.setIpAddress(ipAddress);
+//        loginUser.setLoginLocation(AddressUtil.getRealAddressByIp(ipAddress));
+//        loginUser.setBrowser(userAgent.getBrowser().getName());
+//        loginUser.setOs(userAgent.getOs().getName());
+//        loginUser.setPermissions(permissions);
+//        // 设置用户信息
+//        StpUtil.getTokenSession().set(Constants.LOGIN_USER_KEY, loginUser);
+//    }
+//
+//    private void applyLogin(TokenParameter req){
+//        if (req.getGrantType().equals(GrantTypeEnum.APPKEY_APPSECRET.getCode())){
+//            if (StrUtil.isBlank(req.getAppKey())) {
+//                throw new ApplyTokenParamException("appKey不能为空");
+//            }
+//            if (StrUtil.isBlank(req.getTimestamp())) {
+//                throw new ApplyTokenParamException("timestamp不能为空");
+//            }
+//            if (StrUtil.isBlank(req.getSign())) {
+//                throw new ApplyTokenParamException("sign不能为空");
+//            }
+//            String appKey = req.getAppKey();
+//            String appSecret = applyManager.getAppSecret(appKey);
+//            if (StrUtil.isNullOrUndefined(appSecret)) {
+//                throw new NoExistAppKeyException();
+//            }
+//            //验证签名
+//            if (signCorrect(req.getSign(), req.getTimestamp(), req.getAppKey(), appSecret)) {
+//                StpUtil.login(req.getAppKey());
+//                LoginUser loginUser = new LoginUser();
+//                SysApplyBO sysApply = new SysApplyBO();
+//                sysApply.setAppKey(appKey);
+//                sysApply.setTenantId(applyManager.getTenantId(appKey));
+//                loginUser.setToken(StpUtil.getTokenValue());
+//                loginUser.setUserPlatform(UserPlatformEnum.WEB.getCode());
+//                loginUser.setGrantType(req.getGrantType());
+//                loginUser.setSysApply(sysApply);
+//                loginUser.setIsSys(false);
+//                loginUser.setUsername(req.getAppKey());
+//                loginUser.setLoginTime(new Date());
+//                HttpServletRequest request = SpringMVCUtil.getRequest();
+//                UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
+//                String ipAddress = IpUtil.getClientIp(request);
+//                loginUser.setIpAddress(ipAddress);
+//                loginUser.setLoginLocation(AddressUtil.getRealAddressByIp(ipAddress));
+//                loginUser.setBrowser(userAgent.getBrowser().getName());
+//                loginUser.setOs(userAgent.getOs().getName());
+//                loginUser.setPermissions(new HashSet<>(applyManager.getPermission(appKey)));
+//                // 设置用户信息
+//                StpUtil.getTokenSession().set(Constants.LOGIN_USER_KEY, loginUser);
+//            }else {
+//                throw new ApplyTokenParamException("签名错误");
+//            }
+//        }else {
+//            return;
 //        }
-        // 登录
-        StpUtil.login(sysUser.getId());
-        LoginUser loginUser = new LoginUser();
-        loginUser.setToken(StpUtil.getTokenValue());
-        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());
-        }
-        if (req.getGrantType().equals(GrantTypeEnum.MOBILE_CODE.getCode())) {
-            loginUser.setUsername(req.getMobile());
-        }
-        loginUser.setLoginTime(new Date());
-        HttpServletRequest request = SpringMVCUtil.getRequest();
-        UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
-        String ipAddress = IpUtil.getClientIp(request);
-        loginUser.setIpAddress(ipAddress);
-        loginUser.setLoginLocation(AddressUtil.getRealAddressByIp(ipAddress));
-        loginUser.setBrowser(userAgent.getBrowser().getName());
-        loginUser.setOs(userAgent.getOs().getName());
-        loginUser.setPermissions(permissions);
-        // 设置用户信息
-        StpUtil.getTokenSession().set(Constants.LOGIN_USER_KEY, loginUser);
-    }
-
-    private void applyLogin(LoginDTO req){
-        if (req.getGrantType().equals(GrantTypeEnum.APPKEY_APPSECRET.getCode())){
-            if (StrUtil.isBlank(req.getAppKey())) {
-                throw new ApplyTokenParamException("appKey不能为空");
-            }
-            if (StrUtil.isBlank(req.getTimestamp())) {
-                throw new ApplyTokenParamException("timestamp不能为空");
-            }
-            if (StrUtil.isBlank(req.getSign())) {
-                throw new ApplyTokenParamException("sign不能为空");
-            }
-            String appKey = req.getAppKey();
-            String appSecret = applyManager.getAppSecret(appKey);
-            if (StrUtil.isNullOrUndefined(appSecret)) {
-                throw new NoExistAppKeyException();
-            }
-            //验证签名
-            if (signCorrect(req.getSign(), req.getTimestamp(), req.getAppKey(), appSecret)) {
-                StpUtil.login(req.getAppKey());
-                LoginUser loginUser = new LoginUser();
-                SysApplyBO sysApply = new SysApplyBO();
-                sysApply.setAppKey(appKey);
-                sysApply.setTenantId(applyManager.getTenantId(appKey));
-                loginUser.setToken(StpUtil.getTokenValue());
-                loginUser.setUserPlatform(UserPlatformEnum.WEB.getCode());
-                loginUser.setGrantType(req.getGrantType());
-                loginUser.setSysApply(sysApply);
-                loginUser.setIsSys(false);
-                loginUser.setUsername(req.getAppKey());
-                loginUser.setLoginTime(new Date());
-                HttpServletRequest request = SpringMVCUtil.getRequest();
-                UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
-                String ipAddress = IpUtil.getClientIp(request);
-                loginUser.setIpAddress(ipAddress);
-                loginUser.setLoginLocation(AddressUtil.getRealAddressByIp(ipAddress));
-                loginUser.setBrowser(userAgent.getBrowser().getName());
-                loginUser.setOs(userAgent.getOs().getName());
-                loginUser.setPermissions(new HashSet<>(applyManager.getPermission(appKey)));
-                // 设置用户信息
-                StpUtil.getTokenSession().set(Constants.LOGIN_USER_KEY, loginUser);
-            }else {
-                throw new ApplyTokenParamException("签名错误");
-            }
-        }else {
-            return;
-        }
-    }
-
-    private boolean signCorrect(String sign,String timestamp,String appKey,String appSecret){
-        JSONObject jsonObject = new JSONObject(true);
-        jsonObject.putOpt("appKey",appKey)
-                .putOpt("appSecret",appSecret)
-                .putOpt("timestamp",timestamp);
-        return DigestUtil.md5Hex(jsonObject.toString()).equalsIgnoreCase(sign);
-    }
-}
+//    }
+//
+//    private boolean signCorrect(String sign,String timestamp,String appKey,String appSecret){
+//        JSONObject jsonObject = new JSONObject(true);
+//        jsonObject.putOpt("appKey",appKey)
+//                .putOpt("appSecret",appSecret)
+//                .putOpt("timestamp",timestamp);
+//        return DigestUtil.md5Hex(jsonObject.toString()).equalsIgnoreCase(sign);
+//    }
+//}

+ 1 - 1
nb-oss/src/main/java/com/nb/oss/strategy/context/FileStorageContext.java

@@ -1,7 +1,7 @@
 package com.nb.oss.strategy.context;
 
 import com.nb.common.config.AppConfig;
-import com.nb.common.exception.CustomException;
+import com.nb.core.exception.CustomException;
 import com.nb.oss.strategy.FileStorageStrategy;
 import com.google.common.collect.Maps;
 import org.springframework.stereotype.Component;

+ 1 - 2
nb-oss/src/main/java/com/nb/oss/strategy/impl/AbstractFileStorage.java

@@ -4,8 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileTypeUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.text.CharSequenceUtil;
-import cn.hutool.core.util.IdUtil;
-import com.nb.common.exception.CustomException;
+import com.nb.core.exception.CustomException;
 import com.nb.oss.strategy.FileStorageStrategy;
 import org.springframework.web.multipart.MultipartFile;
 

+ 14 - 0
nb-system/pom.xml

@@ -20,6 +20,15 @@
             <groupId>org.python</groupId>
             <artifactId>jython-standalone</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.tuoren</groupId>
+            <artifactId>nb-core</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
 
 
         <!--阿里云物联网sdk-->
@@ -41,6 +50,11 @@
             <version>0.56.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.tuoren</groupId>
+            <artifactId>nb-auth</artifactId>
+        </dependency>
+
 
         <dependency>
             <groupId>com.github.whvcse</groupId>

+ 1 - 1
nb-system/src/main/java/com/nb/bus/controller/BusAlarmController.java

@@ -9,7 +9,7 @@ import com.nb.bus.entity.BusDeviceAlarmEntity;
 import com.nb.bus.service.LocalBusDeviceAlarmService;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.springframework.validation.annotation.Validated;

+ 3 - 3
nb-system/src/main/java/com/nb/bus/controller/BusClinicController.java

@@ -13,10 +13,10 @@ import com.nb.bus.controller.vo.VisitRecord;
 import com.nb.bus.entity.*;
 import com.nb.bus.service.*;
 import com.nb.bus.service.dto.*;
-import com.nb.common.annotation.Log;
+import com.nb.core.annotation.Log;
 import com.nb.common.entity.GenericEntity;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;

+ 2 - 2
nb-system/src/main/java/com/nb/bus/controller/BusConstantController.java

@@ -7,8 +7,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.nb.bus.enums.ConstantEnum;
 import com.nb.bus.service.constant.AbstractConstantService;
 import com.nb.common.entity.QueryParamEntity;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DuplicateKeyException;

+ 3 - 3
nb-system/src/main/java/com/nb/bus/controller/BusDeviceController.java

@@ -15,11 +15,11 @@ import com.nb.bus.enums.DeviceAlarmEnum;
 import com.nb.bus.service.LocalBusDeviceService;
 import com.nb.bus.service.dto.DeviceQuery;
 import com.nb.bus.service.dto.DeviceResult;
-import com.nb.common.annotation.Log;
+import com.nb.core.annotation.Log;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseSaveController;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/controller/BusDeviceHistoryController.java

@@ -14,7 +14,7 @@ import com.nb.bus.service.dto.DeviceHistoryQuery;
 import com.nb.bus.service.dto.DeviceUse;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/controller/BusDeviceManualController.java

@@ -5,7 +5,7 @@ import com.nb.bus.service.LocalBusDeviceManualService;
 import com.nb.bus.service.dto.ManualMonitorQuery;
 import com.nb.bus.service.dto.ManualMonitorResult;
 import com.nb.bus.service.dto.MonitorTimeStatsCountResult;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;

+ 1 - 4
nb-system/src/main/java/com/nb/bus/controller/BusDeviceRunningController.java

@@ -1,17 +1,14 @@
 package com.nb.bus.controller;
 
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import com.nb.bus.controller.vo.NoPumpConfigVo;
 import com.nb.bus.enums.DeviceAlarmEnum;
 import com.nb.bus.enums.DeviceStatusEnum;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
-import java.util.Date;
 import java.util.stream.Collectors;
 
 /**

+ 1 - 1
nb-system/src/main/java/com/nb/bus/controller/BusDocController.java

@@ -6,7 +6,7 @@ import com.nb.bus.entity.BusDocEntity;
 import com.nb.bus.service.LocalBusDocService;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/controller/BusEvaluationController.java

@@ -8,7 +8,7 @@ import com.nb.bus.service.LocalBusEvaluationService;
 import com.nb.bus.service.dto.EvalQuery;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;

+ 2 - 2
nb-system/src/main/java/com/nb/bus/controller/BusHospitalConfigController.java

@@ -7,8 +7,8 @@ import com.nb.bus.enums.ConfigEnum;
 import com.nb.bus.service.LocalBusHospitalConfigService;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;

+ 2 - 4
nb-system/src/main/java/com/nb/bus/controller/BusHospitalController.java

@@ -1,9 +1,7 @@
 package com.nb.bus.controller;
 
 
-import cn.dev33.satoken.annotation.SaCheckLogin;
 import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.dev33.satoken.annotation.SaMode;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
@@ -20,8 +18,8 @@ import com.nb.bus.hospital.script.ScriptManager;
 import com.nb.bus.service.LocalBusHospitalService;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;

+ 2 - 2
nb-system/src/main/java/com/nb/bus/controller/BusInfusionHistoryController.java

@@ -11,8 +11,8 @@ import com.nb.bus.service.dto.CombineQuery;
 import com.nb.bus.service.dto.CombineResult;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseQueryController;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;

+ 3 - 4
nb-system/src/main/java/com/nb/bus/controller/BusPatientController.java

@@ -17,15 +17,14 @@ import com.nb.bus.controller.vo.MonitorFinishedVo;
 import com.nb.bus.entity.*;
 import com.nb.bus.enums.DeviceStatusEnum;
 import com.nb.bus.enums.PatientAlarmEnum;
-import com.nb.bus.registry.patient.PatientRegistry;
 import com.nb.bus.service.*;
 import com.nb.bus.service.dto.*;
 import com.nb.bus.utils.WsPublishUtils;
-import com.nb.common.annotation.Log;
+import com.nb.core.annotation.Log;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseQueryController;
-import com.nb.common.exception.CustomException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;

+ 3 - 3
nb-system/src/main/java/com/nb/bus/controller/BusStatsAnalyseController.java

@@ -8,9 +8,9 @@ import com.nb.bus.service.dto.CombineQuery;
 import com.nb.bus.stats.CommonStats;
 import com.nb.bus.stats.entity.StatsAnalyseResult;
 import com.nb.common.util.ThreadUtil;
-import com.nb.common.exception.CustomException;
-import com.nb.common.exception.TenantException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.exception.TenantException;
+import com.nb.core.result.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/controller/BusVersionController.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import com.nb.bus.entity.BusVersionEntity;
 import com.nb.bus.service.LocalBusVersionService;
 import io.swagger.annotations.Api;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/entity/BusHospitalLogEntity.java

@@ -5,7 +5,7 @@ import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.nb.bus.enums.HospitalLogEnum;
 import com.nb.common.entity.TenantGenericEntity;
-import com.nb.common.exception.ExecuteResult;
+import com.nb.core.exception.ExecuteResult;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/hospital/his/HisRequest.java

@@ -1,7 +1,7 @@
 package com.nb.bus.hospital.his;
 
 import com.nb.bus.entity.BusClinicEntity;
-import com.nb.common.result.R;
+import com.nb.core.result.R;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.AllArgsConstructor;
 import lombok.Builder;

+ 4 - 4
nb-system/src/main/java/com/nb/bus/hospital/his/HisScriptSession.java

@@ -15,7 +15,7 @@ import com.nb.bus.service.LocalBusHospitalLogService;
 import com.nb.bus.service.LocalBusPatientService;
 import com.nb.bus.service.constant.LocalBusConDoctorService;
 import com.nb.bus.service.constant.LocalBusConMixService;
-import com.nb.common.exception.ExecuteResult;
+import com.nb.core.exception.ExecuteResult;
 import com.nb.bus.hospital.script.ScriptManager;
 import com.nb.bus.hospital.script.ScriptParse;
 import com.nb.bus.service.LocalBusClinicService;
@@ -23,9 +23,9 @@ import com.nb.bus.service.LocalBusHospitalService;
 import com.nb.common.cache.ConfigStorage;
 import com.nb.common.cache.manager.ConfigStorageManager;
 import com.nb.common.cache.value.Value;
-import com.nb.common.exception.CustomException;
-import com.nb.common.exception.ScriptException;
-import com.nb.common.result.R;
+import com.nb.core.exception.CustomException;
+import com.nb.core.exception.ScriptException;
+import com.nb.core.result.R;
 import com.nb.common.util.ExceptionUtil;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/hospital/script/DefaultParse.java

@@ -1,7 +1,7 @@
 package com.nb.bus.hospital.script;
 
 import cn.hutool.json.JSONUtil;
-import com.nb.common.exception.ExecuteResult;
+import com.nb.core.exception.ExecuteResult;
 
 /**
  * @author lifang

+ 2 - 2
nb-system/src/main/java/com/nb/bus/hospital/script/PythonParse.java

@@ -2,8 +2,8 @@ package com.nb.bus.hospital.script;
 
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
-import com.nb.common.exception.ExecuteResult;
-import com.nb.common.exception.ScriptException;
+import com.nb.core.exception.ExecuteResult;
+import com.nb.core.exception.ScriptException;
 import lombok.extern.slf4j.Slf4j;
 import org.python.core.*;
 import org.python.util.PythonInterpreter;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/hospital/script/ScriptManager.java

@@ -1,7 +1,7 @@
 package com.nb.bus.hospital.script;
 
 import cn.hutool.core.collection.CollectionUtil;
-import com.nb.common.exception.ExecuteResult;
+import com.nb.core.exception.ExecuteResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 1 - 1
nb-system/src/main/java/com/nb/bus/hospital/script/ScriptParse.java

@@ -1,6 +1,6 @@
 package com.nb.bus.hospital.script;
 
-import com.nb.common.exception.ExecuteResult;
+import com.nb.core.exception.ExecuteResult;
 
 /**
  * @author lifang

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio