mitao
2024-06-26 884f5c68ac8c738f90f1ca257605cfbb5d7f12db
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -52,9 +52,14 @@
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberOrderDTO;
import com.ruoyi.system.api.domain.dto.MemberOrderListDTO;
import com.ruoyi.system.api.domain.dto.MgtAfterSaleSettingDTO;
import com.ruoyi.system.api.domain.dto.OrderDTO;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import com.ruoyi.system.api.domain.vo.*;
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;
import com.ruoyi.system.api.feignClient.GoodsSkuClient;
import com.ruoyi.system.api.feignClient.MemberClient;
@@ -153,7 +158,7 @@
        order.setTotalAmount(OrderDTO.getTotalAmount());
        order.setOrderStatus(OrderStatusEnum.TO_PLAY);
        order.setPoints(OrderDTO.getPoints());
        order.setGoodsQuantity(OrderDTO.getGoodsQuantity());
        order.setGoodsQuantity(1);
        order.setReceiverName(OrderDTO.getReceiverName());
        order.setReceiverPhone(OrderDTO.getReceiverphone());
        order.setReceiverCity(OrderDTO.getReceiverCity());
@@ -183,8 +188,11 @@
                wrapper.eq(OrderAuctionBond::getAuctionSalesroomId,OrderDTO.getAuctionSalesroomId());
                wrapper.eq(OrderAuctionBond::getBondType,2);
                OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper);
                orderAuctionBond.setOrderId(order.getId());
                orderAuctionBondMapper.updateById(orderAuctionBond);
                if (orderAuctionBond!=null){
                    orderAuctionBond.setOrderId(order.getId());
                    orderAuctionBondMapper.updateById(orderAuctionBond);
                }
            }
        }
@@ -246,6 +254,7 @@
        BigDecimal pice=new BigDecimal(0);
        Order order=new Order();
        order.setMemberId(memberOrderDTO.getMemberId());
        if (memberOrderDTO.getOrderFrom()==1){
            order.setOrderFrom(OrderFromEnum.COMMODITY_ORDER);
            order.setOrderNo(OrderUtil.getOrderNoForPrefix("SP"));
@@ -343,6 +352,7 @@
            order.setCoverPic(goodsSku.getCoverPic());
            order.setSjPrice(goodsSku.getPrice());
        }
        order.setOrderRemark(memberOrderDTO.getOrderRemark());
        order.setMemberId(memberOrderDTO.getMemberId());
        order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
        order.setOrderTime(LocalDateTime.now());
