From 156e141e55a8abf486157d1fa89d25e23f4a06a3 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 25 八月 2023 19:32:30 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java |  503 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 394 insertions(+), 109 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 cf95a7c..b3cc1d8 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
@@ -4,6 +4,7 @@
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -21,8 +22,12 @@
 import com.ruoyi.member.domain.pojo.member.MemberTotal;
 import com.ruoyi.member.domain.vo.*;
 import com.ruoyi.member.mapper.member.MemberMapper;
-import com.ruoyi.member.service.member.*;
+import com.ruoyi.member.service.member.IntegralRecordService;
+import com.ruoyi.member.service.member.MemberArchiveService;
+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.*;
@@ -46,6 +51,8 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -84,8 +91,6 @@
     @Resource
     private RemoteOrderService orderService;
 
-    @Resource
-    private MemberNurseService memberNurseService;
 
     @Resource
     private RemoteConfigService remoteConfigService;
@@ -196,7 +201,26 @@
             String errcode = jsonUserPhoneNumber.getString("errcode");
             String errmsg = jsonUserPhoneNumber.getString("errmsg");
             if (!"0".equals(errcode)) {
-                throw new ServiceException(errmsg);
+                //因为生产测试差异,临时更新token
+                redisService.deleteObject(SecurityConstant.WX_TOKEN);
+                String responseAccessToken = getAccessTokenByWX();
+                JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
+                accessToken = jsonAccessToken.getString("access_token");
+                errmsg = jsonAccessToken.getString("errmsg");
+                Long expiresIn = jsonAccessToken.getLong("expires_in");
+                if (StringUtils.isBlank(accessToken)) {
+                    throw new ServiceException(errmsg);
+                } else {
+                    expiresIn = expiresIn - 100;
+                    redisService.setCacheObject(SecurityConstant.WX_TOKEN, accessToken, Long.valueOf(expiresIn), TimeUnit.SECONDS);
+                }
+                responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode());
+                jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
+                errcode = jsonUserPhoneNumber.getString("errcode");
+                errmsg = jsonUserPhoneNumber.getString("errmsg");
+                if (!"0".equals(errcode)) {
+                    throw new ServiceException(errmsg);
+                }
             }
             String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
             JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
@@ -222,6 +246,7 @@
             sysUser.setUserName(memberId);
             sysUser.setUserType("03");
             sysUser.setNickName("鸿瑞堂用户");
+            sysUser.setPhonenumber(mobile);
             sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
             String password = "hongruitang";
             sysUser.setPassword(SecurityUtils.encryptPassword(password));
@@ -231,6 +256,7 @@
             member.setMemberNo(memberNo);
             member.setUserId(sysUser.getUserId());
             member.setDelFlag(0);
+            member.setFrozenFlag(0);
             member.setNickName("鸿瑞堂用户");
             member.setRealName("鸿瑞堂用户");
             member.setCustomerSource("小程序");
@@ -325,27 +351,28 @@
         switch (editType) {
             case 1:
                 member.setNickName(editValue);
-                member.setUpdateTime(new Date());
-                member.setUpdateUserId(appEditUserDto.getUserId());
-                this.saveOrUpdate(member);
                 break;
             case 2:
+                member.setAvatar(editValue);
                 break;
             case 3:
                 member.setGender(Integer.valueOf(editValue));
-                member.setUpdateTime(new Date());
-                member.setUpdateUserId(appEditUserDto.getUserId());
-                this.saveOrUpdate(member);
                 break;
             case 4:
+                if(editValue.compareTo(DateUtils.getDate())>0){
+                    throw new ServiceException(AppErrorConstant.BIRTHDAY_BEYOND);
+                }
                 member.setBirthday(editValue);
-                member.setUpdateTime(new Date());
-                member.setUpdateUserId(appEditUserDto.getUserId());
-                this.saveOrUpdate(member);
+                break;
+            case 5:
+                member.setRealName(editValue);
                 break;
             default:
                 break;
         }
