bug
jiangqs
2023-07-20 882edc4b8ac7cb11ec9d536b5573df2c7ed512ef
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;
@@ -124,6 +126,20 @@
        AppSureOrderGoodsVo appSureOrderGoodsVo;
        // 获取购买商品列表
        List<AppBuyGoodsDto> appBuyGoodsDtoList = appSureOrderDto.getAppBuyGoodsDtoList();
        //获取商品列表
        StringJoiner goodsIdSJ = new StringJoiner(",");
        for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
            goodsIdSJ.add(appBuyGoodsDto.getGoodsId());
        }
        List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData();
        Map<String, Goods> goodsMap = goodsList.stream()
                .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
        Boolean haveDeposit = false;
        for(Goods goods : goodsList){
            if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){
                haveDeposit = true;
            }
        }
        String goodsId;
        Integer buyNum;
        BigDecimal buyNumBig;
@@ -132,8 +148,11 @@
        BigDecimal goodsPrice;
        BigDecimal goodsTotalPrice;
        BigDecimal goodsRealPrice;
        MerBaseDto merBaseDto = new MerBaseDto();
        merBaseDto.setUserId(userId);
        merBaseDto.setShopId(appSureOrderDto.getShopId());
        // 获取用户优惠券列表
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(userId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).getData();
        // 初始化商品优惠券列表
        List<AppMemberCouponVo> appGoodsMemberCouponVoList;
        // 将优惠券列表转换为Map,以优惠券ID为键
@@ -152,14 +171,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();
            goods = goodsMap.get(goodsId);
            if(goods.getGoodsStatus()!=1){
                throw new ServiceException(AppErrorConstant.GOODS_DOWN);
            }
            // 设置订单商品信息
            appSureOrderGoodsVo.setGoodsId(goodsId);
            appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
@@ -183,7 +207,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,26 +217,46 @@
                            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);
                    }
                }
            }
            if(appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()){
                appSureOrderGoodsVo.setAppMemberCouponVoList(appMemberCouponVoList);
            }
            appSureOrderGoodsVo.setUseCoupon(useCoupon);
            appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
            appSureOrderGoodsVo.setCouponDiscount(discountMoney);
            appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
            goodsDeposit = goods.getSubscription();
            if (goodsDeposit == null) {
                goodsDeposit = new BigDecimal("0.00");
            // 获取商品押金
            goodsDeposit = goods.getSubscription();
            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) {
                goodsDeposit = goodsDeposit.multiply(buyNumBig);
            }else{
                if(haveDeposit){
                    goodsDeposit = goodsRealPrice;
                }else{
                    goodsDeposit = new BigDecimal("0.00");
                }
            }
            appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
            // 计算订单总金额
@@ -220,34 +264,73 @@
            couponDiscount = couponDiscount.add(discountMoney);
            orderPayDeposit = orderPayDeposit.add(goodsDeposit);
            orderPayMoney = orderPayMoney.add(goodsRealPrice);
            appSureOrderGoodsVoList.add(appSureOrderGoodsVo);
        }
        //处理优惠券列表
        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<>();
            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);
        appSureOrderVo.setCouponDiscount(couponDiscount);
@@ -297,6 +380,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());
@@ -323,8 +409,10 @@
        appPanicBuyVo.setGoodsTotalPrice(goodsTotalPrice);
        appPanicBuyVo.setGoodsRealPrice(goodsRealPrice);
        goodsDeposit = activityGoodsGetVo.getActivitySubscription();
        if (goodsDeposit == null) {
        if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
            goodsDeposit = new BigDecimal("0.00");
        }else{
            goodsDeposit = goodsDeposit.multiply(buyNumBig);
        }
        appPanicBuyVo.setGoodsDeposit(goodsDeposit);
        orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
@@ -353,6 +441,20 @@
        AppSureOrderGoodsVo appSureOrderGoodsVo;
        // 获取购买的商品列表
        List<AppBuyGoodsDto> appBuyGoodsDtoList = appPlaceOrderDto.getAppBuyGoodsDtoList();
        StringJoiner goodsIdSJ = new StringJoiner(",");
        for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
            goodsIdSJ.add(appBuyGoodsDto.getGoodsId());
        }
        //获取商品列表
        List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData();
        Map<String, Goods> goodsMap = goodsList.stream()
                .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
        Boolean haveDeposit = false;
        for(Goods goods : goodsList){
            if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){
                haveDeposit = true;
            }
        }
        // 初始化变量
        String goodsId;
        Integer buyNum;
