diff --git a/newadmin/admin/pom.xml b/newadmin/admin/pom.xml
index d1ee57f..433f27d 100644
--- a/newadmin/admin/pom.xml
+++ b/newadmin/admin/pom.xml
@@ -91,6 +91,11 @@
commons-logging
1.2
+
+ org.aspectj
+ aspectjweaver
+ 1.9.5
+
diff --git a/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/annotation/OpLog.java b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/annotation/OpLog.java
new file mode 100644
index 0000000..64aeb17
--- /dev/null
+++ b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/annotation/OpLog.java
@@ -0,0 +1,32 @@
+package com.chaozhanggui.admin.system.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author DJH
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface OpLog {
+
+ /**
+ * 操作日志code
+ * @return 操作code
+ */
+ String opCode() default "";
+
+ /**
+ * 操作日志-详情
+ * @return 操作详情
+ */
+ String opDetail() default "";
+
+ /**
+ * 操作日志名称
+ * @return 操作名称
+ */
+ String opName() default "";
+}
diff --git a/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/controller/AgencyController.java b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/controller/AgencyController.java
index 39f1f77..60f0ff1 100644
--- a/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/controller/AgencyController.java
+++ b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/controller/AgencyController.java
@@ -1,6 +1,7 @@
package com.chaozhanggui.admin.system.controller;
import com.alibaba.fastjson.JSONObject;
+import com.chaozhanggui.admin.system.annotation.OpLog;
import com.chaozhanggui.admin.system.model.CreateAgencyReq;
import com.chaozhanggui.admin.system.service.AgencyService;
import com.chaozhanggui.admin.system.util.MD5Util;
@@ -42,6 +43,7 @@ public class AgencyController {
* @param agencyReq 机构信息
* @return
*/
+ @OpLog(opName = "创建机构", opDetail = "创建机构", opCode = "AGENCY_ADD")
@RequestMapping("addAgency")
public RespBody addAgency(@RequestHeader("loginName") String loginName, @RequestHeader("token") String token, @RequestHeader("userId") String userId,
@RequestBody @Valid CreateAgencyReq agencyReq
diff --git a/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/interceptor/LoginInterceptor.java b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/interceptor/LoginInterceptor.java
index ad6a612..5f8d382 100644
--- a/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/interceptor/LoginInterceptor.java
+++ b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/interceptor/LoginInterceptor.java
@@ -3,6 +3,7 @@ package com.chaozhanggui.admin.system.interceptor;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
+import com.chaozhanggui.admin.system.annotation.OpLog;
import com.chaozhanggui.admin.system.util.RedisCst;
import com.chaozhanggui.admin.system.util.RedisUtil;
import com.chaozhanggui.common.system.config.RespBody;
@@ -12,12 +13,14 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
+import java.lang.reflect.Method;
public class LoginInterceptor implements HandlerInterceptor {
@@ -35,7 +38,6 @@ public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 获取进过拦截器的路径
String requestURI = request.getRequestURI();
-
String loginName=request.getHeader("loginName");
String token=request.getHeader("token");
String userId=request.getHeader("userId");
@@ -61,6 +63,7 @@ public class LoginInterceptor implements HandlerInterceptor {
outputStream.write(JSONUtil.toJsonStr(new RespBody("999999")).getBytes("UTF-8"));
return false;
}
+
return true;
}
diff --git a/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/interceptor/OpLogAspect.java b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/interceptor/OpLogAspect.java
new file mode 100644
index 0000000..53c6926
--- /dev/null
+++ b/newadmin/admin/src/main/java/com/chaozhanggui/admin/system/interceptor/OpLogAspect.java
@@ -0,0 +1,106 @@
+package com.chaozhanggui.admin.system.interceptor;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.chaozhanggui.admin.system.annotation.OpLog;
+import com.chaozhanggui.common.system.config.RespBody;
+import com.chaozhanggui.common.system.util.IPUtil;
+import com.chaozhanggui.dao.system.dao.TbPlussAdminRecodeMapper;
+import com.chaozhanggui.dao.system.entity.TbPlussAdminRecodeWithBLOBs;
+import com.chaozhanggui.dao.system.entity.TbPlussOperationRecord;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+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.util.Arrays;
+import java.util.Date;
+
+@Slf4j
+@Aspect
+@Component
+public class OpLogAspect {
+
+ @Autowired
+ TbPlussAdminRecodeMapper tbPlussAdminRecodeMapper;
+
+ @Pointcut("execution(* com.chaozhanggui.admin.system.controller..*.*(..)) && @annotation(com.chaozhanggui.admin.system.annotation.OpLog))")
+ public void executionService() {
+ }
+
+
+ @AfterReturning(returning="rvt", value = "executionService()")
+ public void after(JoinPoint point, Object rvt) {
+ RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request;
+ if (attributes != null) {
+ request = ((ServletRequestAttributes) attributes).getRequest();
+ } else {
+ log.warn("未获取到request");
+ return;
+ }
+
+ MethodSignature signature = (MethodSignature) point.getSignature();
+ Method method = signature.getMethod();
+ OpLog annotation = method.getAnnotation(OpLog.class);
+
+ String loginName=request.getHeader("loginName");
+ String token=request.getHeader("token");
+ String userId=request.getHeader("userId");
+ if(ObjectUtil.isEmpty(loginName)||ObjectUtil.isEmpty(token)||ObjectUtil.isEmpty(userId)){
+ log.error("token 信息不存在");
+ return;
+ }
+
+ String body=processInputArg(point.getArgs());
+
+ TbPlussAdminRecodeWithBLOBs tbPlussAdminRecodeWithBLOBs=new TbPlussAdminRecodeWithBLOBs();
+
+ tbPlussAdminRecodeWithBLOBs.setUserId(Integer.valueOf(userId));
+ tbPlussAdminRecodeWithBLOBs.setOperationCode(annotation.opCode());
+ tbPlussAdminRecodeWithBLOBs.setRemark(annotation.opDetail());
+ tbPlussAdminRecodeWithBLOBs.setIp(IPUtil.getIpAddress(request));
+ tbPlussAdminRecodeWithBLOBs.setReqBody(body);
+
+ if (rvt instanceof RespBody) {
+ try {
+ JSONObject jsonObject = (JSONObject) JSON.toJSON(rvt);
+ tbPlussAdminRecodeWithBLOBs.setResponseBody("返回结果:"+jsonObject.toString());
+ } catch (Exception e) {
+ }
+ }
+ tbPlussAdminRecodeWithBLOBs.setCreateTime(new Date());
+ tbPlussAdminRecodeMapper.insert(tbPlussAdminRecodeWithBLOBs);
+ }
+
+
+ private String processInputArg(Object[] args) {
+ StringBuffer sb=new StringBuffer();
+ sb.append("请求参数:");
+ if(ObjectUtil.isNotEmpty(args)||args.length>0){
+ Arrays.stream(args).forEach(it->{
+ if(it instanceof String||it instanceof Integer||it instanceof Long){
+ sb.append(it);
+ sb.append("&");
+ }else if(it instanceof Object){
+ sb.append(JSONUtil.toJsonStr(it));
+ sb.append("&");
+ }
+
+ });
+ }
+ return sb.substring(0,sb.length()-1).toString();
+
+ }
+}
diff --git a/newadmin/dao-api/src/main/java/com/chaozhanggui/dao/system/entity/TbPlussOperationRecord.java b/newadmin/dao-api/src/main/java/com/chaozhanggui/dao/system/entity/TbPlussOperationRecord.java
index c20588f..6968a17 100644
--- a/newadmin/dao-api/src/main/java/com/chaozhanggui/dao/system/entity/TbPlussOperationRecord.java
+++ b/newadmin/dao-api/src/main/java/com/chaozhanggui/dao/system/entity/TbPlussOperationRecord.java
@@ -1,8 +1,13 @@
package com.chaozhanggui.dao.system.entity;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
import java.io.Serializable;
import java.util.Date;
+@Data
public class TbPlussOperationRecord implements Serializable {
private Integer id;
@@ -16,73 +21,34 @@ public class TbPlussOperationRecord implements Serializable {
private Date createtime;
- private String ip;
private String extension;
private static final long serialVersionUID = 1L;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getOperator() {
- return operator;
- }
+ @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER
+ , value = "ip")
+ private String ip;
- public void setOperator(String operator) {
- this.operator = operator == null ? null : operator.trim();
- }
+ @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER
+ , value = "extension ->> '$.isp'")
+ private String isp;
- public String getDictvalue() {
- return dictvalue;
- }
+ @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER
+ , value = "extension ->> '$.city'")
+ private String city;
- public void setDictvalue(String dictvalue) {
- this.dictvalue = dictvalue == null ? null : dictvalue.trim();
- }
+ @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER
+ , value = "extension ->> '$.province'")
+ private String province;
- public Integer getUserid() {
- return userid;
- }
+ @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER
+ , value = "extension ->> '$.country'")
+ private String country;
- public void setUserid(Integer userid) {
- this.userid = userid;
- }
-
- public String getRemark() {
- return remark;
- }
-
- public void setRemark(String remark) {
- this.remark = remark == null ? null : remark.trim();
- }
-
- public Date getCreatetime() {
- return createtime;
- }
-
- public void setCreatetime(Date createtime) {
- this.createtime = createtime;
- }
-
- public String getIp() {
- return ip;
- }
-
- public void setIp(String ip) {
- this.ip = ip == null ? null : ip.trim();
- }
-
- public String getExtension() {
- return extension;
- }
-
- public void setExtension(String extension) {
- this.extension = extension == null ? null : extension.trim();
- }
+ @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER
+ , value = "extension ->> '$.county'")
+ private String county;
}
\ No newline at end of file
diff --git a/newadmin/dao-api/src/main/resources/generator-mapper/generatorConfig.xml b/newadmin/dao-api/src/main/resources/generator-mapper/generatorConfig.xml
index 121be9e..2ec1c00 100644
--- a/newadmin/dao-api/src/main/resources/generator-mapper/generatorConfig.xml
+++ b/newadmin/dao-api/src/main/resources/generator-mapper/generatorConfig.xml
@@ -20,8 +20,8 @@
-
+
@@ -53,7 +53,7 @@
-