【7.1.6】新增获取用户信息的接口

pull/25/MERGE
rays 2022-01-18 11:04:02 +08:00
parent 95e7dc7148
commit 998a761483
6 changed files with 114 additions and 2 deletions

View File

@ -75,6 +75,6 @@ public interface ScannerConstants {
/**
* DevOps
*/
String DEVOPS_REQUEST_PATH = "/resource/addExternalResource";
String DEVOPS_REQUEST_PATH = "/scannerResource/addExternalResource";
}

View File

@ -77,4 +77,14 @@ public class SystemConfigExpander {
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);
}
}

View File

@ -113,6 +113,13 @@
<version>${roses.version}</version>
</dependency>
<!--登录sdk-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>auth-sdk</artifactId>
<version>${roses.version}</version>
</dependency>
<!--web模块-->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -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<List<SysUserRequest>> 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<String> getTokenByUserId(Long userId) {
return new SuccessResponseData<>(sysUserService.getTokenByUserId(userId));
}
}

View File

@ -246,4 +246,22 @@ public interface SysUserService extends IService<SysUser>, UserServiceApi {
*/
List<Long> getAllUserIds();
/**
* ID
*
* @return {@link List< SysUserRequest>}
* @author majianguo
* @date 2022/1/17 15:05
**/
List<SysUserRequest> getAllUserIdList();
/**
* token
*
* @param userId
* @return {@link String}
* @author majianguo
* @date 2022/1/17 15:05
**/
String getTokenByUserId(Long userId);
}

View File

@ -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<SysUserMapper, SysUser> impl
return list.stream().map(SysUser::getUserId).collect(Collectors.toList());
}
@Override
public List<SysUserRequest> getAllUserIdList() {
if (!SystemConfigExpander.getDevSwitchStatus()) {
return new ArrayList<>();
}
LambdaQueryWrapper<SysUser> userLambdaQueryWrapper = new LambdaQueryWrapper<>();
userLambdaQueryWrapper.select(SysUser::getUserId, SysUser::getRealName);
userLambdaQueryWrapper.eq(SysUser::getStatusFlag, StatusEnum.ENABLE.getCode());
userLambdaQueryWrapper.ne(SysUser::getDelFlag, YesOrNotEnum.Y.getCode());
List<SysUser> 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<SysUser> 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) {