update 优化 使用spring事件发布机制 重构登录日志与操作日志

This commit is contained in:
疯狂的狮子li
2022-12-07 20:32:57 +08:00
parent 6e017c35f7
commit 4c8137daf2
10 changed files with 107 additions and 72 deletions

View File

@ -4,9 +4,9 @@ import cn.dev33.satoken.secure.BCrypt;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.event.LogininforEvent;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.RegisterBody;
import com.ruoyi.common.core.service.LogininforService;
import com.ruoyi.common.enums.UserType;
import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException;
@ -15,6 +15,7 @@ import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.redis.RedisUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@ -31,7 +32,6 @@ public class SysRegisterService {
private final ISysUserService userService;
private final ISysConfigService configService;
private final LogininforService asyncService;
/**
* 注册
@ -61,7 +61,7 @@ public class SysRegisterService {
if (!regFlag) {
throw new UserException("user.register.error");
}
asyncService.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success"), request);
recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success"));
}
/**
@ -77,12 +77,30 @@ public class SysRegisterService {
String captcha = RedisUtils.getCacheObject(verifyKey);
RedisUtils.deleteObject(verifyKey);
if (captcha == null) {
asyncService.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.expire"), request);
recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.expire"));
throw new CaptchaExpireException();
}
if (!code.equalsIgnoreCase(captcha)) {
asyncService.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.error"), request);
recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.error"));
throw new CaptchaException();
}
}
/**
* 记录登录信息
*
* @param username 用户名
* @param status 状态
* @param message 消息内容
* @return
*/
private void recordLogininfor(String username, String status, String message) {
LogininforEvent logininforDTO = new LogininforEvent();
logininforDTO.setUsername(username);
logininforDTO.setStatus(status);
logininforDTO.setMessage(message);
logininforDTO.setRequest(ServletUtils.getRequest());
SpringUtils.context().publishEvent(logininforDTO);
}
}