From 0561b12e8c5570a0f7e812543cc3460f80fee416 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 11 Nov 2021 10:29:28 +0800
Subject: [PATCH] 20211108

---
 gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java |   67 +++++++++++++++++++++++++++------
 1 files changed, 54 insertions(+), 13 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 8673f65..cadc24b 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
@@ -61,13 +61,27 @@
     private IdUtils idUtils;
 
     public Map<String, Object> queryOrderList(QueryOrderListDto model) {
+        String accountName = model.getName();
         String name = StrUtil.isEmpty(model.getName())?model.getName():StringUtils.encode(model.getName());
         String orderNo = model.getOrderNo();
-        Integer status = model.getStatus() == null ? 0 : model.getStatus();
+        List<Integer> status = new ArrayList<>();
+        if(CollUtil.isNotEmpty(model.getStatus())){
+            status = model.getStatus();
+        }
+        if(CollUtil.isEmpty(model.getStatus())){
+            status.add(1);
+            status.add(2);
+            status.add(3);
+            status.add(4);
+            status.add(5);
+            status.add(6);
+        }
         Date createdTimeStart = model.getCreatedTimeStart();
         Date createdTimeEnd = model.getCreatedTimeEnd();
         PageHelper.startPage(model.getPage(), model.getLimit());
-        List<QueryOrderListVo> maps = scoreOrderMapper.queryOrderList(name,orderNo,status,createdTimeStart,createdTimeEnd);
+        Integer namePx = model.getNamePx() == null ? 2 : model.getNamePx();
+        Integer typePx = model.getTypePx() == null ? 2 : model.getTypePx();
+        List<QueryOrderListVo> maps = scoreOrderMapper.queryOrderList(name,accountName,orderNo,status,createdTimeStart,createdTimeEnd,namePx,typePx);
         if(CollUtil.isNotEmpty(maps)){
             for(QueryOrderListVo queryOrderListVo : maps){
                 String decode = StringUtils.decode(queryOrderListVo.getName());
@@ -196,15 +210,15 @@
             throw new RestException(-3, "商品不存在或已下架");
         }
 
-        if (ScoreGoods.ISQG_YES.equals(goods.getIsQg())) {
-            if (new Date().before(goods.getQgStartTime())) {
-                throw new RestException(-3, "抢购未开始");
-            }
-
-            if (new Date().after(goods.getQgEndTime())) {
-                throw new RestException(-3, "抢购已结束");
-            }
-        }
+//        if (ScoreGoods.ISQG_YES.equals(goods.getIsQg())) {
+//            if (new Date().before(goods.getQgStartTime())) {
+//                throw new RestException(-3, "抢购未开始");
+//            }
+//
+//            if (new Date().after(goods.getQgEndTime())) {
+//                throw new RestException(-3, "抢购已结束");
+//            }
+//        }
 
         if (addGoodsOrderDto.getCnt() > sku.getStock()) {
             throw new RestException(-3, "库存不足");
@@ -215,7 +229,33 @@
             throw new RestException(-3, "积分不足");
         }
 
-        BigDecimal totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
+        BigDecimal totalPrice = 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()));
+                    }
+                }
+            }else{
+                //开启抢购,不再时间内,直接原价* 数量
+                totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
+            }
+        }else{
+            //没有开启抢购,直接现价* 数量
+            totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()));
+        }
         BigDecimal score = new BigDecimal(accountInfo.getCollectScore());
         if (score.compareTo(totalPrice) < 0) {
             throw new RestException(-3, "积分不足");
@@ -241,6 +281,7 @@
         orderDetails.setTotalPrice(totalPrice);
         orderDetails.setUnitPrice(sku.getPresentPrice());
         orderDetails.setGoodsId(goods.getId());
+        orderDetails.setSkuId(sku.getId());
         orderDetails.setThumb(goods.getThumb());
         scoreOrderDetailsMapper.insert(orderDetails);
 
@@ -256,8 +297,8 @@
         if (StrUtil.isNotBlank(addressInfo.getTagName())) {
             address.append(StrUtil.isNotBlank(addressInfo.getHouseName()) ? addressInfo.getHouseName() : "");
             if (Constants.ADDRESS_TYPE_HOME.equals(addressInfo.getTagName())) {
-                address.append(StrUtil.isNotBlank(addressInfo.getHouseNumber()) ? addressInfo.getHouseNumber() : "");
                 address.append(StrUtil.isNotBlank(addressInfo.getUnitName()) ? addressInfo.getUnitName() : "");
+                address.append(StrUtil.isNotBlank(addressInfo.getHouseNumber()) ? addressInfo.getHouseNumber() : "");
             }
         }
         expressInfo.setAddress(address.toString());

--
Gitblit v1.9.1