+        member.setUpdateTime(new Date());
+        member.setUpdateUserId(appEditUserDto.getUserId());
+        this.saveOrUpdate(member);
         sysUserService.editUserInfo(appEditUserDto);
     }
 
@@ -357,19 +384,33 @@
      */
     @Override
     public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) {
+        //处理活跃度
         List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
         if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) {
             if(!activenessList.isEmpty()){
                 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;
                     }
                 }
+            }
+        }
+        //处理剩余次数
+        if(merMemberPageDto.getSurpNum()!=null){
+            if(merMemberPageDto.getSurpNum()==1){
+                merMemberPageDto.setSurpStartNum(0);
+                merMemberPageDto.setSurpEndNum(5);
+            }else if(merMemberPageDto.getSurpNum()==2){
+                merMemberPageDto.setSurpStartNum(5);
+                merMemberPageDto.setSurpEndNum(10);
+            }else if(merMemberPageDto.getSurpNum()==3){
+                merMemberPageDto.setSurpStartNum(10);
+                merMemberPageDto.setSurpEndNum(999999999);
             }
         }
         List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto);
@@ -381,13 +422,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) {
@@ -423,7 +466,7 @@
         Member member = this.getByUserId(userId);
         // 设置MerMemberInfoVo对象的属性值
         merMemberInfoVo.setUserId(userId);
-        merMemberInfoVo.setNickName(member.getNickName());
+        merMemberInfoVo.setRealName(member.getRealName());
         merMemberInfoVo.setPhonenumber(member.getMobile());
         merMemberInfoVo.setAvatar(member.getAvatar());
         merMemberInfoVo.setBirthday(member.getBirthday());
@@ -433,7 +476,7 @@
         MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
         // 设置MerMemberInfoVo对象的属性值
         merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount());
-        merMemberInfoVo.setUserNumber(memberTotal.getUsedServiceCount());
+        merMemberInfoVo.setUserNumber(memberTotal.getTotalPayCount());
         merMemberInfoVo.setPayMoney(memberTotal.getTotalPayMoney());
         // 创建MerBaseDto对象
         MerBaseDto merBaseDto = new MerBaseDto();
@@ -484,6 +527,7 @@
         member.setBindingFlag(appMemberBindingDto.getBindingFlag());
         member.setRelationShopId(appMemberBindingDto.getShopId());
         member.setRelationShopName(appMemberBindingDto.getShopName());
+        member.setBindingType(appMemberBindingDto.getBindingType());
         this.saveOrUpdate(member);
     }
 
@@ -498,7 +542,7 @@
         MerMemberBasicFileVo merMemberBasicFileVo = new MerMemberBasicFileVo();
         Member member = this.getByUserId(userId);
         BeanUtils.copyProperties(member, merMemberBasicFileVo);
-        merMemberBasicFileVo.setNickName(member.getNickName());
+        merMemberBasicFileVo.setRealName(member.getRealName());
         merMemberBasicFileVo.setPhonenumber(member.getMobile());
         merMemberBasicFileVo.setCreateTime(member.getCreateTime());
         /*List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId);
@@ -573,7 +617,7 @@
      * @param merMemberAddDto
      */
     @Override
-    public void addMerMember(MerMemberAddDto merMemberAddDto) {
+    public Long addMerMember(MerMemberAddDto merMemberAddDto) {
         String phoneNumber = merMemberAddDto.getPhonenumber();
         Member oldMember = this.getByMobile(phoneNumber);
         // Check if the member already exists
@@ -583,12 +627,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.getNickName());
+            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));
@@ -601,9 +646,11 @@
             member.setMemberId(memberId);
             member.setUserId(sysUser.getUserId());
             member.setDelFlag(0);
-            member.setNickName(merMemberAddDto.getNickName());
-            member.setRealName(merMemberAddDto.getNickName());
+            member.setFrozenFlag(0);
+            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());
@@ -613,11 +660,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("商户添加");
+            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);
@@ -635,7 +689,10 @@
                 ).collect(Collectors.toList());
                 memberArchiveService.saveBatch(memberArchiveList);
             }
