From dbff53150cdc807faa56c0d1a947d24b69f372b9 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期四, 31 八月 2023 18:43:20 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 221 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 187 insertions(+), 34 deletions(-) diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java index d1b6836..47fe560 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java @@ -20,6 +20,7 @@ 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; @@ -27,6 +28,7 @@ import com.ruoyi.member.service.member.MemberService; import com.ruoyi.member.service.member.MemberTotalService; import com.ruoyi.member.util.HttpUtils; +import com.ruoyi.member.util.MsgUtils; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; @@ -390,8 +392,8 @@ for(Activeness activeness : activenessList){ if(activeness.getActivenessName().equals(merMemberPageDto.getMemberActiveness())){ Date nowDay = DateUtils.getNowDate(); - String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay())); - String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay())); + String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay())); + String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay())); merMemberPageDto.setActStartDate(actStartDate); merMemberPageDto.setActEndDate(actEndDate); break; @@ -421,13 +423,15 @@ MgtActivenessJudgeVo mgtActivenessJudgeVo; for (Activeness activeness : activenessList) { mgtActivenessJudgeVo = new MgtActivenessJudgeVo(); - mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay())); - mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1)); + mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), -activeness.getEndDay())); + mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), -activeness.getStartDay())); mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName()); + mgtActivenessJudgeVoList.add(mgtActivenessJudgeVo); } //活跃度赋值 Date lastPayTime; for (MerMemberPageVo mgtMemberPageVo : merMemberPageVoList) { + //实际是最后服务时间 lastPayTime = mgtMemberPageVo.getLastPayTime(); StringJoiner sj = new StringJoiner(","); if (lastPayTime != null) { @@ -473,16 +477,16 @@ MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); // 设置MerMemberInfoVo对象的属性值 merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount()); - merMemberInfoVo.setUserNumber(memberTotal.getUsedServiceCount()); - 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) { @@ -491,7 +495,7 @@ } // 设置MerMemberInfoVo对象的属性值 merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime()); - merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime()); + merMemberInfoVo.setLastPayTime(memberTotal.getLastConsumeTime()); // 返回MerMemberInfoVo对象 return merMemberInfoVo; } @@ -524,6 +528,7 @@ member.setBindingFlag(appMemberBindingDto.getBindingFlag()); member.setRelationShopId(appMemberBindingDto.getShopId()); member.setRelationShopName(appMemberBindingDto.getShopName()); + member.setBindingType(appMemberBindingDto.getBindingType()); this.saveOrUpdate(member); } @@ -623,12 +628,13 @@ // Get the sysUser by mobile number SysUser sysUser = sysUserService.getSysUserByMobile(phoneNumber).getData(); // If sysUser does not exist, create a new one - if (sysUser == null) { + if (sysUser == null || !sysUser.getUserType().equals("03")) { String memberId = IdUtils.simpleUUID(); sysUser = new SysUser(); sysUser.setUserName(memberId); sysUser.setUserType("03"); sysUser.setNickName(merMemberAddDto.getRealName()); + sysUser.setPhonenumber(merMemberAddDto.getPhonenumber()); sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); String password = "hongruitang"; sysUser.setPassword(SecurityUtils.encryptPassword(password)); @@ -645,6 +651,7 @@ member.setNickName(merMemberAddDto.getRealName()); member.setRealName(merMemberAddDto.getRealName()); member.setGender(merMemberAddDto.getGender()); + member.setLevel(merMemberAddDto.getLevel()); member.setMobile(phoneNumber); member.setReferrer(merMemberAddDto.getReferrer()); member.setBirthday(merMemberAddDto.getBirthday()); @@ -654,11 +661,18 @@ member.setMiniOpenid(null); member.setBindingFlag(1); member.setBindingTime(new Date()); + member.setBindingType(6); // Get shop information and set it to the member Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData(); member.setRelationShopName(shop.getShopName()); member.setCustomerSource(merMemberAddDto.getCustomerSource()); member.setCreateTime(new Date()); + //调理问题 + List<String> memberNurse = merMemberAddDto.getMemberNurse(); + if(memberNurse!=null&&!memberNurse.isEmpty()){ + String memberNurseString = String.join(",", memberNurse); + member.setMemberNurse(memberNurseString); + } // Save the member and initialize member total this.saveOrUpdate(member); initMemberTotal(memberId); @@ -676,6 +690,8 @@ ).collect(Collectors.toList()); memberArchiveService.saveBatch(memberArchiveList); } + }else{ + throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE); } return sysUser.getUserId(); } @@ -853,6 +869,7 @@ memberTotal.setShopSuggestFlag(0); memberTotal.setSignFlag(0); memberTotal.setBuyFlag(0); + memberTotal.setTotalConsumeCount(0); memberTotalService.saveOrUpdate(memberTotal); } @@ -885,8 +902,8 @@ .filter(activeness -> activeness.getActivenessId().equals(merMemberPageDto.getActivenessId())) .findFirst() .ifPresent(activeness -> { - merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()))); - merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()))); + merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()))); + merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()))); }); } //处理标签为正则表达 @@ -916,8 +933,8 @@ MgtActivenessJudgeVo mgtActivenessJudgeVo; for (Activeness activeness : activenessList) { mgtActivenessJudgeVo = new MgtActivenessJudgeVo(); - mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay())); - mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1)); + mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), -activeness.getEndDay())); + mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), -activeness.getStartDay())); mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName()); } //活跃度赋值 @@ -958,6 +975,7 @@ member.setRelationShopId(shop.getShopId()); member.setRelationShopName(shop.getShopName()); member.setBindingFlag(1); + member.setBindingType(7); member.setBindingTime(new Date()); member.setUpdateTime(new Date()); member.setUpdateUserId(mgtMemberRelEditDto.getUserId()); @@ -1024,6 +1042,7 @@ */ @Override public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto) { + log.info("会员积分变动---"+memberIntegralChangeDto.toString()); MemberTotal memberTotal = memberTotalService.getById(memberIntegralChangeDto.getMemberId()); Integer recordType = memberIntegralChangeDto.getRecordType(); Integer changeType = memberIntegralChangeDto.getChangeType(); @@ -1225,6 +1244,9 @@ 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"); @@ -1235,7 +1257,7 @@ 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); @@ -1244,6 +1266,18 @@ 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); @@ -1277,8 +1311,8 @@ // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 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())); + 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); MgtMapIntTotalVo = new MgtMapIntTotalVo(); MgtMapIntTotalVo.setMapKey(activeness.getActivenessName()); @@ -1290,7 +1324,7 @@ //获取会员消费排名 List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto); if (memberPayList != null && memberPayList.size() > 0) { - memberPayList = listRemoveNull(memberPayList); + //memberPayList = listRemoveNull(memberPayList); mgtTotalMemberTotalVo.setMemberPayList(memberPayList); } //获取来源渠道排名 @@ -1334,31 +1368,67 @@ 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); } + 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); + 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) { @@ -1390,8 +1460,8 @@ // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 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())); + 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())) { MgtMapIntTotalVo = new MgtMapIntTotalVo(); @@ -1475,6 +1545,18 @@ 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); @@ -1490,6 +1572,7 @@ */ @Override public void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto) { + log.info("会员统计变动---"+memberTotalChangeDto.toString()); Member member = this.getByUserId(memberTotalChangeDto.getUserId()); MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); //积分变动 @@ -1500,6 +1583,17 @@ } else { memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getChangeIntegral()); memberTotal.setTotalIntegral(memberTotal.getTotalIntegral() + memberTotalChangeDto.getChangeIntegral()); + IntegralRecord integralRecord = new IntegralRecord(); + integralRecord.setDelFlag(0); + integralRecord.setUserId(memberTotalChangeDto.getUserId()); + integralRecord.setChangeType(5); + integralRecord.setCreateTime(new Date()); + integralRecord.setChangeIntegral(memberTotalChangeDto.getChangeIntegral()); + integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+memberTotalChangeDto.getChangeIntegral()); + integralRecord.setChangeReason("订单【"+memberTotalChangeDto.getOrderNo()+"】获得积分"); + integralRecord.setOrderId(memberTotalChangeDto.getOrderId()); + integralRecord.setOrderNo(memberTotalChangeDto.getOrderNo()); + integralRecordService.saveOrUpdate(integralRecord); } } //消费变动 @@ -1546,6 +1640,11 @@ } 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); } @@ -1600,6 +1699,9 @@ 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"); @@ -1610,7 +1712,7 @@ menPercent = new BigDecimal("100.00"); womenPercent = new BigDecimal("0.00"); }else{ - menPercent = manTotalBig.divide(personTotalBig,0,BigDecimal.ROUND_HALF_UP); + menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")); womenPercent = bigTen.subtract(menPercent); } memberFixedTotalVo.setManPercent(menPercent); @@ -1619,9 +1721,22 @@ 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) { @@ -1658,8 +1773,8 @@ // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 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())); + actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay())); + actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay())); merTotalDto.setStartDate(actStartDate); merTotalDto.setEndDate(actEndDate); count = memberMapper.getMerMemberTotalActiveness(merTotalDto); @@ -1714,11 +1829,13 @@ } 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; } @@ -1764,7 +1881,20 @@ 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 @@ -1846,6 +1976,7 @@ */ @Override public Boolean changeIntegral(IntegralChangeDto integralChangeDto){ + log.info("会员积分变动---"+integralChangeDto.toString()); Member member = this.getByUserId(integralChangeDto.getUserId()); Integer integralType = integralChangeDto.getIntegralType(); Integer changeIntegral = integralChangeDto.getChangeIntegral(); @@ -1966,4 +2097,26 @@ updateWrapper.set(Member::getRelationShopName,mgtMemberShopNameDto.getShopName()); this.update(updateWrapper); } + + /** + * @description 发送生日祝福 + * @author jqs + * @date 2023/8/7 15:40 + * @param + * @return void + */ + @Override + public void sendBirthdayBless(){ + List<String> mobileList = memberMapper.listTodayBirthday(); + if(mobileList!=null&&!mobileList.isEmpty()){ + log.info("生日祝福发送短信---"+mobileList.toString()); + for(String mobile : mobileList){ + try { + MsgUtils.sendMsg(mobile,null,null); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } } -- Gitblit v1.7.1