rentaiming
2024-06-03 f7e5362d1193d0d58c4acab9395dd9ac8ac0e234
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,10 +1,12 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.constant.SecurityConstants;
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.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.order.domain.OrderMall;
import com.ruoyi.order.mapper.OrderMapper;
@@ -12,9 +14,7 @@
import com.ruoyi.order.service.IOrderService;
import com.ruoyi.order.util.OrderUtil;
import com.ruoyi.system.api.domain.*;
import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
import com.ruoyi.system.api.domain.dto.MemberOrderDTO;
import com.ruoyi.system.api.domain.dto.OrderDTO;
import com.ruoyi.system.api.domain.dto.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -27,6 +27,7 @@
import com.ruoyi.system.api.domain.vo.OrderVO;
import com.ruoyi.system.api.feignClient.GoodsSkuClient;
import com.ruoyi.system.api.feignClient.MemberClient;
import com.ruoyi.system.api.feignClient.PromotionClient;
import org.springframework.stereotype.Service;
/**
@@ -50,6 +51,9 @@
    @Resource
    private MemberClient memberClient;
    @Resource
    private PromotionClient promotionClient;
    @Override
@@ -162,6 +166,15 @@
        if (memberOrderDTO.getOrderFrom()==1){
            GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData();
            if (goodsSku.getStock()<memberOrderDTO.getGoodsQuantity()){
                throw new ServiceException("对不起,购买数大于库存");
            }else{
                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
                goodsStockUpdDTO.setAuctionStock(memberOrderDTO.getGoodsQuantity()*-1);
                goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                        SecurityConstants.INNER);
            }
            memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
            memberOrderVO.setPrice(goodsSku.getPrice());
            memberOrderVO.setCoverPic(goodsSku.getCoverPic());
@@ -178,6 +191,17 @@
            memberOrderVO.setSkuName(goodsSku.getSkuName());
            memberOrderVO.setYouhiPrice(data.getSeckillPrice());
            pice=data.getSeckillPrice();
            if (data.getSeckillStock()<memberOrderDTO.getGoodsQuantity()){
                throw new ServiceException("对不起,购买数大于库存");
            }else{
                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
                goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity());
                goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
            }
        }
        if (memberOrderDTO.getOrderFrom()==3){
            order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
@@ -197,14 +221,22 @@
        order.setTotalAmount(pice.multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
        order.setOrderStatus(OrderStatusEnum.TO_PLAY);
        MemberAddress data = memberClient.getMemberAddressOne(
                memberOrderDTO.getMemberId(), SecurityConstants.INNER).getData();
        if (StringUtils.isNotNull(data)) {
            order.setReceiverName(data.getRecipientName());
            order.setReceiverCity(data.getReceiverCity());
            order.setReceiverDetailAddress(data.getDetailedAddress());
            order.setReceiverphone(data.getRecipientPhone());
        if (memberOrderDTO.getOrderFrom()==3){
            order.setReceiverName(memberOrderDTO.getReceiverName());
            order.setReceiverCity(memberOrderDTO.getReceiverCity());
            order.setReceiverDetailAddress(memberOrderDTO.getReceiverDetailAddress());
            order.setReceiverphone(memberOrderDTO.getReceiverphone());
        }else{
            MemberAddress data = memberClient.getMemberAddressOne(
                    memberOrderDTO.getMemberId(), SecurityConstants.INNER).getData();
            if (StringUtils.isNotNull(data)) {
                order.setReceiverName(data.getRecipientName());
                order.setReceiverCity(data.getReceiverCity());
                order.setReceiverDetailAddress(data.getDetailedAddress());
                order.setReceiverphone(data.getRecipientPhone());
            }
        }
        baseMapper.insert(order);
        OrderMall orderMall=new OrderMall();
@@ -219,12 +251,149 @@
            orderMall.setActivityId(memberOrderDTO.getGoodsSkuId());
        }
        orderMallService.save(orderMall);
        memberOrderVO.setId(order.getId());
        memberOrderVO.setOrderStatus(OrderStatusEnum.TO_PLAY);
        memberOrderVO.setOrderNo(order.getOrderNo());
        memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
        memberOrderVO.setOrderTime(order.getOrderTime());
        memberOrderVO.setOrderFrom(order.getOrderFrom());
        return null;
        memberOrderVO.setMemberId(memberOrderDTO.getMemberId());
        memberOrderVO.setPaymentMethod(order.getPaymentMethod());
        memberOrderVO.setTotalAmount(order.getTotalAmount());
        memberOrderVO.setOrderStatus(order.getOrderStatus());
        memberOrderVO.setGoodsQuantity(order.getGoodsQuantity());
        memberOrderVO.setReceiverName(order.getReceiverName());
        memberOrderVO.setReceiverCity(order.getReceiverCity());
        memberOrderVO.setReceiverDetailAddress(order.getReceiverDetailAddress());
        memberOrderVO.setReceiverphone(order.getReceiverphone());
        return memberOrderVO;
    }
    @Override
    public MemberTiOrderVO updMemberOrder(MemberOrderDTO memberOrderDTO) {
        Order order = baseMapper.selectById(memberOrderDTO.getId());
        MemberTiOrderVO memberOrderVO=new MemberTiOrderVO();
        if (memberOrderDTO.getReceiverDetailAddress()!=null){
            order.setReceiverName(memberOrderDTO.getReceiverName());
            order.setReceiverCity(memberOrderDTO.getReceiverCity());
            order.setReceiverDetailAddress(memberOrderDTO.getReceiverDetailAddress());
            order.setReceiverphone(memberOrderDTO.getReceiverphone());
        }
        if (memberOrderDTO.getOrderRemark()!=null){
            order.setOrderRemark(memberOrderDTO.getOrderRemark());
        }if (memberOrderDTO.getGoodsQuantity()!=null){
            if (order.getOrderFrom().getCode()==1){
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData();
                if (goodsSku.getStock()<memberOrderDTO.getGoodsQuantity()){
                    throw new ServiceException("对不起,购买数大于库存");
                }else{
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
                    goodsStockUpdDTO.setAuctionStock(order.getGoodsQuantity()*1);
                    goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                            SecurityConstants.INNER);
                    GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                    goodsStockUpdDTO1.setGoodsSkuId(goodsSku.getId());
                    goodsStockUpdDTO1.setAuctionStock(memberOrderDTO.getGoodsQuantity()*-1);
                    goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                            SecurityConstants.INNER);
                    order.setTotalAmount(goodsSku.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                    memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
                    memberOrderVO.setPrice(goodsSku.getPrice());
                    memberOrderVO.setCoverPic(goodsSku.getCoverPic());
                    memberOrderVO.setSkuName(goodsSku.getSkuName());
                }
            }
            if (order.getOrderFrom().getCode()==2){
                MemberOrderDTO memberOrderDTO1=new MemberOrderDTO();
                memberOrderDTO1.setMemberId(memberOrderDTO.getMemberId());
                memberOrderDTO1.setGoodsSkuId(memberOrderDTO.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){
                    throw new ServiceException("对不起,大于商品购买数");
                }else{
                    if (data.getSeckillStock()<memberOrderDTO.getGoodsQuantity()){
                        throw new ServiceException("对不起,购买数大于库存");
                    }else{
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(data.getId());
                    goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity());
                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
                    GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                    goodsStockUpdDTO1.setGoodsSkuId(data.getId());
                    goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity());
                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
                    order.setTotalAmount(data.getSeckillPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                }
            }
                memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
                memberOrderVO.setPrice(goodsSku.getPrice());
                memberOrderVO.setCoverPic(goodsSku.getCoverPic());
                memberOrderVO.setSkuName(goodsSku.getSkuName());
                memberOrderVO.setYouhiPrice(data.getSeckillPrice());
        }
        }
        if (memberOrderDTO.getCouponId()!=null){
            CouponMemberDTO couponMemberDTO=new CouponMemberDTO();
            couponMemberDTO.setId(memberOrderDTO.getCouponId());
            CouponMember data = promotionClient.getCouponMember(couponMemberDTO, SecurityConstants.INNER).getData();
            BigDecimal pice=new BigDecimal(0);
            if (data.getCouponType().getCode()==1){
                pice= order.getTotalAmount();
                if (pice.doubleValue()>=data.getFullReductionAmount().doubleValue()){
                    pice.subtract(data.getReductionAmount());
                }
            }
            if (data.getCouponType().getCode()==2){
                pice= order.getTotalAmount();
                pice.subtract(data.getVoucherAmount());
            }
            if (data.getCouponType().getCode()==3){
                pice= order.getTotalAmount();
                BigDecimal pice1=new BigDecimal(data.getDiscountRate());
                BigDecimal pice2=new BigDecimal(0.1);
                BigDecimal pice3=pice.multiply(pice1.multiply(pice2));
                BigDecimal pice4= pice.subtract(pice3);
               if (pice4.doubleValue()>data.getMaxDiscount().doubleValue()){
                   pice=pice.subtract(data.getMaxDiscount());
               }else{
                   pice=pice3;
               }
            }
            order.setTotalAmount(pice);
        }
        baseMapper.updateById(order);
        memberOrderVO.setId(order.getId());
        memberOrderVO.setOrderStatus(OrderStatusEnum.TO_PLAY);
        memberOrderVO.setOrderNo(order.getOrderNo());
        memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
        memberOrderVO.setOrderTime(order.getOrderTime());
        memberOrderVO.setOrderFrom(order.getOrderFrom());
        memberOrderVO.setMemberId(memberOrderDTO.getMemberId());
        memberOrderVO.setPaymentMethod(order.getPaymentMethod());
        memberOrderVO.setTotalAmount(order.getTotalAmount());
        memberOrderVO.setOrderStatus(order.getOrderStatus());
        memberOrderVO.setGoodsQuantity(order.getGoodsQuantity());
        memberOrderVO.setReceiverName(order.getReceiverName());
        memberOrderVO.setReceiverCity(order.getReceiverCity());
        memberOrderVO.setReceiverDetailAddress(order.getReceiverDetailAddress());
        memberOrderVO.setReceiverphone(order.getReceiverphone());
        memberOrderVO.setYouhiPrice(order.getDiscountMoney());
        return memberOrderVO;
    }
}