mitao
2025-03-14 392b42c4891cf2e6beda57ab32c51598f290f4b7
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
@@ -25,10 +25,12 @@
import com.ruoyi.system.api.domain.dto.RefundDTO;
import com.ruoyi.system.api.domain.vo.PayInfoVO;
import com.ruoyi.system.api.feignClient.AuctionClient;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -77,25 +79,29 @@
            wrapper1.last("limit 1");
            Paylog paylog = iPaylogService.getOne(wrapper1);
            log.info("paylog:{}", paylog);
            if (paylog.getPayType() == 1) {//支付宝
                boolean bo = paylogServiceImpl.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), orderAuctionBond.getBond().doubleValue());
                if (!bo) {
                    return R.fail("支付宝退款失败!");
            if (Objects.nonNull(paylog)) {
                if (paylog.getPayType() == 1) {// 支付宝
                    boolean bo = paylogServiceImpl.refundForAlipay(paylog.getOutTradeNo(),
                            paylog.getTradeNo(), orderAuctionBond.getBond().doubleValue());
                    if (!bo) {
                        return R.fail("支付宝退款失败!");
                    }
                } else {// 微信
                    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 refundNo = OrderUtil.getOrderNoForPrefix("R");
                    boolean bo = paylogServiceImpl.refundForWxpay(4, paylog.getTradeNo(),
                            paylog.getOutTradeNo(), refundNo, totalFee, refundFee, "2");
                    if (!bo) {
                        return R.fail("微信退款失败!");
                    }
                }
            } else {//微信
                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 refundNo = OrderUtil.getOrderNoForPrefix("R");
                boolean bo = paylogServiceImpl.refundForWxpay(4, paylog.getTradeNo(),
                        paylog.getOutTradeNo(), refundNo, totalFee, refundFee, "2");
                if (!bo) {
                    return R.fail("微信退款失败!");
                }
                orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
            }
            orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
        }
        this.updateBatchById(orderAuctionBondList);
        return R.ok();
@@ -137,14 +143,43 @@
    @Override
    public PayInfoVO SaveOrderAuctionBond(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO) {
        PayInfoVO payInfoVO = new PayInfoVO();
        // 查询参与记录
        Optional<OrderAuctionBond> orderAuctionBondOpt = this.lambdaQuery()
                .eq(OrderAuctionBond::getMemberId, memberAuctionSalesroomBondDTO.getMemberId())
                .eq(memberAuctionSalesroomBondDTO.getBondType()
                                .equals(AuctionOrderTypeEnum.AUCTION_ITEMS.getCode()),
                        OrderAuctionBond::getAuctionSalesroomId,
                        memberAuctionSalesroomBondDTO.getAuctionSalesroomId())
                .eq(memberAuctionSalesroomBondDTO.getBondType()
                                .equals(AuctionOrderTypeEnum.REGULAR_ITEMS.getCode()),
                        OrderAuctionBond::getAuctionGoodsId,
                        memberAuctionSalesroomBondDTO.getAuctionGoodsId()).oneOpt();
        if (orderAuctionBondOpt.isPresent()) {
            OrderAuctionBond orderAuctionBond = orderAuctionBondOpt.get();
            orderAuctionBond.setPaymentMethod(
                    PaymentMethodEnum.fromCode(memberAuctionSalesroomBondDTO.getPaymentMethod()));
            orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
            this.updateById(orderAuctionBond);
            payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
            if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
                payInfoVO.setType(2);
            } else {
                payInfoVO.setType(1);
            }
            payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
            payInfoVO.setSubject("保证金");
            payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
            payInfoVO.setBody("保证金");
            return payInfoVO;
        }
        if (memberAuctionSalesroomBondDTO.getBondType() == 1) {
            AuctionGoods data = auctionClient.getauctionGoodsOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
            log.info("商品竞价立即报名的商品:{}", data);
            if (data.getListingStatus().getCode()==1){
                throw new ServiceException("商品拍卖下线");
            }
            if (data.getBond()==null||data.getBond().intValue() == 0) {
            if (data.getBond() == null || data.getBond().compareTo(BigDecimal.ZERO) == 0) {
                OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
                orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
                orderAuctionBond.setAuctionGoodsId(memberAuctionSalesroomBondDTO.getAuctionGoodsId());
@@ -152,6 +187,7 @@
                orderAuctionBond.setBond(data.getBond());
                orderAuctionBond.setBoundStatus(BondStatusEnum.PAID);
                orderAuctionBond.setBondType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                orderAuctionBond.setOrderTimeSx(data.getEndTime());
                this.save(orderAuctionBond);
                payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                payInfoVO.setType(0);
@@ -172,6 +208,7 @@
                } else {
                    orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
                }
                log.info("保存保证金订单:{}", orderAuctionBond);
                this.save(orderAuctionBond);
                payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
@@ -186,7 +223,9 @@
            }
        } else {
            AuctionSalesroom data = auctionClient.getauctionSalesroomOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
            if (data.getBond()==null||data.getBond().intValue() == 0) {
            log.info("拍卖会报名的拍卖会:{}", data);
            if (data.getBond() == null || data.getBond().compareTo(BigDecimal.ZERO) == 0) {
                OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
                orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
                orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId());
@@ -194,6 +233,8 @@
                orderAuctionBond.setBond(data.getBond());
                orderAuctionBond.setBoundStatus(BondStatusEnum.PAID);
                orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
                orderAuctionBond.setOrderTimeSx(data.getEndTime());
                log.info("添加保证金为0的记录:{}", orderAuctionBond);
                this.save(orderAuctionBond);
                payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                payInfoVO.setType(0);
@@ -206,6 +247,7 @@
                orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId());
                orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
                orderAuctionBond.setBond(data.getBond());
                orderAuctionBond.setOrderTimeSx(data.getEndTime());
                orderAuctionBond.setBoundStatus(BondStatusEnum.TO_PLAY);
                orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
                if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
@@ -213,6 +255,7 @@
                } else {
                    orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
                }
                log.info("添加保证金不为0的记录:{}", orderAuctionBond);
                this.save(orderAuctionBond);
                payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {