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