系统日志/业务日志

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

View File

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

View File

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