mitao
2024-06-17 0b9f2eeb5e2ff7995f39d217e90a6c64e37366d4
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -12,6 +12,7 @@
import com.ruoyi.common.core.enums.BondStatusEnum;
import com.ruoyi.common.core.enums.OrderFromEnum;
import com.ruoyi.common.core.enums.OrderStatusEnum;
import com.ruoyi.common.core.enums.OrderTypeEnum;
import com.ruoyi.common.core.enums.PaymentMethodEnum;
import com.ruoyi.common.core.enums.RequestTypeEnum;
import com.ruoyi.common.core.enums.ReturnRequestStatusEnum;
@@ -20,8 +21,8 @@
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.order.controller.management.dto.MgtMallOrderQuery;
import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO;
import com.ruoyi.order.controller.management.dto.MgtOrderQuery;
import com.ruoyi.order.controller.management.vo.MgtOrderReturnRequestVO;
import com.ruoyi.order.controller.management.vo.MgtOrderVO;
import com.ruoyi.order.domain.OrderReturnRequest;
@@ -55,6 +56,7 @@
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import com.ruoyi.system.api.domain.vo.Express100VO;
import com.ruoyi.system.api.domain.vo.MemberOrderListVO;
import com.ruoyi.system.api.domain.vo.MemberOrderNumVO;
import com.ruoyi.system.api.domain.vo.MemberTiOrderVO;
import com.ruoyi.system.api.domain.vo.OrderVO;
import com.ruoyi.system.api.feignClient.AuctionClient;
@@ -74,10 +76,7 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import lombok.Synchronized;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;
@@ -152,7 +151,7 @@
        }
        order.setOrderTime(OrderDTO.getOrderTime());
        order.setOrderFrom(OrderDTO.getOrderFrom());
        order.setAuctionType(OrderDTO.getAuctionType());
        order.setAuctionOrderType(OrderDTO.getAuctionType());
        order.setGoodsSkuId(OrderDTO.getGoodsSkuId());
        order.setMemberId(OrderDTO.getMemberId());
        order.setTotalAmount(OrderDTO.getTotalAmount());
@@ -328,6 +327,7 @@
            order.setSkuName(goodsSku.getSkuName());
            order.setPrice(data.getSeckillPrice());
            order.setCoverPic(goodsSku.getCoverPic());
            order.setSjPrice(goodsSku.getPrice());
            /*redisService.setCacheObject(CacheConstants.SECKILL_GOODS + data.getId(), surpNum - memberOrderDTO.getGoodsQuantity());*/
        }
        if (memberOrderDTO.getOrderFrom()==3){
@@ -345,6 +345,7 @@
            order.setSkuName(goodsSku.getSkuName());
            order.setPrice(data.getGroupPurchasePrice());
            order.setCoverPic(goodsSku.getCoverPic());
            order.setSjPrice(goodsSku.getPrice());
        }
        order.setMemberId(memberOrderDTO.getMemberId());
        order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
