登录日志记录组织id补充、查询状态条件失效修复

This commit is contained in:
gaoqr
2025-05-26 11:16:19 +08:00
parent 9ce776b854
commit 48d7cae31d
9 changed files with 26 additions and 26 deletions
@@ -43,4 +43,7 @@ public class LoginLogCreateReqDTO {
@Schema(description = "所属地区")
@Size(max = 200, message = "所属地区长度不能超过200个字符")
private String region;
@Schema(description = "组织id")
private Long organId;
}
@@ -22,7 +22,7 @@ public class LoginLogPageReqVO extends PageParam {
private String username;
@Schema(description = "操作状态", example = "true")
private Boolean status;
private Boolean result;
@Schema(description = "登录时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@@ -39,7 +39,7 @@ public class CustomPlateNoSeqDO implements Serializable {
/**
* 组织ID
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private Long organId;
/**
@@ -73,4 +73,9 @@ public class LoginLogDO extends BaseDO {
* 所属地区
*/
private String region;
/**
* 组织id
*/
private Long organId;
}
@@ -58,6 +58,6 @@ public class NoticeDO extends BaseDO {
/**
* 组织ID
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private Long organId;
}
@@ -66,7 +66,7 @@ public class SystemConfigDO extends BaseDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private Long organId;
/**
@@ -16,9 +16,9 @@ public interface LoginLogMapper extends BaseMapperX<LoginLogDO> {
.likeIfPresent(LoginLogDO::getUserIp, reqVO.getUserIp())
.likeIfPresent(LoginLogDO::getUsername, reqVO.getUsername())
.betweenIfPresent(LoginLogDO::getCreateTime, reqVO.getCreateTime());
if (Boolean.TRUE.equals(reqVO.getStatus())) {
if (Boolean.TRUE.equals(reqVO.getResult())) {
query.eq(LoginLogDO::getResult, LoginResultEnum.SUCCESS.getResult());
} else if (Boolean.FALSE.equals(reqVO.getStatus())) {
} else if (Boolean.FALSE.equals(reqVO.getResult())) {
query.gt(LoginLogDO::getResult, LoginResultEnum.SUCCESS.getResult());
}
query.orderByDesc(LoginLogDO::getId); // 降序
@@ -111,21 +111,22 @@ public class AdminAuthServiceImpl implements AdminAuthService {
AdminUserDO user = userService.getUserUniqueByUserName(username);
// 校验用户是否存在
if (user == null) {
createLoginLog(null, username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
createLoginLog(null, username, null, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
throw ServiceExceptionUtil.exception(ErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS);
}
Long organId = user.getOrganId();
// 校验机构有效性
organService.validOrgan(user.getOrganId());
organService.validOrgan(organId);
// 校验部门有效性
deptService.validUserLoginDept(user.getDeptId());
// 校验密码
if (!userService.isPasswordMatch(password, user.getPassword())) {
createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
createLoginLog(user.getId(), username, organId, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
throw ServiceExceptionUtil.exception(ErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS);
}
// 校验是否禁用
if (CommonStatusEnum.isDisable(user.getStatus())) {
createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.USER_DISABLED);
createLoginLog(user.getId(), username, organId, logTypeEnum, LoginResultEnum.USER_DISABLED);
throw ServiceExceptionUtil.exception(ErrorCodeConstants.AUTH_LOGIN_USER_DISABLED);
}
return user;
@@ -164,7 +165,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
AdminUserDO user = userService.getUserUniqueByUserName(mobile);
// 校验用户是否存在
if (user == null) {
createLoginLog(null, mobile, LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.BAD_CREDENTIALS);
createLoginLog(null, mobile, null, LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.BAD_CREDENTIALS);
return false;
}
if (StringUtils.isEmpty(user.getPassword())) {
@@ -180,7 +181,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
AdminUserDO user = userService.getUserUniqueByUserName(mobile);
// 校验用户是否存在
if (user == null) {
createLoginLog(null, mobile, LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.BAD_CREDENTIALS);
createLoginLog(null, mobile, null, LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.BAD_CREDENTIALS);
return false;
}
// 校验验证码正确性
@@ -219,7 +220,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, dataSourceCode);
}
private void createLoginLog(Long userId, String username,
private void createLoginLog(Long userId, String username, Long organId,
LoginLogTypeEnum logTypeEnum, LoginResultEnum loginResult) {
String clientIP = getClientIP();
// 插入登录日志
@@ -232,6 +233,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
reqDTO.setUserAgent(ServletUtils.getUserAgent());
reqDTO.setUserIp(clientIP);
reqDTO.setResult(loginResult.getResult());
reqDTO.setOrganId(organId);
// 设置登录时通过ip云服务查询到的地域信息
if (ipQueryService.serviceEnable()) {
IPQueryDataRespDTO ipQueryDataRespDTO = ipQueryService.querySource(clientIP);
@@ -284,21 +286,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
// 验证不通过
if (!response.isSuccess()) {
// 创建登录失败日志(验证码不正确)
createLoginLog(null, reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.CAPTCHA_CODE_ERROR);
createLoginLog(null, reqVO.getUsername(), null, LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.CAPTCHA_CODE_ERROR);
throw ServiceExceptionUtil.exception(ErrorCodeConstants.AUTH_LOGIN_CAPTCHA_CODE_ERROR, response.getRepMsg());
}
}
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType, Boolean large, String dataCode, Long organId, String nickname) {
// 插入登陆日志
createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS);
// 创建访问令牌
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(),
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, large, null, null, dataCode, organId, nickname);
// 构建返回结果
return AuthConvert.INSTANCE.convert(accessTokenDO);
}
/**
* 登陆成功后创建token
*
@@ -310,7 +302,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
*/
private AuthLoginRespVO createTokenAfterLoginSuccess(AdminUserDO user, String username, LoginLogTypeEnum logType, String dataCode) {
// 插入登陆日志
createLoginLog(user.getId(), username, logType, LoginResultEnum.SUCCESS);
createLoginLog(user.getId(), username, user.getOrganId(), logType, LoginResultEnum.SUCCESS);
// 创建访问令牌
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(user, getUserType().getValue(), OAuth2ClientConstants.CLIENT_ID_DEFAULT, dataCode);
// 构建返回结果
@@ -51,7 +51,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
LoginLogPageReqVO reqVO = new LoginLogPageReqVO();
reqVO.setUsername("wang");
reqVO.setUserIp("192.168.199");
reqVO.setStatus(true);
reqVO.setResult(true);
reqVO.setCreateTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7));
// 调用