jiangqs
2023-06-19 f0acb97e91f456c9b402977416e73951b708a157
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -955,14 +955,93 @@
     */
    @Override
    public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto){
        Date nowDay = DateUtils.getNowDate();
        // 获取店铺ID
        Long shopId = mgtBaseShopDto.getShopId();
        // 获取总会员数和不同年龄段的会员数
        MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto);
        String[] ageKey = {"<20","21-30","31-40","41-50",">50"};
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(),mgtAgeTotalVo.getTwentyAge(),mgtAgeTotalVo.getThirtyAge(),mgtAgeTotalVo.getFortyAge(),mgtAgeTotalVo.getFiftyAge()};
        // 年龄段数组
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        // 设置年龄段数组和不同年龄段的会员数数组
        mgtTotalMemberTotalVo.setAgeKey(ageKey);
        mgtTotalMemberTotalVo.setAgeValue(ageValue);
        List<MgtNurseTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto);
        // 获取不同护理类型的会员数
        List<MgtMapTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto);
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
            String[] nurseKey = new String[nurseTotalVos.size()];
            Integer[] nurseValue = new Integer[nurseTotalVos.size()];
            // 遍历不同护理类型的会员数列表,设置护理类型数组和对应的会员数数组
            for (int i = 0; i < nurseTotalVos.size(); i++) {
                nurseKey[i] = nurseTotalVos.get(i).getMapKey();
                nurseValue[i] = nurseTotalVos.get(i).getMapValue();
            }
            mgtTotalMemberTotalVo.setNurseKey(nurseKey);
            mgtTotalMemberTotalVo.setNurseValue(nurseValue);
        }
        // 获取不同商品类型的会员数
        List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto);
        if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
            String[] goodsTypeKey = new String[goodsTypeTotalVos.size()];
            Integer[] goodsTypeValue = new Integer[goodsTypeTotalVos.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < goodsTypeTotalVos.size(); i++) {
                goodsTypeKey[i] = goodsTypeTotalVos.get(i).getMapKey();
                goodsTypeValue[i] = goodsTypeTotalVos.get(i).getMapValue();
            }
            mgtTotalMemberTotalVo.setGoodsTypeKey(goodsTypeKey);
            mgtTotalMemberTotalVo.setGoodsTypeValue(goodsTypeValue);
        }
        // 获取不同活跃度的会员数
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        if (activenessList != null && !activenessList.isEmpty()) {
            String[] activenessKey = new String[activenessList.size()];
            Integer[] activenessValue = new Integer[activenessList.size()];
            Activeness activeness;
            String actStartDate;
            String actEndDate;
            Integer count;
            // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
            for (int i = 0; i < activenessList.size(); i++) {
                activeness = activenessList.get(i);
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                count = memberMapper.getTotalMemberTotalActiveness(shopId, actStartDate, actEndDate);
                activenessKey[i] = activeness.getActivenessName();
                activenessValue[i] = count;
            }
            mgtTotalMemberTotalVo.setActivenessKey(activenessKey);
            mgtTotalMemberTotalVo.setActivenessValue(activenessValue);
        }
        //获取会员消费排名
        List<MgtMapTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
        if (memberPayList != null && memberPayList.size() > 0) {
            String[] memberPayKey = new String[memberPayList.size()];
            Integer[] memberPayValue = new Integer[memberPayList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < memberPayList.size(); i++) {
                memberPayKey[i] = memberPayList.get(i).getMapKey();
                memberPayValue[i] = memberPayList.get(i).getMapValue();
            }
            mgtTotalMemberTotalVo.setOrderRankKey(memberPayKey);
            mgtTotalMemberTotalVo.setOrderRankValue(memberPayValue);
        }
        //获取来源渠道排名
        List<MgtMapTotalVo> customerSourceList = memberMapper.getTotalMemberRankCustomerSource(mgtBaseShopDto);
        if (customerSourceList != null && customerSourceList.size() > 0) {
            String[] customerSourceKey = new String[customerSourceList.size()];
            Integer[] customerSourceValue = new Integer[customerSourceList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < customerSourceList.size(); i++) {
                customerSourceKey[i] = customerSourceList.get(i).getMapKey();
                customerSourceValue[i] = customerSourceList.get(i).getMapValue();
            }
            mgtTotalMemberTotalVo.setCustomerSourceKey(customerSourceKey);
            mgtTotalMemberTotalVo.setCustomerSourceValue(customerSourceValue);
        }
        // 返回总会员数和不同类型会员数的统计结果
        return mgtTotalMemberTotalVo;
    }
}