@@ -403,6 +404,7 @@
    @Override
    public MemberTiOrderVO updMemberOrder(MemberOrderDTO memberOrderDTO) {
        Order order = baseMapper.selectById(memberOrderDTO.getId());
        MemberTiOrderVO memberOrderVO=new MemberTiOrderVO();
        if (memberOrderDTO.getReceiverDetailAddress()!=null){
            order.setReceiverName(memberOrderDTO.getReceiverName());
@@ -431,6 +433,7 @@
                            SecurityConstants.INNER);
                    order.setTotalAmount(goodsSku.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                    order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
                    memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
                    memberOrderVO.setPrice(goodsSku.getPrice());
                    memberOrderVO.setCoverPic(goodsSku.getCoverPic());
@@ -440,17 +443,19 @@
            }
            if (order.getOrderFrom().getCode()==2){
                MemberOrderDTO memberOrderDTO1=new MemberOrderDTO();
                memberOrderDTO1.setMemberId(memberOrderDTO.getMemberId());
                memberOrderDTO1.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
                memberOrderDTO1.setMemberId(order.getMemberId());
                memberOrderDTO1.setGoodsSkuId(order.getGoodsSkuId());
                Integer num=baseMapper.getSeckillMembers1(memberOrderDTO1);
                GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData();
                if (data.getLimitNumber()<=num){
                Integer num1=num+order.getGoodsQuantity();
                GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
                if (data.getLimitNumber()<=num1){
                    throw new ServiceException("对不起,大于商品购买数");
                }else{
                    if (data.getSeckillStock()<memberOrderDTO.getGoodsQuantity()){
                        throw new ServiceException("对不起,购买数大于库存");
                    }else{
                        order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(data.getId());
                    goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity());
@@ -461,7 +466,12 @@
                    goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity());
                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
                    order.setTotalAmount(data.getSeckillPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                        order.setTotalAmount(data.getSeckillPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                        order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
                        order.setSkuName(goodsSku.getSkuName());
                        order.setPrice(data.getSeckillPrice());
                        order.setCoverPic(goodsSku.getCoverPic());
                        order.setSjPrice(goodsSku.getPrice());
                }
            }
@@ -470,9 +480,40 @@
                memberOrderVO.setCoverPic(goodsSku.getCoverPic());
                memberOrderVO.setSkuName(goodsSku.getSkuName());
                memberOrderVO.setYouhiPrice(data.getSeckillPrice());
        }
        }
        }  if (order.getOrderFrom().getCode()==3){
                order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
                GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
                MemberOrderDTO memberOrderDTO1=new MemberOrderDTO();
                memberOrderDTO1.setMemberId(order.getMemberId());
                memberOrderDTO1.setGoodsSkuId(order.getGoodsSkuId());
                Integer num=baseMapper.getGoodsGroupPurchase(memberOrderDTO1);
                Integer num1=num+order.getGoodsQuantity();
                if (data.getLimitNumber()<=num1){
                    throw new ServiceException("对不起,大于商品购买数");
                }else{
                    if (data.getLimitNumber()<memberOrderDTO.getGoodsQuantity()){
                        throw new ServiceException("对不起,购买数大于库存");
                    }else{
                        memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
                        memberOrderVO.setPrice(data.getGroupPurchasePrice());
                        memberOrderVO.setSjPrice(goodsSku.getPrice());
                        memberOrderVO.setCoverPic(goodsSku.getCoverPic());
                        memberOrderVO.setSkuName(goodsSku.getSkuName());
                        memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice());
                        order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
                        order.setSkuName(goodsSku.getSkuName());
                        order.setPrice(data.getGroupPurchasePrice());
                        order.setCoverPic(goodsSku.getCoverPic());
                        order.setSjPrice(goodsSku.getPrice());
                    }
                }
            }
        }
        BigDecimal pice=order.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()));
        if (memberOrderDTO.getCouponId()!=null){
            CouponMemberDTO couponMemberDTO=new CouponMemberDTO();
            couponMemberDTO.setId(memberOrderDTO.getCouponId());
@@ -486,9 +527,8 @@
                promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER);
            }
            BigDecimal pice=new BigDecimal(0);
            if (data.getCouponType().getCode()==1){
                pice= order.getTotalAmount();
                if (pice.doubleValue()>=data.getFullReductionAmount().doubleValue()){
                    pice.subtract(data.getReductionAmount());
                    order.setDiscountMoney(data.getReductionAmount());
@@ -520,18 +560,17 @@
            couponMemberDTO2.setCouponStatus(2);
            promotionClient.updCouponMember(couponMemberDTO2, SecurityConstants.INNER);
            order.setTotalAmount(pice);
            CustomConfig memberPointsMoney = sysUserClient.getconfig("MEMBER_POINTS_MONEY").getData();
            CustomConfig memberPointsPoints = sysUserClient.getconfig("MEMBER_POINTS_POINTS").getData();
            BigDecimal pic=pice.multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()));
            Double aDouble= Double.valueOf(memberPointsMoney.getConfigValue()) * Double.valueOf(memberPointsPoints.getConfigValue());
            BigDecimal pi=pic.multiply(new BigDecimal(aDouble));
            order.setPoints(pi.intValue());
        }
        order.setTotalAmount(pice);
        CustomConfig memberPointsMoney = sysUserClient.getconfig("MEMBER_POINTS_MONEY").getData();
        CustomConfig memberPointsPoints = sysUserClient.getconfig("MEMBER_POINTS_POINTS").getData();
        Double aDouble= Double.valueOf(memberPointsMoney.getConfigValue()) * Double.valueOf(memberPointsPoints.getConfigValue());
        BigDecimal pi=pice.multiply(new BigDecimal(aDouble));
        order.setPoints(pi.intValue());
        baseMapper.updateById(order);
        memberOrderVO.setId(order.getId());
