xiaoyong931011
2021-11-11 6e6a5bbc6ed0bc05da9ed8c0ab9b55bde79c5b03
gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java
@@ -234,28 +234,34 @@
        if (ScoreGoods.ISQG_YES.equals(goods.getIsQg())) {
            //限购数量
            Integer quotaTime = goods.getQuotaTime() == null ? 0:goods.getQuotaTime();
            //抢购时间内,用户购买该商品的数量
            Integer sumCnt = scoreOrderMapper.selectGoodsQuotaTime(addGoodsOrderDto.getUserId(),goods.getId(),goods.getQgStartTime(),goods.getQgEndTime());
            //剩余限购数量
            quotaTime = quotaTime-sumCnt;
            if(goods.getQgStartTime().before(new Date()) && goods.getQgEndTime().after(new Date())){
                if(addGoodsOrderDto.getCnt() <= quotaTime){
                    totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(quotaTime));
                    unitPrice = sku.getPresentPrice();
                }else{
                    if(quotaTime > 0){
                        totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(quotaTime)).add(
                                sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()-quotaTime)));
                        unitPrice = totalPrice.divide(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                    }else{
                        totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                        unitPrice = sku.getOriginalPrice();
                    }
                }
            //不限购
            if(quotaTime == 0){
                totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                unitPrice = sku.getPresentPrice();
            }else{
                //开启抢购,不再时间内,直接原价* 数量
                totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                unitPrice = sku.getOriginalPrice();
                //抢购时间内,用户购买该商品的数量
                Integer sumCnt = scoreOrderMapper.selectGoodsQuotaTime(addGoodsOrderDto.getUserId(),goods.getId(),goods.getQgStartTime(),goods.getQgEndTime());
                //剩余限购数量
                quotaTime = quotaTime-sumCnt;
                if(goods.getQgStartTime().before(new Date()) && goods.getQgEndTime().after(new Date())){
                    if(addGoodsOrderDto.getCnt() <= quotaTime){
                        totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                        unitPrice = sku.getPresentPrice();
                    }else{
                        if(quotaTime > 0){
                            totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(quotaTime)).add(
                                    sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()-quotaTime)));
                            unitPrice = totalPrice.divide(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                        }else{
                            totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                            unitPrice = sku.getOriginalPrice();
                        }
                    }
                }else{
                    //开启抢购,不再时间内,直接原价* 数量
                    totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
                    unitPrice = sku.getOriginalPrice();
                }
            }
        }else{
            //没有开启抢购,直接现价* 数量