zhijiezhao 2 年之前
父节点
当前提交
71017d5512

+ 2 - 0
src/main/java/com/caimei365/commodity/annotation/IpSave.java

@@ -11,4 +11,6 @@ import java.lang.annotation.*;
 public @interface IpSave {
 
     String saveName();
+
+    boolean saveParams();
 }

+ 43 - 20
src/main/java/com/caimei365/commodity/annotation/IpSaveAspect.java

@@ -35,6 +35,7 @@ import java.util.HashMap;
 
 
 /**
+ *
  */
 @Slf4j
 @Aspect
@@ -43,6 +44,7 @@ public class IpSaveAspect {
 
     @Resource
     private ToolsFeign toolsFeign;
+
     /**
      * 切入点,根据自定义IpSave实际路径进行调整
      */
@@ -52,42 +54,63 @@ public class IpSaveAspect {
 
     @Around("executeIdempotent()")
     public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
-      	//获取方法对象
+        //获取方法对象
         Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
         RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
         ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
         HttpServletRequest request = servletRequestAttributes.getRequest();
         // ip
-        String remoteAddr = request.getRemoteAddr();
+        String unknown = "unknown";
+        String ip = "";
+        ip = request.getHeader("x-forwarded-for");
+        if (StringUtils.isBlank(ip)) {
+            ip = request.getHeader("X-Real-IP");
+        }
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
         // 接口路径
         String requestURI = request.getRequestURI();
-        // 接口真实发送参数
-        String queryString = request.getQueryString();
         //获取自定义注解
         IpSave ipSave = method.getAnnotation(IpSave.class);
         // 访问名 注解的值
         String s = ipSave.saveName();
-        String mes="";
-        if(StringUtils.isNotBlank(remoteAddr)){
-            mes+=remoteAddr+"¥";
-        }else{
-            mes="¥";
+        // 是否存储发送参数
+        boolean sp = ipSave.saveParams();
+        // 接口真实发送参数
+        String queryString = "";
+        if (sp) {
+            queryString = request.getQueryString();
+        }
+        String mes = "";
+        if (StringUtils.isNotBlank(ip)) {
+            mes += ip + "¥";
+        } else {
+            mes = "¥";
         }
-        if(StringUtils.isNotBlank(requestURI)){
-            mes+=requestURI+"¥";
-        }else{
-            mes+="¥";
+        if (StringUtils.isNotBlank(requestURI)) {
+            mes += requestURI + "¥";
+        } else {
+            mes += "¥";
         }
-        if(StringUtils.isNotBlank(queryString)){
-            mes+=queryString+"¥";
-        }else {
-            mes +="¥";
+        if (StringUtils.isNotBlank(queryString)) {
+            mes += queryString + "¥";
+        } else {
+            mes += "¥";
         }
-        if(StringUtils.isNotBlank(s)){
-            mes+=s;
+        if (StringUtils.isNotBlank(s)) {
+            mes += s;
         }
         //异步给mq存
-        toolsFeign.sendCommonMessage("IpSave",mes,null,1,1,null,null);
+        toolsFeign.sendCommonMessage("IpSave", mes, null, 1, 1, null, null);
 
         return joinPoint.proceed();
     }

+ 2 - 2
src/main/java/com/caimei365/commodity/controller/CouponApi.java

@@ -43,7 +43,7 @@ public class CouponApi {
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
     @GetMapping("/center")
-    @IpSave(saveName = "领券中心")
+    @IpSave(saveName = "领券中心",saveParams = true)
     public ResponseJson<PageInfo<CouponVo>> couponCenter(Integer userId, Integer status,
                                                          @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                          @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
@@ -99,7 +99,7 @@ public class CouponApi {
 
     @ApiOperation("领取优惠券")
     @PostMapping("/collar")
-    @IpSave(saveName = "领取优惠券")
+    @IpSave(saveName = "领取优惠券",saveParams = true)
     @Idempotent(prefix = "idempotent_collarCoupons", keys = {"#couponsDto"}, expire = 5)
     public ResponseJson<String> collarCoupons(CollarCouponsDto couponsDto) {
         if (couponsDto.getCouponId() == null || couponsDto.getSource() == null || couponsDto.getUserId() == null) {

+ 3 - 2
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -82,6 +82,7 @@ public class ProductPageApi {
             @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
             @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
     })
+    @IpSave(saveName = "首页楼层",saveParams = true)
     @GetMapping("/home/floor")
     public ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source) {
         return pageService.getHomeData(userId, source);
@@ -100,6 +101,7 @@ public class ProductPageApi {
 
     })
     @ApiOperation("新品橱窗列表")
+    @IpSave(saveName = "新品橱窗商品列表",saveParams = false)
     @GetMapping("/home/NewFloorList")
     public ResponseJson<PaginationVo<ProductItemVo>> getNewFloorList(Integer source,
                                                                      Integer userId,
@@ -112,7 +114,6 @@ public class ProductPageApi {
 
     @ApiOperation("新品橱窗品牌查询")
     @GetMapping("/home/BrandName")
-    @IpSave(saveName = "新品")
     public ResponseJson <List<BrandVo>>getNewFloorBrand() {
 
         return pageService.getNewFloorBrand();
@@ -261,7 +262,7 @@ public class ProductPageApi {
             @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
             @ApiImplicitParam(required = false, name = "productId", value = "商品Id")
     })
-    @IpSave(saveName = "商品详情")
+    @IpSave(saveName = "商品详情",saveParams = true)
     @Statistics(prefix = "statistics_details", field = "productId")
     @GetMapping("/product/details")
     public ResponseJson<ProductDetailVo> getProductDetails(Integer productId, Integer userId) {

+ 3 - 0
src/main/java/com/caimei365/commodity/controller/PromotionsApi.java

@@ -1,5 +1,6 @@
 package com.caimei365.commodity.controller;
 
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.vo.ProductItemVo;
@@ -39,6 +40,7 @@ public class PromotionsApi {
         @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
         @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
+    @IpSave(saveName = "获取专题活动列表",saveParams = true)
     @GetMapping("/list")
     public ResponseJson<PageInfo<ImageLinkVo>> getPromotionsList(Integer source,
                                                                  @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@@ -53,6 +55,7 @@ public class PromotionsApi {
      */
     @ApiOperation("获取促销活动详情(旧:/product/promotion/info)")
     @ApiImplicitParam(required = true, name = "promotionsId", value = "促销活动Id")
+    @IpSave(saveName = "获取专题活动详情",saveParams = true)
     @GetMapping("/info")
     public ResponseJson<PromotionsVo> promotionDetails(Integer promotionsId) {
         if (null == promotionsId) {

+ 3 - 0
src/main/java/com/caimei365/commodity/controller/SearchProductApi.java

@@ -1,5 +1,6 @@
 package com.caimei365.commodity.controller;
 
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.po.SearchHistoryPo;
 import com.caimei365.commodity.service.SearchProductService;
@@ -71,6 +72,7 @@ public class SearchProductApi {
             @ApiImplicitParam(required = false, name = "sortField", value = "排序字段:价格price,销量sales,人气favorite"),
             @ApiImplicitParam(required = false, name = "sortType", value = "排序规则:1降序,其他升序")
     })
+    @IpSave(saveName = "搜索商品",saveParams = true)
     @GetMapping("/product")
     public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds,
                                                       @RequestParam(value = "identity", defaultValue = "0") Integer identity,
@@ -103,6 +105,7 @@ public class SearchProductApi {
             @ApiImplicitParam(required = false, name = "sortField", value = "排序字段:价格price,销量sales,人气favorite"),
             @ApiImplicitParam(required = false, name = "sortType", value = "排序规则:1降序,其他升序")
     })
+    @IpSave(saveName = "点击分类搜索商品",saveParams = true)
     @GetMapping("/product/type")
     public ResponseJson<String> queryProductByType(Integer id, Integer idType, String brandIds,
                                                    @RequestParam(value = "identity", defaultValue = "0") Integer identity,

+ 4 - 0
src/main/java/com/caimei365/commodity/controller/SecondHandApi.java

@@ -1,6 +1,7 @@
 package com.caimei365.commodity.controller;
 
 import com.caimei365.commodity.annotation.Idempotent;
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.dto.SecondDto;
 import com.caimei365.commodity.model.vo.BrandVo;
@@ -44,6 +45,7 @@ public class SecondHandApi {
             @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
+    @IpSave(saveName = "二手商品列表",saveParams = true)
     @GetMapping("/list")
     public ResponseJson<PaginationVo<SecondListVo>> getSecondHandList(Integer userId, Integer secondHandType, Integer instrumentType, String name,
                                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@@ -61,6 +63,7 @@ public class SecondHandApi {
             @ApiImplicitParam(required = true, name = "userId", value = "机构用户id"),
             @ApiImplicitParam(required = true, name = "productId", value = "商品Id")
     })
+    @IpSave(saveName = "获取二手商品详情",saveParams = true)
     @GetMapping("/detail")
     public ResponseJson<SecondDetailVo> getSecondDetail(Integer userId, Integer productId) {
         return secondHandService.getSecondHandDetail(userId, productId);
@@ -102,6 +105,7 @@ public class SecondHandApi {
      * @param headers   HttpHeaders
      */
     @ApiOperation("发布二手商品(旧:/product/releaseSecondHandProduct)")
+    @IpSave(saveName = "发布二手商品",saveParams = false)
     @Idempotent(prefix = "idempotent_secondhand", keys = {"#secondDto"}, expire = 5)
     @PostMapping("/release")
     public ResponseJson releaseSecondHand(SecondDto secondDto, @RequestHeader HttpHeaders headers) {