@@ -566,7 +605,7 @@
            wrapper.like(Order::getOrderNo,memberOrderListDTO.getOrderNo());
        }
        if(memberOrderListDTO.getOrderStatus()!=null){
            wrapper.eq(Order::getOrderStatus,memberOrderListDTO.getOrderStatus().getCode());
            wrapper.eq(Order::getOrderStatus,memberOrderListDTO.getOrderStatus().getCode()-1);
        }
        wrapper.eq(Order::getDelFlag,0);
        wrapper.orderByDesc(Order::getCancelTime);
@@ -641,17 +680,17 @@
    @Override
    public void CancelOrderOne(MemberOrderListDTO memberOrderListDTO) {
        Order order = baseMapper.selectById(memberOrderListDTO.getId());
        if (order.getOrderStatus().getCode()==1){
        if (order.getOrderStatus().getCode() == 1) {
            order.setOrderStatus(OrderStatusEnum.CANCELED);
            order.setCancelTime(LocalDateTime.now());
            baseMapper.updateById(order);
        }
        if (order.getOrderStatus().getCode()==2) {
        if (order.getOrderStatus().getCode() == 2) {
            order.setOrderStatus(OrderStatusEnum.CANCELED);
            order.setCancelTime(LocalDateTime.now());
            baseMapper.updateById(order);
            updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
            updMembeOneDTO MembeOneDTO = new updMembeOneDTO();
            MembeOneDTO.setType(2);
            MembeOneDTO.setMemberId(order.getMemberId());
            MembeOneDTO.setMoney(order.getTotalAmount());
@@ -664,33 +703,38 @@
                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
                paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
                boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney());
                if (!bo) {
                    System.out.println("支付宝退款失败");
                if (paylog != null) {
                    boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney());
                    if (!bo) {
                        System.out.println("支付宝退款失败");
                    }
                }
            } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//微信
                //获取支付信息
                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
                paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
                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 = 1;
                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 = 1;
                    String regEx = "[^0-9]";
                    Pattern p = Pattern.compile(regEx);
                    Matcher m = p.matcher(order.getOrderNo());
                    String ma = m.replaceAll("").trim();
                    boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2");
                    if (!bo) {
                        System.out.println("微信退款失败");
                    }
                String regEx = "[^0-9]";
                Pattern p = Pattern.compile(regEx);
                Matcher m = p.matcher(order.getOrderNo());
                String ma = m.replaceAll("").trim();
                boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2");
                if (!bo) {
                    System.out.println("微信退款失败");
                }
            }
        }}
        }
    }
    @Override
    public void AffirmOrderOne(MemberOrderListDTO memberOrderListDTO) {
        Order order = baseMapper.selectById(memberOrderListDTO.getId());
@@ -724,20 +768,46 @@
                Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3));
                refundFee = 1;
                String regEx = "[^0-9]";
                Pattern p = Pattern.compile(regEx);
                Matcher m = p.matcher(order.getOrderNo());
                String ma = m.replaceAll("").trim();
                boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2");
                if (!bo) {
                    System.out.println("微信退款失败");
                    String regEx = "[^0-9]";
                    Pattern p = Pattern.compile(regEx);
                    Matcher m = p.matcher(order.getOrderNo());
                    String ma = m.replaceAll("").trim();
                    boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2");
                    if (!bo) {
                        System.out.println("微信退款失败");
                    }
                }
            }
        }else{
            order.setOrderStatus(OrderStatusEnum.FINISHED);
            order.setReceiveTime(LocalDateTime.now());
            baseMapper.updateById(order);
        }
    }
    @Override
    public MemberOrderNumVO MemberOrderNum(MemberOrderListDTO memberOrderListDTO) {
        MemberOrderNumVO vo=new MemberOrderNumVO();
        LambdaQueryWrapper<Order> paylogEntityWrapper = Wrappers.lambdaQuery();
        paylogEntityWrapper.eq(Order::getMemberId, memberOrderListDTO.getMemberId());
        paylogEntityWrapper.eq(Order::getOrderStatus,1);
        List<Order> list = this.list(paylogEntityWrapper);
        vo.setDzforderNo(list.size());
        LambdaQueryWrapper<Order> paylogEntityWrapper1 = Wrappers.lambdaQuery();
        paylogEntityWrapper1.eq(Order::getMemberId, memberOrderListDTO.getMemberId());
        paylogEntityWrapper1.eq(Order::getOrderStatus,2);
        List<Order> list1 = this.list(paylogEntityWrapper1);
        vo.setDfhorderNo(list1.size());
        LambdaQueryWrapper<Order> paylogEntityWrapper2 = Wrappers.lambdaQuery();
        paylogEntityWrapper2.eq(Order::getMemberId, memberOrderListDTO.getMemberId());
        paylogEntityWrapper2.eq(Order::getOrderStatus,3);
        List<Order> list2 = this.list(paylogEntityWrapper2);
        vo.setDshorderNo(list2.size());
        return vo;
    }
    /**
@@ -759,7 +829,7 @@
     * @return PageDTO<MgtMallOrderVO>
     */
    @Override
    public PageDTO<MgtOrderVO> getOrderPage(MgtMallOrderQuery query) {
    public PageDTO<MgtOrderVO> getOrderPage(MgtOrderQuery query) {
        PageDTO<MgtOrderVO> pageVO;
        // 封装会员条件查询对象
        MemberDTO memberDTO = null;
@@ -783,14 +853,20 @@
        }
        page = this.lambdaQuery()
                .in(StringUtils.isNotEmpty(memberIdSet), Order::getMemberId, memberIdSet)
                .ne(query.getQueryType().equals(OrderTypeEnum.MALL_ODER), Order::getOrderFrom,
                        OrderFromEnum.AUCTION_ORDERS)
                .eq(query.getQueryType().equals(OrderTypeEnum.AUCTION_ORDER), Order::getOrderFrom,
                        OrderFromEnum.AUCTION_ORDERS)
                .like(StringUtils.isNotBlank(query.getOrderNo()), Order::getOrderNo,
                        query.getOrderNo())
                .eq(StringUtils.isNotNull(query.getOrderFrom()), Order::getOrderFrom,
                .eq(StringUtils.isNotNull(query.getOrderFrom()) && query.getQueryType()
                                .equals(OrderTypeEnum.MALL_ODER), Order::getOrderFrom,
                        query.getOrderFrom())
                .like(StringUtils.isNotBlank(query.getSkuName()), Order::getSkuName,
                        query.getSkuName())
                .eq(StringUtils.isNotNull(query.getOrderStatus()), Order::getOrderStatus,
                        query.getOrderStatus())
                .orderByDesc(Order::getCreateTime)
                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
        if (StringUtils.isEmpty(page.getRecords())) {
            pageVO = PageDTO.empty(page);
@@ -798,12 +874,30 @@
        pageVO = PageDTO.of(page, MgtOrderVO.class);
        if (query.getOrderFrom() == OrderFromEnum.AUCTION_ORDERS) {
            List<MgtOrderVO> list = pageVO.getList();
            // 封装参数查询拍卖会
            Set<Long> auctionSalesroomGoodsIdSet = list.stream()
                    .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS)
                    .map(MgtOrderVO::getGoodsSkuId).collect(Collectors.toSet());
            List<AuctionSalesroom> auctionSalesroomList = auctionClient.getAuctionSalesroomByIds(
                            auctionSalesroomGoodsIdSet, SecurityConstants.INNER)
                    .getData();
            Map<Long, String> salesroomMap = auctionSalesroomList.stream()
                    .collect(Collectors.toMap(AuctionSalesroom::getId,
                            AuctionSalesroom::getSalesroomName));
            // 封装参数查询拍卖订单保证金
            Set<Long> orderIdSet = list.stream().map(MgtOrderVO::getId)
            Set<Long> auctionGoodsIdSet = list.stream()
                    .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS)
                    .map(MgtOrderVO::getGoodsSkuId)
                    .collect(Collectors.toSet());
            Set<Long> auctionSalesroomSet = auctionSalesroomList.stream()
                    .map(AuctionSalesroom::getId)
                    .collect(Collectors.toSet());
            List<OrderAuctionBond> auctionBondList = orderAuctionBondMapper.selectList(
                    Wrappers.lambdaQuery(OrderAuctionBond.class)
                            .in(OrderAuctionBond::getOrderId, orderIdSet)
                            .in(OrderAuctionBond::getAuctionGoodsId, auctionGoodsIdSet)
                            .in(OrderAuctionBond::getAuctionSalesroomId, auctionSalesroomSet)
                            .eq(OrderAuctionBond::getBoundStatus,
                                    BondStatusEnum.PAID));
            Map<String, OrderAuctionBond> auctionSalesroomBondMap = auctionBondList.stream()
@@ -816,27 +910,18 @@
                    .collect(Collectors.toMap(
                            bond -> bond.getAuctionGoodsId() + "-" + bond.getMemberId(),
                            Function.identity()));
            // 封装参数查询拍卖会
            Set<Long> auctionSalesroomGoodsIdSet = list.stream()
                    .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS)
                    .map(MgtOrderVO::getGoodsSkuId).collect(Collectors.toSet());
            List<AuctionSalesroom> auctionSalesroomList = auctionClient.getAuctionSalesroomByIds(
                            auctionSalesroomGoodsIdSet, SecurityConstants.INNER)
                    .getData();
            Map<Long, String> salesroomMap = auctionSalesroomList.stream()
                    .collect(Collectors.toMap(AuctionSalesroom::getId,
                            AuctionSalesroom::getSalesroomName));
            list.forEach(order -> {
                if (order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
                    order.setSalesroomName(
                            StringUtils.isNotBlank(salesroomMap.get(order.getGoodsSkuId()))
                                    ? salesroomMap.get(order.getGoodsSkuId()) : "无");
                                    ? salesroomMap.get(order.getAuctionSalesroomId()) : "无");
                    order.setBoundStatus(
                            StringUtils.isNotNull(auctionSalesroomBondMap.get(
                                            order.getGoodsSkuId() + "-" + order.getMemberId())
                                            order.getAuctionSalesroomId() + "-" + order.getMemberId())
                                    .getBoundStatus())
                                    ? auctionSalesroomBondMap.get(
                                            order.getGoodsSkuId() + "-" + order.getMemberId())
                                            order.getAuctionSalesroomId() + "-" + order.getMemberId())
                                    .getBoundStatus()
                                    : null);
                }
