Commit 3fc311df authored by 王锦盛's avatar 王锦盛

添加模型事记,并修改配置文件

parent 865bfbe7
package com.pms.ocp.common.aspectj;
import java.lang.annotation.*;
/**
* @Auther: wangjian
* @Date: 2022/3/8 17:17
* @Description:
*/
@Target(ElementType.METHOD) //target用于标识此注解能标记在方法上还是类上
@Retention(RetentionPolicy.RUNTIME) //retention用于决定此注解的生命周期
@Documented
public @interface OperLog {
/**
* 日志内容
*/
String value() default "";
/**
* 日志类型(1登录日志,2操作日志)
*/
int auditType() default 2;
/**
* 操作日志类型 1查询2添加3修改4删除
*/
int operStatus() default 0;
}
package com.pms.ocp.common.aspectj;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.pms.ocp.model.entity.ModelNote;
import com.pms.ocp.service.ModelNoteService;
import com.sun.xml.internal.bind.v2.TODO;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
/**
* @Auther: wangjian
* @Date: 2022/3/8 17:21
* @Description:
*/
@Aspect
@Component
public class OperLogAspect {
@Autowired
private ModelNoteService modelNoteService;
private static Logger logger = LoggerFactory.getLogger(OperLogAspect.class);
@Pointcut("@annotation(com.pms.ocp.common.aspectj.OperLog)")
public void logPointCut() {
}
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
long beginTime = System.currentTimeMillis();
System.out.println("日志");
//执行方法
Object result = point.proceed();
//执行时长
long time = System.currentTimeMillis() - beginTime;
//保存日志
saveSysLog(point, time, result);
return result;
}
private void saveSysLog(ProceedingJoinPoint point, long time, Object obj) {
MethodSignature signature = (MethodSignature) point.getSignature();
Method method = signature.getMethod();
ModelNote modelNote = new ModelNote();
OperLog operLog = method.getAnnotation(OperLog.class);
if (operLog != null) {
String content = operLog.value();
modelNote.setAuditType(operLog.auditType());
modelNote.setAuditMessageJson(content);
}
//请求的方法名
// String className = point.getTarget().getClass().getName();
String methodName = signature.getName();
// dto.setMethod(className + "." + methodName + "()");
//设置操作类型
if (modelNote.getAuditType() == 3) {
modelNote.setOperStatus(getOperateType(methodName, operLog.operStatus()));
}
//获取request
HttpServletRequest request = getHttpServletRequest();
//请求的参数
modelNote.setAuditMessageJson(getRequestParams(request, point));
// //设置ip地址
// dto.setIp(getIpAddr(request));
//获取用户登录信息
// TODO
// TUser user = (TUser) SecurityUtils.getSubject().getPrincipal();
// if (user != null) {
// modelNote.setUserid(user.getUserName());
// modelNote.setUsername(user.getPassWord());
// }
// modelNote.setCostTime(time);
modelNote.setAuditCtime(LocalDateTime.now());
modelNoteService.createModelNote(modelNote);
}
private int getOperateType(String methodName, int operateType) {
if (operateType >= 0) {
return operateType;
}
if (methodName.startsWith("create")) {
return 1;
}
if (methodName.startsWith("update")) {
return 2;
}
return 2;
}
private HttpServletRequest getHttpServletRequest() {
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
}
private String getRequestParams(HttpServletRequest request, JoinPoint joinPoint) {
String httpMethod = request.getMethod();
String param = "";
if ("POST".equals(httpMethod) || "PUT".equals(httpMethod) || "PATCH".equals(httpMethod)) {
Object[] paramArray = joinPoint.getArgs();
Object[] arguments = new Object[paramArray.length];
for (int i = 0; i < paramArray.length; i++) {
if (paramArray[i] instanceof BindingResult || paramArray[i] instanceof ServletRequest || paramArray[i] instanceof ServletResponse || paramArray[i] instanceof MultipartFile) {
continue;
}
arguments[i] = paramArray[i];
}
PropertyFilter propertyFilter = new PropertyFilter() {
@Override
public boolean apply(Object object, String name, Object value) {
if (value != null && value.toString().length() > 500) {
return false;
}
return true;
}
};
param = JSONObject.toJSONString(arguments, propertyFilter);
} else {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
//请求的方法参数值
Object[] args = joinPoint.getArgs();
//请求的方法名称
LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
String[] parameterNames = u.getParameterNames(method);
if (args != null && parameterNames != null) {
for (int i = 0; i < args.length; i++) {
param += " " + parameterNames[i] + ": " + args[i];
}
}
}
return param;
}
public String getIpAddr(HttpServletRequest request) {
String ip = null;
try {
ip = request.getHeader("x-forwarded-for");
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT-IP");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X-FORWARDED-FOR");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
} catch (Exception e) {
logger.error("IP error", e);
}
return ip;
}
}
......@@ -57,9 +57,9 @@ public class SwaggerConfig {
// 用ApiInfoBuilder进行定制
return new ApiInfoBuilder()
// 设置标题
.title("运营管控架构平台_接口文档")
.title("运营管控平台_接口文档")
// 描述
.description("运营管控架构平台_接口文档")
.description("关于模型库、应用库、服务库各管理接口文档")
// 作者信息
.contact(new Contact("", "", ""))
// 版本
......
......@@ -2,9 +2,11 @@ package com.pms.ocp.controller;
import com.pms.ocp.common.constants.CodeEnum;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.entity.ModelNote;
import com.pms.ocp.model.entity.ModelType;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ModelGroupService;
import com.pms.ocp.service.ModelNoteService;
import com.pms.ocp.service.ModelPropertyService;
import com.pms.ocp.service.ModelService;
import io.swagger.annotations.Api;
......@@ -40,6 +42,9 @@ public class ModelBaseController {
@Autowired
private ModelPropertyService modelPropertyService;
@Autowired
private ModelNoteService modelNoteService;
/**
* 模型分类-查询
*
......@@ -190,8 +195,11 @@ public class ModelBaseController {
*/
@ApiOperation("模型事记-查询")
@GetMapping("/get/model/note")
public ResponseVO getModelNote() {
return ResponseVO.ok();
public ResponseVO getModelNote(@RequestParam(value = "modelCode") String modelCode) {
List<ModelNote> modelNoteList = modelNoteService.getModelNoteList(modelCode);
return ResponseVO.ok(modelNoteList);
}
/**
......
......@@ -2,6 +2,7 @@ package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.entity.ModelNote;
import org.apache.ibatis.annotations.Mapper;
/**
......@@ -11,5 +12,5 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface ModelNoteMapper extends BaseMapper<Model> {
public interface ModelNoteMapper extends BaseMapper<ModelNote> {
}
package com.pms.ocp.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Auther: wangjian
* @Date: 2022/2/22 16:52
* @Description:模型事记对象
* @Description:模型事记记录对象
*/
@Data
@TableName("ocp_model_audit")
public class ModelNote {
@TableId(value = "obj_id", type = IdType.ASSIGN_ID)
private String objId;
/**
* 模型代码
*/
private int modelCode;
/**
* 属性代码
*/
private int propCode;
/**
* 事记类型 0:人工操作,1:流程管控,3:总部下发
*/
private int auditType;
/**
* 模型异动详情
*/
private String auditMessageJson;
/**
* 异动类型 0:新增,1:迭代
*/
private int operStatus;
/**
* 异动申请人id
*/
private String applyUserId;
/**
* 异动申请人姓名
*/
private String applyUserName;
/**
* 异动时间
*/
private long applyTime;
/**
* 版本
*/
private String applyVersion;
/**
* 新增时间
*/
private LocalDateTime auditCtime;
/**
* 异动公司编号
*/
private String auditCompanyCode;
/**
* 提交人id
*/
private String auditUserId;
/**
* 提交人姓名
*/
private String auditUserName;
/**
* 修改时间
*/
private LocalDateTime auditMtime;
}
//
// COMMENT ON COLUMN public.ocp_model_audit.obj_id IS '主键是';
// COMMENT ON COLUMN public.ocp_model_audit.model_code IS '模型代码是';
// COMMENT ON COLUMN public.ocp_model_audit.prop_code IS '属性代码';
// COMMENT ON COLUMN public.ocp_model_audit.oper_status IS '异动类型0:新增,1:迭代';
// COMMENT ON COLUMN public.ocp_model_audit.oper_target IS '操作对象0:表,1:属性';
// COMMENT ON COLUMN public.ocp_model_audit.audit_type IS '事记类型0:人工操作,1:流程管控,3:总部下发';
// COMMENT ON COLUMN public.ocp_model_audit.audit_message_json IS '模型异动详情';
// COMMENT ON COLUMN public.ocp_model_audit.apply_user_id IS '异动申请人id';
// COMMENT ON COLUMN public.ocp_model_audit.apply_user_name IS '异动申请人';
// COMMENT ON COLUMN public.ocp_model_audit.apply_time IS '异动时间';
// COMMENT ON COLUMN public.ocp_model_audit.audit_ctime IS '申请时间';
// COMMENT ON COLUMN public.ocp_model_audit.audit_mtime IS '修改时间';
// COMMENT ON COLUMN public.ocp_model_audit.apply_version IS '版本';
// COMMENT ON COLUMN public.ocp_model_audit.audit_company_code IS '异动公司code';
// COMMENT ON COLUMN public.ocp_model_audit.audit_user_id IS '提交人id';
// COMMENT ON COLUMN public.ocp_model_audit.audit_user_name IS '提交人姓名';
......@@ -9,6 +9,7 @@ import java.util.List;
* @Date: 2022/2/22 16:08
* @Description:模型事记业务层接口
*/
public interface ModelNoteService {
/**
......@@ -41,7 +42,7 @@ public interface ModelNoteService {
* @param
* @return
*/
List<ModelNote> getModelNoteList();
List<ModelNote> getModelNoteList(String modelCode);
/**
* 获取模型事记列表
......
package com.pms.ocp.service;
import com.pms.ocp.model.entity.ModelProperty;
import com.pms.ocp.model.entity.ModelType;
import java.util.List;
......@@ -47,7 +46,7 @@ public interface ModelPropertyService {
/**
* 获取模型属性列表
*
* @param modelId
* @param
* @return
*/
List<ModelProperty> getModelProperty();
......
package com.pms.ocp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pms.ocp.mapper.ModelNoteMapper;
import com.pms.ocp.model.entity.ModelNote;
import com.pms.ocp.service.ModelNoteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -14,9 +17,13 @@ import java.util.List;
@Service
public class ModelNoteServiceImpl implements ModelNoteService {
@Autowired
private ModelNoteMapper modelNoteMapper;
@Override
public Integer createModelNote(ModelNote modelNote) {
return null;
return modelNoteMapper.insert(modelNote);
}
@Override
......@@ -30,8 +37,11 @@ public class ModelNoteServiceImpl implements ModelNoteService {
}
@Override
public List<ModelNote> getModelNoteList() {
return null;
public List<ModelNote> getModelNoteList(String modelCode) {
QueryWrapper<ModelNote> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(ModelNote::getModelCode, modelCode);
return modelNoteMapper.selectList(wrapper);
}
@Override
......
......@@ -3,7 +3,6 @@ package com.pms.ocp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pms.ocp.model.entity.ModelProperty;
import com.pms.ocp.service.ModelPropertyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -41,6 +40,7 @@ public class ModelPropertyServiceImpl implements ModelPropertyService {
/**
* TODO
*
* @return
*/
@Override
......
......@@ -4,7 +4,7 @@ spring:
username: ocp_user
password: spaceIN511
type: com.zaxxer.hikari.HikariDataSource
jdbc-url: jdbc:postgresql://172.37.41.175:5432/pms3?currentSchema=operating_platform&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
url: jdbc:postgresql://172.37.41.175:5432/pms3?currentSchema=operating_platform&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
knife4j:
enable: true
......
......@@ -15,8 +15,10 @@ knife4j:
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml
configuration:
# log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
# log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 是否开启自动驼峰命名规则
map-underscore-to-camel-case: true
logging:
level:
......
......@@ -51,7 +51,8 @@
<logger name="org.springframework.boot.autoconfigure.logging" level="INFO"/>
<!--输出接口日志-->
<logger name="com.pms.ocp.common.aspect.InterfaceLogAspect" level="INFO" additivity="false">
<!-- TODO-->
<logger name="com.pms.ocp.common.aspectj.OperLogAspect" level="INFO" additivity="false">
<appender-ref ref="INTERFACE_LOG"/>
</logger>
......
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