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