From 97f51bffe8ac3a31793b70d244011ff82c59c22f Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 27 Jul 2023 21:26:52 +0800
Subject: [PATCH] 赠送积分更新状态

---
 src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java |  149 +++++++++++++++++++++++++------------------------
 1 files changed, 76 insertions(+), 73 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java b/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java
index d13639a..36d7474 100644
--- a/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java
+++ b/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java
@@ -1,7 +1,11 @@
 package cc.mrbird.febs.pay.util;
 
+import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.text.StrFormatter;
@@ -50,6 +54,10 @@
     @Autowired
     RestTemplate restTemplate;
 
+
+    @Autowired
+    MallMemberMapper mallMemberMapper;
+
     private static Logger log = LoggerFactory.getLogger(WechatEventUtil.class);
 
     /**
@@ -95,7 +103,7 @@
         log.info("事件处理:event:{}、msgType:{}、toUserName:{}、fromUserName:{}", eventType, msgType, toUserName, fromUserName);
         if ("event".equals(msgType)) {
             if ("subscribe".equals(eventType)) {
-                result = imgTextMsg(toUserName, fromUserName, "欢迎光临", "欢迎光临【药王谷铺子】,点击左下角【药王谷铺子】-【商城】,进入商城。", "图片地址", "点击后跳转的路径");
+                result = imgTextMsg(toUserName, fromUserName, "欢迎光临", "欢迎光临【药王谷铺子】,点击左下角【药王谷铺子】-【商城】,进入商城。", "https://excoin.oss-cn-hangzhou.aliyuncs.com/uploadeFile/1690447963307584cd27ac623427f8c07ed1d3bbe4279.png", "http://ywgouth.meiao.biz/");
                 log.info("新增关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName);
                 StringBuffer stringBuffer = new StringBuffer();
                 if(map.containsKey("EventKey")){
@@ -104,18 +112,25 @@
                      */
                     String eventKey = map.get("EventKey");
                     if(StrUtil.isNotEmpty(eventKey)){
-                        stringBuffer.append(eventKey);
-                        stringBuffer.append("-");
+
+                        String[] eventKeyStr = StrUtil.split(eventKey, "_");
+                        stringBuffer.append(eventKeyStr[1]);
+                        stringBuffer.append("@");
                         stringBuffer.append(fromUserName);
                         agentProducer.sendMemberSubScanMsg(stringBuffer.toString());
                     }
+                }else{
+                    /**
+                     * 普通关注事件
+                     */
+                    agentProducer.sendMemberSubMsg(fromUserName);
                 }
