From 998a761483ab22c557ce8b95b274a98f6049bce0 Mon Sep 17 00:00:00 2001
From: rays <1615175118@qq.com>
Date: Tue, 18 Jan 2022 11:04:02 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.6=E3=80=91=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E7=9A=84?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../api/constants/ScannerConstants.java | 2 +-
.../api/expander/SystemConfigExpander.java | 12 ++++-
kernel-s-system/system-business-user/pom.xml | 7 +++
.../user/controller/SysUserController.java | 23 ++++++++
.../modular/user/service/SysUserService.java | 18 +++++++
.../user/service/impl/SysUserServiceImpl.java | 54 +++++++++++++++++++
6 files changed, 114 insertions(+), 2 deletions(-)
diff --git a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java
index ca6a6d8f6..efb30b956 100644
--- a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java
+++ b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java
@@ -75,6 +75,6 @@ public interface ScannerConstants {
/**
* DevOps平台资源汇报路径
*/
- String DEVOPS_REQUEST_PATH = "/resource/addExternalResource";
+ String DEVOPS_REQUEST_PATH = "/scannerResource/addExternalResource";
}
diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java
index f881552e7..fb057717c 100644
--- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java
+++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java
@@ -76,5 +76,15 @@ public class SystemConfigExpander {
public static String getDefaultPassWord() {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_DEFAULT_PASSWORD", String.class, DEFAULT_PASSWORD);
}
-
+
+ /**
+ * 获取开发开关的状态
+ *
+ * @return {@link Boolean}
+ * @author majianguo
+ * @date 2022/1/17 14:59
+ **/
+ public static Boolean getDevSwitchStatus() {
+ return ConfigContext.me().getSysConfigValueWithDefault("DEVOPS_DEV_SWITCH_STATUS", Boolean.class, Boolean.FALSE);
+ }
}
diff --git a/kernel-s-system/system-business-user/pom.xml b/kernel-s-system/system-business-user/pom.xml
index 0a3cd9e61..2e47dbeaa 100644
--- a/kernel-s-system/system-business-user/pom.xml
+++ b/kernel-s-system/system-business-user/pom.xml
@@ -113,6 +113,13 @@
${roses.version}
+
+
+ cn.stylefeng.roses
+ auth-sdk
+ ${roses.version}
+
+
org.springframework.boot
diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java
index a255ea6a7..87af90b5a 100644
--- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java
+++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java
@@ -256,4 +256,27 @@ public class SysUserController {
return new SuccessResponseData<>(sysUserService.selector(sysUserRequest));
}
+ /**
+ * 获取所有用户ID和名称列表
+ *
+ * @return {@link ResponseData< List< SysUserRequest>>}
+ * @author majianguo
+ * @date 2022/1/17 14:24
+ **/
+ @GetResource(name = "获取所有用户ID和名称列表", path = "/sysUser/getAllUserIdList")
+ public ResponseData> getAllUserIdList() {
+ return new SuccessResponseData<>(sysUserService.getAllUserIdList());
+ }
+
+ /**
+ * 根据用户主键获取用户对应的token
+ *
+ * @return {@link ResponseData< List< SysUserRequest>>}
+ * @author majianguo
+ * @date 2022/1/17 14:24
+ **/
+ @GetResource(name = "根据用户主键获取用户对应的token", path = "/sysUser/getTokenByUserId")
+ public ResponseData getTokenByUserId(Long userId) {
+ return new SuccessResponseData<>(sysUserService.getTokenByUserId(userId));
+ }
}
diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java
index 6f3eff808..ad34ea5aa 100644
--- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java
+++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java
@@ -246,4 +246,22 @@ public interface SysUserService extends IService, UserServiceApi {
*/
List getAllUserIds();
+ /**
+ * 获取所有用户ID和名称列表
+ *
+ * @return {@link List< SysUserRequest>}
+ * @author majianguo
+ * @date 2022/1/17 15:05
+ **/
+ List getAllUserIdList();
+
+ /**
+ * 根据用户主键获取用户对应的token
+ *
+ * @param userId
+ * @return {@link String}
+ * @author majianguo
+ * @date 2022/1/17 15:05
+ **/
+ String getTokenByUserId(Long userId);
}
diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java
index e4e27730a..727897a97 100644
--- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java
+++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java
@@ -33,6 +33,7 @@ import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum;
import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum;
+import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
@@ -42,6 +43,9 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.file.api.FileInfoApi;
import cn.stylefeng.roses.kernel.file.api.constants.FileConstants;
+import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext;
+import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload;
+import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander;
import cn.stylefeng.roses.kernel.office.api.OfficeExcelApi;
import cn.stylefeng.roses.kernel.office.api.pojo.report.ExcelExportParam;
import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
@@ -588,6 +592,56 @@ public class SysUserServiceImpl extends ServiceImpl impl
return list.stream().map(SysUser::getUserId).collect(Collectors.toList());
}
+ @Override
+ public List getAllUserIdList() {
+ if (!SystemConfigExpander.getDevSwitchStatus()) {
+ return new ArrayList<>();
+ }
+ LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ userLambdaQueryWrapper.select(SysUser::getUserId, SysUser::getRealName);
+ userLambdaQueryWrapper.eq(SysUser::getStatusFlag, StatusEnum.ENABLE.getCode());
+ userLambdaQueryWrapper.ne(SysUser::getDelFlag, YesOrNotEnum.Y.getCode());
+ List list = this.list(userLambdaQueryWrapper);
+ return list.stream().map(item -> BeanUtil.toBean(item, SysUserRequest.class)).collect(Collectors.toList());
+ }
+
+ @Override
+ public String getTokenByUserId(Long userId) {
+ if (!SystemConfigExpander.getDevSwitchStatus() || !LoginContext.me().getSuperAdminFlag()) {
+ return null;
+ }
+ LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ userLambdaQueryWrapper.eq(SysUser::getUserId, userId);
+ SysUser sysUser = this.getOne(userLambdaQueryWrapper);
+
+ // 获取用户密码的加密值和用户的状态
+ UserLoginInfoDTO userValidateInfo = this.getUserLoginInfo(sysUser.getAccount());
+
+ // 获取LoginUser,用于用户的缓存
+ LoginUser loginUser = userValidateInfo.getLoginUser();
+
+ // 生成用户的token
+ DefaultJwtPayload defaultJwtPayload = new DefaultJwtPayload(loginUser.getUserId(), loginUser.getAccount(), false, null);
+ String jwtToken = JwtContext.me().generateTokenDefaultPayload(defaultJwtPayload);
+ loginUser.setToken(jwtToken);
+
+ synchronized (this) {
+
+ // 获取ws-url 保存到用户信息中
+ loginUser.setWsUrl(WebSocketConfigExpander.getWebSocketWsUrl());
+
+ // 缓存用户信息,创建会话
+ sessionManagerApi.createSession(jwtToken, loginUser, false);
+
+ // 如果开启了单账号单端在线,则踢掉已经上线的该用户
+ if (AuthConfigExpander.getSingleAccountLoginFlag()) {
+ sessionManagerApi.removeSessionExcludeToken(jwtToken);
+ }
+ }
+
+ return jwtToken;
+ }
+
@Override
public UserLoginInfoDTO getUserLoginInfo(String account) {