jiangqs
2023-07-03 b3ed26028083bbf66bb47601d11f42cad802b903
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -17,6 +17,7 @@
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.MemberArchive;
import com.ruoyi.member.domain.pojo.member.MemberTotal;
import com.ruoyi.member.domain.vo.*;
import com.ruoyi.member.mapper.member.MemberMapper;
@@ -581,6 +582,20 @@
            // Save the member and initialize member total
            this.saveOrUpdate(member);
            initMemberTotal(memberId);
            List<MemberArchiveVo> achiveList = merMemberAddDto.getAchiveList();
            if(achiveList!=null&&!achiveList.isEmpty()){
                SysUser finalSysUser = sysUser;
                List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
                    MemberArchive memberArchive = new MemberArchive();
                    memberArchive.setDelFlag(0);
                    memberArchive.setUserId(finalSysUser.getUserId());
                    memberArchive.setFieldId(memberArchiveVo.getFieldId());
                    memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
                    return memberArchive;
                    }
                ).collect(Collectors.toList());
                memberArchiveService.saveBatch(memberArchiveList);
            }
        }
    }
@@ -591,30 +606,49 @@
     */
    @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.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());
        log.info("member-----------------" + member.toString());
        this.saveOrUpdate(member);
        SysUser sysUser = new SysUser();
        sysUser.setUserId(merMemberEditDto.getEditUserId());
        sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
        sysUserService.updateUserMobile(sysUser);
    }
     // 更新用户信息
    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
@@ -968,9 +1002,9 @@
     * @date 2023/6/13 17:53
     */
    @Override
    public List<Long> listIdBySendType(Integer sendType) {
    public List<Long> listIdBySendType(Integer sendType,Long shopId) {
        //1.手动领取2.全部用户3.会员用户4非会员用户5自定义
        return memberMapper.listIdBySendType(sendType);
        return memberMapper.listIdBySendType(sendType,shopId);
    }
    /**
@@ -1326,4 +1360,130 @@
        }
        memberTotalService.saveOrUpdate(memberTotal);
    }
    /**
     * @description  商户获取会员统计
     * @author  jqs
     * @date    2023/7/3 17:16
     * @param merTotalDto
     * @return  MerMemberTotalVo
     */
    @Override
    public MerMemberTotalVo getMerMemberTotal(MerTotalDto merTotalDto){
        if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
            List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
            merTotalDto.setShopIdList(shopIdList);
            merTotalDto.setShopId(null);
        }
        MerMemberTotalVo merMemberTotalVo = memberMapper.getMerMemberTotal(merTotalDto);
        return merMemberTotalVo;
    }
    /**
     * @description  商户获取会员固定统计
     * @author  jqs
     * @date    2023/7/3 18:34
     * @param merTotalDto
     * @return  MerMemberFixedTotalVo
     */
    @Override
    public MerMemberFixedTotalVo getMerMemberFixedTotal(MerTotalDto merTotalDto){
        MerMemberFixedTotalVo memberFixedTotalVo = new MerMemberFixedTotalVo();
        Date nowDay = DateUtils.getNowDate();
        if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
            List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
            merTotalDto.setShopIdList(shopIdList);
            merTotalDto.setShopId(null);
        }
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto);
        // 年龄段数组
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        // 设置年龄段数组和不同年龄段的会员数数组
        memberFixedTotalVo.setAgeKey(ageKey);
        memberFixedTotalVo.setAgeValue(ageValue);
        // 获取不同护理类型的会员数
        List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getMerMemberTotalNurse(merTotalDto);
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        // 获取不同商品类型的会员数
        List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto);
        if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
            goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
            memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
        }
        // 获取不同活跃度的会员数
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        if (activenessList != null && !activenessList.isEmpty()) {
            Activeness activeness;
            String actStartDate;
            String actEndDate;
            Integer count;
            List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>();
            MgtMapIntTotalVo MgtMapIntTotalVo;
            // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
            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()));
                merTotalDto.setStartDate(actStartDate);
                merTotalDto.setEndDate(actEndDate);
                count = memberMapper.getMerMemberTotalActiveness(merTotalDto);
                MgtMapIntTotalVo = new MgtMapIntTotalVo();
                MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
                MgtMapIntTotalVo.setMapValue(count);
                MgtMapIntTotalVoList.add(MgtMapIntTotalVo);
            }
            memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList);
        }
        //获取会员消费排名
        List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto);
        if (memberPayList != null && memberPayList.size() > 0) {
            memberPayList = listRemoveNull(memberPayList);
            memberFixedTotalVo.setMemberPayList(memberPayList);
        }
        return memberFixedTotalVo;
    }
    /**
     * @description  商会获取会员来源统计
     * @author  jqs
     * @date    2023/7/3 19:09
     * @param merTotalDto
     * @return  MerMemberSourceTotalVo
     */
    @Override
    public MerMemberSourceTotalVo getMerMemberSourceTotal(MerTotalDto merTotalDto){
        MerMemberSourceTotalVo memberSourceTotalVo = new MerMemberSourceTotalVo();
        //获取来源渠道排名
        List<MgtMapIntTotalVo> customerSourceList = memberMapper.getMerMemberCustomerSourceRank(merTotalDto);
        if (customerSourceList != null && customerSourceList.size() > 0) {
            customerSourceList = listRemoveNull(customerSourceList);
            memberSourceTotalVo.setCustomerSourceList(customerSourceList);
        }
        return memberSourceTotalVo;
    }
    /**
     * @description  商会获取会员推荐排名
     * @author  jqs
     * @date    2023/7/3 19:14
     * @param merTotalDto
     * @return  MerMemberRecommendTotalVo
     */
    @Override
    public MerMemberRecommendTotalVo getMerMemberRecommendTotal(MerTotalDto merTotalDto){
        MerMemberRecommendTotalVo memberRecommendTotalVo = new MerMemberRecommendTotalVo();
        //获取会员推荐排名
        List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto);
        if (recommendList != null && recommendList.size() > 0) {
            recommendList = listRemoveNull(recommendList);
            memberRecommendTotalVo.setRecommendList(recommendList);
        }
        return memberRecommendTotalVo;
    }
}