jiangqs
2023-06-16 ae41759bafec1c2a1e8858fcdcda4272ed4eb84c
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -7,42 +7,45 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.CodeFactoryUtil;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.member.domain.dto.*;
import com.ruoyi.member.domain.pojo.member.IntegralRecord;
import com.ruoyi.member.domain.pojo.member.MemberNurse;
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.MemberNurseService;
import com.ruoyi.member.service.member.MemberService;
import com.ruoyi.member.service.member.*;
import com.ruoyi.member.util.HttpUtils;
import com.ruoyi.system.api.RemoteConfigService;
import com.ruoyi.system.api.RemoteOrderService;
import com.ruoyi.system.api.RemoteShopService;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.constant.SecurityConstant;
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.poji.config.Activeness;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.model.AppMiniLoginDto;
import com.ruoyi.system.api.model.AppMiniLoginVo;
import com.ruoyi.system.api.service.RemoteConfigService;
import com.ruoyi.system.api.service.RemoteOrderService;
import com.ruoyi.system.api.service.RemoteShopService;
import com.ruoyi.system.api.service.RemoteUserService;
import lombok.extern.log4j.Log4j2;
import com.ruoyi.common.core.utils.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -76,9 +79,6 @@
    private MemberMapper memberMapper;
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    @Resource
    private RemoteShopService shopService;
    @Resource
