Commit 5220ad70 authored by 黎博's avatar 黎博

新增用户行为记录

parent f138274e
package cn.qg.holmes.aspect;
import cn.qg.holmes.config.annotation.RecordOperation;
import cn.qg.holmes.entity.auth.UserInfoVo;
import cn.qg.holmes.entity.behavior.UserBehaviorRecord;
import cn.qg.holmes.entity.k8s.ServiceCreateVo;
import cn.qg.holmes.exception.UnauthorizedException;
import cn.qg.holmes.mapper.behavior.UserBehavoirRecordMapper;
import cn.qg.holmes.mapper.behavior.UserBehaviorRecordMapper;
import cn.qg.holmes.service.auth.TokenService;
import cn.qg.holmes.service.behavior.UserBehaviorRecordService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
......@@ -13,11 +14,14 @@ import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.core.ParameterNameDiscoverer;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
/**
......@@ -33,7 +37,7 @@ public class RecordOperationAspect {
TokenService tokenService;
@Autowired
UserBehavoirRecordMapper userBehavoirRecordMapper;
UserBehaviorRecordService userBehaviorRecordService;
@After("@annotation(cn.qg.holmes.config.annotation.RequiresPermissions)")
public void after(JoinPoint joinPoint) {
......@@ -49,22 +53,37 @@ public class RecordOperationAspect {
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
RecordOperation recordOperation = methodSignature.getMethod().getAnnotation(RecordOperation.class);
// 行为记录需要保存的值
String action = recordOperation.value();
String namespace;
String serviceName;
Parameter[] parameters = methodSignature.getMethod().getParameters();
if (parameters.length > 0) {
for (int i=0; i < parameters.length; i++) {
if (parameters[i].getName().equals("namespace")) {
namespace = parameters[i].getName();
String namespace = "";
String serviceName = "";
// 获取方法里的参数
Object[] args = joinPoint.getArgs();
ParameterNameDiscoverer pnd = new DefaultParameterNameDiscoverer();
Method method = methodSignature.getMethod();
String[] parameterNames = pnd.getParameterNames(method);
if (parameterNames != null) {
for (int i=0; i < parameterNames.length; i++) {
if (parameterNames[i].equals("serviceName")) {
serviceName = args[i].toString();
}
if (parameters[i].getName().equals("serviceName")) {
serviceName = parameters[i].getName();
if (parameterNames[i].equals("namespace")) {
namespace = args[i].toString();
}
if (parameters[i].getParameterizedType().getTypeName().contentEquals("ServiceCreateVo")) {
if (parameterNames[i].equals("ServiceCreateVo")) {
ServiceCreateVo serviceCreateVo = (ServiceCreateVo) args[i];
serviceName = serviceCreateVo.getServiceName();
namespace = serviceCreateVo.getNamespace();
}
}
}
// 保存用户行为记录
UserBehaviorRecord userBehaviorRecord = new UserBehaviorRecord();
userBehaviorRecord.setUsername(username);
userBehaviorRecord.setAction(action);
userBehaviorRecord.setNamespace(namespace);
userBehaviorRecord.setServiceName(serviceName);
userBehaviorRecordService.save(userBehaviorRecord);
}
}
package cn.qg.holmes.controller.k8s;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.config.annotation.RecordOperation;
import cn.qg.holmes.entity.auth.UserInfoVo;
import cn.qg.holmes.entity.k8s.DockerProject;
import cn.qg.holmes.entity.k8s.ServiceCreateVo;
......@@ -86,6 +87,7 @@ public class K8sController {
* @param serviceCreateVo 创建实体类
* @return
*/
@RecordOperation("create")
@PostMapping("/service/create")
public JsonResult createPod(@RequestBody ServiceCreateVo serviceCreateVo) {
try {
......
package cn.qg.holmes.entity.behavior;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 用户行为记录实体类
*/
@Data
@TableName(value = "user_behavior_record")
public class UserBehaviorRecord {
@TableId(type = IdType.AUTO)
private Integer id;
private String action;
private String serviceName;
private String namespace;
private String username;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date operateDate;
}
......@@ -3,5 +3,5 @@ package cn.qg.holmes.mapper.behavior;
import cn.qg.holmes.entity.behavior.UserBehaviorRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserBehavoirRecordMapper extends BaseMapper<UserBehaviorRecord> {
public interface UserBehaviorRecordMapper extends BaseMapper<UserBehaviorRecord> {
}
package cn.qg.holmes.service.behavior;
import cn.qg.holmes.entity.behavior.UserBehaviorRecord;
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserBehaviorRecordService extends IService<UserBehaviorRecord> {
}
package cn.qg.holmes.service.behavior.impl;
import cn.qg.holmes.entity.behavior.UserBehaviorRecord;
import cn.qg.holmes.mapper.behavior.UserBehaviorRecordMapper;
import cn.qg.holmes.service.behavior.UserBehaviorRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class UserBehaviorRecordServiceImpl extends ServiceImpl<UserBehaviorRecordMapper, UserBehaviorRecord> implements UserBehaviorRecordService {
}
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