@@ -874,7 +959,7 @@
            mgtOrderVO.setPhone(member.getPhone());
        }
        // 拍卖订单查询拍卖会信息
        if (order.getOrderFrom() == OrderFromEnum.AUCTION_ORDERS && (order.getAuctionType()
        if (order.getOrderFrom() == OrderFromEnum.AUCTION_ORDERS && (order.getAuctionOrderType()
                == AuctionOrderTypeEnum.AUCTION_ITEMS)) {
            List<AuctionSalesroom> auctionSalesroom = auctionClient.getAuctionSalesroomByIds(
                    Lists.newArrayList(order.getGoodsSkuId())
@@ -1044,12 +1129,30 @@
    @Override
    public void refundBond(Long id) {
        Order order = getOrder(id);
        OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(
                Wrappers.lambdaQuery(OrderAuctionBond.class)
                        .eq(OrderAuctionBond::getOrderId, id));
        OrderAuctionBond orderAuctionBond;
        if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
            orderAuctionBond = orderAuctionBondMapper.selectOne(
                    Wrappers.lambdaQuery(OrderAuctionBond.class)
                            .eq(OrderAuctionBond::getAuctionSalesroomId,
                                    order.getAuctionSalesroomId())
                            .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID));
            if (StringUtils.isNotNull(orderAuctionBond)
                    && orderAuctionBond.getBoundStatus() == BondStatusEnum.REFUNDED) {
                throw new ServiceException("改拍卖会已退保证金");
            }
        } else {
            orderAuctionBond = orderAuctionBondMapper.selectOne(
                    Wrappers.lambdaQuery(OrderAuctionBond.class)
                            .eq(OrderAuctionBond::getAuctionGoodsId,
                                    order.getGoodsSkuId())
                            .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID));
        }
        Paylog paylog = iPaylogService.lambdaQuery()
                .eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo())
                .last("limit 1").one();
        if (StringUtils.isNull(paylog)) {
            throw new ServiceException("支付记录不存在");
        }
        PaymentMethodEnum paymentMethod = orderAuctionBond.getPaymentMethod();
        if (orderAuctionBond.getBoundStatus() == BondStatusEnum.PAID) {
            boolean result = handleRefund(paymentMethod, paylog, orderAuctionBond.getOrderNo());