rentaiming
2024-06-15 5fe67c8a04e9c04d45a5d411e8ffa6c9c1db073d
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -54,10 +54,7 @@
import com.ruoyi.system.api.domain.dto.MemberOrderListDTO;
import com.ruoyi.system.api.domain.dto.OrderDTO;
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.MemberTiOrderVO;
import com.ruoyi.system.api.domain.vo.OrderVO;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.feignClient.AuctionClient;
import com.ruoyi.system.api.feignClient.GoodsSkuClient;
import com.ruoyi.system.api.feignClient.MemberClient;
@@ -150,7 +147,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());
@@ -326,6 +323,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){
@@ -343,6 +341,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());
@@ -401,6 +400,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());
@@ -429,6 +429,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());
@@ -438,17 +439,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());
@@ -459,7 +462,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());
                }
            }
@@ -468,9 +476,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());
@@ -484,9 +523,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());
@@ -518,18 +556,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());
@@ -564,7 +601,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);
@@ -639,17 +676,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());
@@ -662,33 +699,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());
@@ -722,20 +764,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;
    }
    /**
@@ -886,7 +954,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())
@@ -1057,7 +1125,7 @@
    public void refundBond(Long id) {
        Order order = getOrder(id);
        OrderAuctionBond orderAuctionBond;
        if (order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
        if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
            orderAuctionBond = orderAuctionBondMapper.selectOne(
                    Wrappers.lambdaQuery(OrderAuctionBond.class)
                            .eq(OrderAuctionBond::getAuctionSalesroomId,