| | |
| | | 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; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.http.HttpRequest; |
| | | import cn.hutool.http.HttpResponse; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import org.dom4j.io.SAXReader; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.io.*; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import org.dom4j.Document; |
| | | import org.dom4j.Element; |
| | | import org.dom4j.io.SAXReader; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.io.File; |
| | | import java.io.InputStream; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * <pre> |
| | |
| | | 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")){ |
| | | if(map.containsKey("EventKey") && ObjectUtil.isNotEmpty(map.get("EventKey"))){ |
| | | /** |
| | | * 扫带参数二维码 |
| | | */ |
| | |
| | | log.info("取消关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName); |
| | | //取消关注则退出商城 |
| | | MallMember mallMember = mallMemberMapper.selectMemberByOpenId(fromUserName); |
| | | mallMember.setSubStatus(MallMember.SUB_STATUS_DISABLED); |
| | | mallMemberMapper.updateById(mallMember); |
| | | if(ObjectUtil.isNotEmpty(mallMember)){ |
| | | String redisKey = AppContants.XCX_LOGIN_PREFIX + mallMember.getId(); |
| | | String existToken = redisUtils.getString(redisKey); |
| | | if (StrUtil.isNotBlank(existToken)) { |
| | | Object o = redisUtils.get(existToken); |
| | | if (ObjectUtil.isNotEmpty(o)) { |
| | | redisUtils.del(existToken); |
| | | } |
| | | } |
| | | redisUtils.del(existToken); |
| | | 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); |
| | |
| | | */ |
| | | String eventKey = map.get("EventKey"); |
| | | if(StrUtil.isNotEmpty(eventKey)){ |
| | | String[] eventKeyStr = StrUtil.split(eventKey, "_"); |
| | | stringBuffer.append(eventKeyStr[1]); |
| | | // String[] eventKeyStr = StrUtil.split(eventKey, "_"); |
| | | // stringBuffer.append(eventKeyStr[1]); |
| | | stringBuffer.append(eventKey); |
| | | stringBuffer.append("@"); |
| | | stringBuffer.append(fromUserName); |
| | | agentProducer.sendMemberSubScanMsg(stringBuffer.toString()); |
| | |
| | | // 这里参数的顺序要按照 key 值 ASCII 码升序排序 |
| | | String s = "jsapi_ticket=" + ticket + "&noncestr=" + nocestr |
| | | + "×tamp=" + timestamp + "&url=" + url; |
| | | |
| | | log.info("s:" + s); |
| | | return SHA1(s); |
| | | } |
| | | // |
| | |
| | | String signature = createSignature(nonceStr, ticket, timestamp, url); |
| | | |
| | | Map<String, Object> map = new HashMap<>(16); |
| | | map.put("ticket", ticket); |
| | | map.put("timestamp", timestamp); |
| | | map.put("nonceStr", nonceStr); |
| | | map.put("signature", signature); |