@@ -89,6 +89,19 @@
    @Resource
    private RemoteConfigService remoteConfigService;
    @Resource
    private RedisService redisService;
    @Resource
    private MemberTotalService memberTotalService;
    @Resource
    private IntegralRecordService integralRecordService;
    @Resource
    private MemberArchiveService memberArchiveService;
    /**
     * @description: TODO
@@ -128,126 +141,113 @@
            sessionKey = session.getSessionKey();
            //获取用户
            Member member = memberMapper.getOneByMiniOpenid(openid);
            SysUser sysUser;
            if(member==null){
                //创建新用户
                String memberId = IdUtils.simpleUUID();
                sysUser = new SysUser();
                sysUser.setUserName(memberId);
                sysUser.setUserType("03");
                sysUser.setNickName("鸿瑞堂用户");
                sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                String password = "hongruitang";
                sysUser.setPassword(SecurityUtils.encryptPassword(password));
                sysUser = sysUserService.registerUser(sysUser).getData();
                log.info("sysUser1-----------------"+sysUser.toString());
                member = new Member();
                member.setUserId(sysUser.getUserId());
                member.setDelFlag(0);
                member.setNickName("鸿瑞堂用户");
                member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                member.setMemberId(memberId);
                member.setRelationShopId(1L);
                member.setWxUnionid(unionid);
                member.setMiniOpenid(openid);
                member.setBindingFlag(0);
                member.setCreateTime(new Date());
                log.info("member-----------------"+member.toString());
                this.saveOrUpdate(member);
            }else{
                log.info("member2"+member.toString());
                R<SysUser> sysUser1 = sysUserService.getSysUser(member.getUserId());
                log.info("sysUser1"+ sysUser1.getCode() + " : " + sysUser1.getMsg());
                sysUser = sysUser1.getData();
                log.info("sysUser"+sysUser.toString());
            SysUser sysUser = null;
            if(member!=null){
                sysUser = sysUserService.getSysUser(member.getUserId()).getData();
            }
            appMiniLoginVo.setMiniOpenid(openid);
            appMiniLoginVo.setWxUnionid(unionid);
            appMiniLoginVo.setSysUser(sysUser);
            appMiniLoginVo.setSessionKey(sessionKey);
            stringRedisTemplate.opsForValue().set(SecurityConstant.SESSION_KEY+openid,sessionKey);
        }else{
            log.info("null");
            return null;
            redisService.setCacheObject(SecurityConstant.SESSION_KEY+openid,sessionKey,1L,TimeUnit.DAYS);
        }
        log.info("appMiniLoginVo"+appMiniLoginVo.toString());
        return appMiniLoginVo;
    }
    /**
     * 获取授权信息
     * @param appUserAuthorizeDto
     * 小程序注册
     * @param appUserRegisterDto
     * @return
     */
    @Override
    public AppUserAuthorizeVo getAppUserAuthorize(AppUserAuthorizeDto appUserAuthorizeDto){
        Member member = this.getById(appUserAuthorizeDto.getUserId());
        AppUserAuthorizeVo appUserAuthorizeVo = new AppUserAuthorizeVo();
    public AppMiniRegisterVo miniRegister(AppMiniRegisterDto appUserRegisterDto){
        AppMiniRegisterVo appUserRegisterVo = new AppMiniRegisterVo();
        String mobile = null;
        if(StringUtils.isBlank(member.getMobile())){
            //获取code接口在redis里存放的sessionkey用于解密
            String sessionkey = stringRedisTemplate.opsForValue().get(SecurityConstant.SESSION_KEY+ member.getMiniOpenid());
            if(StringUtils.isBlank(sessionkey)){
                throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN);
            }
            try {
                String accessToken = stringRedisTemplate.opsForValue().get("wx_access_token");
                if (StringUtils.isBlank(accessToken)) {
                    String responseAccessToken = getAccessTokenByWX();
                    JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
                    accessToken = jsonAccessToken.getString("access_token");
                    String errmsg = jsonAccessToken.getString("errmsg");
                    Long expiresIn = jsonAccessToken.getLong("expires_in");
                    if (StringUtils.isBlank(accessToken)) {
                        throw new ServiceException(errmsg);
                    } else {
                        expiresIn = expiresIn - 100;
                        stringRedisTemplate.opsForValue().set("wx_access_token", accessToken, expiresIn.intValue(), TimeUnit.SECONDS);
                    }
                }
                String responseUserPhoneNumber = getMobileByWX(accessToken, appUserAuthorizeDto.getMobileCode());
                JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
                String errcode = jsonUserPhoneNumber.getString("errcode");
                String errmsg = jsonUserPhoneNumber.getString("errmsg");
                if (!errcode.equals("0")) {
                    throw new ServiceException(errmsg);
                }
                String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
                JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
                mobile = jsonUserPhoneInfo.getString("purePhoneNumber");
            } catch (Exception e) {
                e.printStackTrace();
            }
            Member oldMember = this.getByMobile(mobile);
            if(oldMember!=null){
                member.setNickName(oldMember.getNickName());
                member.setGender(oldMember.getGender());
                member.setReferrer(oldMember.getReferrer());
                member.setBirthday(oldMember.getBirthday());
                member.setBindingFlag(1);
                member.setRelationShopId(oldMember.getRelationShopId());
                oldMember.setDelFlag(1);
                oldMember.setMiniOpenid(oldMember.getMiniOpenid()+"已删除");
                this.saveOrUpdate(oldMember);
            }else{
                //更新用户手机信息
                SysUser sysUser = new SysUser();
                sysUser.setUserId(appUserAuthorizeDto.getUserId());
                sysUser.setPhonenumber(mobile);
                sysUserService.updateUserMobile(sysUser);
                member.setNickName(sysUser.getNickName());
            }
            member.setMobile(mobile);
            this.saveOrUpdate(member);
        }else{
            mobile = member.getMobile();
        //获取code接口在redis里存放的sessionkey用于解密
        String sessionkey = redisService.getCacheObject(SecurityConstant.SESSION_KEY+ appUserRegisterDto.getMiniOpenid());
        if(StringUtils.isBlank(sessionkey)){
            throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN);
        }
        appUserAuthorizeVo.setMobile(mobile);
        appUserAuthorizeVo.setNickName(member.getNickName());
        appUserAuthorizeVo.setOpenid(member.getMiniOpenid());
        appUserAuthorizeVo.setUnionid(member.getWxUnionid());
        return appUserAuthorizeVo;
        try {
            //获取微信token用于解密手机
            String accessToken = redisService.getCacheObject(SecurityConstant.WX_TOKEN);
            if (StringUtils.isBlank(accessToken)) {
                String responseAccessToken = getAccessTokenByWX();
                JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
                accessToken = jsonAccessToken.getString("access_token");
                String 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);
                }
            }
            //解密手机
            String responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode());
            JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
            String errcode = jsonUserPhoneNumber.getString("errcode");
            String errmsg = jsonUserPhoneNumber.getString("errmsg");
            if (!"0".equals(errcode)) {
                throw new ServiceException(errmsg);
            }
            String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
            JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
            mobile = jsonUserPhoneInfo.getString("purePhoneNumber");
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(StringUtils.isBlank(mobile)){
            return null;
        }
        //判断openid是否被其他手机号占用
        Member checkMember = memberMapper.getOneByMiniOpenid(appUserRegisterDto.getMiniOpenid());
        if(checkMember!=null&&!checkMember.getMobile().equals(mobile)){
            throw new ServiceException("微信号换绑手机需联系客服");
        }
        Member member = memberMapper.selectMemberByMobile(mobile);
        SysUser sysUser;
        //获取用户为空则新建
        if(member == null){
            //创建新用户
            String memberId = IdUtils.simpleUUID();
            sysUser = new SysUser();
            sysUser.setUserName(memberId);
            sysUser.setUserType("03");
            sysUser.setNickName("鸿瑞堂用户");
            sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
            String password = "hongruitang";
            sysUser.setPassword(SecurityUtils.encryptPassword(password));
            sysUser = sysUserService.registerUser(sysUser).getData();
            member = new Member();
            String memberNo = createMemberNo();
            member.setMemberNo(memberNo);
            member.setUserId(sysUser.getUserId());
            member.setDelFlag(0);
            member.setNickName("鸿瑞堂用户");
            member.setRealName("鸿瑞堂用户");
            member.setCustomerSource("小程序");
            member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
            member.setMemberId(memberId);
            member.setBindingFlag(0);
            member.setCreateTime(new Date());
            member.setMobile(mobile);
            initMemberTotal(memberId);
        }else{
            sysUser = sysUserService.getSysUser(member.getUserId()).getData();
        }
        member.setWxUnionid(appUserRegisterDto.getWxUnionid());
        member.setMiniOpenid(appUserRegisterDto.getMiniOpenid());
        log.info("member-----------------"+member.toString());
        this.saveOrUpdate(member);
        appUserRegisterVo.setMobile(mobile);
        appUserRegisterVo.setNickName(member.getNickName());
        appUserRegisterVo.setOpenid(member.getMiniOpenid());
        appUserRegisterVo.setUnionid(member.getWxUnionid());
        appUserRegisterVo.setSysUser(sysUser);
        return appUserRegisterVo;
    }
    public static String getAccessTokenByWX() throws Exception {
@@ -282,14 +282,15 @@
        AppUserInfoVo appUserInfoVo = new AppUserInfoVo();
        Member member = this.getByUserId(userId);
        appUserInfoVo.setUserId(userId);
        appUserInfoVo.setRelationShopId(member.getRelationShopId());
        appUserInfoVo.setMemberNo(member.getMemberNo());
        appUserInfoVo.setNickName(member.getNickName());
        appUserInfoVo.setRealName(member.getRealName());
        appUserInfoVo.setPhonenumber(member.getMobile());
        if(member.getRelationShopId()!=null){
        if(member.getRelationShopId()!=null&&member.getBindingFlag()==1){
            appUserInfoVo.setRelationShopId(member.getRelationShopId());
            Shop shop = shopService.getShop(member.getRelationShopId()).getData();
            appUserInfoVo.setShopName(shop.getShopName());
            appUserInfoVo.setShopAddress(shop.getShopAreaName()+shop.getShopAddress());
        }
        appUserInfoVo.setBirthday(member.getBirthday());
        appUserInfoVo.setGender(member.getGender());
@@ -364,6 +365,7 @@
        merMemberInfoVo.setPhonenumber(member.getMobile());
        merMemberInfoVo.setAvatar(member.getAvatar());
        merMemberInfoVo.setBirthday(member.getBirthday());
        merMemberInfoVo.setUserTags(member.getUserTags());
        //未完成
        return merMemberInfoVo;
@@ -391,6 +393,7 @@
        Member member = this.getByUserId(appMemberBindingDto.getUserId());
        member.setBindingFlag(appMemberBindingDto.getBindingFlag());
        member.setRelationShopId(appMemberBindingDto.getShopId());
        member.setRelationShopName(appMemberBindingDto.getShopName());
        this.saveOrUpdate(member);
    }
@@ -453,7 +456,14 @@
    @Override
    public void editMerMemberTags(MerMemberTagEditDto merMemberTagEditDto){
        Member member = this.getByUserId(merMemberTagEditDto.getMemberUserId());
        member.setUserTags(merMemberTagEditDto.getUserTags());
        List<String> userTags = merMemberTagEditDto.getUserTags();
        StringJoiner sj = new StringJoiner(",");
        if(userTags!=null&&!userTags.isEmpty()){
            for(String str : userTags){
                sj.add(str);
            }
        }
        member.setUserTags(sj.toString());
        this.saveOrUpdate(member);
    }
@@ -471,8 +481,9 @@
        }
        SysUser sysUser = sysUserService.getSysUserByMobile(phonenumber).getData();
        if(sysUser==null){
            String memberId = IdUtils.simpleUUID();
            sysUser = new SysUser();
            sysUser.setUserName(phonenumber);
            sysUser.setUserName(memberId);
            sysUser.setUserType("03");
            sysUser.setNickName(merMemberAddDto.getNickName());
            sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
@@ -480,27 +491,32 @@
            sysUser.setPassword(SecurityUtils.encryptPassword(password));
            log.debug("sysUser"+sysUser.toString());
            sysUser = sysUserService.registerUser(sysUser).getData();
            Member member = new Member();
            String memberNo = createMemberNo();
            member.setMemberNo(memberNo);
            member.setMemberId(memberId);
            member.setUserId(sysUser.getUserId());
            member.setDelFlag(0);
            member.setNickName(merMemberAddDto.getNickName());
            member.setRealName(merMemberAddDto.getNickName());
            member.setGender(merMemberAddDto.getGender());
            member.setMobile(phonenumber);
            member.setReferrer(merMemberAddDto.getReferrer());
            member.setBirthday(merMemberAddDto.getBirthday());
            member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
            member.setRelationShopId(merMemberAddDto.getShopId());
            member.setWxUnionid(null);
            member.setMiniOpenid(null);
            member.setBindingFlag(1);
            member.setRelationShopId(merMemberAddDto.getShopId());
            member.setCustomerSource("商户添加");
            member.setCreateTime(new Date());
            log.info("member-----------------"+member.toString());
            this.saveOrUpdate(member);
            initMemberTotal(memberId);
        }
        log.info("sysUser1-----------------"+sysUser.toString());
        String memberId = IdUtils.simpleUUID();
        Member member = new Member();
        member.setUserId(sysUser.getUserId());
        member.setDelFlag(0);
        member.setNickName(merMemberAddDto.getNickName());
        member.setGender(merMemberAddDto.getGender());
        member.setMobile(phonenumber);
        member.setReferrer(merMemberAddDto.getReferrer());
        member.setBirthday(merMemberAddDto.getBirthday());
        member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
        member.setMemberId(memberId);
        member.setRelationShopId(1L);
        member.setWxUnionid(null);
        member.setMiniOpenid(null);
        member.setBindingFlag(1);
        member.setRelationShopId(merMemberAddDto.getShopId());
        member.setCreateTime(new Date());
        log.info("member-----------------"+member.toString());
        this.saveOrUpdate(member);
    }
    /**
@@ -546,4 +562,371 @@
        Member member = this.getOne(queryWrapper);
        return member;
    }
    /**
     * 更新用户商品类型
     * @param appMemberGoodsTypeDto
     */
    @Override
    public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto){
        Member member = this.getByUserId(appMemberGoodsTypeDto.getUserId());
        HashSet<String> goodsTypeSet = appMemberGoodsTypeDto.getGoodsTypeSet();
        if(member!=null){
            String goodsType = member.getGoodsType();
            Boolean change = false;
            for(String str : goodsTypeSet){
                if(goodsType != null){
                    if(!goodsType.contains(str)){
                        goodsType = goodsType + "," + str;
                        change = true;
                    }
                }else{
                    goodsType = str;
                    change = true;
                }
            }
            if(change){
                member.setGoodsType(goodsType);
                this.saveOrUpdate(member);
            }
        }
    }
    /**
     * 订单创建新用户
     * @param member
     */
    @Override
    public void createNewMember(Member member){
        String memberNo = createMemberNo();
        member.setMemberNo(memberNo);
        member.setDelFlag(0);
        member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
        member.setBindingFlag(0);
        member.setCreateTime(new Date());
        member.setCustomerSource("商户订单添加");
        this.saveOrUpdate(member);
        initMemberTotal(member.getMemberId());
    }
    /**
     * 生成会员统计
     * @param memberId
     * @return
     */
    private void initMemberTotal(String memberId){
        MemberTotal memberTotal = new MemberTotal();
        memberTotal.setMemberId(memberId);
        memberTotal.setDelFlag(0);
        memberTotal.setTotalIntegral(0);
        memberTotal.setUsedIntegral(0);
        memberTotal.setUseableIntegral(0);
        memberTotal.setTotalPayMoney(new BigDecimal("0.00"));
        memberTotal.setTotalPayCount(0);
        memberTotal.setLastPayMoney(new BigDecimal("0.00"));
        memberTotal.setTotalServiceCount(0);
        memberTotal.setUsedServiceCount(0);
        memberTotal.setUseableServiceCount(0);
        memberTotal.setTotalActivityCount(0);
        memberTotal.setTotalCycleOrder(0);
        memberTotal.setToltaExperienceOrder(0);
        memberTotal.setTotalServiceOrder(0);
        memberTotal.setTotalGoodsOrder(0);
        memberTotalService.saveOrUpdate(memberTotal);
    }
    /**
     * 生成会员编号
     * @return
     */
    private String createMemberNo(){
        int memberTotal = memberMapper.selectCount(new LambdaQueryWrapper<Member>());
        String memberNo = CodeFactoryUtil.getMemberNo(Long.valueOf(memberTotal+1));
        return memberNo;
    }
    /**
     * 平台分页获取会员列表
     * @param page
     * @param merMemberPageDto
     * @return
     */
    @Override
    public List<MgtMemberPageVo> pageMgtMember(Page page,MgtMemberPageDto merMemberPageDto){
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        Date nowDay = new Date();
        if(merMemberPageDto.getActivenessId()!=null){
            //处理活跃度筛选
            activenessList.stream()
                    .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())));
                    });
        }
        //处理标签为正则表达
        if(StringUtils.isNotBlank(merMemberPageDto.getMemberTags())){
            merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",","|"));
        }
        //查询获取结果列表
        List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
        //处理活跃度返回
        if(memberPageVoList!=null&&!memberPageVoList.isEmpty()){
            if(activenessList!=null&&!activenessList.isEmpty()){
                //生成活跃度时间段列表
                List<MgtActivenessJudgeVo> mgtActivenessJudgeVoList = new ArrayList<>();
                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.setActivenessName(activeness.getActivenessName());
                }
                //活跃度赋值
                Date lastPayTime;
                for(MgtMemberPageVo mgtMemberPageVo : memberPageVoList){
                    lastPayTime = mgtMemberPageVo.getLastPayTime();
                    StringJoiner sj = new StringJoiner(",");
                    if(lastPayTime!=null){
                        for(MgtActivenessJudgeVo entity: mgtActivenessJudgeVoList){
                            if(lastPayTime.compareTo(entity.getStartDay())>=0&&lastPayTime.compareTo(entity.getEndDay())<=0){
                                sj.add(entity.getActivenessName());
                            }
                        }
                        if(sj.length()>0){
                            mgtMemberPageVo.setActiveness(sj.toString());
                        }
                    }
                }
            }
        }
        return memberPageVoList;
    }
    /**
     * 修改会员关联商户
     * @param mgtMemberRelEditDto
     */
    @Override
    public void editMemberRelationShop(MgtMemberRelEditDto mgtMemberRelEditDto){
        if(StringUtils.isNotBlank(mgtMemberRelEditDto.getMemberUserIds())){
            Shop shop = shopService.getShop(mgtMemberRelEditDto.getShopId()).getData();
            String memberUserIds = mgtMemberRelEditDto.getMemberUserIds();
            String[] memberUserIdArr = memberUserIds.split(",");
            for(String str : memberUserIdArr){
                Member member = this.getByUserId(Long.valueOf(str));
                member.setRelationShopId(shop.getShopId());
                member.setRelationShopName(shop.getShopName());
                member.setBindingFlag(1);
                member.setUpdateTime(new Date());
                member.setUpdateUserId(mgtMemberRelEditDto.getUserId());
                this.saveOrUpdate(member);
            }
        }
    }
    /**
     * 删除会员关联商户
     * @param mgtMemberRelDelDto
     */
    @Override
    public void deleteMemberRelationShop(MgtMemberRelDelDto mgtMemberRelDelDto){
        if(StringUtils.isNotBlank(mgtMemberRelDelDto.getMemberUserIds())) {
            String memberUserIds = mgtMemberRelDelDto.getMemberUserIds();
            String[] memberUserIdArr = memberUserIds.split(",");
            for(String str : memberUserIdArr) {
                Member member = this.getById(Long.valueOf(str));
                member.setBindingFlag(0);
                member.setUpdateTime(new Date());
                member.setUpdateUserId(mgtMemberRelDelDto.getUserId());
                this.saveOrUpdate(member);
            }
        }
    }
    /**
     * 修改会员积分
     * @param mgtMemberIntEditDto
     */
    @Override
    public void editMemberIntegral(MgtMemberIntEditDto mgtMemberIntEditDto){
        if(StringUtils.isNotBlank(mgtMemberIntEditDto.getMemberUserIds())) {
            String memberUserIds = mgtMemberIntEditDto.getMemberUserIds();
            String[] memberUserIdArr = memberUserIds.split(",");
            MemberIntegralChangeDto memberIntegralChangeDto;
            for(String str : memberUserIdArr) {
                memberIntegralChangeDto = new MemberIntegralChangeDto();
                Member member = this.getByUserId(Long.valueOf(str));
                memberIntegralChangeDto.setUserId(Long.valueOf(str));
                memberIntegralChangeDto.setMemberId(member.getMemberId());
                memberIntegralChangeDto.setChangeType(1);
                memberIntegralChangeDto.setRecordType(3);
                memberIntegralChangeDto.setIntegral(mgtMemberIntEditDto.getIntegral());
                //调用积分变动
                memberIntegralChange(memberIntegralChangeDto);
            }
        }
    }
    /**
     * 会员积分变动
     * @param memberIntegralChangeDto
     */
    @Override
    public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto){
        MemberTotal memberTotal = memberTotalService.getById(memberIntegralChangeDto.getMemberId());
        Integer recordType = memberIntegralChangeDto.getRecordType();
        Integer changeType = memberIntegralChangeDto.getChangeType();
        Integer integer = memberIntegralChangeDto.getIntegral();
        Integer totalIntegral = memberTotal.getTotalIntegral();
        Integer usedIntegral = memberTotal.getUsedIntegral();
        Integer useableIntegral = memberTotal.getUseableIntegral();
        //变动统计
        if(changeType==1){
            totalIntegral = totalIntegral + integer;
            useableIntegral = useableIntegral + integer;
            memberTotal.setTotalIntegral(totalIntegral);
            memberTotal.setUseableIntegral(useableIntegral);
        }else if(changeType==2){
            usedIntegral = usedIntegral + integer;
            useableIntegral = useableIntegral - integer;
            if(useableIntegral<0){
                throw new ServiceException(AppErrorConstant.INTEGRAL_USE_FAILED);
            }
            memberTotal.setTotalIntegral(totalIntegral);
            memberTotal.setUseableIntegral(useableIntegral);
            memberTotal.setUsedIntegral(usedIntegral);
        }
        memberTotalService.saveOrUpdate(memberTotal);
        //记录变动
        IntegralRecord integralRecord = new IntegralRecord();
        integralRecord.setDelFlag(0);
        integralRecord.setUserId(memberIntegralChangeDto.getUserId());
        integralRecord.setChangeType(recordType);
        if(changeType==1){
            integralRecord.setChangeIntegral(integer);
        }else if(changeType==2){
            integralRecord.setChangeIntegral( 0-integer);
        }
        integralRecord.setSurpIntegral(useableIntegral);
        integralRecord.setCreateTime(new Date());
        integralRecord.setOrderId(memberIntegralChangeDto.getOrderId());
        integralRecord.setOrderNo(memberIntegralChangeDto.getOrderNo());
        switch (recordType){
            case 1:
                integralRecord.setChangeReason("购物赠送");
                break;
            case 2:
                integralRecord.setChangeReason("活动赠送");
                break;
            case 3:
                integralRecord.setChangeReason("平台赠送");
                break;
            default:
                break;
        }
        integralRecordService.saveOrUpdate(integralRecord);
    }
    /**
     * 平台获取会员信息
     * @param userId
     * @return
     */
    @Override
    public MgtMemberGetVo getMgtMemberInfo(Long userId){
        MgtMemberGetVo mgtMemberGetVo = new MgtMemberGetVo();
        Member member = this.getByUserId(userId);
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        List<MemberArchiveVo> memberArchiveVoList = memberArchiveService.listVoByUserId(member.getUserId());
        if(memberArchiveVoList!=null&&!memberArchiveVoList.isEmpty()){
            //去掉未完善信息
            memberArchiveVoList.removeIf(o -> Objects.isNull(o.getFieldValue()));
        }
        mgtMemberGetVo.setMemberId(member.getMemberId());
        mgtMemberGetVo.setUserId(member.getUserId());
        mgtMemberGetVo.setMemberNo(member.getMemberNo());
        mgtMemberGetVo.setRealName(member.getRealName());
        mgtMemberGetVo.setNickName(member.getNickName());
        mgtMemberGetVo.setMobile(member.getMobile());
        mgtMemberGetVo.setGender(member.getGender()==0 ? "男" : member.getGender()==1 ? "女" : null);
        mgtMemberGetVo.setBirthday(member.getBirthday());
        mgtMemberGetVo.setBelongDistrict(member.getBelongDistrict());
        mgtMemberGetVo.setCreateTime(member.getCreateTime());
        mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
        mgtMemberGetVo.setGoodsType(member.getGoodsType());
        mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
        mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
        mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
        mgtMemberGetVo.setTotalActivityCount(memberTotal.getTotalActivityCount());
        mgtMemberGetVo.setTotalPayMoney(memberTotal.getTotalPayMoney());
        mgtMemberGetVo.setMemberRemark(null);
        mgtMemberGetVo.setMemberArchiveVoList(memberArchiveVoList);
        mgtMemberGetVo.setMemberTags(member.getUserTags());
        return mgtMemberGetVo;
    }
    /**
     * @description  删除标签
     * @author  jqs
     * @date    2023/6/8 15:18
     * @param memberTag
     * @return  void
     */
    @Override
    public void deleteMemberTag(String memberTag){
        memberMapper.deleteMemberTag(memberTag);
    }
    /**
     * @description  通过发送类型获取userId
     * @author  jqs
     * @date    2023/6/13 17:53
     * @param sendType
     * @return  List<Long>
     */
    @Override
    public List<Long> listIdBySendType(Integer sendType){
        //1.手动领取2.全部用户3.会员用户4非会员用户5自定义
        return memberMapper.listIdBySendType(sendType);
    }
    /**
     * @description  通过ids获取用户简易返回
     * @author  jqs
     * @date    2023/6/16 11:06
     * @param userIds
     * @return  List<MgtSimpleMemberVo>
     */
    @Override
    public List<MgtSimpleMemberVo> listSimpleVoByIds(String userIds){
        return memberMapper.listSimpleVoByIds(userIds);
    }
    /**
     * @description
     * @author  jqs
     * @date    2023/6/16 12:41
     * @param mgtUserIdByKeywordDto
     * @return  MgtUserIdByKeywordVo
     */
    @Override
    public MgtUserIdByKeywordVo getUserIdByKeyword(MgtUserIdByKeywordDto mgtUserIdByKeywordDto){
        MgtUserIdByKeywordVo mgtUserIdByKeywordVo = new MgtUserIdByKeywordVo();
        List<Long> userIdList = memberMapper.getUserIdByKeyword(mgtUserIdByKeywordDto);
        if(userIdList!=null&&!userIdList.isEmpty()){
            String userIdStr = userIdList.stream()
                    .map(Object::toString)
                    .collect(Collectors.joining(","));
            mgtUserIdByKeywordVo.setUserIds(userIdStr);
        }
        return mgtUserIdByKeywordVo;
    }
}