Commit 0db4581030328bfc34d1464e67a31153438d9686
1 parent
3e570b8b
code review:签到逻辑
Showing
7 changed files
with
19 additions
and
14 deletions
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java
| ... | ... | @@ -93,6 +93,7 @@ public class ProductSpuController { |
| 93 | 93 | // 查询商品 SKU |
| 94 | 94 | List<ProductSkuDO> skus = productSkuService.getSkuListBySpuId(spu.getId()); |
| 95 | 95 | // 查询优惠卷 |
| 96 | + // TODO @puhui999:优惠劵的信息,要不交给前端读取?主要是为了避免商品依赖 promotion 模块哈; | |
| 96 | 97 | List<CouponTemplateRespDTO> couponTemplateList = couponTemplateApi.getCouponTemplateListByIds( |
| 97 | 98 | spu.getGiveCouponTemplateIds()); |
| 98 | 99 | return success(ProductSpuConvert.INSTANCE.convertForSpuDetailRespVO(spu, skus, couponTemplateList)); | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/banner/vo/BannerPageReqVO.java
| ... | ... | @@ -13,15 +13,13 @@ import java.time.LocalDateTime; |
| 13 | 13 | |
| 14 | 14 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 15 | 15 | |
| 16 | -/** | |
| 17 | - * @author xia | |
| 18 | - */ | |
| 19 | 16 | @Schema(description = "管理后台 - Banner 分页 Request VO") |
| 20 | 17 | @Data |
| 21 | 18 | @EqualsAndHashCode(callSuper = true) |
| 22 | 19 | @ToString(callSuper = true) |
| 23 | 20 | public class BannerPageReqVO extends PageParam { |
| 24 | 21 | |
| 22 | + // TODO @puhui999:example | |
| 25 | 23 | @Schema(description = "标题") |
| 26 | 24 | private String title; |
| 27 | 25 | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/banner/AppBannerController.java
| ... | ... | @@ -26,8 +26,7 @@ import static cn.iocoder.yudao.framework.common.util.cache.CacheUtils.buildAsync |
| 26 | 26 | @Validated |
| 27 | 27 | public class AppBannerController { |
| 28 | 28 | |
| 29 | - @Resource | |
| 30 | - private BannerService bannerService; | |
| 29 | + // TODO @puhui999:这个目前不缓存,也没问题,因为首页没用到。 | |
| 31 | 30 | /** |
| 32 | 31 | * {@link AppBannerRespVO} 缓存,通过它异步刷新 {@link #getBannerList0(Integer)} 所要的首页数据 |
| 33 | 32 | */ |
| ... | ... | @@ -41,6 +40,9 @@ public class AppBannerController { |
| 41 | 40 | |
| 42 | 41 | }); |
| 43 | 42 | |
| 43 | + @Resource | |
| 44 | + private BannerService bannerService; | |
| 45 | + | |
| 44 | 46 | @GetMapping("/list") |
| 45 | 47 | @Operation(summary = "获得 banner 列表") |
| 46 | 48 | @Parameter(name = "position", description = "Banner position", example = "1") | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/banner/BannerDO.java
| ... | ... | @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.promotion.enums.banner.BannerPositionEnum; |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 7 | 7 | import lombok.*; |
| 8 | 8 | |
| 9 | +// TODO @puhui999:表名改成 promotion_banner,然后有序加下;另外,sql 给我下哈;还有那个 position 字典,嘿嘿。 | |
| 9 | 10 | /** |
| 10 | 11 | * banner DO |
| 11 | 12 | * |
| ... | ... | @@ -61,6 +62,4 @@ public class BannerDO extends BaseDO { |
| 61 | 62 | */ |
| 62 | 63 | private Integer browseCount; |
| 63 | 64 | |
| 64 | - // TODO 芋艿 其他数据相关 | |
| 65 | - | |
| 66 | 65 | } | ... | ... |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/signin/MemberSignInRecordConvert.java
| ... | ... | @@ -48,19 +48,20 @@ public interface MemberSignInRecordConvert { |
| 48 | 48 | // 1. 计算今天是第几天签到 |
| 49 | 49 | long day = ChronoUnit.DAYS.between(firstRecord.getCreateTime(), LocalDateTime.now()); |
| 50 | 50 | // 2. 初始化签到信息 |
| 51 | + // TODO @puhui999:signInRecord=》record | |
| 51 | 52 | MemberSignInRecordDO signInRecord = new MemberSignInRecordDO().setUserId(userId) |
| 52 | - .setDay(Integer.parseInt(Long.toString(day))) // 设置签到天数 | |
| 53 | - .setPoint(0) // 设置签到积分默认为 0 | |
| 53 | + .setDay(Integer.parseInt(Long.toString(day))) // 设置签到天数 TODO @puhui999:day 应该跟着第几天签到走;不是累加哈;另外 long 转 int,应该 (int) day 就可以了。。。 | |
| 54 | + .setPoint(0) // 设置签到积分默认为 | |
| 54 | 55 | .setExperience(0); // 设置签到经验默认为 0 |
| 55 | - | |
| 56 | - | |
| 57 | 56 | // 3. 获取签到对应的积分数 |
| 58 | 57 | MemberSignInConfigDO lastConfig = signInConfigs.get(signInConfigs.size() - 1); // 最大签到天数 |
| 59 | 58 | if (day > lastConfig.getDay()) { // 超出范围按第一天的经验计算 |
| 59 | + // TODO @puhui999:不能直接取 0,万一它 day 不匹配哈。就是第一天没奖励。。。 | |
| 60 | 60 | signInRecord.setPoint(signInConfigs.get(0).getPoint()); |
| 61 | 61 | signInRecord.setExperience(signInConfigs.get(0).getExperience()); |
| 62 | 62 | return signInRecord; |
| 63 | 63 | } |
| 64 | + // TODO @puhui999:signInConfig 可以改成 config; | |
| 64 | 65 | MemberSignInConfigDO signInConfig = CollUtil.findOne(signInConfigs, config -> ObjUtil.equal(config.getDay(), day)); |
| 65 | 66 | if (signInConfig == null) { |
| 66 | 67 | return signInRecord; | ... | ... |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/signin/MemberSignInRecordMapper.java
| ... | ... | @@ -35,9 +35,9 @@ public interface MemberSignInRecordMapper extends BaseMapperX<MemberSignInRecord |
| 35 | 35 | .orderByDesc(MemberSignInRecordDO::getId)); |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | - | |
| 38 | + // TODO @puhui999:这 2 个方法,是不是一个 first;一个 last 就可以了。。 | |
| 39 | 39 | /** |
| 40 | - * 获取用户最近的签到记录信息,根据签到时间倒序 | |
| 40 | + * 获取用户最近的签到记录信息,根据签到时间倒序 | |
| 41 | 41 | * |
| 42 | 42 | * @param userId 用户编号 |
| 43 | 43 | * @return 签到记录列表 |
| ... | ... | @@ -63,6 +63,7 @@ public interface MemberSignInRecordMapper extends BaseMapperX<MemberSignInRecord |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | 65 | default Long selectCountByUserId(Long userId) { |
| 66 | + // TODO @puhui999:可以使用 selectCount 里面允许传递字段的方法 | |
| 66 | 67 | return selectCount(new LambdaQueryWrapperX<MemberSignInRecordDO>() |
| 67 | 68 | .eq(MemberSignInRecordDO::getUserId, userId)); |
| 68 | 69 | } |
| ... | ... | @@ -73,6 +74,7 @@ public interface MemberSignInRecordMapper extends BaseMapperX<MemberSignInRecord |
| 73 | 74 | * @param userId 用户编号 |
| 74 | 75 | * @return 签到记录信息 |
| 75 | 76 | */ |
| 77 | + // TODO @puhui999:这个排序,可以交给 service 哈; | |
| 76 | 78 | default List<MemberSignInRecordDO> selectListByUserId(Long userId) { |
| 77 | 79 | return selectList(new LambdaQueryWrapperX<MemberSignInRecordDO>() |
| 78 | 80 | .eq(MemberSignInRecordDO::getUserId, userId) | ... | ... |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInRecordServiceImpl.java
| ... | ... | @@ -58,6 +58,7 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService |
| 58 | 58 | @Override |
| 59 | 59 | public AppMemberSignInRecordSummaryRespVO getSignInRecordSummary(Long userId) { |
| 60 | 60 | // 1. 初始化默认返回信息 |
| 61 | + // TODO @puhui999:这里 vo 改成 summary 会更好理解; | |
| 61 | 62 | AppMemberSignInRecordSummaryRespVO vo = new AppMemberSignInRecordSummaryRespVO(); |
| 62 | 63 | vo.setTotalDay(0); |
| 63 | 64 | vo.setContinuousDay(0); |
| ... | ... | @@ -71,6 +72,7 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService |
| 71 | 72 | vo.setTotalDay(signCount.intValue()); // 设置总签到天数 |
| 72 | 73 | |
| 73 | 74 | // 3. 校验当天是否有签到 |
| 75 | + // TODO @puhui999:是不是 signInRecord 可以精简成 record 哈;另外,Desc 貌似可以去掉哈;最后一条了; | |
| 74 | 76 | MemberSignInRecordDO signInRecord = signInRecordMapper.selectLastRecordByUserIdDesc(userId); |
| 75 | 77 | if (signInRecord == null) { |
| 76 | 78 | return vo; |
| ... | ... | @@ -82,6 +84,7 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService |
| 82 | 84 | return vo; |
| 83 | 85 | } |
| 84 | 86 | // 4.1. 判断连续签到天数 |
| 87 | + // TODO @puhui999:连续签到,可以基于 signInRecord 的 day 和当前时间判断呀? | |
| 85 | 88 | List<MemberSignInRecordDO> signInRecords = signInRecordMapper.selectListByUserId(userId); |
| 86 | 89 | vo.setContinuousDay(calculateConsecutiveDays(signInRecords)); |
| 87 | 90 | return vo; |
| ... | ... | @@ -164,7 +167,6 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService |
| 164 | 167 | if (!ObjectUtils.equalsAny(record.getExperience(), null, 0)) { |
| 165 | 168 | memberLevelService.addExperience(userId, record.getExperience(), MemberExperienceBizTypeEnum.SIGN_IN, String.valueOf(record.getId())); |
| 166 | 169 | } |
| 167 | - | |
| 168 | 170 | return record; |
| 169 | 171 | } |
| 170 | 172 | ... | ... |