From fcd4954fc859440df4b04b4a8153c54a824c78b7 Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期四, 04 七月 2024 18:12:26 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSeckillAppointment.java                   |    9 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java                         |    8 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/HttpUtils.java                                   |  337 ++++++++++++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartOrderController.java      |   10 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java                   |  128 +++--
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java                 |   11 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java         |    9 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberAddressController.java       |    4 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java                    |    2 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java                               |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java             |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                    |  158 +++++--
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/MemberGoodsCollectionController.java |  223 +++++++++++
 ruoyi-modules/ruoyi-order/pom.xml                                                                             |   11 
 ruoyi-modules/ruoyi-goods/pom.xml                                                                             |   13 
 /dev/null                                                                                                     |   20 -
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/wxPush.java                                      |  113 +++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsGroupPurchaseController.java    |   31 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartPaylogController.java     |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java                            |    2 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java                    |   15 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillAppointmentServiceImpl.java  |   35 +
 22 files changed, 1,011 insertions(+), 134 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java
index ba8924e..e369bc6 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java
@@ -16,6 +16,8 @@
     GROUP_PURCHASES_END_TASK("团购商品延时任务", "团购商品定时结束任务"),
     AUCTION_GOODS_START_TASK("拍卖商品延时任务", "拍卖商品定时开始任务"),
     AUCTION_GOODS_END_TASK("拍卖商品延时任务", "拍卖商品定时结束任务"),
+
+    AUTOMATIC_CANCEL("用户秒杀推送消息", "用户秒杀推送消息"),
     ;
 
     String name;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
index bfacfce..f84ad08 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
@@ -152,4 +152,6 @@
     
     @ApiModelProperty("拍卖会id")
     private Long auctionSalesroomId;
+    @ApiModelProperty("是否显示订单 1显示,2 不显示")
+    private Integer isOrder;
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java
index e52e429..383246d 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java
@@ -77,6 +77,16 @@
             }
 
             @Override
+            public R<?> GroupPurchaseNum(Long groupPurchaseId, String source) {
+                return null;
+            }
+
+            @Override
+            public R<?> GroupPurchaseNum1(Long groupPurchaseId, String source) {
+                return null;
+            }
+
+            @Override
             public R<?> startSeckill(Long seckillId, String source) {
                 return R.fail("开始秒杀失败:" + cause.getMessage());
             }
@@ -92,6 +102,11 @@
             }
 
             @Override
+            public R<?> tusonUser(Long tusonUserIdId, String source) {
+                return null;
+            }
+
+            @Override
             public R<?> endGroupPurchase(Long groupPurchaseId, String source) {
                 return R.fail("结束团购失败:" + cause.getMessage());
             }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java
