From f537abe9f3646c739beaf15076246a2f71a347e9 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 20 二月 2025 16:57:55 +0800
Subject: [PATCH] IOS广告增加区域屏蔽

---
 src/main/java/com/yeshi/buwan/aspect/SignAspect.java |  111 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 97 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/aspect/SignAspect.java b/src/main/java/com/yeshi/buwan/aspect/SignAspect.java
index 13c3555..3168226 100644
--- a/src/main/java/com/yeshi/buwan/aspect/SignAspect.java
+++ b/src/main/java/com/yeshi/buwan/aspect/SignAspect.java
@@ -1,43 +1,126 @@
 package com.yeshi.buwan.aspect;
 
+import com.yeshi.buwan.domain.system.DetailSystem;
+import com.yeshi.buwan.service.imp.SystemService;
+import com.yeshi.buwan.util.JsonUtil;
+import com.yeshi.buwan.util.Utils;
 import com.yeshi.buwan.vo.AcceptData;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 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.yeshi.utils.StringUtil;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.*;
 
 @Component
 @Aspect
 public class SignAspect {
 
+    @Resource
+    private SystemService systemService;
+
 
     //绛惧悕楠岃瘉
     @Around("execution(public * com.yeshi.buwan.controller.api.*.*(..))")
-    public Object verifySign(ProceedingJoinPoint joinPoint) throws IOException {
-        ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-        HttpServletRequest request = servletContainer.getRequest();
+    public Object verifySign(ProceedingJoinPoint joinPoint) throws Throwable {
+        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+        HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
+        HttpServletResponse response = ((ServletRequestAttributes) requestAttributes).getResponse();
+        PrintWriter out = null;
+        AcceptData acceptData = null;
         Object[] args = joinPoint.getArgs();
         for (Object obj : args) {
             if (obj instanceof AcceptData) {
-                AcceptData acceptData = (AcceptData) obj;
-                if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
-                    acceptData.setChannel("appstore");
-                }
+                acceptData = (AcceptData) obj;
+            } else if (obj instanceof PrintWriter) {
+                out = (PrintWriter) obj;
             }
         }
 
-        Object obj = null;
-        try {
-            obj = joinPoint.proceed(args);
-        } catch (Throwable e) {
-            e.printStackTrace();
+
+        //濡傛灉鏄疉ndroid鏂扮増鏈垯璋冪敤鏂扮殑绛惧悕鏂规硶
+        //甯冧父3.8.7涔嬪悗璋冪敤鏂扮殑绛惧悕鏂规硶
+
+        if (acceptData != null && "android".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() >= 105) {
+            String sign = getNewSign(request, "8888B&*@-uWan88/',@@^");
+
+            if (!sign.equalsIgnoreCase(acceptData.getSign())) {
+                if (out == null)
+                    out = response.getWriter();
+                out.print(JsonUtil.loadFalseJson("绛惧悕閿欒"));
+                return null;
+            }
+        } else if ("com.xinlian.hjtv.ios".equalsIgnoreCase(acceptData.getPackage())) {
+            //IOS闊╁墽绛惧悕鏂瑰紡
+            String sign = getNewSign(request, "8888B&*@-hanJu88/',@@^");
+            if (!sign.equalsIgnoreCase(acceptData.getSign())) {
+                if (out == null)
+                    out = response.getWriter();
+                out.print(JsonUtil.loadFalseJson("绛惧悕閿欒"));
+                return null;
+            }
+        } else {
+            if (!Utils.signIsRight(request)) {
+                if (out == null)
+                    out = response.getWriter();
+                out.print(JsonUtil.loadFalseJson("绛惧悕閿欒"));
+                return null;
+            }
         }
-        return obj;
+
+
+        if (acceptData != null) {
+            if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
+                acceptData.setChannel("appstore");
+            }
+            if (acceptData.getPackageName().equalsIgnoreCase("com.doudou.ysvideo.lite")) {
+                //灏忕背涓婃灦浣跨敤
+                if (!"xiaomi".equalsIgnoreCase(acceptData.getChannel())) {
+                    acceptData.setPackageName("com.doudou.ysvideo");
+                    acceptData.setChildPackage("com.doudou.ysvideo.lite");
+                } else {
+                    acceptData.setChildPackage("com.doudou.ysvideo.lite");
+                }
+            } else {
+                acceptData.setChildPackage(acceptData.getPackage());
+            }
+            //娉ㄥ叆detailSystem
+            DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
+            acceptData.setDetailSystem(detailSystem);
+
+            detailSystem = systemService.getDetailSystemByPackage(acceptData.getChildPackage());
+            acceptData.setChildDetailSystem(detailSystem);
+        }
+        return joinPoint.proceed(args);
+    }
+
+
+    public static String getNewSign(HttpServletRequest request, String signKey) {
+        Map<String, String[]> params = request.getParameterMap();
+        List<String> list = new ArrayList<>();
+
+        //绛惧悕
+        for (Iterator<String> its = params.keySet().iterator(); its.hasNext(); ) {
+            String key = its.next();
+            if ("sign".equalsIgnoreCase(key))
+                continue;
+            list.add(key + "=" + params.get(key)[0]);
+        }
+
+        Collections.sort(list);
+        String str = StringUtil.concat(list, "&");
+        str+=signKey;
+        System.out.println("鍔犲瘑鍓嶅瓧绗︿覆锛�"+str);
+        String sign = StringUtil.Md5(str );
+        return sign;
     }
 
 

--
Gitblit v1.8.0