@@ -365,8 +467,11 @@
        BigDecimal goodsPrice;
        BigDecimal goodsTotalPrice;
        BigDecimal goodsRealPrice;
        MerBaseDto merBaseDto = new MerBaseDto();
        merBaseDto.setUserId(userId);
        merBaseDto.setShopId(appPlaceOrderDto.getShopId());
        // 获取用户优惠券列表
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(userId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).getData();
        // 将用户优惠券列表转换为Map,方便后续查找
        Map<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
        AppMemberCouponVo appMemberCouponVo;
@@ -397,7 +502,7 @@
            goodsId = appBuyGoodsDto.getGoodsId();
            memberCouponId = appBuyGoodsDto.getMemberCouponId();
            // 获取商品信息
            goods = remoteGoodsService.getGoods(goodsId).getData();
            goods = goodsMap.get(goodsId);
            // 设置商品信息
            appSureOrderGoodsVo.setGoodsId(goodsId);
            appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
@@ -460,8 +565,14 @@
            appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
            // 获取商品押金
            goodsDeposit = goods.getSubscription();
            if (goodsDeposit == null) {
                goodsDeposit = new BigDecimal("0.00");
            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) {
                goodsDeposit = goodsDeposit.multiply(buyNumBig);
            }else{
                if(haveDeposit){
                    goodsDeposit = goodsRealPrice;
                }else{
                    goodsDeposit = new BigDecimal("0.00");
                }
            }
            appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
            // 计算商品总数量、商品总价、优惠总金额、支付押金、支付金额
@@ -553,7 +664,7 @@
        appPlaceOrderVo.setOrderId(orderId);
        appPlaceOrderVo.setOrderNo(orderNo);
        // 调用支付
        //使用优惠券
        //减去优惠券
        if(memberCouponSJ!=null){
            remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
        }
@@ -650,6 +761,7 @@
        String orderGoodsId;
        // 创建商品类型集合
        HashSet<String> goodsTypeSet = new HashSet<>();
        HashSet<String> goodsNurseSet = new HashSet<>();
        // 创建商品订单对象,并设置商品ID,商品名称,商品介绍,商品类型
        appSureOrderGoodsVo = new AppSureOrderGoodsVo();
        useCoupon = 0;
@@ -680,8 +792,10 @@
        appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
        // 获取商品押金
        goodsDeposit = activityGoodsGetVo.getActivitySubscription();
        if (goodsDeposit == null) {
        if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
            goodsDeposit = new BigDecimal("0.00");
        }else{
            goodsDeposit = goodsDeposit.multiply(buyNumBig);
        }
        appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
        // 计算商品数量,订单商品金额,优惠券折扣,订单支付押金,订单支付金额
@@ -724,6 +838,13 @@
        } else if (goods.getGoodsType() == 4) {
            goodsTypeSet.add("单品");
        }
        String goodsNurse = goods.getGoodsNurses();
        if(StringUtils.isNotBlank(goodsNurse)){
            String[] goodsNurseArr = goodsNurse.split(",");
            for(String str : goodsNurseArr){
                goodsNurseSet.add(str);
            }
        }
        // 创建订单,并设置订单ID,删除标志,订单状态,订单号,订单来源,店铺ID,用户ID,订单金额,优惠券金额,折扣金额,应收金额,应收押金,变动应收金额,支付类型
        Order order = new Order();
        order.setOrderId(orderId);
@@ -761,10 +882,11 @@
        // 保存订单
        this.save(order);
        // 更新用户商品类型
        if (goodsTypeSet != null && goodsTypeSet.size() > 0) {
        if (goodsTypeSet != null || goodsNurseSet!= null) {
            AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto();
            appMemberGoodsTypeDto.setUserId(userId);
            appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
            appMemberGoodsTypeDto.setGoodsNurseSet(goodsNurseSet);
            remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto);
        }
        // 设置订单ID和订单号
@@ -913,18 +1035,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;
    }
@@ -1328,7 +1442,10 @@
        BigDecimal goodsRealPrice;
        Long shopId = merNewOrderDto.getShopId();
        Shop shop = remoteShopService.getShop(shopId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(userId).getData();
        MerBaseDto merBaseDto = new MerBaseDto();
        merBaseDto.setUserId(userId);
        merBaseDto.setShopId(shopId);
        List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).getData();
        Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>();
        if (null != appMemberCouponVoList) {
            appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
@@ -1395,8 +1512,10 @@
            }
            goodsDeposit = goods.getSubscription();
            if (goodsDeposit == null) {
            if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
                goodsDeposit = new BigDecimal("0.00");
            }else{
                goodsDeposit = goodsDeposit.multiply(buyNumBig);
            }
            goodsNum = goodsNum + buyNum;
            orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
@@ -3200,4 +3319,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;
    }
}