系统日志/业务日志

This commit is contained in:
cwchen 2024-03-01 10:13:45 +08:00
parent a5d5f2cac0
commit dbd1057176
4 changed files with 42 additions and 34 deletions

View File

@ -3,6 +3,7 @@ package com.securitycontrol.auth.controller;
import com.securitycontrol.auth.form.LoginBody;
import com.securitycontrol.auth.service.SysLoginService;
import com.securitycontrol.auth.service.SysRecordLogService;
import com.securitycontrol.common.core.constant.SecurityConstants;
import com.securitycontrol.common.core.domain.Result;
import com.securitycontrol.common.core.utils.JwtUtils;
@ -42,6 +43,8 @@ public class TokenController {
@Autowired
private SysLoginService sysLoginService;
@Autowired
private SysRecordLogService recordLogService;
@ -66,6 +69,7 @@ public class TokenController {
Integer userId = (Integer) claims.get(SecurityConstants.DETAILS_USER_ID);
String iscUser = (String) claims.get(SecurityConstants.DETAILS_ISC_USER_ID);
String userName = (String) claims.get(SecurityConstants.DETAILS_USERNAME);
recordLogService.recordLogininfor(userName,Long.valueOf(userId + ""),"用户登出",null,2);
redisUtil.delete("token:" + jwtToken);
redisUtil.delete("userId:" + userId);
redisUtil.delete("ISCUserId:" + iscUser);

View File

@ -39,6 +39,7 @@ public class SysLoginService
// 用户名或密码为空 错误
if (StringUtils.isAnyBlank(username, password))
{
recordLogService.recordLogininfor(username,null,"用户登录","用户/密码不能为空",1);
throw new ServiceException("用户/密码不能为空",201);
}
// 查询用户信息
@ -46,35 +47,39 @@ public class SysLoginService
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
{
recordLogService.recordLogininfor(username,null,"用户登录","登录用户:" + username + " 不存在",1);
throw new ServiceException("登录用户:" + username + " 不存在",201);
}
if (Result.FAIL == userResult.getCode())
{
recordLogService.recordLogininfor(username,null,"用户登录",userResult.getMsg(),1);
throw new ServiceException(userResult.getMsg());
}
LoginUser userInfo = userResult.getData();
SysUser user = userResult.getData().getSysUser();
if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
{
recordLogService.recordLogininfor(username,null,"用户登录","对不起,您的账号:" + username + " 已被删除",1);
throw new ServiceException("对不起,您的账号:" + username + " 已被删除",201);
}
if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
{
recordLogService.recordLogininfor(username,null,"用户登录","对不起,您的账号:" + username + " 已锁定",1);
throw new ServiceException("对不起,您的账号:" + username + " 已锁定",201);
}
passwordService.validate(user, password);
Result<List<SysMenu>> menu = remoteUserService.getAllMenuList(user.getUserId()+"", SecurityConstants.INNER);
list=menu.getData();
userInfo.getSysUser().setMenus(list);
recordLogService.recordLogininfor(username, "用户登录", "系统登录");
recordLogService.recordLogininfor(username,null, "用户登录", null,1);
remoteUserService.updateUserLogin(user.getUserId(),SecurityConstants.INNER);
return userInfo;
}
public void logout(String loginName)
{
recordLogService.recordLogininfor(loginName, "用户登出", "退出登录");
recordLogService.recordLogininfor(loginName,null, "用户登出", null,2);
}
}

View File

@ -48,7 +48,7 @@ public class SysPasswordService
}
if (!matches(user, password)) {
retryCount = retryCount + 1;
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount));
recordLogService.recordLogininfor(username,user.getUserId(),"用户登录", String.format("密码输入错误%s次", retryCount),1);
redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
throw new ServiceException("用户不存在/密码错误",201);
} else {

View File

@ -1,22 +1,18 @@
package com.securitycontrol.auth.service;
import com.google.common.collect.Maps;
import com.securitycontrol.common.core.constant.SecurityConstants;
import com.securitycontrol.common.core.utils.ServletUtils;
import com.securitycontrol.common.core.utils.aes.DateTimeHelper;
import com.securitycontrol.common.core.utils.ip.IpUtils;
import com.securitycontrol.common.security.utils.SecurityUtils;
import com.securitycontrol.system.api.domain.SysOperLog;
import com.securitycontrol.system.api.RemoteLogService;
import com.securitycontrol.system.api.domain.SysLog;
import com.securitycontrol.system.api.domain.SysUser;
import com.securitycontrol.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.securitycontrol.common.core.constant.Constants;
import com.securitycontrol.common.core.constant.SecurityConstants;
import com.securitycontrol.common.core.utils.ServletUtils;
import com.securitycontrol.common.core.utils.StringUtils;
import com.securitycontrol.common.core.utils.ip.IpUtils;
import com.securitycontrol.system.api.RemoteLogService;
import com.securitycontrol.system.api.domain.SysLogininfor;
import java.util.Map;
import java.util.UUID;
/**
* 记录日志方法
@ -31,32 +27,35 @@ public class SysRecordLogService {
/**
* 记录登录信息
*
* @param username 用户名
* @param title 标题
* @param detail 详情
* @param username 用户名
* @param model 操作模块
* @param detail 详情
* @param operaType 1.登录 2.登出
* @return
*/
public void recordLogininfor(String username, String title, String detail) {
SysOperLog sysOperLog = new SysOperLog();
sysOperLog.setGrade(title);
sysOperLog.setTimes(DateTimeHelper.getNowTime());
sysOperLog.setOperName(username);
public void recordLogininfor(String username, Long userId, String model, String detail, int operaType) {
SysLog sysLog = new SysLog();
String id = UUID.randomUUID().toString().replaceAll("-", "");
sysLog.setLogId(id);
sysLog.setOperTime(DateTimeHelper.getNowTime());
sysLog.setOperaUserName(username);
LoginUser loginUser = SecurityUtils.getLoginUser();
if (null != loginUser && null != loginUser.getSysUser()) {
SysUser sysUser = loginUser.getSysUser();
sysOperLog.setRoleName(sysUser.getRoleName());
sysOperLog.setDeptName(sysUser.getOrgName());
sysLog.setUserId(sysUser.getUserId());
}
sysOperLog.setOperIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
sysOperLog.setTitle(title);
sysOperLog.setRequestMethod("POST");
sysOperLog.setMethod("com.securitycontrol.auth.controller.login()");
sysOperLog.setBusinessType(0);
sysOperLog.setOperUrl("/auth/login");
sysOperLog.setOperParam(username);
sysOperLog.setDetail(detail);
sysOperLog.setLogType("系统日志");
sysOperLog.setSysMenu("");
remoteLogService.saveLogs(sysOperLog, SecurityConstants.INNER);
if(userId != null){
sysLog.setUserId(userId);
}
sysLog.setIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
sysLog.setModel(model);
sysLog.setOperType(model);
sysLog.setOperateDetail(model);
sysLog.setMethod(operaType == 1 ? "com.securitycontrol.auth.controller.login()" : "com.securitycontrol.auth.controller.logout()");
sysLog.setResult(detail == null ? 0 : 1);
sysLog.setOperUri(operaType == 1 ? "/auth/login" : "/auth/logout");
sysLog.setFailureReason(detail);
sysLog.setLogType(0);
remoteLogService.saveSysLog(sysLog, SecurityConstants.INNER);
}
}