| | |
| | | @Resource |
| | | private MemberArchiveService memberArchiveService; |
| | | |
| | | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | | |
| | | @Resource |
| | | private RemoteOrderService remoteOrderService; |
| | | |
| | | /** |
| | | * @description: TODO |
| | |
| | | @Override |
| | | public void updateMemberBinding(AppMemberBindingDto appMemberBindingDto){ |
| | | Member member = this.getByUserId(appMemberBindingDto.getUserId()); |
| | | if(member.getBindingFlag()==0){ |
| | | member.setBindingTime(new Date()); |
| | | } |
| | | member.setBindingFlag(appMemberBindingDto.getBindingFlag()); |
| | | member.setRelationShopId(appMemberBindingDto.getShopId()); |
| | | member.setRelationShopName(appMemberBindingDto.getShopName()); |
| | |
| | | member.setWxUnionid(null); |
| | | member.setMiniOpenid(null); |
| | | member.setBindingFlag(1); |
| | | member.setRelationShopId(merMemberAddDto.getShopId()); |
| | | member.setBindingTime(new Date()); |
| | | Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData(); |
| | | member.setRelationShopName(shop.getShopName()); |
| | | member.setCustomerSource("商户添加"); |
| | | member.setCreateTime(new Date()); |
| | | log.info("member-----------------"+member.toString()); |
| | |
| | | member.setRelationShopId(shop.getShopId()); |
| | | member.setRelationShopName(shop.getShopName()); |
| | | member.setBindingFlag(1); |
| | | member.setBindingTime(new Date()); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(mgtMemberRelEditDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | |
| | | // 获取不同护理类型的会员数 |
| | | 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); |
| | | nurseTotalVos = listRemoveNull(nurseTotalVos); |
| | | mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos); |
| | | } |
| | | // 获取不同商品类型的会员数 |
| | | 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); |
| | | goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); |
| | | mgtTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); |
| | | } |
| | | // 获取不同活跃度的会员数 |
| | | 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; |
| | | List<MgtMapTotalVo> mgtMapTotalVoList = new ArrayList<>(); |
| | | MgtMapTotalVo mgtMapTotalVo; |
| | | // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 |
| | | 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; |
| | | mgtMapTotalVo = new MgtMapTotalVo(); |
| | | mgtMapTotalVo.setMapKey(activeness.getActivenessName()); |
| | | mgtMapTotalVo.setMapValue(count); |
| | | mgtMapTotalVoList.add(mgtMapTotalVo); |
| | | } |
| | | mgtTotalMemberTotalVo.setActivenessKey(activenessKey); |
| | | mgtTotalMemberTotalVo.setActivenessValue(activenessValue); |
| | | mgtTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList); |
| | | } |
| | | //获取会员消费排名 |
| | | 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); |
| | | memberPayList = listRemoveNull(memberPayList); |
| | | mgtTotalMemberTotalVo.setMemberPayList(memberPayList); |
| | | } |
| | | //获取来源渠道排名 |
| | | 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); |
| | | customerSourceList = listRemoveNull(customerSourceList); |
| | | mgtTotalMemberTotalVo.setCustomerSourceList(customerSourceList); |
| | | } |
| | | // 返回总会员数和不同类型会员数的统计结果 |
| | | return mgtTotalMemberTotalVo; |
| | |
| | | return userIdList; |
| | | } |
| | | |
| | | /** |
| | | * @description 会员人数统计 |
| | | * @author jqs |
| | | * @date 2023/6/21 10:59 |
| | | * @param mgtBasePlatformDto |
| | | * @return MgtPlTotalMemberTotalVo |
| | | */ |
| | | @Override |
| | | public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto){ |
| | | Date nowDay = DateUtils.getNowDate(); |
| | | //如果区域代码不为null获取对应的商户id |
| | | if(StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())){ |
| | | MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); |
| | | mgtShopIdByCodeDto.setShopProvinceCode(mgtBasePlatformDto.getShopProvinceCode()); |
| | | mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode()); |
| | | mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode()); |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ |
| | | List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) |
| | | .map(Long::valueOf) |
| | | .collect(Collectors.toList()); |
| | | mgtBasePlatformDto.setShopIdList(list); |
| | | } |
| | | } |
| | | //获取基础统计 |
| | | MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); |
| | | MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); |
| | | if(mgtAgeTotalVo!=null){ |
| | | plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal()); |
| | | plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal()); |
| | | }else{ |
| | | plTotalMemberTotalVo.setManTotal(0); |
| | | plTotalMemberTotalVo.setWomenTotal(0); |
| | | } |
| | | |
| | | // 年龄段数组 |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | | Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; |
| | | // 设置年龄段数组和不同年龄段的会员数数组 |
| | | plTotalMemberTotalVo.setAgeKey(ageKey); |
| | | plTotalMemberTotalVo.setAgeValue(ageValue); |
| | | // 获取不同调理类型的会员数 |
| | | List<MgtMapTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto); |
| | | if (nurseTotalVos != null && nurseTotalVos.size() > 0) { |
| | | nurseTotalVos = listRemoveNull(nurseTotalVos); |
| | | plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos); |
| | | } |
| | | // 获取不同商品类型的会员数 |
| | | List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto); |
| | | if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) { |
| | | goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); |
| | | plTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); |
| | | } |
| | | // 获取不同活跃度的会员数 |
| | | List<Long> shopIdList = mgtBasePlatformDto.getShopIdList(); |
| | | List<Activeness> activenessList = remoteConfigService.listActiveness().getData(); |
| | | if (activenessList != null && !activenessList.isEmpty()) { |
| | | Activeness activeness; |
| | | String actStartDate; |
| | | String actEndDate; |
| | | Integer count; |
| | | List<MgtMapTotalVo> mgtMapTotalVoList = new ArrayList<>(); |
| | | MgtMapTotalVo mgtMapTotalVo; |
| | | // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 |
| | | 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.getPlTotalMemberTotalActiveness(shopIdList, actStartDate, actEndDate); |
| | | if(StringUtils.isNotBlank(activeness.getActivenessName())){ |
| | | mgtMapTotalVo = new MgtMapTotalVo(); |
| | | mgtMapTotalVo.setMapKey(activeness.getActivenessName()); |
| | | mgtMapTotalVo.setMapValue(count); |
| | | mgtMapTotalVoList.add(mgtMapTotalVo); |
| | | } |
| | | } |
| | | plTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList); |
| | | } |
| | | //获取会员消费排名 |
| | | List<MgtMapTotalVo> memberPayList = memberMapper.getPlTotalMemberRankPay(mgtBasePlatformDto); |
| | | if (memberPayList != null && memberPayList.size() > 0) { |
| | | memberPayList = listRemoveNull(memberPayList); |
| | | plTotalMemberTotalVo.setMemberPayList(memberPayList); |
| | | } |
| | | //获取来源渠道排名 |
| | | List<MgtMapTotalVo> customerSourceList = memberMapper.getPlTotalMemberRankCustomerSource(mgtBasePlatformDto); |
| | | if (customerSourceList != null && customerSourceList.size() > 0) { |
| | | customerSourceList = listRemoveNull(customerSourceList); |
| | | plTotalMemberTotalVo.setCustomerSourceList(customerSourceList); |
| | | } |
| | | //获取商铺会员排名 |
| | | List<MgtMapTotalVo> shopMemberRankList = memberMapper.getPlTotalMemberRank(mgtBasePlatformDto); |
| | | if (shopMemberRankList != null && shopMemberRankList.size() > 0) { |
| | | shopMemberRankList = listRemoveNull(shopMemberRankList); |
| | | plTotalMemberTotalVo.setShopMemberRankList(shopMemberRankList); |
| | | } |
| | | List<MgtMapTotalVo> memberGoodsRankList = remoteOrderService.listMemberGoodsRank(mgtBasePlatformDto).getData(); |
| | | if (memberGoodsRankList != null && memberGoodsRankList.size() > 0) { |
| | | memberGoodsRankList = listRemoveNull(memberGoodsRankList); |
| | | plTotalMemberTotalVo.setMemberGoodsRankList(memberGoodsRankList); |
| | | } |
| | | return plTotalMemberTotalVo; |
| | | } |
| | | |
| | | /** |
| | | * @description 去除空字符串 |
| | | * @author jqs |
| | | * @date 2023/6/27 17:35 |
| | | * @param mgtMapTotalVos |
| | | * @return List<MgtMapTotalVo> |
| | | */ |
| | | private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos){ |
| | | for (int i = 0; i < mgtMapTotalVos.size(); i++) { |
| | | if(StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())){ |
| | | mgtMapTotalVos.remove(i); |
| | | } |
| | | } |
| | | return mgtMapTotalVos; |
| | | } |
| | | |
| | | /** |
| | | * @description 通过shopId获取userId |
| | | * @author jqs |
| | | * @date 2023/6/21 17:11 |
| | | * @param shopIdList |
| | | * @return List<Long> |
| | | */ |
| | | @Override |
| | | public List<Long> listUserIdByShopId(List<Long> shopIdList){ |
| | | return memberMapper.listUserIdByShopId(shopIdList); |
| | | } |
| | | |
| | | /** |
| | | * @description 通过shopId获取user统计 |
| | | * @author jqs |
| | | * @date 2023/6/21 17:19 |
| | | * @param shopIdList |
| | | * @return MgtShopTotalMemberVo |
| | | */ |
| | | @Override |
| | | public MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList){ |
| | | MgtShopTotalMemberVo mgtShopTotalMemberVo = new MgtShopTotalMemberVo(); |
| | | MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); |
| | | mgtBasePlatformDto.setShopIdList(shopIdList); |
| | | MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); |
| | | mgtShopTotalMemberVo.setManTotal(mgtAgeTotalVo.getManTotal()); |
| | | mgtShopTotalMemberVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal()); |
| | | // 年龄段数组 |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | | Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; |
| | | // 设置年龄段数组和不同年龄段的会员数数组 |
| | | mgtShopTotalMemberVo.setAgeKey(ageKey); |
| | | mgtShopTotalMemberVo.setAgeValue(ageValue); |
| | | return mgtShopTotalMemberVo; |
| | | } |
| | | } |