From 2a97ecf8833f24dfbd5bf251e1fc1bdb632bbefb Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 29 七月 2024 18:51:22 +0800
Subject: [PATCH] 修改bug
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java | 157 +++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 125 insertions(+), 32 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 f0bb94d..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,37 +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.*;
-import com.ruoyi.system.api.domain.dto.BondDTO;
+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.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;
@@ -56,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,6 +92,9 @@
@Resource
private GoodsSkuClient goodsSkuClient;
+ @Resource
+ private PaylogMapper paylogMapper;
+
@Override
public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String orderNO,String openId, HttpServletRequest request) {
Double price = 0.0;
@@ -96,8 +102,6 @@
String body;
try {
if(judgeContainsStr(orderNO)){
-
-
if (orderNO.contains("BO")) {
LambdaQueryWrapper<OrderAuctionBond> wrapper1= Wrappers.lambdaQuery();
wrapper1.eq(OrderAuctionBond::getOrderNo,orderNO);
@@ -107,6 +111,15 @@
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();
wrapper1.eq(Order::getOrderNo,orderNO);
@@ -115,9 +128,15 @@
page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED);
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());
@@ -129,13 +148,13 @@
goodsSku.setId(page1.getGoodsSkuId());
goodsSku.setSoldQuantity(page1.getGoodsQuantity());
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){
+ /* if (goodsSeckiGoodsGroupPurchaseInfo!=null){
goodsSkuClient.updgoodsGroupPurchaseInfo(goodsSeckiGoodsGroupPurchaseInfo, SecurityConstants.INNER);
page1.setGroupNo(goodsSeckiGoodsGroupPurchaseInfo.getMubre());
}else{
@@ -148,7 +167,7 @@
goodsGroupPurchaseInfo.setGroupStatus(0);
goodsSkuClient.updgoodsGroupPurchaseInfo(goodsGroupPurchaseInfo, SecurityConstants.INNER);
page1.setGroupNo(uuid.toString());
- }
+ }*/
}
OrderMapper.updateById(page1);
@@ -343,6 +362,9 @@
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());
@@ -356,9 +378,30 @@
goodsSku.setSoldQuantity(page1.getGoodsQuantity());
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());
@@ -492,7 +535,7 @@
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();
@@ -511,17 +554,22 @@
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);
+ 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);
- page1.setGroupNo(uuid.toString());
+
}
}
if (page1.getPoints()!=0){
@@ -731,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());
}
@@ -850,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<>();
@@ -878,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) {
@@ -894,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