From f26537e926d7ad2d725e059700142ba14c0c2b1f Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期三, 12 七月 2023 21:04:27 +0800
Subject: [PATCH] 定时任务延时任务

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java |  281 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 267 insertions(+), 14 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 a400294..5308a00 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
@@ -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"};
         // 不同年龄段的会员数数组
@@ -1402,6 +1471,31 @@
             merTotalDto.setShopId(null);
         }
         MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto);
+        Integer manTotal = mgtAgeTotalVo.getManTotal();
+        Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
+        memberFixedTotalVo.setManTotal(manTotal);
+        memberFixedTotalVo.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);
+        }
+        memberFixedTotalVo.setManPercent(menPercent);
+        memberFixedTotalVo.setWomenPercent(womenPercent);
         // 年龄段数组
         String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
         // 不同年龄段的会员数数组
@@ -1420,6 +1514,12 @@
         if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
             goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
             memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
+        }
+        //获取会员消费排名
+        List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto);
+        if (memberPayList != null && memberPayList.size() > 0) {
+            memberPayList = listRemoveNull(memberPayList);
+            memberFixedTotalVo.setMemberPayList(memberPayList);
         }
         // 获取不同活跃度的会员数
         List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
@@ -1444,12 +1544,6 @@
                 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;
     }
@@ -1557,4 +1651,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;
+    }
 }

--
Gitblit v1.7.1