+        }else{
+            throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE);
         }
+        return sysUser.getUserId();
     }
 
     /**
@@ -645,49 +702,54 @@
      */
     @Override
     public void editMerMember(MerMemberEditDto merMemberEditDto) {
-    // 获取用户信息
-    Member member = this.getByUserId(merMemberEditDto.getEditUserId());
-     // 检查手机号是否已经存在
-    if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
-        Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
-        if (memberOld != null) {
-            throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
+        // 获取用户信息
+        Member member = this.getByUserId(merMemberEditDto.getEditUserId());
+         // 检查手机号是否已经存在
+        if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
+            Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
+            if (memberOld != null) {
+                throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
+            }
+        }
+         // 更新用户信息
+        member.setRealName(merMemberEditDto.getRealName());
+        member.setMobile(merMemberEditDto.getPhonenumber());
+        member.setGender(merMemberEditDto.getGender());
+        member.setReferrer(merMemberEditDto.getReferrer());
+        member.setCustomerSource(merMemberEditDto.getCustomerSource());
+        member.setLevel(merMemberEditDto.getLevel());
+        member.setBirthday(merMemberEditDto.getBirthday());
+        member.setUpdateUserId(merMemberEditDto.getUserId());
+        member.setUpdateTime(new Date());
+        List<String> memberNurse = merMemberEditDto.getMemberNurse();
+        if(memberNurse!=null&&!memberNurse.isEmpty()){
+            String memberNurseString = String.join(",", memberNurse);
+            member.setMemberNurse(memberNurseString);
+        }
+        this.saveOrUpdate(member);
+         // 更新用户手机号
+        SysUser sysUser = new SysUser();
+        sysUser.setUserId(merMemberEditDto.getEditUserId());
+        sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
+        sysUserService.updateUserMobile(sysUser);
+         // 删除用户的档案信息
+        memberArchiveService.deleteByUserId(sysUser.getUserId());
+         // 添加用户的档案信息
+        List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
+        if (achiveList != null && !achiveList.isEmpty()) {
+            // 构造用户档案列表
+            List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
+                MemberArchive memberArchive = new MemberArchive();
+                memberArchive.setDelFlag(0);
+                memberArchive.setUserId(sysUser.getUserId());
+                memberArchive.setFieldId(memberArchiveVo.getFieldId());
+                memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
+                return memberArchive;
+            }).collect(Collectors.toList());
+             // 批量保存用户档案信息
+            memberArchiveService.saveBatch(memberArchiveList);
         }
     }
