Commit 07dbfc55466484caaa8c06abc2af66cf00ac083a

Authored by YunaiV
1 parent c7695def

code review:sign 签到逻辑

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,7 +2,6 @@ package cn.iocoder.yudao.module.promotion.convert.coupon;
2 2
3 import cn.hutool.core.map.MapUtil; 3 import cn.hutool.core.map.MapUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 -import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO;  
6 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateCreateReqVO; 5 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateCreateReqVO;
7 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplatePageReqVO; 6 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplatePageReqVO;
8 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateRespVO; 7 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateRespVO;
@@ -59,6 +58,4 @@ public interface CouponTemplateConvert { @@ -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&lt;CouponTemplateDO&gt; { @@ -75,8 +75,4 @@ public interface CouponTemplateMapper extends BaseMapperX&lt;CouponTemplateDO&gt; {
75 return canTakeConsumer; 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,6 +98,6 @@ public interface CouponTemplateService {
98 * @param ids 优惠券模版编号 98 * @param ids 优惠券模版编号
99 * @return 优惠券模版列表 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,8 +128,8 @@ public class CouponTemplateServiceImpl implements CouponTemplateService {
128 } 128 }
129 129
130 @Override 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,12 +43,13 @@ public interface MemberSignInRecordConvert {
43 43
44 AppMemberSignInRecordRespVO coverRecordToAppRecordVo(MemberSignInRecordDO memberSignInRecordDO); 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 // 1.2. 计算今天是第几天签到 50 // 1.2. 计算今天是第几天签到
51 int day = 1; 51 int day = 1;
  52 + // TODO @puhui999:要判断是不是昨天签到的;是否是昨天的判断,可以抽个方法到 util 里
52 if (lastRecord != null) { 53 if (lastRecord != null) {
53 day = lastRecord.getDay() + 1; 54 day = lastRecord.getDay() + 1;
54 } 55 }
@@ -56,14 +57,12 @@ public interface MemberSignInRecordConvert { @@ -56,14 +57,12 @@ public interface MemberSignInRecordConvert {
56 if (day > lastConfig.getDay()) { 57 if (day > lastConfig.getDay()) {
57 day = 1; // 超过最大配置的天数,重置到第一天。(也就是说开启下一轮签到) 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 if (config == null) { 66 if (config == null) {
68 return record; 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,6 +85,7 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService
85 // TODO @puhui999:连续签到,可以基于 lastRecord 的 day 和当前时间判断呀?按 day 统计连续签到天数可能不准确 85 // TODO @puhui999:连续签到,可以基于 lastRecord 的 day 和当前时间判断呀?按 day 统计连续签到天数可能不准确
86 // 1. day 只是记录第几天签到的有可能不连续,比如第一次签到是周一,第二次签到是周三这样 lastRecord 的 day 为 2 但是并不是连续的两天 86 // 1. day 只是记录第几天签到的有可能不连续,比如第一次签到是周一,第二次签到是周三这样 lastRecord 的 day 为 2 但是并不是连续的两天
87 // 2. day 超出签到规则的最大天数会重置到从第一天开始签到(我理解为开始下一轮,类似一周签到七天七天结束下周又从周一开始签到) 87 // 2. day 超出签到规则的最大天数会重置到从第一天开始签到(我理解为开始下一轮,类似一周签到七天七天结束下周又从周一开始签到)
  88 + // 1. 回复:周三签到,day 要归 1 呀。连续签到哈;
88 List<MemberSignInRecordDO> signInRecords = signInRecordMapper.selectListByUserId(userId); 89 List<MemberSignInRecordDO> signInRecords = signInRecordMapper.selectListByUserId(userId);
89 signInRecords.sort(Comparator.comparing(MemberSignInRecordDO::getCreateTime).reversed()); // 根据签到时间倒序 90 signInRecords.sort(Comparator.comparing(MemberSignInRecordDO::getCreateTime).reversed()); // 根据签到时间倒序
90 summary.setContinuousDay(calculateConsecutiveDays(signInRecords)); 91 summary.setContinuousDay(calculateConsecutiveDays(signInRecords));