Commit 95817327 by 段启岩

添加系统日志

parent d24f8c1f
package cn.meteor.beyondclouds.core.authentication;
import cn.meteor.beyondclouds.core.constant.SysConstants;
import cn.meteor.beyondclouds.core.emuns.SubjectType;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
......@@ -42,7 +43,7 @@ public class Subject implements Serializable {
}
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) {
......
package cn.meteor.beyondclouds.core.constant;
import java.io.Serializable;
/**
* 系统常量
* @author meteor
......@@ -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 SYS_ID = "SYS";
}
package cn.meteor.beyondclouds.core.queue.message;
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.NoArgsConstructor;
import lombok.ToString;
......@@ -19,6 +21,14 @@ public class UserActionMessage {
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;
/**
......@@ -31,13 +41,18 @@ public class UserActionMessage {
*/
private UserAction action;
private String accountType;
private String account;
/**
* 用户登录消息
* @param subject
* @return
*/
public static UserActionMessage loginMessage(Subject subject) {
return new UserActionMessage(subject, UserAction.LOGIN);
public static UserActionMessage loginMessage(Subject subject, UserAuthLocal userAuthLocal) {
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 {
public SysLog(UserActionMessage userActionMessage) {
this.logType = LogType.USER_ACTION.getType();
// this.targetId = String.valueOf(dataItemChangeMessage.getItemId());
// this.targetType = dataItemChangeMessage.getItemType().name();
this.targetId = userActionMessage.getAccount();
this.targetType = userActionMessage.getAccountType();
this.operateType = userActionMessage.getAction().name();
this.operatorId = (String) userActionMessage.getSubject().getId();
this.operatorIp = userActionMessage.getSubject().getIpAddress();
......
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.UserActionListener;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
......@@ -50,9 +51,13 @@ public class LogListener implements DataItemChangeListener, UserActionListener {
}
private void onDataChange(DataItemChangeMessage dataItemChangeMessage) {
log.info("正在记录日志:{}", dataItemChangeMessage);
SysLog sysLog = new SysLog(dataItemChangeMessage);
sysLogService.save(sysLog);
if (!dataItemChangeMessage.getSubject().getId().equals(SysConstants.SYS_ID)) {
log.info("正在记录日志:{}", dataItemChangeMessage);
SysLog sysLog = new SysLog(dataItemChangeMessage);
sysLogService.save(sysLog);
} else {
log.info("检测到系统操作,忽略日志记录:{}", dataItemChangeMessage);
}
}
private void onUserAction(UserActionMessage userActionMessage) {
......
......@@ -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.IUserAuthLocalService;
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.SubjectUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -30,9 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author meteor
......@@ -110,7 +107,10 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
}
// 根据userId生成token并返回
return makeAuthenticationResultAndSendLoginMessage(userAuthLocal.getUserId());
AuthenticationResultDTO authenticationResultDTO = makeAuthenticationResult(userAuthLocal.getUserId());
sendUserLoginMessage(userAuthLocal);
return authenticationResultDTO;
}
@Override
......@@ -134,7 +134,7 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
}
// 根据userId生成token并返回
return makeAuthenticationResultAndSendLoginMessage(userId);
return makeAuthenticationResult(userId);
} catch (QQAuthenticationException e) {
e.printStackTrace();
......@@ -162,7 +162,9 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
// 根据userId生成token并返回
return makeAuthenticationResultAndSendLoginMessage(userAuthLocal.getUserId());
AuthenticationResultDTO authenticationResultDTO = makeAuthenticationResult(userAuthLocal.getUserId());
sendUserLoginMessage(userAuthLocal);
return authenticationResultDTO;
}
......@@ -171,24 +173,23 @@ public class AuthenticationServiceImpl implements IAuthenticationService {
* @param userId
* @return
*/
private AuthenticationResultDTO makeAuthenticationResultAndSendLoginMessage(String userId) {
private AuthenticationResultDTO makeAuthenticationResult(String userId) {
AuthenticationResultDTO result = new AuthenticationResultDTO();
result.setUserId(userId);
result.setAccessToken(tokenManager.generateToken(userId, 60 * 30));
sendUserLoginMessage(userId);
return result;
}
/**
* 发送用户登录消息
* @param userId
* @param userAuthLocal
*/
private void sendUserLoginMessage(String userId) {
private void sendUserLoginMessage(UserAuthLocal userAuthLocal) {
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
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