mitao
2024-08-14 8dceb015ec8bd9642297d757e73936af84f4aaf1
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
@@ -13,9 +13,11 @@
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R;
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.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;
@@ -30,6 +32,7 @@
import com.ruoyi.order.util.tencent.common.XMLParser;
import com.ruoyi.system.api.domain.GoodsGroupPurchase;
import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo;
import com.ruoyi.system.api.domain.GoodsSeckill;
import com.ruoyi.system.api.domain.GoodsSku;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.Order;
@@ -52,6 +55,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.SortedMap;
@@ -117,11 +121,6 @@
                    wrapper1.eq(OrderAuctionBond::getOrderNo,orderNO);
                    wrapper1.eq(OrderAuctionBond::getDelFlag,0);
                    OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1);
                    one1.setBoundStatus(BondStatusEnum.PAID);
                    one1.setPaymentMethod(paymentMethodEnum);
                    orderAuctionBondMapper.updateById(one1);
                    if (one1.getBond()==null||one1.getBond().compareTo(new BigDecimal(0))==0){
                        one1.setBoundStatus(BondStatusEnum.PAID);
                        Map<String, Object> returnMap = new HashMap<>();
@@ -136,17 +135,44 @@
                    wrapper1.eq(Order::getOrderNo,orderNO);
                    wrapper1.eq(Order::getDelFlag,0);
                    Order page1 = OrderMapper.selectOne(wrapper1);
                    page1.setOrderStatus(OrderStatusEnum.TO_BE_SHIPPED);
                    page1.setPaymentMethod(paymentMethodEnum);
                    page1.setPayTime(LocalDateTime.now());
                    OrderMapper.updateById(page1);
                    // 判断商品库存
                    Long goodsSkuId = page1.getGoodsSkuId();
                    OrderFromEnum orderFrom = page1.getOrderFrom();
                    switch (orderFrom) {
                        case COMMODITY_ORDER:
                            GoodsSku goods = goodsSkuClient.getGoodsSkuOne(goodsSkuId,
                                    SecurityConstants.INNER).getData();
                            if (Objects.isNull(goods)) {
                                throw new ServiceException("该商品已下架");
                            }
                            if (goods.getStock() <= 0) {
                                throw new ServiceException("该商品已售罄");
                            }
                            if (goods.getStock() < page1.getGoodsQuantity()) {
                                throw new ServiceException("该商品库存不足");
                            }
                            break;
                        case SNAP_ORDERS:
                            GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(goodsSkuId,
                                    SecurityConstants.INNER).getData();
                            if (Objects.isNull(data)) {
                                throw new ServiceException("该商品已下架");
                            }
                            if (data.getSeckillStock() <= 0) {
                                throw new ServiceException("该商品已售罄");
                            }
                            if (data.getSeckillStock() < page1.getGoodsQuantity()) {
                                throw new ServiceException("该商品库存不足");
                            }
                            break;
                        default:
                            break;
                    }
                    if (page1.getTotalAmount().compareTo(new BigDecimal(0))==0){
                        Map<String, Object> returnMap = new HashMap<>();
                        returnMap.put("Type",1);
                        return R.ok(returnMap);
                    }
                    OrderMapper.updateById(page1);
                    if (page1.getPoints()!=0){
                        MemberPointsDTO memberPointsDTO=new MemberPointsDTO();
                        memberPointsDTO.setMemberId(page1.getMemberId());