From 45d37a6febb87837a6daa65429703a37e437d257 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 17 七月 2023 19:58:39 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  258 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 257 insertions(+), 1 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 6120b1d..97aeb2d 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
@@ -46,6 +46,8 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
@@ -220,6 +222,9 @@
                     }
                 }
             }
+            if(appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()){
+                appSureOrderGoodsVo.setAppMemberCouponVoList(appMemberCouponVoList);
+            }
             appSureOrderGoodsVo.setUseCoupon(useCoupon);
             appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
             appSureOrderGoodsVo.setCouponDiscount(discountMoney);
@@ -238,6 +243,18 @@
         }
         //处理优惠券列表
         if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
+            for (AppMemberCouponVo entity : appMemberCouponVoList) {
+                if(userCouponIdSet!=null&&userCouponIdSet.contains(entity.getMemberCouponId())){
+                    entity.setUseFlag(1);
+                }else{
+                    entity.setUseFlag(0);
+                }
+            }
+            for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) {
+                sureOrderGoodsVo.setAppMemberCouponVoList(appMemberCouponVoList);
+            }
+        }
+        /*if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
             // 获取商品关联优惠券
             appGoodsMemberCouponVoList = new ArrayList<>();
             for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList){
@@ -288,7 +305,7 @@
                 }
                 sureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList);
             }
-        }
+        }*/
         // 设置订单相关金额
         appSureOrderVo.setOrderGoodsMoney(orderGoodsMoney);
         appSureOrderVo.setCouponDiscount(couponDiscount);
@@ -3236,4 +3253,243 @@
             remoteActivityService.changeActivityTotal(activityTotalChangeDto);
         }
     }
