Commit 07dbfc55466484caaa8c06abc2af66cf00ac083a
1 parent
c7695def
code review:sign 签到逻辑
Showing
9 changed files
with
14 additions
and
107 deletions
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/CouponTemplateApi.java deleted
| 1 | -package cn.iocoder.yudao.module.promotion.api.coupon; | |
| 2 | - | |
| 3 | -import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 4 | - | |
| 5 | -import java.util.Collection; | |
| 6 | -import java.util.List; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * 优惠劵模版 API 接口 | |
| 10 | - * | |
| 11 | - * @author HUIHUI | |
| 12 | - */ | |
| 13 | -public interface CouponTemplateApi { | |
| 14 | - | |
| 15 | - /** | |
| 16 | - * 获得优惠券模版的精简信息列表 | |
| 17 | - * | |
| 18 | - * @param ids 优惠券模版编号 | |
| 19 | - * @return 优惠券模版的精简信息列表 | |
| 20 | - */ | |
| 21 | - List<CouponTemplateRespDTO> getCouponTemplateListByIds(Collection<Long> ids); | |
| 22 | - | |
| 23 | -} |
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/dto/CouponTemplateRespDTO.java deleted
| 1 | -package cn.iocoder.yudao.module.promotion.api.coupon.dto; | |
| 2 | - | |
| 3 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 4 | -import lombok.Data; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * 优惠券模版 Response DTO | |
| 8 | - * | |
| 9 | - * @author HUIHUI | |
| 10 | - */ | |
| 11 | -@Data | |
| 12 | -public class CouponTemplateRespDTO { | |
| 13 | - /** | |
| 14 | - * 模板编号,自增唯一 | |
| 15 | - */ | |
| 16 | - | |
| 17 | - private Long id; | |
| 18 | - /** | |
| 19 | - * 优惠劵名 | |
| 20 | - */ | |
| 21 | - private String name; | |
| 22 | - | |
| 23 | - /** | |
| 24 | - * 状态 | |
| 25 | - * | |
| 26 | - * 枚举 {@link CommonStatusEnum} | |
| 27 | - */ | |
| 28 | - private Integer status; | |
| 29 | - | |
| 30 | -} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/CouponTemplateApiImpl.java deleted
| 1 | -package cn.iocoder.yudao.module.promotion.api.coupon; | |
| 2 | - | |
| 3 | -import cn.hutool.core.collection.CollUtil; | |
| 4 | -import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 5 | -import cn.iocoder.yudao.module.promotion.convert.coupon.CouponTemplateConvert; | |
| 6 | -import cn.iocoder.yudao.module.promotion.service.coupon.CouponTemplateService; | |
| 7 | -import org.springframework.stereotype.Service; | |
| 8 | - | |
| 9 | -import javax.annotation.Resource; | |
| 10 | -import java.util.Collection; | |
| 11 | -import java.util.Collections; | |
| 12 | -import java.util.List; | |
| 13 | - | |
| 14 | -/** | |
| 15 | - * 优惠劵模版 API 接口实现类 | |
| 16 | - * | |
| 17 | - * @author HUIHUI | |
| 18 | - */ | |
| 19 | -@Service | |
| 20 | -public class CouponTemplateApiImpl implements CouponTemplateApi { | |
| 21 | - | |
| 22 | - @Resource | |
| 23 | - private CouponTemplateService couponTemplateService; | |
| 24 | - | |
| 25 | - @Override | |
| 26 | - public List<CouponTemplateRespDTO> getCouponTemplateListByIds(Collection<Long> ids) { | |
| 27 | - if (CollUtil.isEmpty(ids)) { // 防御一下 | |
| 28 | - return Collections.emptyList(); | |
| 29 | - } | |
| 30 | - return CouponTemplateConvert.INSTANCE.convertList(couponTemplateService.getCouponTemplateListByIds(ids)); | |
| 31 | - } | |
| 32 | - | |
| 33 | -} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/coupon/CouponTemplateConvert.java
| ... | ... | @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.promotion.convert.coupon; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.map.MapUtil; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 6 | 5 | import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateCreateReqVO; |
| 7 | 6 | import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplatePageReqVO; |
| 8 | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateRespVO; |
| ... | ... | @@ -59,6 +58,4 @@ public interface CouponTemplateConvert { |
| 59 | 58 | } |
| 60 | 59 | } |
| 61 | 60 | |
| 62 | - List<CouponTemplateRespDTO> convertList(List<CouponTemplateDO> list); | |
| 63 | - | |
| 64 | 61 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/coupon/CouponTemplateMapper.java
| ... | ... | @@ -75,8 +75,4 @@ public interface CouponTemplateMapper extends BaseMapperX<CouponTemplateDO> { |
| 75 | 75 | return canTakeConsumer; |
| 76 | 76 | } |
| 77 | 77 | |
| 78 | - default List<CouponTemplateDO> selectListByIds(Collection<Long> ids) { | |
| 79 | - return selectList(new LambdaQueryWrapperX<CouponTemplateDO>().in(CouponTemplateDO::getId, ids)); | |
| 80 | - } | |
| 81 | - | |
| 82 | 78 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateService.java
| ... | ... | @@ -98,6 +98,6 @@ public interface CouponTemplateService { |
| 98 | 98 | * @param ids 优惠券模版编号 |
| 99 | 99 | * @return 优惠券模版列表 |
| 100 | 100 | */ |
| 101 | - List<CouponTemplateDO> getCouponTemplateListByIds(Collection<Long> ids); | |
| 101 | + List<CouponTemplateDO> getCouponTemplateList(Collection<Long> ids); | |
| 102 | 102 | |
| 103 | 103 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImpl.java
| ... | ... | @@ -128,8 +128,8 @@ public class CouponTemplateServiceImpl implements CouponTemplateService { |
| 128 | 128 | } |
| 129 | 129 | |
| 130 | 130 | @Override |
| 131 | - public List<CouponTemplateDO> getCouponTemplateListByIds(Collection<Long> ids) { | |
| 132 | - return couponTemplateMapper.selectListByIds(ids); | |
| 131 | + public List<CouponTemplateDO> getCouponTemplateList(Collection<Long> ids) { | |
| 132 | + return couponTemplateMapper.selectBatchIds(ids); | |
| 133 | 133 | } |
| 134 | 134 | |
| 135 | 135 | } | ... | ... |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/signin/MemberSignInRecordConvert.java
| ... | ... | @@ -43,12 +43,13 @@ public interface MemberSignInRecordConvert { |
| 43 | 43 | |
| 44 | 44 | AppMemberSignInRecordRespVO coverRecordToAppRecordVo(MemberSignInRecordDO memberSignInRecordDO); |
| 45 | 45 | |
| 46 | - default MemberSignInRecordDO convert(Long userId, MemberSignInRecordDO lastRecord, List<MemberSignInConfigDO> signInConfigs) { | |
| 47 | - // 1. 获取最大签到天数积分配置 | |
| 48 | - signInConfigs.sort(Comparator.comparing(MemberSignInConfigDO::getDay)); | |
| 49 | - MemberSignInConfigDO lastConfig = signInConfigs.get(signInConfigs.size() - 1); // 最大签到天数配置 | |
| 46 | + default MemberSignInRecordDO convert(Long userId, MemberSignInRecordDO lastRecord, List<MemberSignInConfigDO> configs) { | |
| 47 | + // 1. 计算是第几天签到 | |
| 48 | + configs.sort(Comparator.comparing(MemberSignInConfigDO::getDay)); | |
| 49 | + MemberSignInConfigDO lastConfig = CollUtil.getLast(configs); // 最大签到天数配置 | |
| 50 | 50 | // 1.2. 计算今天是第几天签到 |
| 51 | 51 | int day = 1; |
| 52 | + // TODO @puhui999:要判断是不是昨天签到的;是否是昨天的判断,可以抽个方法到 util 里 | |
| 52 | 53 | if (lastRecord != null) { |
| 53 | 54 | day = lastRecord.getDay() + 1; |
| 54 | 55 | } |
| ... | ... | @@ -56,14 +57,12 @@ public interface MemberSignInRecordConvert { |
| 56 | 57 | if (day > lastConfig.getDay()) { |
| 57 | 58 | day = 1; // 超过最大配置的天数,重置到第一天。(也就是说开启下一轮签到) |
| 58 | 59 | } |
| 59 | - // 1.4 初始化签到信息 | |
| 60 | - MemberSignInRecordDO record = new MemberSignInRecordDO().setUserId(userId) | |
| 61 | - .setDay(day) // 设置签到天数 | |
| 62 | - .setPoint(0) // 设置签到积分默认为 0 | |
| 63 | - .setExperience(0); // 设置签到经验默认为 0 | |
| 64 | 60 | |
| 65 | - // 2. 获取签到对应的积分 | |
| 66 | - MemberSignInConfigDO config = CollUtil.findOne(signInConfigs, item -> ObjUtil.equal(item.getDay(), record.getDay())); | |
| 61 | + // 2.1 初始化签到信息 | |
| 62 | + MemberSignInRecordDO record = new MemberSignInRecordDO().setUserId(userId) | |
| 63 | + .setDay(day).setPoint(0).setExperience(0); | |
| 64 | + // 2.2 获取签到对应的积分 | |
| 65 | + MemberSignInConfigDO config = CollUtil.findOne(configs, item -> ObjUtil.equal(item.getDay(), record.getDay())); | |
| 67 | 66 | if (config == null) { |
| 68 | 67 | return record; |
| 69 | 68 | } | ... | ... |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInRecordServiceImpl.java
| ... | ... | @@ -85,6 +85,7 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService |
| 85 | 85 | // TODO @puhui999:连续签到,可以基于 lastRecord 的 day 和当前时间判断呀?按 day 统计连续签到天数可能不准确 |
| 86 | 86 | // 1. day 只是记录第几天签到的有可能不连续,比如第一次签到是周一,第二次签到是周三这样 lastRecord 的 day 为 2 但是并不是连续的两天 |
| 87 | 87 | // 2. day 超出签到规则的最大天数会重置到从第一天开始签到(我理解为开始下一轮,类似一周签到七天七天结束下周又从周一开始签到) |
| 88 | + // 1. 回复:周三签到,day 要归 1 呀。连续签到哈; | |
| 88 | 89 | List<MemberSignInRecordDO> signInRecords = signInRecordMapper.selectListByUserId(userId); |
| 89 | 90 | signInRecords.sort(Comparator.comparing(MemberSignInRecordDO::getCreateTime).reversed()); // 根据签到时间倒序 |
| 90 | 91 | summary.setContinuousDay(calculateConsecutiveDays(signInRecords)); | ... | ... |