| | |
| | | package com.ruoyi.member.service.impl.member; |
| | | |
| | | import com.google.common.collect.Lists; |
| | | import cn.binarywang.wx.miniapp.api.WxMaService; |
| | | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
| | | import com.alibaba.fastjson.JSONObject; |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | |
| | | import com.ruoyi.member.domain.pojo.member.IntegralRecord; |
| | | import com.ruoyi.member.domain.pojo.member.MemberArchive; |
| | | import com.ruoyi.member.domain.pojo.member.MemberTotal; |
| | | import com.ruoyi.member.domain.vo.MerMemberTotalVo; |
| | | import com.ruoyi.member.domain.vo.*; |
| | | import com.ruoyi.member.mapper.member.MemberMapper; |
| | | import com.ruoyi.member.service.member.IntegralRecordService; |
| | |
| | | } |
| | | |
| | | public static String getMobileByWX(String accessToken, String code) throws Exception { |
| | | String method = "POST"; |
| | | Map<String, String> headers = new HashMap<>(16); |
| | | headers.put("Content-Type", "application/json"); |
| | | headers.put("Accept", "application/json"); |
| | |
| | | appUserInfoVo.setNickName(member.getNickName()); |
| | | appUserInfoVo.setRealName(member.getRealName()); |
| | | appUserInfoVo.setPhonenumber(member.getMobile()); |
| | | //绑定会员显示绑定店铺 |
| | | if (member.getRelationShopId() != null && member.getBindingFlag() == 1) { |
| | | appUserInfoVo.setRelationShopId(member.getRelationShopId()); |
| | | Shop shop = shopService.getShop(member.getRelationShopId()).getData(); |
| | |
| | | appUserInfoVo.setBirthday(member.getBirthday()); |
| | | appUserInfoVo.setGender(member.getGender()); |
| | | appUserInfoVo.setAvatar(member.getAvatar()); |
| | | //待支付待核销统计 |
| | | AppOrderTotalVo appOrderTotalVo = orderService.getAppOrderTotal(userId).getData(); |
| | | appUserInfoVo.setNoPayCount(appOrderTotalVo.getNoPayCount()); |
| | | appUserInfoVo.setNoUseCount(appOrderTotalVo.getNoUseCount()); |
| | | //积分 |
| | | MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); |
| | | appUserInfoVo.setIntegral(memberTotal.getUseableIntegral()); |
| | | return appUserInfoVo; |
| | |
| | | MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); |
| | | // 设置MerMemberInfoVo对象的属性值 |
| | | merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount()); |
| | | merMemberInfoVo.setUserNumber(memberTotal.getTotalPayCount()); |
| | | merMemberInfoVo.setPayMoney(memberTotal.getTotalPayMoney()); |
| | | // 创建MerBaseDto对象 |
| | | MerBaseDto merBaseDto = new MerBaseDto(); |
| | | // 设置MerBaseDto对象的属性值 |
| | | merBaseDto.setShopId(merBaseGetDto.getShopId()); |
| | | merBaseDto.setUserId(userId); |
| | | // 获取未支付订单金额 |
| | | BigDecimal unpaidMoney = remoteOrderService.getMemberUnpaidOrder(merBaseDto).getData(); |
| | | merMemberInfoVo.setUnpaidMoney(unpaidMoney); |
| | | MerMemberSimpleTotalVo memberSimpleTotalVo = remoteOrderService.getMerMemberSimpleTotalVo(merBaseDto).getData(); |
| | | merMemberInfoVo.setUserNumber(memberSimpleTotalVo.getUserNumber()); |
| | | merMemberInfoVo.setPayMoney(memberSimpleTotalVo.getPayMoney()); |
| | | merMemberInfoVo.setUnpaidMoney(memberSimpleTotalVo.getUnpaidMoney()); |
| | | // 获取最近的会员任务 |
| | | MemberTaskSimpleVo memberTaskSimpleVo = remoteShopService.getLastMemberTask(userId).getData(); |
| | | if (memberTaskSimpleVo != null) { |
| | |
| | | } |
| | | // 设置MerMemberInfoVo对象的属性值 |
| | | merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime()); |
| | | merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime()); |
| | | merMemberInfoVo.setLastPayTime(memberTotal.getLastConsumeTime()); |
| | | // 返回MerMemberInfoVo对象 |
| | | return merMemberInfoVo; |
| | | } |
| | |
| | | memberTotal.setShopSuggestFlag(0); |
| | | memberTotal.setSignFlag(0); |
| | | memberTotal.setBuyFlag(0); |
| | | memberTotal.setTotalConsumeCount(0); |
| | | memberTotalService.saveOrUpdate(memberTotal); |
| | | } |
| | | |
| | |
| | | //活跃度赋值 |
| | | Date lastPayTime; |
| | | for (MgtMemberPageVo mgtMemberPageVo : memberPageVoList) { |
| | | if(null != mgtMemberPageVo.getRelationShopId()){ |
| | | R<Shop> shop_r = remoteShopService.getShop(mgtMemberPageVo.getRelationShopId()); |
| | | if(shop_r.getCode() == 200){ |
| | | Shop data = shop_r.getData(); |
| | | if(null != data){ |
| | | mgtMemberPageVo.setRelationShopName(data.getShopName()); |
| | | } |
| | | } |
| | | } |
| | | lastPayTime = mgtMemberPageVo.getLastPayTime(); |
| | | StringJoiner sj = new StringJoiner(","); |
| | | if (lastPayTime != null) { |
| | |
| | | mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime()); |
| | | mgtMemberGetVo.setGoodsType(member.getGoodsType()); |
| | | if(member.getBindingFlag()==1){ |
| | | mgtMemberGetVo.setRelationShopName(member.getRelationShopName()); |
| | | R<Shop> shop = remoteShopService.getShop(member.getRelationShopId()); |
| | | if(shop.getCode() == 200){ |
| | | Shop data = shop.getData(); |
| | | if(null != data){ |
| | | mgtMemberGetVo.setRelationShopName(data.getShopName()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral()); |
| | | mgtMemberGetVo.setMemberFrom(member.getCustomerSource()); |
| | |
| | | @Override |
| | | public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto) { |
| | | Date nowDay = DateUtils.getNowDate(); |
| | | MgtTotalMemberTotalVo mgtTotalMemberTotalVo = new MgtTotalMemberTotalVo(); |
| | | mgtTotalMemberTotalVo.setMemberTotal(0); |
| | | mgtTotalMemberTotalVo.setOnlineTotal(0); |
| | | mgtTotalMemberTotalVo.setOfflineTotal(0); |
| | | mgtTotalMemberTotalVo.setIntroduceTotal(0); |
| | | mgtTotalMemberTotalVo.setCycleTotal(0); |
| | | mgtTotalMemberTotalVo.setExperienceTotal(0); |
| | | mgtTotalMemberTotalVo.setServiceTotal(0); |
| | | mgtTotalMemberTotalVo.setManTotal(0); |
| | | mgtTotalMemberTotalVo.setManPercent(new BigDecimal("0")); |
| | | mgtTotalMemberTotalVo.setWomenTotal(0); |
| | | mgtTotalMemberTotalVo.setWomenPercent(new BigDecimal("0")); |
| | | mgtTotalMemberTotalVo.setAgeKey(new String[0]); |
| | | mgtTotalMemberTotalVo.setAgeValue(new Integer[0]); |
| | | mgtTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList()); |
| | | mgtTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList()); |
| | | mgtTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList()); |
| | | mgtTotalMemberTotalVo.setActivenessList(Lists.newArrayList()); |
| | | mgtTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList()); |
| | | mgtTotalMemberTotalVo.setMemberPayList(Lists.newArrayList()); |
| | | // 获取店铺ID |
| | | Long shopId = mgtBaseShopDto.getShopId(); |
| | | // 获取总会员数和不同年龄段的会员数 |
| | | MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); |
| | | MgtTotalMemberTotalVo totalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); |
| | | mgtTotalMemberTotalVo.setMemberTotal(totalMemberTotalVo.getMemberTotal()); |
| | | mgtTotalMemberTotalVo.setOnlineTotal(totalMemberTotalVo.getOnlineTotal()); |
| | | mgtTotalMemberTotalVo.setOfflineTotal(totalMemberTotalVo.getOfflineTotal()); |
| | | mgtTotalMemberTotalVo.setCycleTotal(totalMemberTotalVo.getCycleTotal()); |
| | | mgtTotalMemberTotalVo.setExperienceTotal(totalMemberTotalVo.getExperienceTotal()); |
| | | mgtTotalMemberTotalVo.setServiceTotal(totalMemberTotalVo.getServiceTotal()); |
| | | MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto); |
| | | Integer manTotal = mgtAgeTotalVo.getManTotal(); |
| | | Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); |
| | |
| | | BigDecimal bigTen = new BigDecimal("100.00"); |
| | | BigDecimal menPercent = new BigDecimal("100.00"); |
| | | BigDecimal womenPercent = new BigDecimal("100.00"); |
| | | if(personTotal==0){ |
| | | personTotalBig = bigTen; |
| | | } |
| | | if(manTotal==0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("50.00"); |
| | | womenPercent = new BigDecimal("50.00"); |
| | |
| | | menPercent = new BigDecimal("100.00"); |
| | | womenPercent = new BigDecimal("0.00"); |
| | | }else{ |
| | | menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP); |
| | | menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")); |
| | | womenPercent = bigTen.subtract(menPercent); |
| | | } |
| | | mgtTotalMemberTotalVo.setManPercent(menPercent); |
| | |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | | Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; |
| | | BigDecimal[] agePercentValue = new BigDecimal[5]; |
| | | Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge(); |
| | | BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString()); |
| | | BigDecimal hundredBig = new BigDecimal("100"); |
| | | if(totalPerson==0){ |
| | | totalPersonBig = hundredBig; |
| | | } |
| | | agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | // 设置年龄段数组和不同年龄段的会员数数组 |
| | | mgtTotalMemberTotalVo.setAgeKey(ageKey); |
| | | mgtTotalMemberTotalVo.setAgeValue(ageValue); |
| | |
| | | //获取会员消费排名 |
| | | List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto); |
| | | if (memberPayList != null && memberPayList.size() > 0) { |
| | | memberPayList = listRemoveNull(memberPayList); |
| | | //memberPayList = listRemoveNull(memberPayList); |
| | | mgtTotalMemberTotalVo.setMemberPayList(memberPayList); |
| | | } |
| | | //获取来源渠道排名 |
| | |
| | | */ |
| | | @Override |
| | | public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { |
| | | MgtPlTotalMemberTotalVo plTotalMemberTotalVo = new MgtPlTotalMemberTotalVo(); |
| | | plTotalMemberTotalVo.setMemberTotal(0); |
| | | plTotalMemberTotalVo.setMemberYesterday(0); |
| | | plTotalMemberTotalVo.setMemberSeven(0); |
| | | plTotalMemberTotalVo.setManTotal(0); |
| | | plTotalMemberTotalVo.setManPercent(new BigDecimal("0")); |
| | | plTotalMemberTotalVo.setWomenTotal(0); |
| | | plTotalMemberTotalVo.setWomenPercent(new BigDecimal("0")); |
| | | plTotalMemberTotalVo.setAgeKey(new String[0]); |
| | | plTotalMemberTotalVo.setAgeValue(new Integer[0]); |
| | | plTotalMemberTotalVo.setAgePercent(new BigDecimal[0]); |
| | | plTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList()); |
| | | plTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList()); |
| | | plTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList()); |
| | | plTotalMemberTotalVo.setActivenessList(Lists.newArrayList()); |
| | | plTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList()); |
| | | plTotalMemberTotalVo.setMemberPayList(Lists.newArrayList()); |
| | | plTotalMemberTotalVo.setMemberGoodsRankList(Lists.newArrayList()); |
| | | plTotalMemberTotalVo.setShopMemberRankList(Lists.newArrayList()); |
| | | Date nowDay = DateUtils.getNowDate(); |
| | | //如果区域代码不为null获取对应的商户id |
| | | if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { |
| | |
| | | mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode()); |
| | | mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode()); |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | List<Long> list = new ArrayList<>(); |
| | | if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) { |
| | | List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) |
| | | list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) |
| | | .map(Long::valueOf) |
| | | .collect(Collectors.toList()); |
| | | mgtBasePlatformDto.setShopIdList(list); |
| | | }else{ |
| | | return plTotalMemberTotalVo; |
| | | } |
| | | mgtBasePlatformDto.setShopIdList(list); |
| | | } |
| | | //获取基础统计 |
| | | MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); |
| | | MgtPlTotalMemberTotalVo plTotalMemberTotalByDayVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); |
| | | plTotalMemberTotalVo.setMemberTotal(plTotalMemberTotalByDayVo.getMemberTotal()); |
| | | plTotalMemberTotalVo.setMemberYesterday(plTotalMemberTotalByDayVo.getMemberYesterday()); |
| | | plTotalMemberTotalVo.setMemberSeven(plTotalMemberTotalByDayVo.getMemberSeven()); |
| | | MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); |
| | | if (mgtAgeTotalVo != null) { |
| | | plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal()); |
| | | plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal()); |
| | | } else { |
| | | plTotalMemberTotalVo.setManTotal(0); |
| | | plTotalMemberTotalVo.setWomenTotal(0); |
| | | Integer manTotal = mgtAgeTotalVo.getManTotal(); |
| | | Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); |
| | | Integer personTotal = manTotal + womenTotal; |
| | | BigDecimal manTotalBig = new BigDecimal(manTotal); |
| | | BigDecimal personTotalBig = new BigDecimal(personTotal); |
| | | BigDecimal bigTen = new BigDecimal("100.00"); |
| | | BigDecimal menPercent = new BigDecimal("100.00"); |
| | | BigDecimal womenPercent = new BigDecimal("100.00"); |
| | | if(personTotal==0){ |
| | | personTotalBig = bigTen; |
| | | } |
| | | if(manTotal==0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("50.00"); |
| | | womenPercent = new BigDecimal("50.00"); |
| | | }else if(manTotal==0&&womenTotal>0){ |
| | | menPercent = new BigDecimal("0.00"); |
| | | womenPercent = new BigDecimal("100.00"); |
| | | }else if(manTotal>0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("100.00"); |
| | | womenPercent = new BigDecimal("0.00"); |
| | | }else{ |
| | | menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")); |
| | | womenPercent = bigTen.subtract(menPercent); |
| | | } |
| | | plTotalMemberTotalVo.setManTotal(manTotal); |
| | | plTotalMemberTotalVo.setWomenTotal(womenTotal); |
| | | plTotalMemberTotalVo.setManPercent(menPercent); |
| | | plTotalMemberTotalVo.setWomenPercent(womenPercent); |
| | | } |
| | | |
| | | // 年龄段数组 |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | | Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; |
| | | BigDecimal[] agePercentValue = new BigDecimal[5]; |
| | | Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge(); |
| | | BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString()); |
| | | BigDecimal hundredBig = new BigDecimal("100"); |
| | | if(totalPerson==0){ |
| | | totalPersonBig = hundredBig; |
| | | } |
| | | agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | // 设置年龄段数组和不同年龄段的会员数数组 |
| | | plTotalMemberTotalVo.setAgeKey(ageKey); |
| | | plTotalMemberTotalVo.setAgeValue(ageValue); |
| | | plTotalMemberTotalVo.setAgePercent(agePercentValue); |
| | | // 获取不同调理类型的会员数 |
| | | List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto); |
| | | if (nurseTotalVos != null && nurseTotalVos.size() > 0) { |
| | |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | | Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; |
| | | BigDecimal[] agePercentValue = new BigDecimal[5]; |
| | | Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge(); |
| | | BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString()); |
| | | BigDecimal hundredBig = new BigDecimal("100"); |
| | | if(totalPerson==0){ |
| | | totalPersonBig = hundredBig; |
| | | } |
| | | agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | // 设置年龄段数组和不同年龄段的会员数数组 |
| | | mgtShopTotalMemberVo.setAgeKey(ageKey); |
| | | mgtShopTotalMemberVo.setAgeValue(ageValue); |
| | |
| | | if (memberTotalChangeDto.getGoodsOrderChange() != null) { |
| | | memberTotal.setTotalGoodsOrder(memberTotal.getTotalGoodsOrder() + memberTotalChangeDto.getGoodsOrderChange()); |
| | | } |
| | | //消费记录 |
| | | if(memberTotalChangeDto.getConsumeTime()!=null){ |
| | | memberTotal.setTotalConsumeCount(memberTotal.getTotalConsumeCount()+1); |
| | | memberTotal.setLastConsumeTime(memberTotalChangeDto.getConsumeTime()); |
| | | } |
| | | memberTotalService.saveOrUpdate(memberTotal); |
| | | } |
| | | |
| | |
| | | } |
| | | MerMemberFixedTotalVo memberFixedTotalVo = new MerMemberFixedTotalVo(); |
| | | Date nowDay = DateUtils.getNowDate(); |
| | | if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ |
| | | List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); |
| | | merTotalDto.setShopIdList(shopIdList); |
| | | merTotalDto.setShopId(null); |
| | | } |
| | | MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto); |
| | | Integer manTotal = mgtAgeTotalVo.getManTotal(); |
| | | Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); |
| | |
| | | BigDecimal bigTen = new BigDecimal("100.00"); |
| | | BigDecimal menPercent = new BigDecimal("100.00"); |
| | | BigDecimal womenPercent = new BigDecimal("100.00"); |
| | | if(personTotal==0){ |
| | | personTotalBig = bigTen; |
| | | } |
| | | if(manTotal==0&&womenTotal==0){ |
| | | menPercent = new BigDecimal("50.00"); |
| | | womenPercent = new BigDecimal("50.00"); |
| | |
| | | String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; |
| | | // 不同年龄段的会员数数组 |
| | | Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()}; |
| | | BigDecimal[] agePercentValue = new BigDecimal[5]; |
| | | Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge(); |
| | | BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString()); |
| | | BigDecimal hundredBig = new BigDecimal("100"); |
| | | if(totalPerson==0){ |
| | | totalPersonBig = hundredBig; |
| | | } |
| | | agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig); |
| | | // 设置年龄段数组和不同年龄段的会员数数组 |
| | | memberFixedTotalVo.setAgeKey(ageKey); |
| | | memberFixedTotalVo.setAgeValue(ageValue); |
| | | memberFixedTotalVo.setAgePercentValue(agePercentValue); |
| | | // 获取不同护理类型的会员数 |
| | | List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getMerMemberTotalNurse(merTotalDto); |
| | | if (nurseTotalVos != null && nurseTotalVos.size() > 0) { |
| | | nurseTotalVos = listRemoveNull(nurseTotalVos); |
| | | memberFixedTotalVo.setNurseTotalVos(nurseTotalVos); |
| | | }else{ |
| | | nurseTotalVos = new ArrayList<>(); |
| | | memberFixedTotalVo.setNurseTotalVos(nurseTotalVos); |
| | | } |
| | | //获取不同等级的会员数 |
| | |
| | | if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) { |
| | | memberLevelTotalVos = listRemoveNull(memberLevelTotalVos); |
| | | memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); |
| | | }else{ |
| | | memberLevelTotalVos = new ArrayList<>(); |
| | | memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); |
| | | } |
| | | // 获取不同商品类型的会员数 |
| | | List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto); |
| | | if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) { |
| | | goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); |
| | | memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); |
| | | }else{ |
| | | goodsTypeTotalVos = new ArrayList<>(); |
| | | memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); |
| | | } |
| | | //获取会员消费排名 |
| | | List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto); |
| | | if (memberPayList != null && memberPayList.size() > 0) { |
| | | memberPayList = listRemoveNull(memberPayList); |
| | | memberFixedTotalVo.setMemberPayList(memberPayList); |
| | | }else{ |
| | | memberPayList = new ArrayList<>(); |
| | | memberFixedTotalVo.setMemberPayList(memberPayList); |
| | | } |
| | | // 获取不同活跃度的会员数 |
| | |
| | | String actStartDate; |
| | | String actEndDate; |
| | | Integer count; |
| | | List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>(); |
| | | List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>(); |
| | | MgtMapIntTotalVo MgtMapIntTotalVo; |
| | | // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 |
| | | for (int i = 0; i < activenessList.size(); i++) { |
| | |
| | | MgtMapIntTotalVo = new MgtMapIntTotalVo(); |
| | | MgtMapIntTotalVo.setMapKey(activeness.getActivenessName()); |
| | | MgtMapIntTotalVo.setMapValue(count); |
| | | MgtMapIntTotalVoList.add(MgtMapIntTotalVo); |
| | | mgtMapIntTotalVoList.add(MgtMapIntTotalVo); |
| | | } |
| | | memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList); |
| | | memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList); |
| | | }else{ |
| | | List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>(); |
| | | memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList); |
| | | } |
| | | return memberFixedTotalVo; |
| | | } |
| | |
| | | } |
| | | MerMemberRecommendTotalVo memberRecommendTotalVo = new MerMemberRecommendTotalVo(); |
| | | //获取会员推荐排名 |
| | | List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto); |
| | | /*List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto); |
| | | if (recommendList != null && recommendList.size() > 0) { |
| | | recommendList = listRemoveNull(recommendList); |
| | | memberRecommendTotalVo.setRecommendList(recommendList); |
| | | } |
| | | }*/ |
| | | List<MgtMapIntTotalVo> recommendList = new ArrayList<>(); |
| | | memberRecommendTotalVo.setRecommendList(recommendList); |
| | | return memberRecommendTotalVo; |
| | | } |
| | | |
| | |
| | | orderAgeUserVoList.add(merOrderAgeUserVo); |
| | | return orderAgeUserVoList; |
| | | } |
| | | |
| | | /** |
| | | * @description 通过年龄层获取用户id列表 |
| | | * @author jqs |
| | | * @date 2023/8/23 18:59 |
| | | * @param ageType |
| | | * @return List<Long> |
| | | */ |
| | | @Override |
| | | public List<Long> listUserIdByAgeType(Integer ageType){ |
| | | MerTotalDto merTotalDto = new MerTotalDto(); |
| | | merTotalDto.setAgeType(ageType); |
| | | List<Long> userIdList = memberMapper.listOrderAgeUser(merTotalDto); |
| | | return userIdList; |
| | | } |
| | | /** |
| | | * @description |
| | | * @author jqs |