index 2d86bc9..db8b94d 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java
@@ -64,6 +64,14 @@
     R<Boolean> updGoodsSeckill1(@RequestBody GoodsSku goodsSku,
                         @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @GetMapping("/goods-group-purchase/num/{groupPurchaseId}")
+    R<?> GroupPurchaseNum(@PathVariable("groupPurchaseId") Long groupPurchaseId,
+                            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @GetMapping("/goods-group-purchase/num1/{groupPurchaseId}")
+    R<?> GroupPurchaseNum1(@PathVariable("groupPurchaseId") Long groupPurchaseId,
+                          @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
 
     @GetMapping("/goods-seckill/start/{seckillId}")
     R<?> startSeckill(@PathVariable("seckillId") Long seckillId,
@@ -77,6 +85,9 @@
     R<?> startGroupPurchase(@PathVariable("groupPurchaseId") Long groupPurchaseId,
             @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @GetMapping("/member-goods-collection/tusonUser/{tusonUserId}")
+    R<?> tusonUser(@PathVariable("tusonUserId") Long tusonUserIdId,
+                            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
     @GetMapping("/goods-group-purchase/end/{groupPurchaseId}")
     R<?> endGroupPurchase(@PathVariable("groupPurchaseId") Long groupPurchaseId,
             @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
index 1352931..a5dcc66 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -583,7 +583,7 @@
         List<OrderAuctionBond> data = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData();
         Set<Long> goodsSkuIdList = null;
         if (data.size()>0){
-            goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionSalesroomId)
+            goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionGoodsId)
                     .collect(Collectors.toSet());
         }else {
             Set<Long> goodsSkuIdList1 =new HashSet<>();
@@ -597,7 +597,12 @@
         }
 
         if (auctionGoodsListDTO.getStartStatus()!=4){
-            auctionGoodsListPageDTO.setStartStatus(auctionGoodsListDTO.getStartStatus());
+            if (auctionGoodsListDTO.getStartStatus()==0){
+                auctionGoodsListPageDTO.setStartStatus(5);
+            }else{
+                auctionGoodsListPageDTO.setStartStatus(auctionGoodsListDTO.getStartStatus());
+            }
+
         }
 
         Page<AuctionGoodsListVO> page = new Page<>();
diff --git a/ruoyi-modules/ruoyi-goods/pom.xml b/ruoyi-modules/ruoyi-goods/pom.xml
index 91b3747..a32b6f6 100644
--- a/ruoyi-modules/ruoyi-goods/pom.xml
+++ b/ruoyi-modules/ruoyi-goods/pom.xml
@@ -101,6 +101,19 @@
     </dependency>
 
     <dependency>
+      <groupId>commons-httpclient</groupId>
+      <artifactId>commons-httpclient</artifactId>
+      <version>3.1</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.alipay.sdk</groupId>
+      <artifactId>alipay-sdk-java</artifactId>
+      <version>4.39.95.ALL</version>
+    </dependency>
+
+
+    <dependency>
       <groupId>cn.afterturn</groupId>
       <artifactId>easypoi-spring-boot-starter</artifactId>
       <version>4.0.0</version>
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsGroupPurchaseController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsGroupPurchaseController.java
index 1560b00..2c6a22d 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsGroupPurchaseController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsGroupPurchaseController.java
@@ -51,6 +51,37 @@
         return R.ok();
     }
 
+    @InnerAuth
+    @GetMapping("/num/{groupPurchaseId}")
+    R<?> GroupPurchaseNum(@PathVariable("groupPurchaseId") Long groupPurchaseId) {
+        try {
+            GoodsGroupPurchase byId = goodsGroupPurchaseService.getById(groupPurchaseId);
+           Integer m= byId.getCurrentNumber()+1;
+            byId.setCurrentNumber(m);
+            goodsGroupPurchaseService.updateById(byId);
+        } catch (Exception e) {
+            log.error("团购商品开始团购失败", e);
+            return R.fail("团购商品开始团购失败");
+        }
+        return R.ok();
+    }
+
+    @InnerAuth
+    @GetMapping("/num1/{groupPurchaseId}")
+    R<?> GroupPurchaseNum1(@PathVariable("groupPurchaseId") Long groupPurchaseId) {
+        try {
+            GoodsGroupPurchase byId = goodsGroupPurchaseService.getById(groupPurchaseId);
+            Integer m= byId.getCurrentNumber()-1;
+            byId.setCurrentNumber(m);
+            goodsGroupPurchaseService.updateById(byId);
+        } catch (Exception e) {
+            log.error("团购商品开始团购失败", e);
+            return R.fail("团购商品开始团购失败");
+        }
+        return R.ok();
+    }
+
+
     /**
      * 团购商品结束团购
      *
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..cefe81d 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,50 @@
 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.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.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 +58,181 @@
 @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.getWxOpenid()!=null){
+                push(data.getWxOpenid(),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;
+        }
+
+    public String push(String openid, String formid, String skuName, BigDecimal seckillPrice, LocalDateTime startTime) {
+
+        //1,配置小程序信息
+
+        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());
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSeckillAppointment.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSeckillAppointment.java
index a1ad1ed..f5e2ade 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSeckillAppointment.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSeckillAppointment.java
@@ -1,9 +1,6 @@
 package com.ruoyi.goods.domain;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
@@ -29,6 +26,10 @@
 
     private static final long serialVersionUID = 1L;
 
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+
     @ApiModelProperty(value = "秒杀商品id")
     private Long goodsSeckillId;
 
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillAppointmentServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillAppointmentServiceImpl.java
index e5ac7ec..5c6e94f 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillAppointmentServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillAppointmentServiceImpl.java
@@ -1,12 +1,24 @@
 package com.ruoyi.goods.service.impl;
 
+import com.ruoyi.common.core.constant.SecurityConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.goods.domain.GoodsSeckillAppointment;
 import com.ruoyi.goods.mapper.GoodsSeckillAppointmentMapper;
 import com.ruoyi.goods.service.IGoodsSeckillAppointmentService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.goods.service.IGoodsSeckillService;
+import com.ruoyi.system.api.constants.DelayTaskEnum;
+import com.ruoyi.system.api.domain.DelayTask;
+import com.ruoyi.system.api.domain.GoodsSeckill;
 import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
+import com.ruoyi.system.api.feignClient.SysUserClient;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.util.concurrent.TimeUnit;
 
 /**
  * <p>
@@ -18,13 +30,36 @@
  */
 @Service
 public class GoodsSeckillAppointmentServiceImpl extends ServiceImpl<GoodsSeckillAppointmentMapper, GoodsSeckillAppointment> implements IGoodsSeckillAppointmentService {
+   @Resource
+    private  IGoodsSeckillService goodsSeckillService;
 
+    @Resource
+    private SysUserClient sysUserClient;
+    @Resource
+   private RedisService redisService;
     @Override
     public R goodsSeckillAppointment(HomeGoodsSkuDTO homeGoodsSkuDTO) {
         GoodsSeckillAppointment goodsSeckillAppointment=new GoodsSeckillAppointment();
         goodsSeckillAppointment.setGoodsSeckillId(homeGoodsSkuDTO.getGoodsSkuId());
         goodsSeckillAppointment.setMemberId(homeGoodsSkuDTO.getMemberId());
+        goodsSeckillAppointment.setFormId(homeGoodsSkuDTO.getFormId());
         this.save(goodsSeckillAppointment);
+
+        GoodsSeckill byId = goodsSeckillService.getById(homeGoodsSkuDTO.getGoodsSkuId());
+
+        DelayTask delayTask = new DelayTask();
+        delayTask.setDelFlag(0);
+        delayTask.setCreateTime(LocalDateTime.now());
+        delayTask.setExecuteTime(byId.getStartTime().minusMinutes(30));
+        delayTask.setRedisKey(DelayTaskEnum.AUTOMATIC_CANCEL.getCode() + "-" + byId.getId());
+        sysUserClient.addDelayTask(delayTask, SecurityConstants.INNER);
+
+        Duration duration = Duration.between(LocalDateTime.now(), byId.getStartTime().minusMinutes(30));
+
+        redisService.setCacheObject(
+                DelayTaskEnum.AUTOMATIC_CANCEL.getCode() + "-" + byId.getId(),
+                byId.getStartTime().minusMinutes(30), duration.getSeconds(), TimeUnit.SECONDS);
+
         return R.ok();
     }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
index 685426d..d3e2e84 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -363,7 +363,7 @@
             wrapper4.in(GoodsSeckill::getGoodsSkuId,goodsSkuIdList);
         }
 
-        wrapper4.orderByAsc(GoodsSeckill::getSortNum);
+        wrapper4.orderByDesc(GoodsSeckill::getSortNum);
         Page<GoodsSeckill> page2 = this.page(page, wrapper4);
 
         PageDTO<HomeGoodsSeckillVO> HomeGoodsSeckillVOPageDTO = PageDTO.of(page2, HomeGoodsSeckillVO.class);
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/HttpUtils.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/HttpUtils.java
new file mode 100644
index 0000000..68a7adc
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/HttpUtils.java
@@ -0,0 +1,337 @@
+package com.ruoyi.goods.utli;
+
+import com.ruoyi.common.core.utils.StringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.conn.ClientConnectionManager;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName HttpUtils
+ * @Description TODO
+ * @Author zhanglin
+ * @Date 2020/2/11 10:30
+ * @Version 1.0
+ **/
+public class HttpUtils {
+
+    public static void main(String[] args) {
+    }
+
+
+    /**
+     * get
+     *
+     * @param host
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doGet(String host)throws Exception {
+        return doGet(host, "", "GET", null, null);
+    }
+
+    /**
+     * get
+     *
+     * @param host
+     * @param path
+     * @param method
+     * @param headers
+     * @param querys
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doGet(String host, String path, String method, Map<String, String> headers, Map<String, String> querys)
+            throws Exception {
+        HttpClient httpClient = wrapClient(host);
+
+        HttpGet request = new HttpGet(buildUrl(host, path, querys));
+        if(null != headers) {
+            for (Map.Entry<String, String> e : headers.entrySet()) {
+                request.addHeader(e.getKey(), e.getValue());
+            }
+        }
+
+        return httpClient.execute(request);
+    }
+
+    /**
+     * post form
+     *
+     * @param host
+     * @param path
+     * @param method
+     * @param headers
+     * @param querys
+     * @param bodys
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doPost(String host, String path, String method,
+                                      Map<String, String> headers,
+                                      Map<String, String> querys,
+                                      Map<String, String> bodys)
+            throws Exception {
+        HttpClient httpClient = wrapClient(host);
+
+        HttpPost request = new HttpPost(buildUrl(host, path, querys));
+
+        for (Map.Entry<String, String> e : headers.entrySet()) {
+            request.addHeader(e.getKey(), e.getValue());
+        }
+
+        if (bodys != null) {
+            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
+
+            for (String key : bodys.keySet()) {
+                nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
+            }
+            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
+            formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
+            request.setEntity(formEntity);
+        }
+
+        return httpClient.execute(request);
+    }
+
+    /**
+     * Post String
+     *
+     * @param host
+     * @param path
+     * @param method
+     * @param headers
+     * @param querys
+     * @param body
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doPost(String host, String path, String method,
+                                      Map<String, String> headers,
+                                      Map<String, String> querys,
+                                      String body)
+            throws Exception {
+        HttpClient httpClient = wrapClient(host);
+
+        HttpPost request = new HttpPost(buildUrl(host, path, querys));
+        for (Map.Entry<String, String> e : headers.entrySet()) {
+            request.addHeader(e.getKey(), e.getValue());
+        }
+
+        if (StringUtils.isNotBlank(body)) {
+            request.setEntity(new StringEntity(body, "utf-8"));
+        }
+
+        return httpClient.execute(request);
+    }
+
+    /**
+     * Post stream
+     *
+     * @param host
+     * @param path
+     * @param method
+     * @param headers
+     * @param querys
+     * @param body
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doPost(String host, String path, String method,
+                                      Map<String, String> headers,
+                                      Map<String, String> querys,
+                                      byte[] body)
+            throws Exception {
+        HttpClient httpClient = wrapClient(host);
+
+        HttpPost request = new HttpPost(buildUrl(host, path, querys));
+        for (Map.Entry<String, String> e : headers.entrySet()) {
+            request.addHeader(e.getKey(), e.getValue());
+        }
+
+        if (body != null) {
+            request.setEntity(new ByteArrayEntity(body));
+        }
+
+        return httpClient.execute(request);
+    }
+
+    /**
+     * Put String
+     * @param host
+     * @param path
+     * @param method
+     * @param headers
+     * @param querys
+     * @param body
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doPut(String host, String path, String method,
+                                     Map<String, String> headers,
+                                     Map<String, String> querys,
+                                     String body)
+            throws Exception {
+        HttpClient httpClient = wrapClient(host);
+
+        HttpPut request = new HttpPut(buildUrl(host, path, querys));
+        for (Map.Entry<String, String> e : headers.entrySet()) {
+            request.addHeader(e.getKey(), e.getValue());
+        }
+
+        if (StringUtils.isNotBlank(body)) {
+            request.setEntity(new StringEntity(body, "utf-8"));
+        }
+
+        return httpClient.execute(request);
+    }
+
+    /**
+     * Put stream
+     * @param host
+     * @param path
+     * @param method
+     * @param headers
+     * @param querys
+     * @param body
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doPut(String host, String path, String method,
+                                     Map<String, String> headers,
+                                     Map<String, String> querys,
+                                     byte[] body)
+            throws Exception {
+        HttpClient httpClient = wrapClient(host);
+
+        HttpPut request = new HttpPut(buildUrl(host, path, querys));
+        for (Map.Entry<String, String> e : headers.entrySet()) {
+            request.addHeader(e.getKey(), e.getValue());
+        }
+
+        if (body != null) {
+            request.setEntity(new ByteArrayEntity(body));
+        }
+
+        return httpClient.execute(request);
+    }
+
+    /**
+     * Delete
+     *
+     * @param host
+     * @param path
+     * @param method
+     * @param headers
+     * @param querys
+     * @return
+     * @throws Exception
+     */
+    public static HttpResponse doDelete(String host, String path, String method,
+                                        Map<String, String> headers,
+                                        Map<String, String> querys)
+            throws Exception {
+        HttpClient httpClient = wrapClient(host);
+
+        HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
+        for (Map.Entry<String, String> e : headers.entrySet()) {
+            request.addHeader(e.getKey(), e.getValue());
+        }
+
+        return httpClient.execute(request);
+    }
+
+    private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
+        StringBuilder sbUrl = new StringBuilder();
+        sbUrl.append(host);
+        if (!StringUtils.isBlank(path)) {
+            sbUrl.append(path);
+        }
+        if (null != querys) {
+            StringBuilder sbQuery = new StringBuilder();
+            for (Map.Entry<String, String> query : querys.entrySet()) {
+                if (0 < sbQuery.length()) {
+                    sbQuery.append("&");
+                }
+                if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
+                    sbQuery.append(query.getValue());
+                }
+                if (!StringUtils.isBlank(query.getKey())) {
+                    sbQuery.append(query.getKey());
+                    if (!StringUtils.isBlank(query.getValue())) {
+                        sbQuery.append("=");
+                        sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
+                    }
+                }
+            }
+            if (0 < sbQuery.length()) {
+                sbUrl.append("?").append(sbQuery);
+            }
+        }
+
+        return sbUrl.toString();
+    }
+
+    private static HttpClient wrapClient(String host) {
+        HttpClient httpClient = new DefaultHttpClient();
+        if (host.startsWith("https://")) {
+            sslClient(httpClient);
+        }
+
+        return httpClient;
+    }
+
+    private static void sslClient(HttpClient httpClient) {
+        try {
+            SSLContext ctx = SSLContext.getInstance("TLS");
+            X509TrustManager tm = new X509TrustManager() {
+                @Override
+                public X509Certificate[] getAcceptedIssuers() {
+                    return null;
+                }
+                @Override
+                public void checkClientTrusted(X509Certificate[] xcs, String str) {
+
+                }
+                @Override
+                public void checkServerTrusted(X509Certificate[] xcs, String str) {
+
+                }
+            };
+            ctx.init(null, new TrustManager[] { tm }, null);
+            SSLSocketFactory ssf = new SSLSocketFactory(ctx);
+            ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+            ClientConnectionManager ccm = httpClient.getConnectionManager();
+            SchemeRegistry registry = ccm.getSchemeRegistry();
+            registry.register(new Scheme("https", 443, ssf));
+        } catch (KeyManagementException ex) {
+            throw new RuntimeException(ex);
+        } catch (NoSuchAlgorithmException ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/wxPush.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/wxPush.java
new file mode 100644
index 0000000..c07d77a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utli/wxPush.java
@@ -0,0 +1,113 @@
+package com.ruoyi.goods.utli;
+
+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 me.chanjar.weixin.common.error.WxErrorException;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class wxPush {
+
+
+    //微信
+    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";
+
+    public String push(String openid, String formid, String skuName, BigDecimal seckillPrice, LocalDateTime startTime) {
+
+        //1,配置小程序信息
+
+        WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();
+        wxConfig.setAppid("wx69e3ac6e13a889b7");//小程序appid
+
+        wxConfig.setSecret("1b8bcfcb681524ac553e72054e5271ef");//小程序AppSecret
+
+
+
+        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", seckillPrice.toString());
+
+        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());
+    }
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberAddressController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberAddressController.java
index 956674a..1ad4967 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberAddressController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberAddressController.java
@@ -10,6 +10,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+
 /**
  * <p>
  * 会员地址表 前端控制器
@@ -26,7 +28,7 @@
      *
      */
 
-    @ApiModelProperty
+    @Resource
     private IMemberAddressService iMemberAddressService;
 
 
diff --git a/ruoyi-modules/ruoyi-order/pom.xml b/ruoyi-modules/ruoyi-order/pom.xml
index ced6648..35a97d5 100644
--- a/ruoyi-modules/ruoyi-order/pom.xml
+++ b/ruoyi-modules/ruoyi-order/pom.xml
@@ -133,6 +133,17 @@
     </dependency>
 
     <dependency>
+      <groupId>com.squareup.okhttp3</groupId>
+      <artifactId>okhttp</artifactId>
+      <version>3.6.0</version>
+    </dependency>
+    <dependency>
+      <groupId>com.squareup.okio</groupId>
+      <artifactId>okio</artifactId>
+      <version>1.11.0</version>
+    </dependency>
+
+    <dependency>
       <groupId>com.github.wechatpay-apiv3</groupId>
       <artifactId>wechatpay-java</artifactId>
       <version>0.2.12</version>
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartOrderController.java
index 2eade8a..210bb0c 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartOrderController.java
@@ -1,20 +1,25 @@
 package com.ruoyi.order.controller.forepart;
 
 
+import com.ruoyi.common.core.constant.SecurityConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.page.PageDTO;
 import com.ruoyi.order.service.IOrderService;
+import com.ruoyi.system.api.domain.Order;
 import com.ruoyi.system.api.domain.dto.MemberOrderDTO;
 import com.ruoyi.system.api.domain.dto.MemberOrderListDTO;
 import com.ruoyi.system.api.domain.vo.MemberOrderListVO;
 import com.ruoyi.system.api.domain.vo.MemberOrderNumVO;
 import com.ruoyi.system.api.domain.vo.MemberTiOrderVO;
 import com.ruoyi.system.api.domain.vo.OrderVO;
+import com.ruoyi.system.api.feignClient.GoodsSkuClient;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
 
 
 /**
@@ -33,6 +38,9 @@
 public class ForepartOrderController {
 
     private final IOrderService orderService;
+
+    @Resource
+    private GoodsSkuClient goodsSkuClient;
 
     @PostMapping("/saveMemberOrder")
     @ApiOperation(value = "用户端-立即下单")
@@ -69,7 +77,7 @@
     @PostMapping("/delOrderOne")
     @ApiOperation(value = "用户端-删除订单")
     public R delOrderOne(@RequestBody MemberOrderListDTO memberOrderListDTO) {
-        orderService.removeById(memberOrderListDTO.getId());
+        orderService.delOrderOne(memberOrderListDTO);
         return R.ok();
     }
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartPaylogController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartPaylogController.java
index 82aee79..6411ef5 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartPaylogController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartPaylogController.java
@@ -84,7 +84,7 @@
 @RequestMapping("/wxpay/notify")
 public void wxnotify(HttpServletRequest request, HttpServletResponse response) {
     try {
-        paylogServiceImpl.notifyUrl(request,response);
+        paylogServiceImpl.wxnotify(request,response);
     } catch (Exception e) {
 
     }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
index 60939f4..5c38dec 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -67,6 +67,8 @@
     OrderVO MemberOrderOne(@RequestBody MemberOrderListDTO memberOrderListDTO);
     void CancelOrderOne(@RequestBody MemberOrderListDTO memberOrderListDTO);
 
+    void delOrderOne(@RequestBody MemberOrderListDTO memberOrderListDTO);
+
     void AffirmOrderOne(@RequestBody MemberOrderListDTO memberOrderListDTO);
 
     MemberOrderNumVO MemberOrderNum(@RequestBody MemberOrderListDTO memberOrderListDTO);
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index f52612c..e5123ad 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -130,17 +130,21 @@
         if (OrderDTO.getOrderFrom().getCode()==1){
             order.setOrderFrom(OrderFromEnum.COMMODITY_ORDER);
             order.setOrderNo(OrderUtil.getOrderNoForPrefix("SP"));
+            order.setIsOrder(1);
         }
         if (OrderDTO.getOrderFrom().getCode()==2){
             order.setOrderFrom(OrderFromEnum.SNAP_ORDERS);
             order.setOrderNo(OrderUtil.getOrderNoForPrefix("MS"));
+            order.setIsOrder(1);
         }
         if (OrderDTO.getOrderFrom().getCode()==3){
             order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
             order.setOrderNo(OrderUtil.getOrderNoForPrefix("TG"));
+            order.setIsOrder(2);
         }if (OrderDTO.getOrderFrom().getCode()==4){
             order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
             order.setOrderNo(OrderUtil.getOrderNoForPrefix("PM"));
+            order.setIsOrder(1);
         }
         order.setOrderTime(OrderDTO.getOrderTime());
         order.setOrderFrom(OrderDTO.getOrderFrom());
@@ -258,6 +262,7 @@
         if (memberOrderDTO.getOrderFrom()==3){
             order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
             order.setOrderNo(OrderUtil.getOrderNoForPrefix("TG"));
+            order.setIsOrder(2);
         }
         if (memberOrderDTO.getPaymentMethod()==1){
             order.setPaymentMethod(PaymentMethodEnum.WECHAT);
@@ -346,6 +351,10 @@
         if (memberOrderDTO.getOrderFrom()==3){
             order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
             GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData();
+            Integer m=data.getCurrentNumber()+1;
+            if (m>data.getGroupSize()){
+                throw new ServiceException("对不起,大成团人数");
+            }
             GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
             memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
             memberOrderVO.setPrice(data.getGroupPurchasePrice());
@@ -354,6 +363,8 @@
             memberOrderVO.setSkuName(goodsSku.getSkuName());
             memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice());
             pice=data.getGroupPurchasePrice();
+
+            goodsSkuClient.GroupPurchaseNum(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER);
 
             order.setSkuName(goodsSku.getSkuName());
             order.setPrice(data.getGroupPurchasePrice());
@@ -474,23 +485,25 @@
 
                 GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                 GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
-                if (data.getLimitNumber()<num1){
-                    throw new ServiceException("对不起,大于商品购买数");
-                }else{
-                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
-                    goodsStockUpdDTO.setGoodsSkuId(data.getId());
-                    goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity());
-                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
 
-                    if (data.getSeckillStock()+order.getGoodsQuantity()<memberOrderDTO.getGoodsQuantity()){
-                        throw new ServiceException("对不起,购买数大于库存");
-                    }
+                if (order.getGoodsQuantity()!=order.getGoodsQuantity()){
+                    if (data.getLimitNumber()<num1){
+                        throw new ServiceException("对不起,大于商品购买数");
+                    }else{
+                        GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+                        goodsStockUpdDTO.setGoodsSkuId(data.getId());
+                        goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity());
+                        goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
 
-                    Integer m=data.getSeckillStock()+order.getGoodsQuantity();
-                    GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
-                    goodsStockUpdDTO1.setGoodsSkuId(data.getId());
-                    goodsStockUpdDTO1.setAuctionStock(m-memberOrderDTO.getGoodsQuantity());
-                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO1,SecurityConstants.INNER);
+                        if (data.getSeckillStock()+order.getGoodsQuantity()<memberOrderDTO.getGoodsQuantity()){
+                            throw new ServiceException("对不起,购买数大于库存");
+                        }
+
+                        Integer m=data.getSeckillStock()+order.getGoodsQuantity();
+                        GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
+                        goodsStockUpdDTO1.setGoodsSkuId(data.getId());
+                        goodsStockUpdDTO1.setAuctionStock(m-memberOrderDTO.getGoodsQuantity());
+                        goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO1,SecurityConstants.INNER);
 
                         order.setTotalAmount(data.getSeckillPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                         order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
@@ -500,12 +513,15 @@
                         order.setSjPrice(goodsSku.getPrice());
 
 
-            }
-                memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
-                memberOrderVO.setPrice(goodsSku.getPrice());
-                memberOrderVO.setCoverPic(goodsSku.getCoverPic());
-                memberOrderVO.setSkuName(goodsSku.getSkuName());
-                memberOrderVO.setYouhiPrice(data.getSeckillPrice());
+                    }
+                    memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
+                    memberOrderVO.setPrice(goodsSku.getPrice());
+                    memberOrderVO.setCoverPic(goodsSku.getCoverPic());
+                    memberOrderVO.setSkuName(goodsSku.getSkuName());
+                    memberOrderVO.setYouhiPrice(data.getSeckillPrice());
+
+                }
+
         }  if (order.getOrderFrom().getCode()==3){
                 order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
                 GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
@@ -515,28 +531,27 @@
                 memberOrderDTO1.setGoodsSkuId(order.getGoodsSkuId());
                 Integer num=baseMapper.getGoodsGroupPurchase(memberOrderDTO1);
                 Integer num1=num+order.getGoodsQuantity();
-                if (data.getLimitNumber()<=num1){
-                    throw new ServiceException("对不起,大于商品购买数");
-                }else{
-                    if (data.getLimitNumber()<memberOrderDTO.getGoodsQuantity()){
-                        throw new ServiceException("对不起,购买数大于库存");
+                if (order.getGoodsQuantity()!=order.getGoodsQuantity()){
+                    if (data.getLimitNumber()<=num1){
+                        throw new ServiceException("对不起,大于商品购买数");
                     }else{
-                        memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
-                        memberOrderVO.setPrice(data.getGroupPurchasePrice());
-                        memberOrderVO.setSjPrice(goodsSku.getPrice());
-                        memberOrderVO.setCoverPic(goodsSku.getCoverPic());
-                        memberOrderVO.setSkuName(goodsSku.getSkuName());
-                        memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice());
-                        order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
-                        order.setSkuName(goodsSku.getSkuName());
-                        order.setPrice(data.getGroupPurchasePrice());
-                        order.setCoverPic(goodsSku.getCoverPic());
-                        order.setSjPrice(goodsSku.getPrice());
+                        if (data.getLimitNumber()<memberOrderDTO.getGoodsQuantity()){
+                            throw new ServiceException("对不起,购买数大于库存");
+                        }else{
+                            memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
+                            memberOrderVO.setPrice(data.getGroupPurchasePrice());
+                            memberOrderVO.setSjPrice(goodsSku.getPrice());
+                            memberOrderVO.setCoverPic(goodsSku.getCoverPic());
+                            memberOrderVO.setSkuName(goodsSku.getSkuName());
+                            memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice());
+                            order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
+                            order.setSkuName(goodsSku.getSkuName());
+                            order.setPrice(data.getGroupPurchasePrice());
+                            order.setCoverPic(goodsSku.getCoverPic());
+                            order.setSjPrice(goodsSku.getPrice());
+                        }
                     }
                 }
-
-
-
             }
         }
         if (memberOrderDTO.getGoodsQuantity()!=null){
@@ -661,6 +676,7 @@
         if(memberOrderListDTO.getOrderStatus()!=null){
             wrapper.eq(Order::getOrderStatus,memberOrderListDTO.getOrderStatus().getCode()-1);
         }
+        wrapper.eq(Order::getIsOrder,1);
         wrapper.eq(Order::getDelFlag,0);
         wrapper.orderByDesc(Order::getCancelTime);
         Page<Order> page1 = this.page(page, wrapper);
@@ -816,7 +832,7 @@
             memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER);
 
 
-            if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//支付宝
+            if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//支付宝
                 //获取支付信息
                 LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
                 paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
@@ -828,7 +844,7 @@
                     }
                 }
 
-            } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//微信
+            } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//微信
                 //获取支付信息
                 LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
                 paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
@@ -838,7 +854,7 @@
                     Integer refundFee = Integer.parseInt(refundMoney.substring(0, refundMoney.length() - 3));
                     String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d);
                     Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3));
-                    refundFee = 1;
+                    refundFee = Integer.parseInt(money.substring(0, money.length() - 3));
 
                     String regEx = "[^0-9]";
                     Pattern p = Pattern.compile(regEx);
@@ -853,6 +869,62 @@
             }
         }
     }
+
+    @Override
+    public void delOrderOne(MemberOrderListDTO memberOrderListDTO) {
+        baseMapper.deleteById(memberOrderListDTO.getId());
+        Order order = baseMapper.selectById(memberOrderListDTO.getId());
+        Order byId = this.getById(memberOrderListDTO.getId());
+        goodsSkuClient.GroupPurchaseNum1(byId.getGoodsSkuId(), SecurityConstants.INNER);
+        this.removeById(memberOrderListDTO.getId());
+        if (order.getOrderStatus().getCode() == 2) {
+
+            updMembeOneDTO MembeOneDTO = new updMembeOneDTO();
+            MembeOneDTO.setType(2);
+            MembeOneDTO.setMemberId(order.getMemberId());
+            MembeOneDTO.setMoney(order.getTotalAmount());
+            MembeOneDTO.setTotalPoints(order.getPoints());
+            memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER);
+
+
+            if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//支付宝
+                //获取支付信息
+                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
+                paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
+                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
+                if (paylog != null) {
+                    boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney());
+                    if (!bo) {
+                        System.out.println("支付宝退款失败");
+                    }
+                }
+
+            } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//微信
+                //获取支付信息
+                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
+                paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
+                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
+                if (paylog != null) {
+                    String refundMoney = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d);
+                    Integer refundFee = Integer.parseInt(refundMoney.substring(0, refundMoney.length() - 3));
+                    String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d);
+                    Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3));
+                    refundFee = Integer.parseInt(money.substring(0, money.length() - 3));
+
+                    String regEx = "[^0-9]";
+                    Pattern p = Pattern.compile(regEx);
+                    Matcher m = p.matcher(order.getOrderNo());
+                    String ma = m.replaceAll("").trim();
+                    boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2");
+                    if (!bo) {
+                        System.out.println("微信退款失败");
+                    }
+
+                }
+            }
+        }
+    }
+
     @Override
     public void AffirmOrderOne(MemberOrderListDTO memberOrderListDTO) {
         Order order = baseMapper.selectById(memberOrderListDTO.getId());
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
index 39af9fa..47dfb0e 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
@@ -16,6 +16,7 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.enums.BondStatusEnum;
 import com.ruoyi.common.core.enums.OrderStatusEnum;
+import com.ruoyi.common.core.enums.PaymentMethodEnum;
 import com.ruoyi.common.core.enums.PointStatusEnum;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.order.domain.Paylog;
@@ -44,8 +45,7 @@
 import com.ruoyi.system.api.feignClient.GoodsSkuClient;
 import com.ruoyi.system.api.feignClient.MemberClient;
 
-import java.io.IOException;
-import java.io.PrintWriter;
+import java.io.*;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -120,41 +120,47 @@
                         OrderMapper.updateById(page1);
                         Map<String, Object> returnMap = new HashMap<>();
                         returnMap.put("Type",1);
+
+
+                        page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED);
+                        page1.setPayTime(LocalDateTime.now());
+                        OrderMapper.updateById(page1);
+
+                        if(page1.getOrderNo().contains("SP")){
+                            GoodsSku goodsSku =new GoodsSku();
+                            goodsSku.setId(page1.getGoodsSkuId());
+                            goodsSku.setSoldQuantity(page1.getGoodsQuantity());
+                            GoodsSkuClient.updGoods(goodsSku, SecurityConstants.INNER);
+                        }
+
+                        if(page1.getOrderNo().contains("MS")){
+                            GoodsSku goodsSku =new GoodsSku();
+                            goodsSku.setId(page1.getGoodsSkuId());
+                            goodsSku.setSoldQuantity(page1.getGoodsQuantity());
+                            GoodsSkuClient.updGoodsSeckill1(goodsSku, SecurityConstants.INNER);
+                        }
+
+
+                        MemberPointsDTO memberPointsDTO=new MemberPointsDTO();
+                        memberPointsDTO.setMemberId(page1.getMemberId());
+                        memberPointsDTO.setPointsType(1);
+                        memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
+                        memberPointsDTO.setPoints(page1.getPoints());
+                        memberClient.addMemberPoints(memberPointsDTO);
+
+                        updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
+                        MembeOneDTO.setType(1);
+                        MembeOneDTO.setMemberId(page1.getMemberId());
+                        MembeOneDTO.setMoney(page1.getTotalAmount());
+                        MembeOneDTO.setTotalPoints(page1.getPoints());
+                        memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER);
+
+
                         return R.ok(returnMap);
                     }
 
-                    page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED);
-                    page1.setPayTime(LocalDateTime.now());
-                    OrderMapper.updateById(page1);
-
-                    if(page1.getOrderNo().contains("SP")){
-                        GoodsSku goodsSku =new GoodsSku();
-                        goodsSku.setId(page1.getGoodsSkuId());
-                        goodsSku.setSoldQuantity(page1.getGoodsQuantity());
-                        GoodsSkuClient.updGoods(goodsSku, SecurityConstants.INNER);
-                    }
-
-                    if(page1.getOrderNo().contains("MS")){
-                        GoodsSku goodsSku =new GoodsSku();
-                        goodsSku.setId(page1.getGoodsSkuId());
-                        goodsSku.setSoldQuantity(page1.getGoodsQuantity());
-                        GoodsSkuClient.updGoodsSeckill1(goodsSku, SecurityConstants.INNER);
-                    }
 
 
-                    MemberPointsDTO memberPointsDTO=new MemberPointsDTO();
-                    memberPointsDTO.setMemberId(page1.getMemberId());
-                    memberPointsDTO.setPointsType(1);
-                    memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
-                    memberPointsDTO.setPoints(page1.getPoints());
-                    memberClient.addMemberPoints(memberPointsDTO);
-
-                    updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
-                    MembeOneDTO.setType(1);
-                    MembeOneDTO.setMemberId(page1.getMemberId());
-                    MembeOneDTO.setMoney(page1.getTotalAmount());
-                    MembeOneDTO.setTotalPoints(page1.getPoints());
-                    memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER);
                 }
 
                 if (orderNO.contains("BO")) {
@@ -248,7 +254,7 @@
                             wrapper1.eq(OrderAuctionBond::getDelFlag,0);
                             OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1);
                             one1.setBoundStatus(BondStatusEnum.PAID);
-
+                            orderAuctionBondMapper.updateById(one1);
                         }else{
                             LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
                             wrapper1.eq(Order::getOrderNo,paylog1.getOutTradeNo());
@@ -336,8 +342,6 @@
             System.out.println("WxpayController.notify__notityXml:\n" + notityXml);
 
             // 验证签名
-            if (Signature.checkIsSignValidFromResponseString(1, notityXml.toString())
-                    || Signature.checkIsSignValidFromResponseString(2, notityXml.toString())) {
                 Map<String, Object> map = XMLParser.getMapFromXML(notityXml.toString());
                 // log.debug("WxpayController.notify__map:\n" + map);
                 // 接口返回状态
@@ -379,6 +383,8 @@
                             wrapper1.eq(OrderAuctionBond::getDelFlag,0);
                             OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1);
                             one1.setBoundStatus(BondStatusEnum.PAID);
+                            one1.setPaymentMethod(PaymentMethodEnum.WECHAT);
+                            orderAuctionBondMapper.updateById(one1);
 
                         }else{
                             LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
@@ -386,6 +392,7 @@
                             wrapper1.eq(Order::getDelFlag,0);
                             Order page1 = OrderMapper.selectOne(wrapper1);
                             page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED);
+                            page1.setPaymentMethod(PaymentMethodEnum.WECHAT);
                             page1.setPayTime(LocalDateTime.now());
                             OrderMapper.updateById(page1);
 
@@ -426,10 +433,7 @@
                     log.debug("WxpayController.notify__回调处理:验证状态错误!" + result_code);
                     System.out.println("验证状态错误!" + result_code);
                 }
-            } else {
-                log.debug("WxpayController.notify__回调处理:通知签名验证失败!");
-                System.out.println("通知签名验证失败!");
-            }
+
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -655,27 +659,33 @@
      */
     public static boolean refundForWxpay(Integer apptype, String transactionID, String outTradeNo, String outRefundNo,
                                          Integer totalFee, Integer refundFee, String pay_type) {
-        Map<String, Object> map = new HashMap<String, Object>();
-        try {
-            // 构建接口请求参数
-            com.tencent.protocol.RefundReqData refundReqData = new com.tencent.protocol.RefundReqData(transactionID, outTradeNo, outRefundNo, totalFee, refundFee,
-                    pay_type);
 
-            // 请求接口返回结果
-            String result = requestRefundService(apptype, refundReqData);
-            System.out.println("微信退款返回内容:" + result);
-            // 获取预支付接口返回参数
-            map = XMLParser.getMapFromXML(result);
-            System.out.println("微信退款返回参数:" + map);
-            // 退款成功处理
-            if ("SUCCESS".equals(map.get("result_code"))) {
-                return true;
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        }
-        return false;
+        //生成32位随机数
+        UUID uuid = UUID.randomUUID();
+        String nonceStr = uuid.toString().replaceAll("-", "");
+        //商品描述 String body = "XX商城-支付订单";
+        // 创建hashmap(用户获得签名)
+        SortedMap<String, String> paraMap = new TreeMap<>();
+        //设置请求参数(小程序ID)
+        paraMap.put("appid", Configure.getAppid());
+        //设置请求参数(商户号)
+        paraMap.put("mch_id", Configure.getMchid());
+        //设置请求参数(随机字符串)
+        paraMap.put("nonce_str", nonceStr);
+        paraMap.put("transaction_id",transactionID);
+        paraMap.put("out_trade_no", outTradeNo);
+        paraMap.put("out_refund_no", outRefundNo);
+        //设置请求参数(支付的总金额)
+        paraMap.put("total_fee", totalFee.toString());
+        //设置请求参数(退款的金额)
+        paraMap.put("refund_fee", refundFee.toString());
+        //MD5运算生成签名
+        paraMap.put("sign", PaymentKit.createSign(paraMap, "HSCEWrfSYiwxR6sesZ6De91Xh3m447sh"));
+        System.out.println("证书: " + Configure.getCertLocalPath_2());
+
+        String xmlResult = WxPayApi.orderRefund(false, paraMap,Configure.getCertLocalPath_2(), Configure.getMchid());
+
+        return true;
     }
 
     /**
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12 b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12
deleted file mode 100644
index 894c7b2..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12
+++ /dev/null
Binary files differ
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem
deleted file mode 100644
index 016a9a7..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem
+++ /dev/null
@@ -1,25 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIENDCCAxygAwIBAgIUGVH+OUAuVOxChlw+8HWJAdKov00wDQYJKoZIhvcNAQEL
-BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
-FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
-Q0EwHhcNMjQwNjIwMDIxODAwWhcNMjkwNjE5MDIxODAwWjCBjTETMBEGA1UEAwwK
-MTIyMDU0MDAwMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL
-DDDlm5vlt53kuK3lm73nmb3phZLkuqflk4HkuqTmmJPkuK3lv4PmnInpmZDlhazl
-j7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBALTOOuM7h0rT5KwRRWc2nerxGCWZNz3UT7gRZEW/
-IHCVULYU1MtqRSvrVen0PVhDT8Bkt5tQdrv7RLRm2w8mhM/DIPi+EaTaGQmt911G
-Va02fcRRHUWT4skNN1NiNIZIz3XGTCSGIFrYREAZ0PLewE7dwmfsPC64wXRWRnv0
-G+1bdRNYeI5n4BdVbCaDWCJ8YiYNR8rusa1CazFGwp1y5XEBidsO+C0QvsNqv0RS
-OgnO/izbqubnqyaTdsYT5o+W8cePD14Vml8nLJvPruoV8Mw3MJei+Xj5L4Qm3mNU
-tqORU7Ghk7l0nrGhgH+xxqeZuQ3rmi+1DYW5rWeCmBvL+b8CAwEAAaOBuTCBtjAJ
-BgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGE
-aHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0
-MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFC
-NjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEB
-CwUAA4IBAQCcL4hdeAsHMbE5A9AXgNL+LjFJwtCUEdR/fnalqOh8TtHkySfrntTs
-SvSka+OBWlaSe/6TOBUJy4gY1V2ESHb0JMhbFim5OXPBqXUDshJwDFF3hlpCLrmQ
-Y8ABrEik3nmx+y4DPmDj+38FTHJUIzzlChR5QWKilBgU2yqJBYrwK8pwoELUMiAv
-58pUIBxpiaFqW146vKUDhV+xKI0mHMeGlA5UNkCG/JQLHAdrUXyi8RT3Yl/kvHqW
-EK/pUiThB/WFCLMGKvF4ahoHZFWuCm/BhCHDpdSh661Ivf9RqsvnPffBUjJ+ZIIk
-metUnaCMi8qNzcV7ohlfeXfjikzEVf+O
------END CERTIFICATE-----
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem
deleted file mode 100644
index 34f6108..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC0zjrjO4dK0+Ss
-EUVnNp3q8RglmTc91E+4EWRFvyBwlVC2FNTLakUr61Xp9D1YQ0/AZLebUHa7+0S0
-ZtsPJoTPwyD4vhGk2hkJrfddRlWtNn3EUR1Fk+LJDTdTYjSGSM91xkwkhiBa2ERA
-GdDy3sBO3cJn7DwuuMF0VkZ79BvtW3UTWHiOZ+AXVWwmg1gifGImDUfK7rGtQmsx
-RsKdcuVxAYnbDvgtEL7Dar9EUjoJzv4s26rm56smk3bGE+aPlvHHjw9eFZpfJyyb
-z67qFfDMNzCXovl4+S+EJt5jVLajkVOxoZO5dJ6xoYB/scanmbkN65ovtQ2Fua1n
-gpgby/m/AgMBAAECggEAL3RlblikdNZSkXri/WkPX6exz8R8BEViOwyNheTZLdNy
-4KdtBoq45wMYhJQvOahJGVUV/7TJxSL48GSCoGJav3EWiVLRrLP1mF3Jq/iW6iSA
-M/OaPDXJcz19xOvkn04i7WWDfJ6bhVx35V8hQW2HieuYZ9BQJ28kj1VJoKT8Y3qJ
-N93e2q+fcAnB8tqkgcHlaeEItoUwS3QEhLng1EOyE2s/XBVKM+AV7XSJhbDSJ9s3
-trUghmRSjJ/GhvQEOjq8LOHeDR0azOqgmIkg7viKUyTl7lBuIN9ZPgSGQbv4XNcP
-oGbF3dokrjPBsQar5+O9QDvGk3pJXo6PIXRVIq7BsQKBgQDsrOl2Snnt5FtTfNNd
-n+ajsV8+S0HoimV7g05gxGvSc6po3vuBPZKWRsjtXNaSRKdXFvF1v8uAnNlQk0b+
-wjyUn0r9x6KF8tj+s4qjyzwkg0Vy1A9/goDKD93HG1C9aieulrBepEmzkfiiD5W2
-hJzphvBf+lTUNcJXOllxiDQzyQKBgQDDkYDXuMwlMV3fBv5+wNGsuADSVal/1Bz6
-Q91NUnqTMFbOAgEvJy4e/5gle6MCBkqmD08rYcQAQbB1Tgr23CWoXbWn2GSlChoY
-ugDEz/q+heLjFkZU/T/xpTGtFpnfSUlP+7oXlyeEaXUMYnEW/UPI70AQPC3sDsuS
-H9VtBFE1RwKBgQCjsqEzqSWWbhjgsPi8zAlJdTgsLP9kKL0yZcqDUbhF8qyOJpSM
-epr2B/WXf1wGBSg9K2hNCiBmT5ZbjdJQCOa/4UGMMFVwEl0WJfahfcOWeZlCZ/xk
-NE6B8+Fwgqsgp9jUf/NzMmyroC35YZAqkqS5PRTrPYkI0jod/QS6avu4SQKBgGpe
-89NhwjfgmAw8w6OxwNnO4zOEQEM03eYJj48E84KnYi9+y6IYD2/w2ZJZoxnwzh1w
-akFQVclF8XJ8Vl5a82iWP73hZyyVSAh28wAZl2qVbAjUDsEfVe5bSZ+5kUvvkp6c
-bmVyY54TtgRcbuJwMrRR3Wh3MwsYKQV7pxw6ouj1AoGANuZe1rxkCGZbUTrhtuma
-ZxI0NTZjEBVL69m9nlGggEq8tn2j18gaXWq0aEkqIo4/AEHWDyageBAFixTfq+qe
-vDHlzeSaTD3I2NCNk0+W6QWU8duel6byeoLyb5fhVeRxddg6ZuzjC5pSC9XVIxDR
-wwFKsfxWpJ2tHMOiif2plww=
------END PRIVATE KEY-----
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/rootca.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/rootca.pem
deleted file mode 100644
index 7a36225..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/rootca.pem
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
-UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
-dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
-MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
-dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
-BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
-cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
-AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
-MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
-aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
-ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
-IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
-MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
-A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
-7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
-1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
------END CERTIFICATE-----
\ No newline at end of file
diff --git "a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt"
deleted file mode 100644
index e8a73dd..0000000
--- "a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt"
+++ /dev/null
@@ -1,20 +0,0 @@
-欢迎使用微信支付!
-微信支付API共四份(证书pkcs12格式、证书pem格式、证书密钥pem格式、CA证书),为接口中强制要求时需携带的证书文件。
-证书属于敏感信息,请妥善保管不要泄露和被他人复制。
-不同开发语言下的证书格式不同,以下为说明指引:
-	证书pkcs12格式(apiclient_cert.p12)
-		包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
-		部分安全性要求较高的API需要使用该证书来确认您的调用身份
-		windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000)
-	证书pem格式(apiclient_cert.pem)
-		从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
-		部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
-		您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
-	证书密钥pem格式(apiclient_key.pem)
-		从apiclient_cert.p12中导出密钥部分的文件,为pem格式
-		部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
-		您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
-	CA证书(rootca.pem)
-		微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性
-		该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性
-		某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12 b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12
deleted file mode 100644
index 894c7b2..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12
+++ /dev/null
Binary files differ
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem
deleted file mode 100644
index 016a9a7..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem
+++ /dev/null
@@ -1,25 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIENDCCAxygAwIBAgIUGVH+OUAuVOxChlw+8HWJAdKov00wDQYJKoZIhvcNAQEL
-BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
-FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
-Q0EwHhcNMjQwNjIwMDIxODAwWhcNMjkwNjE5MDIxODAwWjCBjTETMBEGA1UEAwwK
-MTIyMDU0MDAwMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL
-DDDlm5vlt53kuK3lm73nmb3phZLkuqflk4HkuqTmmJPkuK3lv4PmnInpmZDlhazl
-j7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBALTOOuM7h0rT5KwRRWc2nerxGCWZNz3UT7gRZEW/
-IHCVULYU1MtqRSvrVen0PVhDT8Bkt5tQdrv7RLRm2w8mhM/DIPi+EaTaGQmt911G
-Va02fcRRHUWT4skNN1NiNIZIz3XGTCSGIFrYREAZ0PLewE7dwmfsPC64wXRWRnv0
-G+1bdRNYeI5n4BdVbCaDWCJ8YiYNR8rusa1CazFGwp1y5XEBidsO+C0QvsNqv0RS
-OgnO/izbqubnqyaTdsYT5o+W8cePD14Vml8nLJvPruoV8Mw3MJei+Xj5L4Qm3mNU
-tqORU7Ghk7l0nrGhgH+xxqeZuQ3rmi+1DYW5rWeCmBvL+b8CAwEAAaOBuTCBtjAJ
-BgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGE
-aHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0
-MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFC
-NjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEB
-CwUAA4IBAQCcL4hdeAsHMbE5A9AXgNL+LjFJwtCUEdR/fnalqOh8TtHkySfrntTs
-SvSka+OBWlaSe/6TOBUJy4gY1V2ESHb0JMhbFim5OXPBqXUDshJwDFF3hlpCLrmQ
-Y8ABrEik3nmx+y4DPmDj+38FTHJUIzzlChR5QWKilBgU2yqJBYrwK8pwoELUMiAv
-58pUIBxpiaFqW146vKUDhV+xKI0mHMeGlA5UNkCG/JQLHAdrUXyi8RT3Yl/kvHqW
-EK/pUiThB/WFCLMGKvF4ahoHZFWuCm/BhCHDpdSh661Ivf9RqsvnPffBUjJ+ZIIk
-metUnaCMi8qNzcV7ohlfeXfjikzEVf+O
------END CERTIFICATE-----
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem
deleted file mode 100644
index 34f6108..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC0zjrjO4dK0+Ss
-EUVnNp3q8RglmTc91E+4EWRFvyBwlVC2FNTLakUr61Xp9D1YQ0/AZLebUHa7+0S0
-ZtsPJoTPwyD4vhGk2hkJrfddRlWtNn3EUR1Fk+LJDTdTYjSGSM91xkwkhiBa2ERA
-GdDy3sBO3cJn7DwuuMF0VkZ79BvtW3UTWHiOZ+AXVWwmg1gifGImDUfK7rGtQmsx
-RsKdcuVxAYnbDvgtEL7Dar9EUjoJzv4s26rm56smk3bGE+aPlvHHjw9eFZpfJyyb
-z67qFfDMNzCXovl4+S+EJt5jVLajkVOxoZO5dJ6xoYB/scanmbkN65ovtQ2Fua1n
-gpgby/m/AgMBAAECggEAL3RlblikdNZSkXri/WkPX6exz8R8BEViOwyNheTZLdNy
-4KdtBoq45wMYhJQvOahJGVUV/7TJxSL48GSCoGJav3EWiVLRrLP1mF3Jq/iW6iSA
-M/OaPDXJcz19xOvkn04i7WWDfJ6bhVx35V8hQW2HieuYZ9BQJ28kj1VJoKT8Y3qJ
-N93e2q+fcAnB8tqkgcHlaeEItoUwS3QEhLng1EOyE2s/XBVKM+AV7XSJhbDSJ9s3
-trUghmRSjJ/GhvQEOjq8LOHeDR0azOqgmIkg7viKUyTl7lBuIN9ZPgSGQbv4XNcP
-oGbF3dokrjPBsQar5+O9QDvGk3pJXo6PIXRVIq7BsQKBgQDsrOl2Snnt5FtTfNNd
-n+ajsV8+S0HoimV7g05gxGvSc6po3vuBPZKWRsjtXNaSRKdXFvF1v8uAnNlQk0b+
-wjyUn0r9x6KF8tj+s4qjyzwkg0Vy1A9/goDKD93HG1C9aieulrBepEmzkfiiD5W2
-hJzphvBf+lTUNcJXOllxiDQzyQKBgQDDkYDXuMwlMV3fBv5+wNGsuADSVal/1Bz6
-Q91NUnqTMFbOAgEvJy4e/5gle6MCBkqmD08rYcQAQbB1Tgr23CWoXbWn2GSlChoY
-ugDEz/q+heLjFkZU/T/xpTGtFpnfSUlP+7oXlyeEaXUMYnEW/UPI70AQPC3sDsuS
-H9VtBFE1RwKBgQCjsqEzqSWWbhjgsPi8zAlJdTgsLP9kKL0yZcqDUbhF8qyOJpSM
-epr2B/WXf1wGBSg9K2hNCiBmT5ZbjdJQCOa/4UGMMFVwEl0WJfahfcOWeZlCZ/xk
-NE6B8+Fwgqsgp9jUf/NzMmyroC35YZAqkqS5PRTrPYkI0jod/QS6avu4SQKBgGpe
-89NhwjfgmAw8w6OxwNnO4zOEQEM03eYJj48E84KnYi9+y6IYD2/w2ZJZoxnwzh1w
-akFQVclF8XJ8Vl5a82iWP73hZyyVSAh28wAZl2qVbAjUDsEfVe5bSZ+5kUvvkp6c
-bmVyY54TtgRcbuJwMrRR3Wh3MwsYKQV7pxw6ouj1AoGANuZe1rxkCGZbUTrhtuma
-ZxI0NTZjEBVL69m9nlGggEq8tn2j18gaXWq0aEkqIo4/AEHWDyageBAFixTfq+qe
-vDHlzeSaTD3I2NCNk0+W6QWU8duel6byeoLyb5fhVeRxddg6ZuzjC5pSC9XVIxDR
-wwFKsfxWpJ2tHMOiif2plww=
------END PRIVATE KEY-----
diff --git "a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt"
deleted file mode 100644
index e8a73dd..0000000
--- "a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt"
+++ /dev/null
@@ -1,20 +0,0 @@
-欢迎使用微信支付!
-微信支付API共四份(证书pkcs12格式、证书pem格式、证书密钥pem格式、CA证书),为接口中强制要求时需携带的证书文件。
-证书属于敏感信息,请妥善保管不要泄露和被他人复制。
-不同开发语言下的证书格式不同,以下为说明指引:
-	证书pkcs12格式(apiclient_cert.p12)
-		包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
-		部分安全性要求较高的API需要使用该证书来确认您的调用身份
-		windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000)
-	证书pem格式(apiclient_cert.pem)
-		从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
-		部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
-		您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
-	证书密钥pem格式(apiclient_key.pem)
-		从apiclient_cert.p12中导出密钥部分的文件,为pem格式
-		部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
-		您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
-	CA证书(rootca.pem)
-		微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性
-		该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性
-		某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
index dfd0648..d33fffd 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
@@ -79,6 +79,9 @@
                         //自动取消订单
                         autoCancelOrder(id);
                     }
+                    else if(DelayTaskEnum.AUTOMATIC_CANCEL.getCode().equals(operation)){
+                        tusonUser(id);
+                    }
                     //删除失效的key
                     redisTemplate.delete(expiredKey);
                 }
@@ -144,6 +147,11 @@
     }
 
     @Async
+    public void tusonUser(Long tusonUserIdId) {
+        goodsSkuClient.tusonUser(tusonUserIdId, SecurityConstants.INNER);
+    }
+
+    @Async
     public void autoCancelOrder(Long orderId) {
         log.info("autoCancelOrder scheduler task is running :{}", orderId);
     }

--
Gitblit v1.7.1