This commit is contained in:
kuang.yife 2024-09-06 14:29:22 +08:00
parent 7fd6432158
commit c500891702
6 changed files with 66 additions and 3 deletions

View File

@ -54,6 +54,11 @@ public class SysUserController {
return userService.accountLogin(accountLoginDto);
}
@PostMapping(value = "loginNoCode")
public Response<UserInfoVO> loginNoCode(@RequestBody AccountLoginDTO accountLoginDto) {
return userService.loginNoCode(accountLoginDto);
}
@PostMapping(value = "mobileLogin")
public Response<UserInfoVO> mobileLogin(@RequestBody MobileLoginDTO mobileLoginDto) {
return userService.mobileLogin(mobileLoginDto);

View File

@ -13,6 +13,7 @@ spring:
redis:
host: 58.49.150.163
port: 6379
username: default
password: Clunt@12345
jedis:
pool:
@ -20,4 +21,4 @@ spring:
max-wait: 100
max-idle: 20
min-idle: 5
timeout: 10000
timeout: 10000

View File

@ -33,6 +33,7 @@ public class JWTConfig implements WebMvcConfigurer {
.excludePathPatterns("/v2/common/captcha")
.excludePathPatterns("/user/register")
.excludePathPatterns("/user/login")
.excludePathPatterns("/user/loginNoCode")
.excludePathPatterns("/user/mobileLogin")
.excludePathPatterns("/user/updatePassword")
.excludePathPatterns("/user/updatePasswordByEmail")

View File

@ -303,7 +303,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
.count();
var tenant = tenantMapper.selectById(sysUserService.getCurrentTenantId());
if (tenant.getUserNumLimit() != 0 && userNum >= tenant.getUserNumLimit()) {
if (tenant != null && tenant.getUserNumLimit() != 0 && userNum >= tenant.getUserNumLimit()) {
var systemLanguage = sysUserService.getUserSystemLanguage(sysUserService.getCurrentUserId());
if ("zh_CN".equals(systemLanguage)) {
return Response.responseMsg(TenantCodeEnum.TENANT_USER_NUM_LIMIT);

View File

@ -35,6 +35,8 @@ public interface ISysUserService extends IService<SysUser> {
Response<UserInfoVO> accountLogin(AccountLoginDTO accountLoginDto);
Response<UserInfoVO> loginNoCode(AccountLoginDTO accountLoginDto);
Response<UserInfoVO> mobileLogin(MobileLoginDTO mobileLoginDto);
Response<UserInfoVO> emailLogin(EmailLoginDTO emailLoginDTO);

View File

@ -285,7 +285,61 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
// Check user tenant expiration skip admin
var tenant = tenantMapper.selectById(user.getTenantId());
if (!"admin".equals(accountLoginDto.getUsername()) && tenant.getExpireTime().isBefore(LocalDateTime.now())) {
if (!"admin".equals(accountLoginDto.getUsername()) && tenant != null && tenant.getExpireTime().isBefore(LocalDateTime.now())) {
return Response.responseMsg(TenantCodeEnum.TENANT_EXPIRED);
}
var token = "";
if (redisUtil.hasKey(user.getUserName() + ":token")) {
token = String.valueOf(redisUtil.get(user.getUserName() + ":token"));
} else {
// 生成JWT的令牌
token = jwtUtil.createToken(accountLoginDto.getUsername());
redisUtil.set(accountLoginDto.getUsername() + ":token", token);
redisUtil.expire(accountLoginDto.getUsername() + ":token", 86400);
// 同时存放userId和userName 租户id
redisUtil.set(token + ":userName", user.getUserName(), 86400);
redisUtil.set(token + ":userId", String.valueOf(user.getId()), 86400);
redisUtil.set(token + ":tenantId", String.valueOf(user.getTenantId()), 86400);
}
return Response.responseData(UserInfoVO.builder()
.id(user.getId())
.token(token)
.expire(1694757956L)
.build());
}
@Override
public Response<UserInfoVO> loginNoCode(AccountLoginDTO accountLoginDto){
var password = "";
try {
password = CryptoUtils.decryptSymmetrically(SecurityConstants.LOGIN_SECURITY_KEY, null,
accountLoginDto.getPassword(), CryptoUtils.Algorithm.Encryption.AES_ECB_PKCS5);
} catch (Exception e) {
log.error("密码解密失败: " + e.getMessage());
return Response.responseMsg(UserCodeEnum.USERNAME_OR_PASSWORD_ERROR);
}
var user = lambdaQuery()
.eq(SysUser::getUserName, accountLoginDto.getUsername())
.eq(SysUser::getPassword, CommonTools.md5Encryp(password))
.one();
if (user == null) {
return Response.responseMsg(UserCodeEnum.USERNAME_OR_PASSWORD_ERROR);
}
if (user.getStatus() == UserConstants.USER_STATUS_DISABLE) {
return Response.responseMsg(UserCodeEnum.USER_ACCOUNT_FREEZE);
}
if (user.getDeleteFlag() == CommonConstants.DELETED) {
return Response.responseMsg(UserCodeEnum.USER_ACCOUNT_INVALID);
}
// Check user tenant expiration skip admin
var tenant = tenantMapper.selectById(user.getTenantId());
if (!"admin".equals(accountLoginDto.getUsername()) && tenant != null && tenant.getExpireTime().isBefore(LocalDateTime.now())) {
return Response.responseMsg(TenantCodeEnum.TENANT_EXPIRED);
}