-     // 更新用户信息
-    member.setRealName(merMemberEditDto.getNickName());
-    member.setMobile(merMemberEditDto.getPhonenumber());
-    member.setGender(merMemberEditDto.getGender());
-    member.setReferrer(merMemberEditDto.getReferrer());
-    member.setCustomerSource(merMemberEditDto.getCustomerSource());
-    member.setLevel(merMemberEditDto.getLevel());
-    member.setBirthday(merMemberEditDto.getBirthday());
-    member.setUpdateUserId(merMemberEditDto.getUserId());
-    member.setUpdateTime(new Date());
-    this.saveOrUpdate(member);
-     // 更新用户手机号
-    SysUser sysUser = new SysUser();
-    sysUser.setUserId(merMemberEditDto.getEditUserId());
-    sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
-    sysUserService.updateUserMobile(sysUser);
-     // 删除用户的档案信息
-    memberArchiveService.deleteByUserId(sysUser.getUserId());
-     // 添加用户的档案信息
-    List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
-    if (achiveList != null && !achiveList.isEmpty()) {
-        // 构造用户档案列表
-        List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
-            MemberArchive memberArchive = new MemberArchive();
-            memberArchive.setDelFlag(0);
-            memberArchive.setUserId(sysUser.getUserId());
-            memberArchive.setFieldId(memberArchiveVo.getFieldId());
-            memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
-            return memberArchive;
-        }).collect(Collectors.toList());
-         // 批量保存用户档案信息
-        memberArchiveService.saveBatch(memberArchiveList);
-    }
-}
 
     /**
      * @param mobile
@@ -708,24 +770,51 @@
      */
     @Override
     public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto) {
+        // 根据用户ID获取会员信息
         Member member = this.getByUserId(appMemberGoodsTypeDto.getUserId());
+        // 获取商品类型集合和商品护理集合
         HashSet<String> goodsTypeSet = appMemberGoodsTypeDto.getGoodsTypeSet();
+        HashSet<String> goodsNurseSet = appMemberGoodsTypeDto.getGoodsNurseSet();
+        // 如果会员存在
         if (member != null) {
-            String goodsType = member.getGoodsType();
+            // 标识是否有变化
             Boolean change = false;
-            for (String str : goodsTypeSet) {
-                if (goodsType != null) {
-                    if (!goodsType.contains(str)) {
-                        goodsType = goodsType + "," + str;
+            // 更新商品类型
+            if (goodsTypeSet != null && goodsTypeSet.size() > 0) {
+                String goodsType = member.getGoodsType();
+                HashSet<String> goodsTypeOldSet = new HashSet<>();
+                // 如果商品类型不为空
+                if (StringUtils.isNotBlank(goodsType)) {
+                    goodsTypeOldSet = new HashSet<>(Arrays.asList(goodsType.split(",")));
+                    // 如果商品类型集合相等
+                    if (!goodsTypeSet.equals(goodsTypeOldSet)) {
                         change = true;
                     }
                 } else {
-                    goodsType = str;
                     change = true;
                 }
+                goodsTypeOldSet.addAll(goodsTypeSet);
+                member.setGoodsType(String.join(",", goodsTypeOldSet));
             }
+            // 更新商品护理
+            if (goodsNurseSet != null && goodsNurseSet.size() > 0) {
+                String memberNurse = member.getMemberNurse();
+                HashSet<String> memberNurseOldSet = new HashSet<>();
+                // 如果会员护理不为空
+                if (StringUtils.isNotBlank(memberNurse)) {
+                    memberNurseOldSet = new HashSet<>(Arrays.asList(memberNurse.split(",")));
+                    // 如果商品护理集合相等
+                    if (!goodsNurseSet.equals(memberNurseOldSet)) {
+                        change = true;
+                    }
+                } else {
+                    change = true;
+                }
+                memberNurseOldSet.addAll(goodsNurseSet);
+                member.setMemberNurse(String.join(",", memberNurseOldSet));
+            }
+            // 如果有变化,则保存或更新会员信息
             if (change) {
-                member.setGoodsType(goodsType);
                 this.saveOrUpdate(member);
             }
         }
@@ -742,8 +831,8 @@
         String memberNo = createMemberNo();
         member.setMemberNo(memberNo);
         member.setDelFlag(0);
+        member.setFrozenFlag(0);
         member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
-        member.setBindingFlag(0);
         member.setCreateTime(new Date());
         member.setCustomerSource("商户订单添加");
         this.saveOrUpdate(member);
@@ -811,13 +900,26 @@
                     .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())));
                     });
         }
         //处理标签为正则表达
         if (StringUtils.isNotBlank(merMemberPageDto.getMemberTags())) {
             merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",", "|"));
+        }
+        //处理生日
+        if(merMemberPageDto.getStartAge()!=null){
+            LocalDate currentDate = LocalDate.now();
+            LocalDate endBirthday = currentDate.minusYears(merMemberPageDto.getStartAge());
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            merMemberPageDto.setEndBirthday(endBirthday.format(formatter));
+        }
+        if(merMemberPageDto.getEndAge()!=null){
+            LocalDate currentDate = LocalDate.now();
+            LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge()+1);
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            merMemberPageDto.setStartBirthday(startBirthday.format(formatter));
         }
         //查询获取结果列表
         List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
@@ -829,8 +931,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());
                 }
                 //活跃度赋值
@@ -871,10 +973,12 @@
                 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());
                 this.saveOrUpdate(member);
