From ae0a1bdde246c8b0231dd07a99ecb9b965b6d0b6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 18 Nov 2021 11:39:21 +0800
Subject: [PATCH] fix

---
 gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java |   73 +++++++++++++++++++++++++++---------
 1 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java
index cadc24b..05d418a 100644
--- a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java
+++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java
@@ -2,6 +2,8 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -24,6 +26,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 @Service
@@ -197,6 +200,7 @@
         }
 //        scoreOrder.setStatus(ScoreOrder.STATUS_DONE);
         scoreOrder.setIsFinish(ScoreOrder.ISFINISH_YES);
+        scoreOrder.setIsFinishTime(new Date());
         scoreOrder.setVoucherImg(CollUtil.join(model.getVoucherImgs(),","));
         scoreOrderMapper.updateByPrimaryKeySelective(scoreOrder);
         return scoreOrder.getId();
@@ -230,31 +234,43 @@
         }
 
         BigDecimal totalPrice = BigDecimal.ZERO;
+        BigDecimal unitPrice = BigDecimal.ZERO;
         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));
-                }else{
-                    if(quotaTime > 0){
-                        totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(quotaTime)).add(
-                                sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()-quotaTime)));
-                    }else{
-                        totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
-                    }
-                }
+            //不限购
+            if(quotaTime == 0){
+                totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
+                unitPrice = sku.getPresentPrice();
             }else{
-                //开启抢购,不再时间内,直接原价* 数量
-                totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
+                //抢购时间内,用户购买该商品的数量
+                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 = sku.getOriginalPrice();
+                        }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{
             //没有开启抢购,直接现价* 数量
             totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
+            unitPrice = sku.getPresentPrice();
         }
         BigDecimal score = new BigDecimal(accountInfo.getCollectScore());
         if (score.compareTo(totalPrice) < 0) {
@@ -279,7 +295,8 @@
         orderDetails.setOrderId(order.getId());
         orderDetails.setCnt(addGoodsOrderDto.getCnt());
         orderDetails.setTotalPrice(totalPrice);
-        orderDetails.setUnitPrice(sku.getPresentPrice());
+//        orderDetails.setUnitPrice(sku.getPresentPrice());
+        orderDetails.setUnitPrice(unitPrice);
         orderDetails.setGoodsId(goods.getId());
         orderDetails.setSkuId(sku.getId());
         orderDetails.setThumb(goods.getThumb());
@@ -476,4 +493,24 @@
         statisticsVo.setTotalBuyCnt(Integer.parseInt(allData.get("totalBuy").toString()));
         return statisticsVo;
     }
+
+    public void autoConfirmReceipt() {
+        //获取七天之前后台点击确认提货的订单
+        DateTime dateTime = DateUtil.offsetDay(new Date(), -7);
+        //
+        List<ScoreOrder> orders = scoreOrderMapper.selectOrderByIsFinish(dateTime);
+        if(CollUtil.isNotEmpty(orders)){
+            for(ScoreOrder order : orders){
+                scoreOrderMapper.updateOrderStatusToDone(order.getId());
+            }
+        }
+
+    }
+
+
+//    public static void main(String[] args) {
+//        DateTime dateTime = DateUtil.offsetDay(new Date(), -7);
+//        System.out.println(dateTime);
+//    }
+
 }

--
Gitblit v1.9.1