jiangqs
2023-07-13 cfd0118ef446a66f91999afc7b1e46ca607adf50
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -306,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;
    }
@@ -355,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;
    }
@@ -737,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);
    }
@@ -1349,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) {
@@ -1609,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;
    }
}