From f44e4d609e7efaed9eac545137970b1e334f8106 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期六, 21 九月 2024 09:01:36 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/MemberGoodsCollectionController.java |  266 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 264 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/MemberGoodsCollectionController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/MemberGoodsCollectionController.java
index 098d61d..e894486 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/MemberGoodsCollectionController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/MemberGoodsCollectionController.java
@@ -1,8 +1,54 @@
 package com.ruoyi.goods.controller.inner;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
+import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
+import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.CertAlipayRequest;
+import com.alipay.api.AlipayConfig;
+import com.alipay.api.domain.AlipayOpenAppMiniTemplatemessageSendModel;
+import com.alipay.api.response.AlipayOpenAppMiniTemplatemessageSendResponse;
+import com.alipay.api.request.AlipayOpenAppMiniTemplatemessageSendRequest;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.ruoyi.common.core.constant.SecurityConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.annotation.InnerAuth;
+import com.ruoyi.goods.domain.GoodsSeckillAppointment;
+import com.ruoyi.goods.domain.MemberGoodsCollection;
+import com.ruoyi.goods.mapper.GoodsSeckillMapper;
+import com.ruoyi.goods.mapper.GoodsSkuMapper;
+import com.ruoyi.goods.service.IGoodsSeckillAppointmentService;
+import com.ruoyi.goods.service.IMemberGoodsCollectionService;
+import com.ruoyi.goods.service.impl.MemberGoodsCollectionServiceImpl;
+import com.ruoyi.goods.utli.HttpUtils;
+import com.ruoyi.system.api.domain.GoodsSeckill;
+import com.ruoyi.system.api.domain.GoodsSku;
+import com.ruoyi.system.api.domain.Member;
+import com.ruoyi.system.api.feignClient.MemberClient;
+import me.chanjar.weixin.common.error.WxErrorException;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.utils.HttpClientUtils;
+import org.apache.http.util.EntityUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -16,4 +62,220 @@
 @RequestMapping("/member-goods-collection")
 public class MemberGoodsCollectionController {
 
+    private static final String ACCESS_TOKEN_HOST = "https://api.weixin.qq.com/cgi-bin/token";
+
+    private static final String WX_APPID = "wx69e3ac6e13a889b7";
+
+    private static final String WX_SECRET = "1b8bcfcb681524ac553e72054e5271ef";
+
+
+    /**
+     * appID
+     **/
+    private static final String APP_ID_PROD = "2021004150664294";
+    /**
+     * 私钥
+     */
+    private static final String APP_PRIVATE_KEY = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC3ap1qQ5GTe+syB8Tu/fH8nRdpjA7yNgLINR/kFq1VFzxDref7DQDUDWXt+s5QZyBjL1UfbQWtA96F+OpgmIiNMdZSn9FH/w5XSqSd7B4nAa1sgfdLdZDvm+crqzn8OzyEJTrO8tihF+9K+btBl37s3QfmmzCRl1PAAMGqfy/JcQ2aivY+hxb25V0kD5AAXM7mVC2zzcBrykzafQCXEnDC7ls4Hjy0agmq1bKSx8SLYTsXAzZiGk9E7yh76nDAB+P1+kKPEYJXociU3k4YRR7l+6tzBPd+/mVkL34nuV5IiAK/795CrP/9gC50nZK/6CqSPDlQlOaAaJ2uZvAOeKx3AgMBAAECggEAMzw5+swjJ0KvYYtgDK6tYTZ0qswwBKLnxgto/CsFgkZ6VCGJMszgFVwkxASSi00zc+Ft8thehIUXLO9qcU9Knb51MyFnsafi1qmIMIEbryO90RjA/rg5o2U2fzFWgkn9zqAjvFmEAAQSmSwHjfwGvZ3Erjtdpt3RzEmpz7m1nJxYuZ2JLdo8AIY+iYn1NeDxHMi27RtqsZje7RV5YXrqKtMMzW2atmj+Dbn/E1pxpF0Dz6l0TqQh5B+9j1XlPTZKcYOYHNI0ACV+dV1NZsqmdhX0lKtQbsj/Q67vhq7uCmQRKcEka/5Z0X/TOKbwJE6i2/YEuA4PUGLpBMZQXhSGYQKBgQD50IuUTG6fg1dqFt9bJXxq2i1lkIHvzaCkHqVnTMyTDs+VcO2S6YaAFy6BLSI933qvHLogkhqnHiN+BRHe/M5+4TAOx30SQlJYa5ojpNFwMnRSZgxLoEddwlfj6qTnCgDW3CsUPR85x85NjIhONy75muNnNG8GHdn3blk2Y7KhpwKBgQC79TQhz5eJ6cwiWPWMWnnSAVvFKW4iPZjkbk+Sl7JXuqzvsdE47gGN0Vk8iYWEc2WrnQY6vf7WnamQYi+Gr5ySfTSt9qwvRx0IRzHdSZkOsHJLBCnAt+Pf+pSBc2Z788iUXVbDRAIfF6YYG44P3jHspbnGPJt14PP0sHbPmh7YsQKBgGzGGYChJyndjpprCyYs1FfSWCH5IhrAdkn/7hVko08FC+4OFeP6Os5bSayFcntua4UEBSdZdrF9tgaRPo7RlTg55SsKQbNJnYFSmPMcOPWZgny+YmwrheeVT5+188eF24eypi9Rzd7i2Tl7D36/GH0mrA2sDwuiw92w9rdwAb/RAoGAf6RDZPqvNI87e8/h4RDITd9yTPCXxFUEcYygKTMvf/hb3ONq7DhlgcO70CqsK4iacPLP+jBw0Zp8PnsPP24e7DRvA/zSbcDjbG285URH1vvogh0vpZq7+60WENsnq+GgQ3EnrK+QqUDMIO8FiK0iRk09XexmvqSnx3HXHaDSdeECgYB9htO5mOn2/ugIeMw11g+JJkZ/hzE55/6fLf7zh3yel5EflmAdYRv0lHafjyXIzNrAnBgD95x4LKGLi9A5AMo9SJJu0ZOg1KujKPVY4ByCm9SO7ErJDuHI4AhtewdHhYDpnXMakoxm/medSjlt7GCVv7E/eDpNZs+MLi9MiTFx2g==";
+    /**
+     * 支付宝公钥
+     */
+    private static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlW2RMACojdqTa8H+j6411Lm5UipGXXbQiswq50rUflwjTj843zNVaVpk8uJmbdmtUBJlmblgBS/a31O4L4LrHB8WxJ+w0f9DBNTq9T6b80MiAVnU/3gXK365DmbzPWS5pR9wEgJVHnfOFUbsB5AVFHV0m9hUZcPv7xveuEp3BEoD5smaDJByR+KgFw0Q0JgINhhE6bsEa3UgJ198af269LtQ5HJl1TWLI8aeqW14HrxyADIt49NB9KZ8MOdKP+66HWcrXlipKFHtccy3dff72DqPmFdESoXfLXKZyhU5w9v4Q5F6UoAGTPwl9KQwikTobNeJ/7su7X3AB6+C14J4sQIDAQAB";
+
+
+    @Resource
+    private IGoodsSeckillAppointmentService iGoodsSeckillAppointmentService;
+
+    @Resource
+    private MemberClient memberClient;
+
+    @Resource
+    private GoodsSeckillMapper goodsSeckillMapper;
+    @Resource
+    private GoodsSkuMapper goodsSkuMapper;
+
+    @InnerAuth
+    @GetMapping("/tusonUser/{tusonUserId}")
+    R<?> tusonUser(@PathVariable("tusonUserId") Long tusonUserIdId){
+        GoodsSeckill goodsSeckill = goodsSeckillMapper.selectById(tusonUserIdId);
+        LambdaQueryWrapper<GoodsSeckillAppointment> wrapper3= Wrappers.lambdaQuery();
+        wrapper3.eq(GoodsSeckillAppointment::getGoodsSeckillId,tusonUserIdId);
+        List<GoodsSeckillAppointment> list = iGoodsSeckillAppointmentService.list(wrapper3);
+        for (GoodsSeckillAppointment li:list) {
+            Member data = memberClient.getMembeOne(li.getMemberId(), SecurityConstants.INNER).getData();
+
+            GoodsSku goodsSku = goodsSkuMapper.selectById(goodsSeckill.getGoodsSkuId());
+            if (data.getZfbOpenid()!=null){
+                try {
+                    push1(data.getZfbOpenid(),li.getFormId(),goodsSku.getSkuName(),goodsSeckill.getSeckillPrice(),goodsSeckill.getStartTime());
+                } catch (AlipayApiException e) {
+                    throw new RuntimeException(e);
+                }
+            }if (data.getMiniOpenid()!=null){
+                push(data.getMiniOpenid(),li.getFormId(),goodsSku.getSkuName(),goodsSeckill.getSeckillPrice(),goodsSeckill.getStartTime());
+            }
+        }
+
+
+        return R.ok();
+    }
+
+
+    public String push1 (String openid, String formid, String skuName, BigDecimal seckillPrice, LocalDateTime startTime) throws AlipayApiException {
+
+            AlipayConfig alipayConfig = new AlipayConfig();
+            alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+            alipayConfig.setAppId("APP_ID_PROD");
+            alipayConfig.setPrivateKey(APP_PRIVATE_KEY);
+            alipayConfig.setFormat("json");
+            alipayConfig.setAlipayPublicKey(ALIPAY_PUBLIC_KEY);
+            alipayConfig.setCharset("UTF8");
+            alipayConfig.setSignType("RSA2");
+            AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
+            AlipayOpenAppMiniTemplatemessageSendRequest request = new AlipayOpenAppMiniTemplatemessageSendRequest();
+            AlipayOpenAppMiniTemplatemessageSendModel model = new AlipayOpenAppMiniTemplatemessageSendModel();
+            model.setFormId(formid);
+          DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            model.setData("{\"keyword1\": {\"value\" : \""+skuName+"\"},\"keyword2\": {\"value\" : \""+seckillPrice+"\"},\"keyword3\": {\"value\" : \""+startTime.format(formatter)+"\"}}");
+            model.setPage("page/component/index");
+            model.setUserTemplateId("1b6b60e0511a40b49197e83ed3d74fb2");
+            model.setToUserId(openid);
+            request.setBizModel(model);
+            AlipayOpenAppMiniTemplatemessageSendResponse response = alipayClient.execute(request);
+            System.out.println(response.getBody());
+            if (response.isSuccess()) {
+                System.out.println("调用成功");
+            } else {
+                System.out.println("调用失败");
+                // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+                // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+                // System.out.println(diagnosisUrl);
+            }
+            return null;
+        }
+
+    /**
+     * 发送消息
+     * @param template_id           所需下发的订阅模板id
+     * @param page                  点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转
+     * @param touser                接收者(用户)的 openid
+     * @param data                  模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }的object
+     * @param miniprogram_state     跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
+     * @param lang                  进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
+     * @return
+     */
+    public String push(String openid, String formid, String skuName, BigDecimal seckillPrice, LocalDateTime startTime) {
+
+        //1,配置小程序信息
+
+        String accessToken = null;
+        try {
+            accessToken = getAccessTokenByWX();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        JSONObject jsonObject = JSONObject.parseObject(accessToken);
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+jsonObject.get("access_token");
+        Map<String, Object> params = new HashMap<>();
+        params.put("template_id", "NHmHEbK8SjzafWgnErAxNR0b2XJzSehv2kPqbQefolU");
+        params.put("page", null);
+        params.put("touser", openid);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm");
+        String data = "{\"thing1\":{\"value\":\""+skuName+"\"},\"amount3\":{\"value\":\""+seckillPrice.toString()+"\"}"+
+                ",\"time4\":{\"value\":\""+startTime.format(formatter)+"\"}"+
+                ",\"thing5\":{\"value\":\"优质老酒限时秒杀即将开始!点击参与秒杀哈\"}}";
+
+        params.put("data", JSON.parseObject(data));
+        params.put("miniprogram_state", "trial");
+        params.put("lang", "zh_CN");
+        try {
+            Map<String, Object> payloadMapData = JSONObject.parseObject(HttpUtils.httpPost(url, JSONObject.toJSONString(params)));
+            if (payloadMapData.containsKey("errCode")) {
+                System.out.println("返回code码:"+payloadMapData.get("errCode").toString());
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+      /*  WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();
+        wxConfig.setAppid("wx69e3ac6e13a889b7");//小程序appid
+
+        wxConfig.setSecret("1b8bcfcb681524ac553e72054e5271ef");//小程序AppSecret
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        WxMaService wxMaService = new WxMaServiceImpl();
+
+        wxMaService.setWxMaConfig(wxConfig);
+        String responseAccessToken=null;
+        try {
+            responseAccessToken = getAccessTokenByWX();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+
+        //2,设置模版信息(keyword1:类型,keyword2:内容)
+
+
+        List<WxMaTemplateData> templateDataList = new ArrayList<>(4);
+
+        WxMaTemplateData data1 = new WxMaTemplateData("thing1", skuName);
+
+        WxMaTemplateData data2 = new WxMaTemplateData("amount3", seckillPrice.toString());
+
+        WxMaTemplateData data3 = new WxMaTemplateData("thing4", startTime.format(formatter));
+
+        WxMaTemplateData data4 = new WxMaTemplateData("thing5","优质老酒限时秒杀即将开始!点击参与秒杀哈");
+
+        templateDataList.add(data1);
+
+        templateDataList.add(data2);
+
+        templateDataList.add(data3);
+
+        templateDataList.add(data4);
+
+
+
+        //3,设置推送消息
+
+        WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()
+
+                .toUser(openid)//要推送的用户openid
+
+                .formId(formid)//收集到的formid
+
+                .templateId("NHmHEbK8SjzafWgnErAxNR0b2XJzSehv2kPqbQefolU")//推送的模版id(在小程序后台设置)
+
+                .data(templateDataList)//模版信息
+
+                .page("pages/index/index")//要跳转到小程序那个页面
+
+                .build();
+
+        //4,发起推送
+
+        try {
+            wxMaService.getMsgService().sendTemplateMsg(templateMessage);
+
+        } catch (WxErrorException e) {
+
+            System.out.println("推送失败:" + e.getMessage());
+
+            return e.getMessage();
+
+        }
+*/
+        return "推送成功";
+
+    }
+
+    public static String getAccessTokenByWX() throws Exception {
+        String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential";
+        Map<String, String> headers = new HashMap<>(8);
+        HttpResponse response = HttpUtils.doGet(host, "", "GET", headers, null);
+        return EntityUtils.toString(response.getEntity());
+    }
+
 }

--
Gitblit v1.7.1