From fc8b51f40e71aa09bb49f407c1e9f68ac94ceb58 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 29 七月 2024 18:51:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java | 216 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 175 insertions(+), 41 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 a276ee2..487f7b5 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 @@ -1,8 +1,5 @@ package com.ruoyi.order.service.impl; -import static com.ruoyi.order.util.tencent.WXPay.requestRefundService; -import static com.ruoyi.order.util.tencent.WXPay.requestUnifiedorderService; - import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradeRefundRequest; @@ -18,39 +15,46 @@ 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.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.order.domain.Paylog; import com.ruoyi.order.mapper.OrderAuctionBondMapper; import com.ruoyi.order.mapper.OrderMapper; import com.ruoyi.order.mapper.PaylogMapper; -import com.ruoyi.order.service.IOrderAuctionBondService; import com.ruoyi.order.service.IPaylogService; import com.ruoyi.order.util.MD5AndKL; import com.ruoyi.order.util.SinataUtil; import com.ruoyi.order.util.alipay.config.AlipayConfig; import com.ruoyi.order.util.alipay.util.PayDemoActivity; import com.ruoyi.order.util.tencent.common.Configure; -import com.ruoyi.order.util.tencent.common.Signature; 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.GoodsGroupPurchase; +import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo; 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; import com.ruoyi.system.api.domain.dto.MemberPointsDTO; 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.*; +import java.io.IOException; +import java.io.PrintWriter; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.SortedMap; +import java.util.TreeMap; +import java.util.UUID; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -58,10 +62,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import com.ruoyi.system.api.feignClient.OrderClient; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; /** * <p> @@ -89,7 +90,10 @@ private OrderAuctionBondMapper orderAuctionBondMapper; @Resource - private GoodsSkuClient GoodsSkuClient; + private GoodsSkuClient goodsSkuClient; + + @Resource + private PaylogMapper paylogMapper; @Override public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String orderNO,String openId, HttpServletRequest request) { @@ -98,8 +102,6 @@ String body; try { if(judgeContainsStr(orderNO)){ - - if (orderNO.contains("BO")) { LambdaQueryWrapper<OrderAuctionBond> wrapper1= Wrappers.lambdaQuery(); wrapper1.eq(OrderAuctionBond::getOrderNo,orderNO); @@ -108,6 +110,15 @@ one1.setBoundStatus(BondStatusEnum.PAID); one1.setPaymentMethod(PaymentMethodEnum.WECHAT); orderAuctionBondMapper.updateById(one1); + + + if (one1.getBond()==null||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(); @@ -118,27 +129,57 @@ page1.setPaymentMethod(PaymentMethodEnum.WECHAT); page1.setPayTime(LocalDateTime.now()); OrderMapper.updateById(page1); + if (page1.getTotalAmount().compareTo(new BigDecimal(0))==0){ + Map<String, Object> returnMap = new HashMap<>(); + returnMap.put("Type",1); + return R.ok(returnMap); + } - if(page1.getOrderNo().contains("SP")){ + + /* if(page1.getOrderNo().contains("SP")){ GoodsSku goodsSku =new GoodsSku(); goodsSku.setId(page1.getGoodsSkuId()); goodsSku.setSoldQuantity(page1.getGoodsQuantity()); - GoodsSkuClient.updGoods(goodsSku, SecurityConstants.INNER); + 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); + goodsSkuClient.updGoodsSeckill1(goodsSku, SecurityConstants.INNER); + }*/ + + + if(page1.getOrderNo().contains("TG")){ + GoodsGroupPurchase goodsSeckiGoodsGroupPurchaseOne = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(page1.getGoodsSkuId(), SecurityConstants.INNER).getData(); + GoodsGroupPurchaseInfo goodsSeckiGoodsGroupPurchaseInfo = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseInfo(page1.getGoodsSkuId(), SecurityConstants.INNER).getData(); + /* if (goodsSeckiGoodsGroupPurchaseInfo!=null){ + goodsSkuClient.updgoodsGroupPurchaseInfo(goodsSeckiGoodsGroupPurchaseInfo, SecurityConstants.INNER); + page1.setGroupNo(goodsSeckiGoodsGroupPurchaseInfo.getMubre()); + }else{ + UUID uuid = UUID.randomUUID(); + GoodsGroupPurchaseInfo goodsGroupPurchaseInfo=new GoodsGroupPurchaseInfo(); + goodsGroupPurchaseInfo.setGroupSize(goodsSeckiGoodsGroupPurchaseOne.getGroupSize()); + goodsGroupPurchaseInfo.setCurrentNumber(1); + goodsGroupPurchaseInfo.setMubre(uuid.toString()); + goodsGroupPurchaseInfo.setGroupPurchaseId(page1.getGoodsSkuId()); + goodsGroupPurchaseInfo.setGroupStatus(0); + goodsSkuClient.updgoodsGroupPurchaseInfo(goodsGroupPurchaseInfo, SecurityConstants.INNER); + page1.setGroupNo(uuid.toString()); + }*/ + } + OrderMapper.updateById(page1); + + if (page1.getPoints()!=0){ + MemberPointsDTO memberPointsDTO=new MemberPointsDTO(); + memberPointsDTO.setMemberId(page1.getMemberId()); + memberPointsDTO.setPointsType(1); + memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE); + memberPointsDTO.setPoints(page1.getPoints()); + memberClient.addMemberPoints(memberPointsDTO); } - 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()); @@ -183,14 +224,14 @@ GoodsSku goodsSku =new GoodsSku(); goodsSku.setId(page1.getGoodsSkuId()); goodsSku.setSoldQuantity(page1.getGoodsQuantity()); - GoodsSkuClient.updGoods(goodsSku, SecurityConstants.INNER); + 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); + goodsSkuClient.updGoodsSeckill1(goodsSku, SecurityConstants.INNER); } @@ -321,29 +362,54 @@ wrapper1.eq(Order::getOrderNo,paylog1.getOutTradeNo()); wrapper1.eq(Order::getDelFlag,0); Order page1 = OrderMapper.selectOne(wrapper1); + + page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED); + page1.setPayTime(LocalDateTime.now()); if(page1.getOrderNo().contains("SP")){ GoodsSku goodsSku =new GoodsSku(); goodsSku.setId(page1.getGoodsSkuId()); goodsSku.setSoldQuantity(page1.getGoodsQuantity()); - GoodsSkuClient.updGoods(goodsSku, SecurityConstants.INNER); + 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); + goodsSkuClient.updGoodsSeckill1(goodsSku, SecurityConstants.INNER); } - page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED); - page1.setPayTime(LocalDateTime.now()); - OrderMapper.updateById(page1); + if(page1.getOrderNo().contains("TG")){ + GoodsGroupPurchase goodsSeckiGoodsGroupPurchaseOne = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(page1.getGoodsSkuId(), SecurityConstants.INNER).getData(); + GoodsGroupPurchaseInfo goodsSeckiGoodsGroupPurchaseInfo = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseInfo(page1.getGoodsSkuId(), SecurityConstants.INNER).getData(); + if (goodsSeckiGoodsGroupPurchaseInfo!=null){ + page1.setGroupNo(goodsSeckiGoodsGroupPurchaseInfo.getMubre()); + OrderMapper.updateById(page1); + goodsSkuClient.updgoodsGroupPurchaseInfo(goodsSeckiGoodsGroupPurchaseInfo, SecurityConstants.INNER); + + }else{ + UUID uuid = UUID.randomUUID(); + page1.setGroupNo(uuid.toString()); + OrderMapper.updateById(page1); + GoodsGroupPurchaseInfo goodsGroupPurchaseInfo=new GoodsGroupPurchaseInfo(); + goodsGroupPurchaseInfo.setGroupSize(goodsSeckiGoodsGroupPurchaseOne.getGroupSize()); + goodsGroupPurchaseInfo.setCurrentNumber(1); + goodsGroupPurchaseInfo.setMubre(uuid.toString()); + goodsGroupPurchaseInfo.setGroupPurchaseId(goodsSeckiGoodsGroupPurchaseOne.getId()); + goodsGroupPurchaseInfo.setGroupStatus(0); + goodsSkuClient.updgoodsGroupPurchaseInfo(goodsGroupPurchaseInfo, SecurityConstants.INNER); + + } + } + + if (page1.getPoints()!=0){ 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()); @@ -469,28 +535,51 @@ 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); + 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); + goodsSkuClient.updGoodsSeckill1(goodsSku, SecurityConstants.INNER); } + if(page1.getOrderNo().contains("TG")){ + GoodsGroupPurchase goodsSeckiGoodsGroupPurchaseOne = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(page1.getGoodsSkuId(), SecurityConstants.INNER).getData(); + GoodsGroupPurchaseInfo goodsSeckiGoodsGroupPurchaseInfo = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseInfo(page1.getGoodsSkuId(), SecurityConstants.INNER).getData(); + if (goodsSeckiGoodsGroupPurchaseInfo!=null){ + OrderMapper.updateById(page1); + page1.setGroupNo(goodsSeckiGoodsGroupPurchaseInfo.getMubre()); + goodsSkuClient.updgoodsGroupPurchaseInfo(goodsSeckiGoodsGroupPurchaseInfo, SecurityConstants.INNER); + }else{ + UUID uuid = UUID.randomUUID(); + page1.setGroupNo(uuid.toString()); + OrderMapper.updateById(page1); + GoodsGroupPurchaseInfo goodsGroupPurchaseInfo=new GoodsGroupPurchaseInfo(); + goodsGroupPurchaseInfo.setGroupSize(goodsSeckiGoodsGroupPurchaseOne.getGroupSize()); + goodsGroupPurchaseInfo.setCurrentNumber(1); + goodsGroupPurchaseInfo.setMubre(uuid.toString()); + goodsGroupPurchaseInfo.setGroupPurchaseId(goodsSeckiGoodsGroupPurchaseOne.getId()); + goodsGroupPurchaseInfo.setGroupStatus(0); + goodsSkuClient.updgoodsGroupPurchaseInfo(goodsGroupPurchaseInfo, SecurityConstants.INNER); + + } + } + if (page1.getPoints()!=0){ 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()); @@ -690,6 +779,7 @@ List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries); // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() { + @Override public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) { return (o1.getKey()).toString().compareTo(o2.getKey()); } @@ -809,6 +899,10 @@ return m.matches(); } + /** + * @param refundDTOS 退款数据传输对象 + * @return Map<String, Object> key :orderNo value 退款结果 + */ @Override public Map<String, Object> refund(List<RefundDTO> refundDTOS) { Map<String, Object> map = new HashMap<>(); @@ -837,12 +931,52 @@ return map; } + @Override + public void refund1(RefundDTO refundDTOS) { + + LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); + paylogEntityWrapper.eq(Paylog::getOutTradeNo, refundDTOS.getOrderNo()); + Paylog paylog = paylogMapper.selectOne(paylogEntityWrapper); + + + if (paylog.getPayType() ==1) {//支付宝 + //获取支付信息 + + if (paylog != null) { + boolean bo = this.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney()); + if (!bo) { + System.out.println("支付宝退款失败"); + } + } + + } else if (paylog.getPayType() ==2) {//微信 + //获取支付信息 + 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(refundDTOS.getOrderNo()); + String ma = m.replaceAll("").trim(); + boolean bo = this.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2"); + if (!bo) { + System.out.println("微信退款失败"); + } + + } + } + } + private Boolean handleRefund(Paylog paylog, BigDecimal amount, String orderNo) { boolean res = false; if (StringUtils.isNotNull(paylog)) { if (paylog.getPayType() == 1) { - res = this.refundForAlipay(paylog.getOutTradeNo(), + res = refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), amount.doubleValue()); } if (paylog.getPayType() == 2) { @@ -853,9 +987,9 @@ String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); Integer totalFee = Integer.parseInt( money.substring(0, money.length() - 3)); - res = this.refundForWxpay(2, paylog.getTradeNo(), + res = refundForWxpay(1, paylog.getTradeNo(), paylog.getOutTradeNo(), orderNo, totalFee, - refundFee, "4"); + refundFee, "2"); } } return res; -- Gitblit v1.7.1