-                /**
-                 * 普通关注事件
-                 */
-                agentProducer.sendMemberSubMsg(fromUserName);
             } else if ("unsubscribe".equals(eventType)) {
                 log.info("取消关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName);
+                //取消关注则退出商城
+                MallMember mallMember = mallMemberMapper.selectMemberByOpenId(fromUserName);
+                redisUtils.del(AppContants.XCX_LOGIN_PREFIX + mallMember.getId());
+                redisUtils.del(AppContants.XCX_LOGIN_PHONE_PREFIX + mallMember.getId());
             }else if ("SCAN".equals(eventType)) {
                 log.info("扫码关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName);
                 if(map.containsKey("EventKey")){
@@ -125,7 +140,8 @@
                      */
                     String eventKey = map.get("EventKey");
                     if(StrUtil.isNotEmpty(eventKey)){
-                        stringBuffer.append(eventKey);
+                        String[] eventKeyStr = StrUtil.split(eventKey, "_");
+                        stringBuffer.append(eventKeyStr[1]);
                         stringBuffer.append("@");
                         stringBuffer.append(fromUserName);
                         agentProducer.sendMemberSubScanMsg(stringBuffer.toString());
@@ -329,35 +345,35 @@
 //
 //    String timestamp = String.format("%010d", System.currentTimeMillis() / 1000);
 //
-//    public static String createSignature(String nocestr, String ticket, String timestamp, String url) {
-//        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
-//        String s = "jsapi_ticket=" + ticket + "&noncestr=" + nocestr
-//                + "&timestamp=" + timestamp + "&url=" + url;
-//        return SHA1(s);
-//    }
+    public static String createSignature(String nocestr, String ticket, String timestamp, String url) {
+        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
+        String s = "jsapi_ticket=" + ticket + "&noncestr=" + nocestr
+                + "&timestamp=" + timestamp + "&url=" + url;
+        return SHA1(s);
+    }
 //
-//    public static String SHA1(String decript) {
-//        try {
-//            MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
-//            digest.update(decript.getBytes());
-//            byte messageDigest[] = digest.digest();
-//            // Create Hex String
-//            StringBuffer hexString = new StringBuffer();
-//            // 字节数组转换为 十六进制 数
-//            for (int i = 0; i < messageDigest.length; i++) {
-//                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
-//                if (shaHex.length() < 2) {
-//                    hexString.append(0);
-//                }
-//                hexString.append(shaHex);
-//            }
-//            return hexString.toString();
-//
-//        } catch (NoSuchAlgorithmException e) {
-//            e.printStackTrace();
-//        }
-//        return "";
-//    }
+    public static String SHA1(String decript) {
+        try {
+            MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
+            digest.update(decript.getBytes());
+            byte messageDigest[] = digest.digest();
+            // Create Hex String
+            StringBuffer hexString = new StringBuffer();
+            // 字节数组转换为 十六进制 数
+            for (int i = 0; i < messageDigest.length; i++) {
+                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
+                if (shaHex.length() < 2) {
+                    hexString.append(0);
+                }
+                hexString.append(shaHex);
+            }
+            return hexString.toString();
+
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
 
     public static void main(String[] args) {
     }
@@ -369,28 +385,15 @@
         if(ObjectUtil.isEmpty(redisUtils.get("ticket"))){
             ticket = getTicket();
         }
-        Map<String, String> data = new HashMap<>();
         //生成10位时间戳
         String timestamp = String.format("%010d", System.currentTimeMillis() / 1000);
-        data.put("timestamp", timestamp );
-        //生成随机字符串
         String nonceStr = createNonceStr();
-        data.put("noncestr", nonceStr );
-        data.put("url", url);
-        data.put("jsapi_ticket", ticket);
-        String signature = null;
-        try {
-            signature = generateSignature(data);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        String signature = createSignature(nonceStr, ticket, timestamp, url);
 
-        //签名算法
-        String sha1 = SHA1(signature);
         Map<String, Object> map = new HashMap<>(16);
         map.put("timestamp", timestamp);
         map.put("nonceStr", nonceStr);
-        map.put("signature", sha1);
+        map.put("signature", signature);
         return map;
     }
 
@@ -444,28 +447,28 @@
     /**
      *SHA1签名算法
      */
-    public static String SHA1(String decript) {
-        try {
-            MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
-            digest.update(decript.getBytes());
-            byte messageDigest[] = digest.digest();
-            // Create Hex String
-            StringBuffer hexString = new StringBuffer();
-            // 字节数组转换为 十六进制 数
-            for (int i = 0; i < messageDigest.length; i++) {
-                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
-                if (shaHex.length() < 2) {
-                    hexString.append(0);
-                }
-                hexString.append(shaHex);
-            }
-            return hexString.toString();
-
-        } catch (NoSuchAlgorithmException e) {
-            e.printStackTrace();
-        }
-        return "";
-    }
+//    public static String SHA1(String decript) {
+//        try {
+//            MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
+//            digest.update(decript.getBytes());
+//            byte messageDigest[] = digest.digest();
+//            // Create Hex String
+//            StringBuffer hexString = new StringBuffer();
+//            // 字节数组转换为 十六进制 数
+//            for (int i = 0; i < messageDigest.length; i++) {
+//                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
+//                if (shaHex.length() < 2) {
+//                    hexString.append(0);
+//                }
+//                hexString.append(shaHex);
+//            }
+//            return hexString.toString();
+//
+//        } catch (NoSuchAlgorithmException e) {
+//            e.printStackTrace();
+//        }
+//        return "";
+//    }
 
 
     /**

--
Gitblit v1.9.1