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 -// + "×tamp=" + 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 + + "×tamp=" + 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