jiangqs
2023-07-13 cfd0118ef446a66f91999afc7b1e46ca607adf50
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -240,12 +240,14 @@
            member.setCreateTime(new Date());
            member.setMobile(mobile);
            initMemberTotal(memberId);
            log.info("sysUser01-----------------" + sysUser.toString());
        } else {
            sysUser = sysUserService.getSysUser(member.getUserId()).getData();
            log.info("sysUser02-----------------" + sysUser.toString());
        }
        member.setWxUnionid(appUserRegisterDto.getWxUnionid());
        member.setMiniOpenid(appUserRegisterDto.getMiniOpenid());
        log.info("member-----------------" + member.toString());
        log.info("member02-----------------" + member.toString());
        this.saveOrUpdate(member);
        appUserRegisterVo.setMobile(mobile);
        appUserRegisterVo.setNickName(member.getNickName());
@@ -304,6 +306,8 @@
        AppOrderTotalVo appOrderTotalVo = orderService.getAppOrderTotal(userId).getData();
        appUserInfoVo.setNoPayCount(appOrderTotalVo.getNoPayCount());
        appUserInfoVo.setNoUseCount(appOrderTotalVo.getNoUseCount());
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        appUserInfoVo.setIntegral(memberTotal.getUseableIntegral());
        return appUserInfoVo;
    }
@@ -353,17 +357,52 @@
     */
    @Override
    public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) {
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) {
            Activeness activeness = remoteConfigService.getActivenessByName(merMemberPageDto.getMemberActiveness()).getData();
            if (activeness != null) {
                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()));
                merMemberPageDto.setActStartDate(actStartDate);
                merMemberPageDto.setActEndDate(actEndDate);
            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()));
                        merMemberPageDto.setActStartDate(actStartDate);
                        merMemberPageDto.setActEndDate(actEndDate);
                        break;
                    }
                }
            }
        }
        List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto);
        //处理活跃度返回
        if (merMemberPageVoList != null && !merMemberPageVoList.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 (MerMemberPageVo mgtMemberPageVo : merMemberPageVoList) {
                    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.setMemberActiveness(sj.toString());
                        }
                    }
                }
            }
        }
        return merMemberPageVoList;
    }
@@ -735,6 +774,11 @@
        memberTotal.setTotalExperienceOrder(0);
        memberTotal.setTotalServiceOrder(0);
        memberTotal.setTotalGoodsOrder(0);
        memberTotal.setShareFlag(0);
        memberTotal.setPlSuggestFlag(0);
        memberTotal.setShopSuggestFlag(0);
        memberTotal.setSignFlag(0);
        memberTotal.setBuyFlag(0);
        memberTotalService.saveOrUpdate(memberTotal);
    }
@@ -1070,6 +1114,31 @@
        // 获取总会员数和不同年龄段的会员数
        MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto);
        Integer manTotal = mgtAgeTotalVo.getManTotal();
        Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
        mgtTotalMemberTotalVo.setManTotal(manTotal);
        mgtTotalMemberTotalVo.setWomenTotal(womenTotal);
        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);
        }
        mgtTotalMemberTotalVo.setManPercent(menPercent);
        mgtTotalMemberTotalVo.setWomenPercent(womenPercent);
        // 年龄段数组
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
@@ -1322,10 +1391,15 @@
        }
        //消费变动
        if (memberTotalChangeDto.getPayMoney() != null) {
            memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
            memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() + 1);
            memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney());
            memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime());
            if(memberTotalChangeDto.getPayMoney().compareTo(BigDecimal.ZERO)>=0){
                memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
                memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() + 1);
                memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney());
                memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime());
            }else{
                memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
                memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() - 1);
            }
        }
        //服务次数变动
        if (memberTotalChangeDto.getServiceCount() != null) {
@@ -1410,8 +1484,21 @@
        BigDecimal manTotalBig = new BigDecimal(manTotal);
        BigDecimal personTotalBig = new BigDecimal(personTotal);
        BigDecimal bigTen = new BigDecimal("100.00");
        BigDecimal menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP);
        BigDecimal womenPercent = bigTen.subtract(menPercent);
        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);
        }
        memberFixedTotalVo.setManPercent(menPercent);
        memberFixedTotalVo.setWomenPercent(womenPercent);
        // 年龄段数组
