rentaiming
2024-07-03 c305c2c555deda505af789ab3a7471996379c525
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -291,7 +291,7 @@
            String goodsLock = "goods_lock_" + CacheConstants.SECKILL_GOODS + data.getId();
            RLock redissonLock = redissonClient.getLock(goodsLock);
            Integer surpNum = 0;
            try {
        /*    try {
                redissonLock.lock(30, TimeUnit.SECONDS);
                surpNum = redisService.getCacheObject(CacheConstants.SECKILL_GOODS + data.getId());
                if (surpNum == null || surpNum < memberOrderDTO.getGoodsQuantity()) {
@@ -300,10 +300,26 @@
            }catch (Exception e){
                throw new ServiceException("reids 出错");
            }*/
            MemberOrderDTO memberOrderDTO1=new MemberOrderDTO();
            memberOrderDTO1.setMemberId(order.getMemberId());
            memberOrderDTO1.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
            Integer num=baseMapper.getSeckillMembers1(memberOrderDTO1);
            Integer num1=0;
            if (num!=null){
                num1 =num+1;
            }else{
                num1=order.getGoodsQuantity();
            }
            order.setOrderFrom(OrderFromEnum.SNAP_ORDERS);
            GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
            if (data.getLimitNumber()<num1) {
                throw new ServiceException("对不起,大于商品购买数");
            }
            order.setOrderFrom(OrderFromEnum.SNAP_ORDERS);
            memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
            memberOrderVO.setPrice(data.getSeckillPrice());
            memberOrderVO.setSjPrice(goodsSku.getPrice());
@@ -312,12 +328,12 @@
            memberOrderVO.setYouhiPrice(data.getSeckillPrice());
            pice=data.getSeckillPrice();
            if (data.getSeckillStock()<memberOrderDTO.getGoodsQuantity()){
            if (data.getSeckillStock()<1){
                throw new ServiceException("对不起,购买数大于库存");
            }else{
                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
                goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity());
                goodsStockUpdDTO.setGoodsSkuId(data.getId());
                goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()-1);
                goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
            }
@@ -421,21 +437,20 @@
        }if (memberOrderDTO.getGoodsQuantity()!=null){
            if (order.getOrderFrom().getCode()==1){
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                if (goodsSku.getStock()<memberOrderDTO.getGoodsQuantity()){
                    throw new ServiceException("对不起,购买数大于库存");
                }else{
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
                    goodsStockUpdDTO.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity());
                    goodsSkuClient.updGoodsStock1(goodsStockUpdDTO,
                            SecurityConstants.INNER);
                    GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                    goodsStockUpdDTO1.setGoodsSkuId(goodsSku.getId());
                    goodsStockUpdDTO1.setAuctionStock(goodsSku.getStock()-memberOrderDTO.getGoodsQuantity());
                if (goodsSku.getStock()+order.getGoodsQuantity()<memberOrderDTO.getGoodsQuantity()){
                    throw new ServiceException("对不起,购买数大于库存");
                }
                     Integer m= goodsSku.getStock()+order.getGoodsQuantity();
                    goodsStockUpdDTO.setAuctionStock(m-memberOrderDTO.getGoodsQuantity());
                    goodsSkuClient.updGoodsStock1(goodsStockUpdDTO,
                            SecurityConstants.INNER);
                    order.setTotalAmount(goodsSku.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                    order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
                    memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
@@ -444,7 +459,7 @@
                    memberOrderVO.setSkuName(goodsSku.getSkuName());
                }
            }
            if (order.getOrderFrom().getCode()==2){
                MemberOrderDTO memberOrderDTO1=new MemberOrderDTO();
                memberOrderDTO1.setMemberId(order.getMemberId());
@@ -459,22 +474,23 @@
                GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
                if (data.getLimitNumber()<=num1){
                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());
                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
                    if (data.getSeckillStock()+order.getGoodsQuantity()<memberOrderDTO.getGoodsQuantity()){
                        throw new ServiceException("对不起,购买数大于库存");
                    }
                    Integer m=data.getSeckillStock()+order.getGoodsQuantity();
                    GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                    goodsStockUpdDTO1.setGoodsSkuId(data.getId());
                    goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity());
                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
                    goodsStockUpdDTO1.setAuctionStock(m-memberOrderDTO.getGoodsQuantity());
                    goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO1,SecurityConstants.INNER);
                        order.setTotalAmount(data.getSeckillPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
                        order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
@@ -483,7 +499,7 @@
                        order.setCoverPic(goodsSku.getCoverPic());
                        order.setSjPrice(goodsSku.getPrice());
                }
            }
                memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
                memberOrderVO.setPrice(goodsSku.getPrice());
@@ -652,6 +668,20 @@
        PageDTO<MemberOrderListVO> memberOrderListVOPageDTO = PageDTO.of(page1, MemberOrderListVO.class);
        List<MemberOrderListVO> list = memberOrderListVOPageDTO.getList();
        for (MemberOrderListVO MemberOrderList:list){
            if (MemberOrderList.getOrderStatus().getCode()==1){
                if (MemberOrderList.getOrderFrom().getCode()==1||MemberOrderList.getOrderFrom().getCode()==2||MemberOrderList.getOrderFrom().getCode()==3){
                    LocalDateTime localDateTime = MemberOrderList.getOrderTime().plusMinutes(30);
                    if (LocalDateTime.now().isAfter(localDateTime)) {
                        // dateTime1 在 dateTime2 之后
                        MemberOrderList.setOrderStatus(OrderStatusEnum.CANCELED);
                        Order order = this.getOrder(MemberOrderList.getId());
                        order.setOrderStatus(OrderStatusEnum.CANCELED);
                        this.updateById(order);
                    }
                }
            }
            OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne(
                    Wrappers.lambdaQuery(OrderReturnRequest.class)
                            .eq(OrderReturnRequest::getOrderId,
@@ -730,11 +760,45 @@
            order.setOrderStatus(OrderStatusEnum.CANCELED);
            order.setCancelTime(LocalDateTime.now());
            baseMapper.updateById(order);
            if(order.getOrderNo().contains("SP")){
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId());
                goodsStockUpdDTO1.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity());
                goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER);
            }
            if(order.getOrderNo().contains("MS")){
                GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId());
                goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity());
                goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER);
            }
        }
        if (order.getOrderStatus().getCode() == 2) {
            order.setOrderStatus(OrderStatusEnum.CANCELED);
            order.setCancelTime(LocalDateTime.now());
            baseMapper.updateById(order);
            if(order.getOrderNo().contains("SP")){
                GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId());
                goodsStockUpdDTO1.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity());
                goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER);
            }
            if(order.getOrderNo().contains("MS")){
                GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
                goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId());
                goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity());
                goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER);
            }
            if (order.getCouponId()!=0){
                CouponMemberDTO couponMemberDTO1=new CouponMemberDTO();
@@ -749,7 +813,7 @@
            MembeOneDTO.setMemberId(order.getMemberId());
            MembeOneDTO.setMoney(order.getTotalAmount());
            MembeOneDTO.setTotalPoints(order.getPoints());
            memberClient.updMembeOne(MembeOneDTO);
            memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER);
            if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//支付宝