+
+    /**
+     * @description  员工端活动订单统计
+     * @author  jqs
+     * @date    2023/7/17 15:25
+     * @param staffTotalDto
+     * @return  StaffActivityOrderTotalVo
+     */
+    @Override
+    public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto){
+        StaffActivityOrderTotalVo staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
+        return staffActivityOrderTotalVo;
+    }
+
+    /**
+     * @description  员工端活动统计
+     * @author  jqs
+     * @date    2023/7/17 15:51
+     * @param staffTotalDto
+     * @return  StaffActivityTotalVo
+     */
+    @Override
+    public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto){
+        StaffActivityTotalVo staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
+        return staffActivityTotalVo;
+    }
+
+    /**
+     * @description  员工端活动统计订单分布
+     * @author  jqs
+     * @date    2023/7/17 16:16
+     * @param staffTotalDto
+     * @return  MerOrderDistributionTotalVo
+     */
+    @Override
+    public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto){
+        MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
+        // 获取订单年龄用户列表
+        MerTotalDto merTotalDto = new MerTotalDto();
+        merTotalDto.setShopId(staffTotalDto.getShopId());
+        List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
+        // 如果订单年龄用户列表不为空
+        if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
+            // 定义变量
+            Integer ageType;
+            List<Long> userIdList;
+            MerOrderAgeUserVo orderAgeUserVo;
+            MgtMapTotalPlusVo mgtMapTotalPlusVo;
+            String[] orderTotalKey = new String[5];
+            Integer[] orderTotalValue = new Integer[5];
+            BigDecimal[] orderMoneyValue = new BigDecimal[5];
+            // 遍历订单年龄用户列表
+            for (int i = 0; i < orderAgeUserVoList.size(); i++) {
+                orderAgeUserVo = orderAgeUserVoList.get(i);
+                ageType = orderAgeUserVo.getAgeType();
+                userIdList = orderAgeUserVo.getUserIdList();
+                // 根据年龄类型设置订单总数键
+                switch (ageType) {
+                    case 1:
+                        orderTotalKey[i] = "<20";
+                        break;
+                    case 2:
+                        orderTotalKey[i] = "21-30";
+                        break;
+                    case 3:
+                        orderTotalKey[i] = "31-40";
+                        break;
+                    case 4:
+                        orderTotalKey[i] = "41-50";
+                        break;
+                    case 5:
+                        orderTotalKey[i] = ">50";
+                        break;
+                }
+                // 如果用户ID列表不为空
+                if (userIdList != null && !userIdList.isEmpty()) {
+                    mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList,staffTotalDto.getShopId(),staffTotalDto.getActivityId());
+                    orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
+                    orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
+                } else {
+                    orderTotalValue[i] = 0;
+                    orderMoneyValue[i] = BigDecimal.ZERO;
+                }
+            }
+            // 设置订单分布总数对象的属性值
+            orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+            orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+            orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+        }
+        // 返回订单分布总数对象
+        return orderDistributionTotalVo;
+    }
+
+
+    /**
+     * @description  员工端活动统计销售占比
+     * @author  jqs
+     * @date    2023/7/17 17:03
+     * @param staffTotalDto
+     * @return  MerOrderTypeTotalVo
+     */
+    @Override
+    public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto){
+        MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo();
+        //获取商品分类销售数据
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
+        List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
+        List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
+        if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
+            MgtMapIntTotalVo MgtMapIntTotalVo;
+            MgtMapBigTotalVo mgtMapBigTotalVo;
+            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
+                MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
+                    MgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapBigTotalVo.setMapKey("周期");
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
+                    MgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapBigTotalVo.setMapKey("服务");
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
+                    MgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapBigTotalVo.setMapKey("体验");
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
+                    MgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapBigTotalVo.setMapKey("单品");
+                }
+                goodsTypeTotalList.add(MgtMapIntTotalVo);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
+            orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
+        }
+        return orderTypeTotalVo;
+    }
+
+    /**
+     * @description  员工端获客人数
+     * @author  jqs
+     * @date    2023/7/17 18:42
+     * @param staffTotalDto
+     * @return  StaffActivityDateMemberTotalVo
+     */
+    @Override
+    public StaffActivityDateMemberTotalVo getStaffActivityGetMemberTotal(StaffTotalDto staffTotalDto) {
+        // 创建返回对象
+        StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
+        // 查询数据库获取数据
+        List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityGetMemberTotal(staffTotalDto);
+        // 将查询结果转为Map
+        Map<String, Integer> map = new HashMap<>();
+        if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
+            map = mgtMapIntTotalVoList.stream()
+                    .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+        }
+        // 获取日期范围
+        List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
+        int size = dateList.size();
+        // 创建日期和成员总数的数组
+        String[] dateMemberTotalKey = new String[size];
+        Integer[] dateMemberTotalValue = new Integer[size];
+        // 遍历日期列表,设置日期和成员总数的数组
+        String str;
+        Integer value;
+        for (int i = 0; i < size; i++) {
+            str = dateList.get(i);
+            dateMemberTotalKey[i] = str;
+            value = map.get(str);
+            dateMemberTotalValue[i] = (value != null) ? value : 0;
+        }
+        // 设置返回对象的日期和成员总数数组
+        staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
+        staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
+        // 返回结果对象
+        return staffActivityDateMemberTotalVo;
+    }
+
+    /**
+     * @description  员工端获客人数
+     * @author  jqs
+     * @date    2023/7/17 18:42
+     * @param staffTotalDto
+     * @return  StaffActivityDateMemberTotalVo
+     */
+    @Override
+    public StaffActivityDateMemberTotalVo getStaffActivityMemberTotal(StaffTotalDto staffTotalDto) {
+        // 创建返回对象
+        StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
+        // 查询数据库获取数据
+        List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityMemberTotal(staffTotalDto);
+        // 将查询结果转为Map
+        Map<String, Integer> map = new HashMap<>();
+        if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
+            map = mgtMapIntTotalVoList.stream()
+                    .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+        }
+        // 获取日期范围
+        List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
+        int size = dateList.size();
+        // 创建日期和成员总数的数组
+        String[] dateMemberTotalKey = new String[size];
+        Integer[] dateMemberTotalValue = new Integer[size];
+        // 遍历日期列表,设置日期和成员总数的数组
+        String str;
+        Integer value;
+        for (int i = 0; i < size; i++) {
+            str = dateList.get(i);
+            dateMemberTotalKey[i] = str;
+            value = map.get(str);
+            dateMemberTotalValue[i] = (value != null) ? value : 0;
+        }
+        // 设置返回对象的日期和成员总数数组
+        staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
+        staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
+        // 返回结果对象
+        return staffActivityDateMemberTotalVo;
+    }
+
+    /**
+     * @description  获取时间段日期
+     * @author  jqs
+     * @date    2023/7/17 19:11
+     * @param startDate
+     * @param endDate
+     * @return  List<String>
+     */
+    public static List<String> getDateRange(String startDate, String endDate) {
+        List<String> dateList = new ArrayList<>();
+        LocalDate start = LocalDate.parse(startDate);
+        LocalDate end = LocalDate.parse(endDate);
+        while (!start.isAfter(end)) {
+            dateList.add(start.format(DateTimeFormatter.ISO_DATE));
+            start = start.plusDays(1);
+        }
+        return dateList;
+    }
 }

--
Gitblit v1.7.1