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