+                memberMapper.updateById(member);
             }
         }
     }
@@ -891,11 +995,14 @@
             String memberUserIds = mgtMemberRelDelDto.getMemberUserIds();
             String[] memberUserIdArr = memberUserIds.split(",");
             for (String str : memberUserIdArr) {
-                Member member = this.getByUserId(Long.valueOf(str));
-                member.setBindingFlag(0);
-                member.setUpdateTime(new Date());
-                member.setUpdateUserId(mgtMemberRelDelDto.getUserId());
-                this.saveOrUpdate(member);
+                LambdaUpdateWrapper<Member> updateWrapper = Wrappers.lambdaUpdate();
+                updateWrapper.eq(Member::getUserId, str)
+                        .set(Member::getBindingFlag, 0)
+                        .set(Member::getRelationShopId,null)
+                        .set(Member::getRelationShopName,null)
+                        .set(Member::getUpdateUserId,mgtMemberRelDelDto.getUserId())
+                        .set(Member::getUpdateTime,new Date());
+                this.update(updateWrapper);
             }
         }
     }
@@ -933,6 +1040,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();
@@ -1010,13 +1118,23 @@
         mgtMemberGetVo.setNickName(member.getNickName());
         mgtMemberGetVo.setAvatar(member.getAvatar());
         mgtMemberGetVo.setMobile(member.getMobile());
-        mgtMemberGetVo.setGender(member.getGender() == 0 ? "男" : member.getGender() == 1 ? "女" : null);
+        if(member.getGender()!=null){
+            if (member.getGender() == 0) {
+                mgtMemberGetVo.setGender("男");
+            } else if (member.getGender() == 1) {
+                mgtMemberGetVo.setGender("女");
+            }
+        }else {
+            mgtMemberGetVo.setGender("未知");
+        }
         mgtMemberGetVo.setBirthday(member.getBirthday());
         mgtMemberGetVo.setBelongDistrict(member.getBelongDistrict());
         mgtMemberGetVo.setCreateTime(member.getCreateTime());
         mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
         mgtMemberGetVo.setGoodsType(member.getGoodsType());
-        mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
+        if(member.getBindingFlag()==1){
+            mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
+        }
         mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
         mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
         mgtMemberGetVo.setTotalActivityCount(memberTotal.getTotalActivityCount());
@@ -1143,6 +1261,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);
@@ -1151,6 +1281,12 @@
         if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
             nurseTotalVos = listRemoveNull(nurseTotalVos);
             mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
+        }
+        //获取不同等级的会员数
+        List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getTotalMemberTotalLevel(mgtBaseShopDto);
+        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
+            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
+            mgtTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
         }
         // 获取不同商品类型的会员数
         List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto);
@@ -1170,8 +1306,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());
@@ -1238,25 +1374,63 @@
         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(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).setScale(0,BigDecimal.ROUND_HALF_UP);
+                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) {
             nurseTotalVos = listRemoveNull(nurseTotalVos);
             plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
+        }
+        //获取不同等级的会员数
+        List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getPlTotalMemberTotalLevel(mgtBasePlatformDto);
+        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
+            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
+            plTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
         }
         // 获取不同商品类型的会员数
         List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto);
@@ -1277,8 +1451,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();
@@ -1362,6 +1536,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);
@@ -1377,6 +1563,7 @@
      */
     @Override
     public void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto) {
+        log.info("会员统计变动---"+memberTotalChangeDto.toString());
         Member member = this.getByUserId(memberTotalChangeDto.getUserId());
         MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
         //积分变动
@@ -1387,6 +1574,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);
             }
         }
         //消费变动
@@ -1406,8 +1604,9 @@
             if (memberTotalChangeDto.getTypeService() == 2) {
                 memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() - memberTotalChangeDto.getServiceCount());
                 memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount() + memberTotalChangeDto.getServiceCount());
