From a56aa58c55f966c38cb8b5fc969eb1018fad5ce8 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 22 Sep 2022 16:38:13 +0800 Subject: [PATCH] 20220902 --- src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java | 31 ++++++++++++++++++++++++++++--- 1 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java index a7e79cf..62d0087 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java @@ -17,6 +17,8 @@ import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.service.IScoreService; import cc.mrbird.febs.mall.vo.ScoreSignVo; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; @@ -49,16 +51,37 @@ MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(member.getId()); + MallScoreSignRecord mallScoreSignRecord = mallScoreSignRecordMapper.selectRecentSignRecord(member.getId()); + ScoreSignVo scoreSign = new ScoreSignVo(); scoreSign.setMineScore(wallet.getPrizeScore().intValue()); - scoreSign.setHasSignDays(1); + + if (mallScoreSignRecord == null) { + scoreSign.setHasSignDays(0); + } else { + mallScoreSignRecord = judgeScoreIsContinuity(mallScoreSignRecord); + scoreSign.setHasSignDays(mallScoreSignRecord.getTotalCnt()); + } DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SCORE_SIGN_SETTING.getType(), DataDictionaryEnum.SCORE_SIGN_SETTING.getCode()); - if (dic != null) { scoreSign.setSetting(JSONObject.parseObject(dic.getValue(), ScoreSettingDto.class)); } return scoreSign; + } + + @Override + public MallScoreSignRecord judgeScoreIsContinuity(MallScoreSignRecord mallScoreSignRecord) { + if (mallScoreSignRecord.getSignTime() == null) { + return mallScoreSignRecord; + } + + // 若最新签到日期,与当天相差大于一天,则更新数据库(避免定时器更新失败) + if (DateUtil.betweenDay(mallScoreSignRecord.getSignTime(), new Date(), true) > 1 || mallScoreSignRecord.getTotalCnt() == 7) { + mallScoreSignRecord.setTotalCnt(0); + mallScoreSignRecordMapper.updateById(mallScoreSignRecord); + } + return mallScoreSignRecord; } @Override @@ -76,10 +99,12 @@ mallScoreSignRecord = new MallScoreSignRecord(); } - if (mallScoreSignRecord.getSignTime() != null && DateUtil.between(mallScoreSignRecord.getSignTime(), new Date(), DateUnit.DAY) == 0) { + if (mallScoreSignRecord.getSignTime() != null && DateUtil.betweenDay(mallScoreSignRecord.getSignTime(), new Date(), true) == 0) { throw new FebsException("今天已签到"); } + mallScoreSignRecord = judgeScoreIsContinuity(mallScoreSignRecord); + ScoreSettingDto scoreSetting = JSONObject.parseObject(dic.getValue(),ScoreSettingDto.class); int days = mallScoreSignRecord.getTotalCnt() == null ? 1 : mallScoreSignRecord.getTotalCnt() + 1; switch (days) { -- Gitblit v1.9.1