From 85f12011f76f3cf4eb665c20138a0e939a1fb6db Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 08 七月 2024 16:29:32 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java | 165 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 115 insertions(+), 50 deletions(-) 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 a3269db..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; @@ -33,6 +34,7 @@ import com.ruoyi.order.util.tencent.common.XMLParser; import com.ruoyi.order.util.tencent.protocol.AppPayReqData; import com.ruoyi.order.util.tencent.protocol.UnifiedorderReqData; +import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.dto.BondDTO; @@ -40,10 +42,10 @@ import com.ruoyi.system.api.domain.dto.RefundDTO; import com.ruoyi.system.api.domain.dto.updMembeOneDTO; import com.ruoyi.system.api.feignClient.AuctionClient; +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.*; @@ -84,6 +86,9 @@ @Resource private OrderAuctionBondMapper orderAuctionBondMapper; + @Resource + private GoodsSkuClient GoodsSkuClient; + @Override public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String orderNO,String openId, HttpServletRequest request) { Double price = 0.0; @@ -96,7 +101,13 @@ wrapper1.eq(OrderAuctionBond::getOrderNo,orderNO); wrapper1.eq(OrderAuctionBond::getDelFlag,0); OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1); - one1.setBoundStatus(BondStatusEnum.PAID); + if (one1.getBond().compareTo(new BigDecimal(0))==0){ + one1.setBoundStatus(BondStatusEnum.PAID); + Map<String, Object> returnMap = new HashMap<>(); + returnMap.put("Type",1); + return R.ok(returnMap); + } + }else{ LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery(); @@ -107,26 +118,49 @@ page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED); page1.setPayTime(LocalDateTime.now()); OrderMapper.updateById(page1); - Map<String, Object> returnMap = new HashMap<>(20); + 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); - 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); + } if (orderNO.contains("BO")) { @@ -140,7 +174,7 @@ if (type == 1) { // 支付宝预下单 return this.alipay(orderNO, subject, body, price, request); - } else { + } if (type == 2){ // 微信预下单 return this.wxpay(2, orderNO, body, openId, price, request); } @@ -156,7 +190,7 @@ if (type == 1) { // 支付宝预下单 return this.alipay(orderNO, subject, body, price, request); - } else { + } if (type == 2) { // 微信预下单 return this.wxpay(2, orderNO, body,openId, price, request); } @@ -220,12 +254,25 @@ 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()); wrapper1.eq(Order::getDelFlag,0); Order page1 = OrderMapper.selectOne(wrapper1); + 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); + } page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED); page1.setPayTime(LocalDateTime.now()); OrderMapper.updateById(page1); @@ -241,7 +288,7 @@ MembeOneDTO.setMemberId(page1.getMemberId()); MembeOneDTO.setMoney(page1.getTotalAmount()); MembeOneDTO.setTotalPoints(page1.getPoints()); - memberClient.updMembeOne(MembeOneDTO); + memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER); } } @@ -295,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); // 接口返回状态 @@ -338,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(); @@ -345,8 +392,23 @@ 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); + + 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()); @@ -359,7 +421,7 @@ MembeOneDTO.setMemberId(page1.getMemberId()); MembeOneDTO.setMoney(page1.getTotalAmount()); MembeOneDTO.setTotalPoints(page1.getPoints()); - memberClient.updMembeOne(MembeOneDTO); + memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER); } log.debug("WxpayController.notify__回调处理成功:SUCCESS"); @@ -371,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(); } @@ -600,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; } /** -- Gitblit v1.7.1