+                memberTotal.setLastServiceTime(new Date());
             } else {
-                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getServiceCount());
+                memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() + memberTotalChangeDto.getServiceCount());
                 memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount() + memberTotalChangeDto.getServiceCount());
             }
         }
@@ -1496,7 +1695,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);
         }
         memberFixedTotalVo.setManPercent(menPercent);
@@ -1505,14 +1704,33 @@
         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);
+        }
+        //获取不同等级的会员数
+        List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto);
+        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
+            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
+            memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
         }
         // 获取不同商品类型的会员数
         List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto);
@@ -1538,8 +1756,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);
@@ -1644,17 +1862,34 @@
         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
      * @date    2023/7/5 21:18
-     * @param mgtBaseGetDto
+     * @param mgtFrozenMemberDto
      * @return  void
      */
     @Override
-    public void mgtFrozenMember(MgtBaseGetDto mgtBaseGetDto){
-        sysUserService.frozenUser(Long.valueOf(mgtBaseGetDto.getId()));
+    public void mgtFrozenMember(MgtFrozenMemberDto mgtFrozenMemberDto){
+        Long userId = mgtFrozenMemberDto.getId();
+        Member member = this.getByUserId(userId);
+        member.setFrozenFlag(mgtFrozenMemberDto.getFrozenFlag());
+        this.saveOrUpdate(member);
+        sysUserService.frozenUser(mgtFrozenMemberDto);
     }
 
     /**
@@ -1722,6 +1957,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();
@@ -1765,7 +2001,7 @@
             case 1:
                 changeIntegral = appOtherConfigGetVo.getShareIntegral();
                 integralRecord.setChangeIntegral(changeIntegral);
-                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
+                integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                 integralRecord.setChangeReason("每日任务【分享小程序】获得积分");
                 memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                 memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
@@ -1774,7 +2010,7 @@
             case 2:
                 changeIntegral = appOtherConfigGetVo.getSuggestPlatformIntegral();
                 integralRecord.setChangeIntegral(changeIntegral);
-                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
+                integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                 integralRecord.setChangeReason("每日任务【提交平台建议】获得积分");
                 memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                 memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
@@ -1783,7 +2019,7 @@
             case 3:
                 changeIntegral = appOtherConfigGetVo.getSuggestShopIntegral();
                 integralRecord.setChangeIntegral(changeIntegral);
-                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
+                integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                 integralRecord.setChangeReason("每日任务【提交门店建议】获得积分");
                 memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                 memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
@@ -1792,7 +2028,7 @@
             case 4:
                 changeIntegral = appOtherConfigGetVo.getSignInIntegral();
                 integralRecord.setChangeIntegral(changeIntegral);
-                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
+                integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                 integralRecord.setChangeReason("每日任务【签到】获得积分");
                 memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                 memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
@@ -1800,7 +2036,7 @@
                 break;
             case 5:
                 integralRecord.setChangeIntegral(changeIntegral);
-                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
+                integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                 integralRecord.setChangeReason("订单【"+integralChangeDto.getOrderNo()+"】获得积分");
                 integralRecord.setOrderId(integralChangeDto.getOrderId());
                 integralRecord.setOrderNo(integralChangeDto.getOrderNo());
@@ -1815,4 +2051,53 @@
         integralRecordService.saveOrUpdate(integralRecord);
         return completeFlag;
     }
+
+    /**
+     * @description  统计商户今日新增会员
+     * @author  jqs
+     * @date    2023/7/14 19:54
+     * @param shopIdList
+     * @return  Integer
+     */
+    @Override
+    public Integer getAreaNewMember(List<Long> shopIdList){
+        return memberMapper.getAreaNewMember(shopIdList);
+    }
+
+    /**
+     * @description  更新会员绑定商户名
+     * @author  jqs
+     * @date    2023/7/26 17:08
+     * @param mgtMemberShopNameDto
+     * @return  void
+     */
+    @Override
+    public void updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto){
+        LambdaUpdateWrapper<Member> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(Member::getRelationShopId,mgtMemberShopNameDto.getShopId());
+        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