فهرست منبع

Merge remote-tracking branch 'origin/developerD' into developer

huangzhiguo 2 سال پیش
والد
کامیت
cdedb8345e

+ 50 - 0
src/main/java/com/caimei365/user/controller/CmBehaviorRecordApi.java

@@ -0,0 +1,50 @@
+package com.caimei365.user.controller;
+
+import com.caimei365.user.idempotent.IpSave;
+import com.caimei365.user.model.ResponseJson;
+import com.caimei365.user.model.dto.BehaviorRecordDto;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/11/1
+ */
+@Slf4j
+@RestController
+@RequestMapping("/user/record")
+public class CmBehaviorRecordApi {
+
+
+    /**
+     * PC端用户行为记录
+     * @param behaviorRecordDto
+     * @return
+     */
+    @IpSave(saveName="用户行为记录PC",saveParams = true)
+    @PostMapping("/StatisticsPc")
+    public ResponseJson<String> behaviorRecordPc(@RequestBody BehaviorRecordDto behaviorRecordDto){
+        log.info("用户行为记录=========》"+behaviorRecordDto);
+        return ResponseJson.success("用户行为PC端记录完成");
+    }
+
+    /**
+     * 小程序端用户行为记录
+     * @param userId
+     * @param pagePath
+     * @param pageType
+     * @param pageLabel
+     * @param productId
+     * @param accessDuration
+     * @return
+     */
+    @IpSave(saveName="用户行为记录App",saveParams = true)
+    @GetMapping("/StatisticsApp")
+    public ResponseJson<String> behaviorRecordApp(Integer userId,String pagePath,String pageType,String pageLabel,Integer productId,String accessDuration){
+        log.info("用户行为记录=========》"+userId+"===="+pagePath+"===="+pageType+"===="+pageLabel+"===="+productId+"===="+accessDuration);
+        return ResponseJson.success("用户行为App端记录完成");
+    }
+
+}

+ 31 - 0
src/main/java/com/caimei365/user/idempotent/IpSaveAspect.java

@@ -1,6 +1,7 @@
 package com.caimei365.user.idempotent;
 
 
+import com.alibaba.fastjson.JSON;
 import com.caimei365.user.feign.ToolsFeign;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
@@ -9,13 +10,16 @@ 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.springframework.core.LocalVariableTableParameterNameDiscoverer;
 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 org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.lang.reflect.Method;
 
 
@@ -75,6 +79,29 @@ public class IpSaveAspect {
         if (sp) {
             queryString = request.getQueryString();
         }
+        // 接口是post时数据处理
+        String params = "";
+        if ("POST".equals(request.getMethod())) {
+            LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
+            String[] parameterNames = discoverer.getParameterNames(method);
+            // 请求的方法参数值 JSON 格式 null 不显示
+            if (joinPoint.getArgs().length > 0) {
+                Object[] args = joinPoint.getArgs();
+                for (int i = 0; i < args.length; i++) {
+                    // 请求参数类型判断过滤,防止JSON转换报错
+                    if(args[i] instanceof HttpServletRequest || args[i] instanceof HttpServletResponse || args[i] instanceof MultipartFile) {
+                        continue;
+                    }
+                    // 参数格式调整为par1=……&par2=……&......
+                    String[] split = args[i].toString().substring(args[i].toString().indexOf("(")+1, args[i].toString().lastIndexOf(")")).split(",");
+                    for (int k = 0; k < split.length ; k++) {
+                        params += split[k]+"&";
+                    }
+
+                }
+                log.info("POST请求参数打印===================》"+params);
+            }
+        }
         String mes = "";
         if (StringUtils.isNotBlank(ip)) {
             mes += ip + "¥";
@@ -86,6 +113,10 @@ public class IpSaveAspect {
         } else {
             mes += "¥";
         }
+        // 访问接口类型为post时接口参数调整
+        if ("POST".equals(request.getMethod())){
+            queryString = params;
+        }
         if (StringUtils.isNotBlank(queryString)) {
             mes += queryString + "¥";
         } else {

+ 37 - 0
src/main/java/com/caimei365/user/model/dto/BehaviorRecordDto.java

@@ -0,0 +1,37 @@
+package com.caimei365.user.model.dto;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/11/7
+ */
+@Data
+public class BehaviorRecordDto {
+    /**
+     * 用户id
+     */
+    Integer userId;
+    /**
+     * 页面路径
+     */
+    String pagePath;
+    /**
+     * 页面类型
+     */
+    String pageType;
+    /**
+     * 页面标签
+     */
+    String pageLabel;
+    /**
+     * 商品id
+     */
+    Integer productId;
+    /**
+     * 访问时长
+     */
+    String accessDuration;
+}