Commit 95817327 by 段启岩

添加系统日志

parent d24f8c1f
package cn.meteor.beyondclouds.core.authentication; package cn.meteor.beyondclouds.core.authentication;
import cn.meteor.beyondclouds.core.constant.SysConstants;
import cn.meteor.beyondclouds.core.emuns.SubjectType; import cn.meteor.beyondclouds.core.emuns.SubjectType;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import lombok.Data;
...@@ -42,7 +43,7 @@ public class Subject implements Serializable { ...@@ -42,7 +43,7 @@ public class Subject implements Serializable {
} }
public static Subject anonymous() { public static Subject anonymous() {
return new Subject(null, SubjectType.ANONYMOUS, "SYS"); return new Subject(SysConstants.SYS_ID, SubjectType.ANONYMOUS, SysConstants.SYS_ID);
} }
public static Subject authenticated(Serializable id, String ipAddress) { public static Subject authenticated(Serializable id, String ipAddress) {
......
package cn.meteor.beyondclouds.core.constant; package cn.meteor.beyondclouds.core.constant;
import java.io.Serializable;
/** /**
* 系统常量 * 系统常量
* @author meteor * @author meteor
...@@ -30,4 +32,5 @@ public class SysConstants { ...@@ -30,4 +32,5 @@ public class SysConstants {
* *
*/ */
public static final String THREAD_LOCAL_KEY_PREVENT_DUPLICATE_REDIS_LOCK = "THREAD_LOCAL_KEY_PREVENT_DUPLICATE_REDIS_LOCK"; public static final String THREAD_LOCAL_KEY_PREVENT_DUPLICATE_REDIS_LOCK = "THREAD_LOCAL_KEY_PREVENT_DUPLICATE_REDIS_LOCK";
public static final String SYS_ID = "SYS";
} }
package cn.meteor.beyondclouds.core.queue.message; package cn.meteor.beyondclouds.core.queue.message;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.user.entity.UserAuthApp;
import cn.meteor.beyondclouds.modules.user.entity.UserAuthLocal;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.ToString; import lombok.ToString;
...@@ -19,6 +21,14 @@ public class UserActionMessage { ...@@ -19,6 +21,14 @@ public class UserActionMessage {
this.action = action; this.action = action;
} }
public UserActionMessage(Subject subject, UserAction action, String accountType, String account) {
this.subject = subject;
this.userId = (String) subject.getId();
this.action = action;
this.accountType = accountType;
this.account = account;
}
private Subject subject; private Subject subject;
/** /**
...@@ -31,13 +41,18 @@ public class UserActionMessage { ...@@ -31,13 +41,18 @@ public class UserActionMessage {
*/ */
private UserAction action; private UserAction action;
private String accountType;
private String account;
/** /**
* 用户登录消息 * 用户登录消息
* @param subject * @param subject
* @return * @return
*/ */
public static UserActionMessage loginMessage(Subject subject) { public static UserActionMessage loginMessage(Subject subject, UserAuthLocal userAuthLocal) {
return new UserActionMessage(subject, UserAction.LOGIN); String accountType = userAuthLocal.getAccountType() == 1 ? "MOBILE" : "EMAIL";
return new UserActionMessage(subject, UserAction.LOGIN, accountType, userAuthLocal.getAccount());
} }
/** /**
......
...@@ -67,8 +67,8 @@ public class SysLog implements Serializable { ...@@ -67,8 +67,8 @@ public class SysLog implements Serializable {
public SysLog(UserActionMessage userActionMessage) { public SysLog(UserActionMessage userActionMessage) {
this.logType = LogType.USER_ACTION.getType(); this.logType = LogType.USER_ACTION.getType();
// this.targetId = String.valueOf(dataItemChangeMessage.getItemId()); this.targetId = userActionMessage.getAccount();
// this.targetType = dataItemChangeMessage.getItemType().name(); this.targetType = userActionMessage.getAccountType();
this.operateType = userActionMessage.getAction().name(); this.operateType = userActionMessage.getAction().name();
this.operatorId = (String) userActionMessage.getSubject().getId(); this.operatorId = (String) userActionMessage.getSubject().getId();
this.operatorIp = userActionMessage.getSubject().getIpAddress(); this.operatorIp = userActionMessage.getSubject().getIpAddress();
......
package cn.meteor.beyondclouds.modules.log.listener; package cn.meteor.beyondclouds.modules.log.listener;
import cn.meteor.beyondclouds.core.constant.SysConstants;
import cn.meteor.beyondclouds.core.listener.DataItemChangeListener; import cn.meteor.beyondclouds.core.listener.DataItemChangeListener;
import cn.meteor.beyondclouds.core.listener.UserActionListener; import cn.meteor.beyondclouds.core.listener.UserActionListener;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage; import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
...@@ -50,9 +51,13 @@ public class LogListener implements DataItemChangeListener, UserActionListener { ...@@ -50,9 +51,13 @@ public class LogListener implements DataItemChangeListener, UserActionListener {
} }
private void onDataChange(DataItemChangeMessage dataItemChangeMessage) { private void onDataChange(DataItemChangeMessage dataItemChangeMessage) {
if (!dataItemChangeMessage.getSubject().getId().equals(SysConstants.SYS_ID)) {
log.info("正在记录日志:{}", dataItemChangeMessage); log.info("正在记录日志:{}", dataItemChangeMessage);
SysLog sysLog = new SysLog(dataItemChangeMessage); SysLog sysLog = new SysLog(dataItemChangeMessage);
sysLogService.save(sysLog); sysLogService.save(sysLog);
} else {
log.info("检测到系统操作,忽略日志记录:{}", dataItemChangeMessage);
}
} }
private void onUserAction(UserActionMessage userActionMessage) { private void onUserAction(UserActionMessage userActionMessage) {
......
...@@ -21,7 +21,6 @@ import cn.meteor.beyondclouds.modules.user.service.IAuthenticationService; ...@@ -21,7 +21,6 @@ import cn.meteor.beyondclouds.modules.user.service.IAuthenticationService;
import cn.meteor.beyondclouds.modules.user.service.IUserAuthAppService; import cn.meteor.beyondclouds.modules.user.service.IUserAuthAppService;
import cn.meteor.beyondclouds.modules.user.service.IUserAuthLocalService; import cn.meteor.beyondclouds.modules.user.service.IUserAuthLocalService;
import cn.meteor.beyondclouds.modules.user.service.IUserService; import cn.meteor.beyondclouds.modules.user.service.IUserService;
import cn.meteor.beyondclouds.util.JwtUtils;
import cn.meteor.beyondclouds.util.Md5Utils; import cn.meteor.beyondclouds.util.Md5Utils;
import cn.meteor.beyondclouds.util.SubjectUtils; import cn.meteor.beyondclouds.util.SubjectUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -30,9 +29,7 @@ import org.springframework.stereotype.Service; ...@@ -30,9 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author meteor * @author meteor
...@@ -110,7 +107,10 @@ public class AuthenticationServiceImpl implements IAuthenticationService { ...@@ -110,7 +107,10 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
} }
// 根据userId生成token并返回 // 根据userId生成token并返回
return makeAuthenticationResultAndSendLoginMessage(userAuthLocal.getUserId()); AuthenticationResultDTO authenticationResultDTO = makeAuthenticationResult(userAuthLocal.getUserId());
sendUserLoginMessage(userAuthLocal);
return authenticationResultDTO;
} }
@Override @Override
...@@ -134,7 +134,7 @@ public class AuthenticationServiceImpl implements IAuthenticationService { ...@@ -134,7 +134,7 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
} }
// 根据userId生成token并返回 // 根据userId生成token并返回
return makeAuthenticationResultAndSendLoginMessage(userId); return makeAuthenticationResult(userId);
} catch (QQAuthenticationException e) { } catch (QQAuthenticationException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -162,7 +162,9 @@ public class AuthenticationServiceImpl implements IAuthenticationService { ...@@ -162,7 +162,9 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
// 根据userId生成token并返回 // 根据userId生成token并返回
return makeAuthenticationResultAndSendLoginMessage(userAuthLocal.getUserId()); AuthenticationResultDTO authenticationResultDTO = makeAuthenticationResult(userAuthLocal.getUserId());
sendUserLoginMessage(userAuthLocal);
return authenticationResultDTO;
} }
...@@ -171,24 +173,23 @@ public class AuthenticationServiceImpl implements IAuthenticationService { ...@@ -171,24 +173,23 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
* @param userId * @param userId
* @return * @return
*/ */
private AuthenticationResultDTO makeAuthenticationResultAndSendLoginMessage(String userId) { private AuthenticationResultDTO makeAuthenticationResult(String userId) {
AuthenticationResultDTO result = new AuthenticationResultDTO(); AuthenticationResultDTO result = new AuthenticationResultDTO();
result.setUserId(userId); result.setUserId(userId);
result.setAccessToken(tokenManager.generateToken(userId, 60 * 30)); result.setAccessToken(tokenManager.generateToken(userId, 60 * 30));
sendUserLoginMessage(userId);
return result; return result;
} }
/** /**
* 发送用户登录消息 * 发送用户登录消息
* @param userId * @param userAuthLocal
*/ */
private void sendUserLoginMessage(String userId) { private void sendUserLoginMessage(UserAuthLocal userAuthLocal) {
Subject subject = SubjectUtils.getSubject(); Subject subject = SubjectUtils.getSubject();
messageQueueService.sendUserActionMessage(UserActionMessage.loginMessage(Subject.authenticated(userId, subject.getIpAddress()))); messageQueueService.sendUserActionMessage(UserActionMessage.loginMessage(Subject.authenticated(userAuthLocal.getUserId(), subject.getIpAddress()), userAuthLocal));
} }
@Override @Override
public List<UserAuthDTO> getAuths(String userId) { public List<UserAuthDTO> getAuths(String userId) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment