From b0b52cbabf7a4bc8e00fc328d14ac05336d0221e Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期六, 15 七月 2023 20:07:44 +0800
Subject: [PATCH] 员工端

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |   82 +++++++++++++++++++++++++++++-----------
 1 files changed, 59 insertions(+), 23 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index 6b2ad45..6120b1d 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -152,14 +152,19 @@
         BigDecimal orderPayDeposit = new BigDecimal("0.00");
         BigDecimal orderPayMoney = new BigDecimal("0.00");
         // 遍历购买商品列表
+        HashSet<String> userCouponIdSet = new HashSet<>();
         for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
             appSureOrderGoodsVo = new AppSureOrderGoodsVo();
+            discountMoney = BigDecimal.ZERO;
             useCoupon = 0;
             goodsId = appBuyGoodsDto.getGoodsId();
             buyNum = appBuyGoodsDto.getBuyNum();
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
             // 获取商品信息
             goods = remoteGoodsService.getGoods(goodsId).getData();
+            if(goods.getGoodsStatus()!=1){
+                throw new ServiceException(AppErrorConstant.GOODS_DOWN);
+            }
             // 设置订单商品信息
             appSureOrderGoodsVo.setGoodsId(goodsId);
             appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
@@ -183,7 +188,7 @@
             goodsTotalPrice = goodsPrice.multiply(buyNumBig);
             goodsRealPrice = goodsTotalPrice;
             // 处理优惠券
-            if (memberCouponId != null) {
+            if (StringUtils.isNotBlank(memberCouponId)) {
                 appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId);
                 if (StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId)) {
                     couponType = appMemberCouponVo.getCouponType();
@@ -193,16 +198,25 @@
                             discountMoney = appMemberCouponVo.getDiscountMoney();
                             goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
                             useCoupon = 1;
+                            userCouponIdSet.add(memberCouponId);
+                            appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                         }
                     } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
                         discountPercent = appMemberCouponVo.getDiscountPercent();
                         goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2, BigDecimal.ROUND_HALF_UP);
                         discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
                         useCoupon = 1;
+                        userCouponIdSet.add(memberCouponId);
+                        appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                     } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
                         discountMoney = appMemberCouponVo.getDiscountMoney();
                         goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
+                        if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+                            goodsRealPrice = BigDecimal.ZERO;
+                        }
                         useCoupon = 1;
+                        userCouponIdSet.add(memberCouponId);
+                        appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                     }
                 }
             }
@@ -220,33 +234,60 @@
             couponDiscount = couponDiscount.add(discountMoney);
             orderPayDeposit = orderPayDeposit.add(goodsDeposit);
             orderPayMoney = orderPayMoney.add(goodsRealPrice);
+            appSureOrderGoodsVoList.add(appSureOrderGoodsVo);
+        }
+        //处理优惠券列表
+        if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
             // 获取商品关联优惠券
             appGoodsMemberCouponVoList = new ArrayList<>();
-            if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
+            for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList){
                 for (AppMemberCouponVo entity : appMemberCouponVoList) {
                     if (StringUtils.isBlank(entity.getRelGoodsIds())) {
                         if (entity.getCouponType() == 1 && entity.getMoneyThreshold() != null && entity.getDiscountMoney() != null) {
                             moneyThreshold = entity.getMoneyThreshold();
-                            if (goodsTotalPrice.compareTo(moneyThreshold) >= 0) {
-                                appGoodsMemberCouponVoList.add(entity);
+                            if (sureOrderGoodsVo.getGoodsTotalPrice().compareTo(moneyThreshold) >= 0) {
+                                if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
+                                    appGoodsMemberCouponVoList.add(entity);
+                                }else{
+                                    if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
+                                        appGoodsMemberCouponVoList.add(entity);
+                                    }
+                                }
                             }
                         }else{
-                            appGoodsMemberCouponVoList.add(entity);
+                            if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
+                                appGoodsMemberCouponVoList.add(entity);
+                            }else{
+                                if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
+                                    appGoodsMemberCouponVoList.add(entity);
+                                }
+                            }
                         }
-                    } else if (entity.getRelGoodsIds().contains(goodsId)) {
+                    } else if (entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
                         if (entity.getCouponType() == 1 && entity.getMoneyThreshold() != null && entity.getDiscountMoney() != null) {
                             moneyThreshold = entity.getMoneyThreshold();
-                            if (goodsTotalPrice.compareTo(moneyThreshold) >= 0) {
-                                appGoodsMemberCouponVoList.add(entity);
+                            if (sureOrderGoodsVo.getGoodsTotalPrice().compareTo(moneyThreshold) >= 0) {
+                                if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
+                                    appGoodsMemberCouponVoList.add(entity);
+                                }else{
+                                    if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
+                                        appGoodsMemberCouponVoList.add(entity);
+                                    }
+                                }
                             }
                         }else{
-                            appGoodsMemberCouponVoList.add(entity);
+                            if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
+                                appGoodsMemberCouponVoList.add(entity);
+                            }else{
+                                if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
+                                    appGoodsMemberCouponVoList.add(entity);
+                                }
+                            }
                         }
                     }
                 }
-                appSureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList);
+                sureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList);
             }
-            appSureOrderGoodsVoList.add(appSureOrderGoodsVo);
         }
         // 设置订单相关金额
         appSureOrderVo.setOrderGoodsMoney(orderGoodsMoney);
@@ -297,6 +338,9 @@
             throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
         }
         Goods goods = remoteGoodsService.getGoods(goodsId).getData();
+        if(goods.getGoodsStatus()!=1){
+            throw new ServiceException(AppErrorConstant.GOODS_DOWN);
+        }
         appPanicBuyVo.setGoodsId(goodsId);
         appPanicBuyVo.setGoodsName(goods.getGoodsName());
         appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
@@ -913,18 +957,10 @@
      */
     @Override
     public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) {
-        List<Long> shopIds = merHomeShopTotalVo.getShopIds();
-        if (null != shopIds && shopIds.size() != 0) {
-            Integer todayShop = userServiceRecordMapper.countShopServicePersons(shopIds);
-            merHomeShopTotalVo = orderMapper.getMerHomeShopsTotalVo(shopIds);
-            merHomeShopTotalVo.setTodayShop(todayShop);
-        }else{
-            Long shopId = merHomeShopTotalVo.getShopId();
-            Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
-            merHomeShopTotalVo.setTodayShop(todayShop);
-            merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
-
-        }
+        Long shopId = merHomeShopTotalVo.getShopId();
+        Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
+        merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
+        merHomeShopTotalVo.setTodayShop(todayShop);
         return merHomeShopTotalVo;
     }
 

--
Gitblit v1.7.1