@@ -400,6 +410,9 @@
    @Override
    public MemberTiOrderVO updMemberOrder(MemberOrderDTO memberOrderDTO) {
        Order order = baseMapper.selectById(memberOrderDTO.getId());
        if(memberOrderDTO.getOrderRemark()!=null){
            order.setOrderRemark(memberOrderDTO.getOrderRemark());
        }
        MemberTiOrderVO memberOrderVO=new MemberTiOrderVO();
        if (memberOrderDTO.getReceiverDetailAddress()!=null){
@@ -412,7 +425,7 @@
            order.setOrderRemark(memberOrderDTO.getOrderRemark());
        }if (memberOrderDTO.getGoodsQuantity()!=null){
            if (order.getOrderFrom().getCode()==1){
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                if (goodsSku.getStock()<memberOrderDTO.getGoodsQuantity()){
                    throw new ServiceException("对不起,购买数大于库存");
                }else{
@@ -442,7 +455,13 @@
                memberOrderDTO1.setMemberId(order.getMemberId());
                memberOrderDTO1.setGoodsSkuId(order.getGoodsSkuId());
                Integer num=baseMapper.getSeckillMembers1(memberOrderDTO1);
                Integer num1=num+order.getGoodsQuantity();
                Integer num1=0;
                if (num!=null){
                    num1 =num+order.getGoodsQuantity();
                }else{
                    num1=order.getGoodsQuantity();
                }
                GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
                if (data.getLimitNumber()<=num1){
@@ -509,65 +528,73 @@
            }
        }
        BigDecimal pice=order.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()));
        if (memberOrderDTO.getCouponId()!=null){
            CouponMemberDTO couponMemberDTO=new CouponMemberDTO();
            couponMemberDTO.setId(memberOrderDTO.getCouponId());
            CouponMember data = promotionClient.getCouponMember(couponMemberDTO, SecurityConstants.INNER).getData();
            if (order.getCouponId()!=null){
                CouponMemberDTO couponMemberDTO1=new CouponMemberDTO();
                couponMemberDTO1.setId(memberOrderDTO.getCouponId());
                couponMemberDTO1.setCouponStatus(1);
                promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER);
            }
            if (data.getCouponType().getCode()==1){
                if (pice.doubleValue()>=data.getFullReductionAmount().doubleValue()){
                    pice.subtract(data.getReductionAmount());
                    order.setDiscountMoney(data.getReductionAmount());
        if (memberOrderDTO.getGoodsQuantity()!=null){
            BigDecimal pice=order.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()));
            if (memberOrderDTO.getCouponId()!=null){
                CouponMemberDTO couponMemberDTO=new CouponMemberDTO();
                couponMemberDTO.setId(memberOrderDTO.getCouponId());
                CouponMember data = promotionClient.getCouponMember(couponMemberDTO, SecurityConstants.INNER).getData();
                if (order.getCouponId()!=0){
                    CouponMemberDTO couponMemberDTO1=new CouponMemberDTO();
                    couponMemberDTO1.setId(memberOrderDTO.getCouponId());
                    couponMemberDTO1.setCouponStatus(0);
                    promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER);
                }
                order.setCouponId(data.getId());
                if (data.getCouponType().getCode()==1){
                    if (pice.doubleValue()>=data.getFullReductionAmount().doubleValue()){
                        pice=pice.subtract(data.getReductionAmount());
                        order.setDiscountMoney(data.getReductionAmount());
                    }
                }
                if (data.getCouponType().getCode()==2){
                    pice= order.getTotalAmount();
                    pice=pice.subtract(data.getVoucherAmount());
                    order.setDiscountMoney(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());
                        order.setDiscountMoney(data.getMaxDiscount());
                    }else{
                        order.setDiscountMoney(pice4);
                        pice=pice3;
                    }
                }
                order.setCouponId(memberOrderDTO.getCouponId());
                CouponMemberDTO couponMemberDTO2=new CouponMemberDTO();
                couponMemberDTO2.setId(memberOrderDTO.getCouponId());
                couponMemberDTO2.setCouponStatus(1);
                promotionClient.updCouponMember(couponMemberDTO2, SecurityConstants.INNER);
            }else{
                if (order.getCouponId()!=null&&order.getCouponId()!=0){
                    CouponMemberDTO couponMemberDTO1=new CouponMemberDTO();
                    couponMemberDTO1.setCouponStatus(0);
                    couponMemberDTO1.setId(order.getCouponId());
                    promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER);
                }
                order.setCouponId(0L);
                order.setDiscountMoney(new BigDecimal(0));
            }
            if (data.getCouponType().getCode()==2){
                pice= order.getTotalAmount();
                pice.subtract(data.getVoucherAmount());
                order.setDiscountMoney(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());
                   order.setDiscountMoney(data.getMaxDiscount());
               }else{
                   order.setDiscountMoney(pice4);
                   pice=pice3;
               }
            order.setTotalAmount(pice);
            }
            order.setCouponId(memberOrderDTO.getCouponId());
            CouponMemberDTO couponMemberDTO2=new CouponMemberDTO();
            couponMemberDTO2.setId(memberOrderDTO.getCouponId());
            couponMemberDTO2.setCouponStatus(2);
            promotionClient.updCouponMember(couponMemberDTO2, SecurityConstants.INNER);
            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);
        }
        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());
        memberOrderVO.setOrderStatus(OrderStatusEnum.TO_PLAY);
