rentaiming
2024-07-20 ed4f07531b9cb0794e976a14cee3b591dec8d4f6
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>
@@ -108,7 +111,8 @@
                    one1.setPaymentMethod(PaymentMethodEnum.WECHAT);
                    orderAuctionBondMapper.updateById(one1);
                    if (one1.getBond().compareTo(new BigDecimal(0))==0){
                    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);
@@ -124,6 +128,12 @@
                    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")){
@@ -760,6 +770,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());
                }
@@ -879,6 +890,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<>();
@@ -952,7 +967,7 @@
        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) {
@@ -963,9 +978,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;