diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java index a8cdfce2b..4cd971a3b 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java @@ -46,7 +46,7 @@ public class AppActivityController { @Parameter(name = "spuId", description = "商品编号", required = true) public CommonResult> getActivityListBySpuId(@RequestParam("spuId") Long spuId) { // 每种活动,只返回一个 - return success(getAppActivityRespVOList(Collections.singletonList(spuId))); + return success(getAppActivityList(Collections.singletonList(spuId))); } @GetMapping("/list-by-spu-ids") @@ -57,16 +57,17 @@ public class AppActivityController { return success(MapUtil.empty()); } // 每种活动,只返回一个;key 为 SPU 编号 - return success(convertMultiMap(getAppActivityRespVOList(spuIds), AppActivityRespVO::getSpuId)); + return success(convertMultiMap(getAppActivityList(spuIds), AppActivityRespVO::getSpuId)); } - private List getAppActivityRespVOList(Collection spuIds) { + private List getAppActivityList(Collection spuIds) { if (CollUtil.isEmpty(spuIds)) { return new ArrayList<>(); } LocalDateTime now = LocalDateTime.now(); List activityList = new ArrayList<>(); - // 拼团活动-获取开启的且开始的且没有结束的活动 + + // 1. 拼团活动 - 获取开启的且开始的且没有结束的活动 List combinationActivities = combinationActivityService.getCombinationActivityBySpuIdsAndStatusAndDateTimeLt( spuIds, CommonStatusEnum.ENABLE.getStatus(), now); if (CollUtil.isNotEmpty(combinationActivities)) { @@ -76,7 +77,8 @@ public class AppActivityController { .setSpuId(item.getSpuId()).setStartTime(item.getStartTime()).setEndTime(item.getEndTime())); }); } - // 秒杀活动-获取开启的且开始的且没有结束的活动 + + // 2. 秒杀活动 - 获取开启的且开始的且没有结束的活动 List seckillActivities = seckillActivityService.getSeckillActivityBySpuIdsAndStatusAndDateTimeLt( spuIds, CommonStatusEnum.ENABLE.getStatus(), now); if (CollUtil.isNotEmpty(seckillActivities)) { @@ -86,7 +88,8 @@ public class AppActivityController { .setSpuId(item.getSpuId()).setStartTime(item.getStartTime()).setEndTime(item.getEndTime())); }); } - // 砍价活动-获取开启的且开始的且没有结束的活动 + + // 3. 砍价活动 - 获取开启的且开始的且没有结束的活动 List bargainActivities = bargainActivityService.getBargainActivityBySpuIdsAndStatusAndDateTimeLt( spuIds, CommonStatusEnum.ENABLE.getStatus(), now); if (CollUtil.isNotEmpty(bargainActivities)) { diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleCategoryController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleCategoryController.java index 1c600d816..482b497d9 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleCategoryController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleCategoryController.java @@ -32,7 +32,7 @@ public class AppArticleCategoryController { public CommonResult> getArticleCategoryList() { List categoryList = articleCategoryService.getArticleCategoryListByStatus( CommonStatusEnum.ENABLE.getStatus()); - categoryList.sort(Comparator.comparing(ArticleCategoryDO::getSort).reversed()); // 按 sort 降序排列 + categoryList.sort(Comparator.comparing(ArticleCategoryDO::getSort)); // 按 sort 降序排列 return success(ArticleCategoryConvert.INSTANCE.convertList04(categoryList)); } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleController.java index 2b403c03e..534e82ff3 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleController.java @@ -56,10 +56,12 @@ public class AppArticleController { return success(ArticleConvert.INSTANCE.convert01(articleService.getArticle(id))); } + // TODO @puhui999:add-browse-count 噢;前端 uniapp 也要接下;就是打开文章的时候,调用下这个接口; @PutMapping("/add-browseCount") @Operation(summary = "增加文章浏览量") @Parameter(name = "id", description = "文章编号", example = "1024") public CommonResult addBrowseCount(@RequestParam("id") Long id) { + // TODO @puhui999:addArticleBrowseCount articleService.addBrowseCount(id); return success(true); } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java index 7ccb0d93e..1e4405b0d 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java @@ -204,9 +204,6 @@ public interface CombinationActivityConvert { return respVO; } - @Mapping(target = "id", ignore = true) - CombinationRecordDO convert5(CombinationRecordDO headRecord); - /** * 转换生成虚拟成团虚拟记录 * @@ -214,21 +211,19 @@ public interface CombinationActivityConvert { * @return 虚拟记录列表 */ default List convertVirtualRecordList(CombinationRecordDO headRecord) { - List createRecords = new ArrayList<>(); - // 计算需要创建的虚拟成团记录数量 int count = headRecord.getUserSize() - headRecord.getUserCount(); + List createRecords = new ArrayList<>(count); for (int i = 0; i < count; i++) { // 基础信息和团长保持一致 CombinationRecordDO newRecord = convert5(headRecord); // 虚拟信息 - newRecord.setCount(0); - newRecord.setUserId(0L); - newRecord.setNickname(""); - newRecord.setAvatar(""); - newRecord.setOrderId(0L); + newRecord.setCount(0) // 会单独更新下,在后续的 Service 逻辑里 + .setUserId(0L).setNickname("").setAvatar("").setOrderId(0L); createRecords.add(newRecord); } return createRecords; } + @Mapping(target = "id", ignore = true) + CombinationRecordDO convert5(CombinationRecordDO headRecord); } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/bargain/BargainActivityMapper.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/bargain/BargainActivityMapper.java index e03a21b5f..fd5466648 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/bargain/BargainActivityMapper.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/bargain/BargainActivityMapper.java @@ -102,6 +102,7 @@ public interface BargainActivityMapper extends BaseMapperX { .groupBy("spu_id")); } + // TODO @puhui999:是不是只要 endTime 小于就可以啦; /** * 获取指定活动编号的活动列表且 * 开始时间和结束时间小于给定时间 dateTime 的活动列表 diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/article/ArticleServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/article/ArticleServiceImpl.java index 5b95753ff..47e614057 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/article/ArticleServiceImpl.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/article/ArticleServiceImpl.java @@ -10,7 +10,6 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.article.ArticleCategoryD import cn.iocoder.yudao.module.promotion.dal.dataobject.article.ArticleDO; import cn.iocoder.yudao.module.promotion.dal.mysql.article.ArticleMapper; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -112,12 +111,10 @@ public class ArticleServiceImpl implements ArticleService { } @Override - @Transactional(rollbackFor = Exception.class) public void addBrowseCount(Long id) { // 校验文章是否存在 validateArticleExists(id); - - // 增加浏览次数 TODO 先简单做,用户规模不大,只 +1 + // 增加浏览次数 articleMapper.updateBrowseCount(id); } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java index 43d365701..db4197f52 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java @@ -369,6 +369,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { keyValue.setValue(keyValue.getValue() + 1); } } catch (Exception ignored) { // 处理异常继续循环 + // TODO @puhui999:拼团过期 or 虚拟成团 可以改成 expireCombinationRecord;因为找方法更容易一些; log.error("[拼团过期 or 虚拟成团][record({}) 处理异常,请进行处理!record 数据是:{}]", record.getId(), JsonUtils.toJsonString(record)); } @@ -383,10 +384,10 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { */ @Transactional(rollbackFor = Exception.class) public void handleExpireRecord(CombinationRecordDO headRecord) { - // 1.更新拼团记录 + // 1. 更新拼团记录 List headAndRecords = updateBatchCombinationRecords(headRecord, CombinationRecordStatusEnum.FAILED); - // 2.订单取消 + // 2. 订单取消 headAndRecords.forEach(item -> tradeOrderApi.cancelPaidOrder(item.getUserId(), item.getOrderId())); }