@@ -584,7 +611,7 @@
        memberOrderVO.setReceiverCity(order.getReceiverCity());
        memberOrderVO.setReceiverDetailAddress(order.getReceiverDetailAddress());
        memberOrderVO.setReceiverphone(order.getReceiverPhone());
        memberOrderVO.setYouhiPrice(order.getDiscountMoney());
        memberOrderVO.setDiscountMoney(order.getDiscountMoney());
        return memberOrderVO;
    }
@@ -614,8 +641,12 @@
                    Wrappers.lambdaQuery(OrderReturnRequest.class)
                            .eq(OrderReturnRequest::getOrderId,
                                    MemberOrderList.getId()).last("limit 1"));
            if (StringUtils.isNotNull(orderReturnRequest)) {
            if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) {
                MemberOrderList.setStatus(orderReturnRequest.getStatus());
                MemberOrderList.setRequestId(orderReturnRequest.getId());
                MemberOrderList.setIsRequest(2);
            }else{
                MemberOrderList.setIsRequest(1);
            }
            LambdaQueryWrapper<OrderAuctionBond> wrapper3= Wrappers.lambdaQuery();
            wrapper3.eq(OrderAuctionBond::getOrderId,MemberOrderList.getId());
@@ -650,8 +681,12 @@
                    Wrappers.lambdaQuery(OrderReturnRequest.class)
                            .eq(OrderReturnRequest::getOrderId,
                                    orderVO.getId()).last("limit 1"));
            if (StringUtils.isNotNull(orderReturnRequest)) {
            if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) {
                orderVO.setStatus(orderReturnRequest.getStatus());
                orderVO.setRequestId(orderReturnRequest.getId());
                orderVO.setIsRequest(2);
            }else{
                orderVO.setIsRequest(1);
            }
            LambdaQueryWrapper<OrderAuctionBond> wrapper3= Wrappers.lambdaQuery();
@@ -862,6 +897,7 @@
                        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);
@@ -1046,9 +1082,7 @@
            boolean result = handleRefund(paymentMethod, paylog, orderNo);
            if (result) {
                paylog.setState(3);// 已退款
                order.setOrderStatus(OrderStatusEnum.REFUNDED);
                iPaylogService.updateById(paylog);
                this.updateById(order);
            }
            OrderReturnRequest orderReturnRequest = new OrderReturnRequest();
            orderReturnRequest.setOrderId(id);
@@ -1091,12 +1125,17 @@
    @Override
    public void refundReturn(Long id) {
        Order order = getOrder(id);
        if (order.getOrderStatus() == OrderStatusEnum.TO_BE_SHIPPED
                || order.getOrderStatus() == OrderStatusEnum.GOODS_TO_BE_RECEIVED
                || order.getOrderStatus() == OrderStatusEnum.FINISHED) {
        if (order.getOrderStatus() == OrderStatusEnum.FINISHED) {
            OrderReturnRequest orderReturnRequest = new OrderReturnRequest();
            order.setOrderStatus(OrderStatusEnum.AFTER_SALE);
            this.updateById(order);
            MgtAfterSaleSettingDTO data = sysUserClient.getAfterSaleSetting().getData();
            if (StringUtils.isNull(data)) {
                throw new ServiceException("获取售后退货信息失败");
            }
            orderReturnRequest.setRecipientName(data.getReceiverName());
            orderReturnRequest.setRecipientPhone(data.getReceiverPhone());
            orderReturnRequest.setDetailedAddress(data.getReceiverAddress());
            orderReturnRequest.setOrderId(id);
            orderReturnRequest.setRequestTime(LocalDateTime.now());
            orderReturnRequest.setRequestType(RequestTypeEnum.REFUNDS_AND_RETURNS);
@@ -1159,4 +1198,16 @@
            }
        }
    }
    /**
     * 查询统计订单列表
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return List<Order>
     */
    @Override
    public List<Order> getStaticsOrderList(LocalDateTime startTime, LocalDateTime endTime) {
        return baseMapper.getStaticsOrderList(startTime, endTime);
    }
}