@@ -1569,4 +1656,163 @@
    public void mgtFrozenMember(MgtBaseGetDto mgtBaseGetDto){
        sysUserService.frozenUser(Long.valueOf(mgtBaseGetDto.getId()));
    }
    /**
     * @description  获取用户任务列表
     * @author  jqs
     * @date    2023/7/12 15:07
     * @param userId
     * @return  List<AppIntegralTaskListVo>
     */
    @Override
    public List<AppIntegralTaskListVo> listAppMemberIntegralTask(Long userId){
        // 获取指定用户的会员信息
        Member member = this.getByUserId(userId);
        // 获取会员的总积分信息
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        // 获取其他配置信息
        AppOtherConfigGetVo appOtherConfigGetVo = remoteConfigService.getAppOtherConfigGetVo().getData();
        // 创建一个空的积分任务列表
        List<AppIntegralTaskListVo> appIntegralTaskListVoList = new ArrayList<>();
        // 创建分享小程序任务
        AppIntegralTaskListVo shareTask = new AppIntegralTaskListVo();
        shareTask.setTaskContent("分享小程序给微信好友");
        shareTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getShareIntegral() + "积分");
        shareTask.setRecommendFlag(1);
        shareTask.setCompleteFlag(memberTotal.getShareFlag());
        appIntegralTaskListVoList.add(shareTask);
        // 创建提交平台建议任务
        AppIntegralTaskListVo plSuggestTask = new AppIntegralTaskListVo();
        plSuggestTask.setTaskContent("提交平台建议");
        plSuggestTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSuggestPlatformIntegral() + "积分");
        plSuggestTask.setRecommendFlag(1);
        plSuggestTask.setCompleteFlag(memberTotal.getPlSuggestFlag());
        appIntegralTaskListVoList.add(plSuggestTask);
        // 创建提交门店建议任务
        AppIntegralTaskListVo shopSuggestTask = new AppIntegralTaskListVo();
        shopSuggestTask.setTaskContent("提交门店建议");
        shopSuggestTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSuggestShopIntegral() + "积分");
        shopSuggestTask.setRecommendFlag(1);
        shopSuggestTask.setCompleteFlag(memberTotal.getShopSuggestFlag());
        appIntegralTaskListVoList.add(shopSuggestTask);
        // 创建每日签到任务
        AppIntegralTaskListVo signTask = new AppIntegralTaskListVo();
        signTask.setTaskContent("每日签到");
        signTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSignInIntegral() + "积分");
        signTask.setRecommendFlag(1);
        signTask.setCompleteFlag(memberTotal.getSignFlag());
        appIntegralTaskListVoList.add(signTask);
        // 创建消费得积分任务
        AppIntegralTaskListVo buyTask = new AppIntegralTaskListVo();
        buyTask.setTaskContent("消费得积分");
        buyTask.setTaskDesc("每消费1元+" + appOtherConfigGetVo.getPayMoneyIntegral() + "积分");
        buyTask.setRecommendFlag(1);
        buyTask.setCompleteFlag(memberTotal.getBuyFlag());
        appIntegralTaskListVoList.add(buyTask);
        // 返回积分任务列表
        return appIntegralTaskListVoList;
    }
    /**
     * @description  积分变动
     * @author  jqs
     * @date    2023/7/12 15:59
     * @param integralChangeDto
     * @return  void
     */
    @Override
    public Boolean changeIntegral(IntegralChangeDto integralChangeDto){
        Member member = this.getByUserId(integralChangeDto.getUserId());
        Integer integralType = integralChangeDto.getIntegralType();
        Integer changeIntegral = integralChangeDto.getChangeIntegral();
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        Boolean completeFlag = false;
        switch(integralType){
            case 1:
                if(memberTotal.getShareFlag()==1){
                    completeFlag = true;
                }
                break;
            case 2:
                if(memberTotal.getPlSuggestFlag()==1){
                    completeFlag = true;
                }
                break;
            case 3:
                if(memberTotal.getShopSuggestFlag()==1){
                    completeFlag = true;
                }
                break;
            case 4:
                if(memberTotal.getSignFlag()==1){
                    completeFlag = true;
                }
                break;
            default:
                break;
        }
        if(completeFlag){
            return completeFlag;
        }
        AppOtherConfigGetVo appOtherConfigGetVo = remoteConfigService.getAppOtherConfigGetVo().getData();
        IntegralRecord integralRecord = new IntegralRecord();
        integralRecord.setDelFlag(0);
        integralRecord.setUserId(integralChangeDto.getUserId());
        integralRecord.setChangeType(integralType);
        integralRecord.setCreateTime(new Date());
        //1分享获取2平台建议获取3门店建议获取4每日签到5消费得积分
        switch(integralType){
            case 1:
                changeIntegral = appOtherConfigGetVo.getShareIntegral();
                integralRecord.setChangeIntegral(changeIntegral);
                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
                integralRecord.setChangeReason("每日任务【分享小程序】获得积分");
                memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                memberTotal.setShareFlag(1);
                break;
            case 2:
                changeIntegral = appOtherConfigGetVo.getSuggestPlatformIntegral();
                integralRecord.setChangeIntegral(changeIntegral);
                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
                integralRecord.setChangeReason("每日任务【提交平台建议】获得积分");
                memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                memberTotal.setPlSuggestFlag(1);
                break;
            case 3:
                changeIntegral = appOtherConfigGetVo.getSuggestShopIntegral();
                integralRecord.setChangeIntegral(changeIntegral);
                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
                integralRecord.setChangeReason("每日任务【提交门店建议】获得积分");
                memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                memberTotal.setShopSuggestFlag(1);
                break;
            case 4:
                changeIntegral = appOtherConfigGetVo.getSignInIntegral();
                integralRecord.setChangeIntegral(changeIntegral);
                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
                integralRecord.setChangeReason("每日任务【签到】获得积分");
                memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                memberTotal.setSignFlag(1);
                break;
            case 5:
                integralRecord.setChangeIntegral(changeIntegral);
                integralRecord.setSurpIntegral(integralRecord.getSurpIntegral()+changeIntegral);
                integralRecord.setChangeReason("订单【"+integralChangeDto.getOrderNo()+"】获得积分");
                integralRecord.setOrderId(integralChangeDto.getOrderId());
                integralRecord.setOrderNo(integralChangeDto.getOrderNo());
                memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
                memberTotal.setBuyFlag(1);
                break;
            default:
                break;
        }
        memberTotalService.saveOrUpdate(memberTotal);
        integralRecordService.saveOrUpdate(integralRecord);
        return completeFlag;
    }
}