code review:文章管理

This commit is contained in:
YunaiV
2023-10-16 22:51:19 +08:00
parent cebdc190b6
commit 1ff9bc6a71
14 changed files with 33 additions and 79 deletions

View File

@@ -31,6 +31,7 @@ public class AppArticleCategoryController {
public CommonResult<List<AppArticleCategoryRespVO>> getArticleCategoryList() {
List<ArticleCategoryDO> categoryList = articleCategoryService.getArticleCategoryListByStatus(
CommonStatusEnum.ENABLE.getStatus());
// TODO @puhui999排序下
return success(ArticleCategoryConvert.INSTANCE.convertList04(categoryList));
}

View File

@@ -39,7 +39,7 @@ public class AppArticleController {
@RequestParam(value = "recommendHot", required = false) Boolean recommendHot,
@RequestParam(value = "recommendBanner", required = false) Boolean recommendBanner) {
return success(ArticleConvert.INSTANCE.convertList03(
articleService.getArticleCategoryListByRecommendHotAndRecommendBanner(recommendHot, recommendBanner)));
articleService.getArticleCategoryListByRecommend(recommendHot, recommendBanner)));
}
@RequestMapping("/page")
@@ -55,4 +55,5 @@ public class AppArticleController {
return success(ArticleConvert.INSTANCE.convert01(articleService.getArticle(id)));
}
// TODO @puhui999增加浏览量实现一个接口先简单做用户规模不大只 +1 即可psuniapp 那边也要接下噢
}

View File

@@ -210,6 +210,7 @@ public interface CombinationActivityConvert {
* @param virtualGroupHeadRecord 虚拟成团团长记录
* @return 虚拟记录列表
*/
// TODO @puhui9991方法名建议改成 convertVirtualRecordList(CombinationRecordDO headRecord)2第 220 到 225 可以搞成 mapstruct 一个方法,默认都 copy 进去,然后 set 第 226 到 232 的字段
default List<CombinationRecordDO> convertVirtualGroupList(CombinationRecordDO virtualGroupHeadRecord) {
List<CombinationRecordDO> createRecords = new ArrayList<>();
// 计算需要创建的虚拟成团记录数量

View File

@@ -140,7 +140,7 @@ public interface CombinationRecordMapper extends BaseMapperX<CombinationRecordDO
}
default List<CombinationRecordDO> selectListByHeadId(Long headId) {
return selectList(new LambdaQueryWrapperX<CombinationRecordDO>().eq(CombinationRecordDO::getHeadId, headId));
return selectList(CombinationRecordDO::getHeadId, headId);
}
}

View File

@@ -56,6 +56,7 @@ public class ArticleCategoryServiceImpl implements ArticleCategoryService {
// 校验存在
validateArticleCategoryExists(id);
// 校验是不是存在关联文章
// TODO @puhui999最好获得数量哈
List<ArticleDO> articleList = articleService.getArticleByCategoryId(id);
if (CollUtil.isNotEmpty(articleList)) {
throw exception(ARTICLE_CATEGORY_DELETE_FAIL_HAVE_ARTICLES);
@@ -83,6 +84,7 @@ public class ArticleCategoryServiceImpl implements ArticleCategoryService {
@Override
public List<ArticleCategoryDO> getArticleCategoryListByStatus(Integer status) {
// TODO @puhui999selectListByStatus
return articleCategoryMapper.selectList(ArticleCategoryDO::getStatus, status);
}

View File

@@ -62,7 +62,7 @@ public interface ArticleService {
* @param recommendBanner 是否轮播图
* @return 文章详情列表
*/
List<ArticleDO> getArticleCategoryListByRecommendHotAndRecommendBanner(Boolean recommendHot, Boolean recommendBanner);
List<ArticleDO> getArticleCategoryListByRecommend(Boolean recommendHot, Boolean recommendBanner);
/**
* 获得文章详情分页

View File

@@ -30,6 +30,7 @@ public class ArticleServiceImpl implements ArticleService {
@Resource
private ArticleMapper articleMapper;
@Resource
private ArticleCategoryService articleCategoryService;
@@ -89,7 +90,7 @@ public class ArticleServiceImpl implements ArticleService {
}
@Override
public List<ArticleDO> getArticleCategoryListByRecommendHotAndRecommendBanner(Boolean recommendHot, Boolean recommendBanner) {
public List<ArticleDO> getArticleCategoryListByRecommend(Boolean recommendHot, Boolean recommendBanner) {
return articleMapper.selectList(recommendHot, recommendBanner);
}

View File

@@ -351,9 +351,10 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
convertSet(headExpireRecords, CombinationRecordDO::getActivityId));
Map<Long, CombinationActivityDO> activityMap = convertMap(activities, CombinationActivityDO::getId);
// 3. 改成“每个团”,处理一次哈;这样 handleExpireRecord、handleVirtualGroupRecord 都改成按团处理,每个是一个小事务;
// 3. 逐个处理拼团,过期 or 虚拟成团
KeyValue<Integer, Integer> keyValue = new KeyValue<>(0, 0); // 统计过期拼团和虚拟成团
for (CombinationRecordDO recordDO : headExpireRecords) {
// TODO @puhui999recordDO 非必要的情况下,不用带 DO直接 record;
try {
CombinationActivityDO activity = activityMap.get(recordDO.getActivityId());
if (activity == null || !activity.getVirtualGroup()) { // 取不到活动的或者不是虚拟拼团的
@@ -366,9 +367,9 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
keyValue.setValue(keyValue.getValue() + 1);
}
} catch (Exception ignored) { // 处理异常继续循环
// TODO @puhui999需要打印异常日志
}
}
return keyValue;
}
@@ -379,6 +380,8 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
*/
@Transactional(rollbackFor = Exception.class)
public void handleExpireRecord(CombinationRecordDO headExpireRecord) {
// TODO @puhui999这里的 null 其实不用判断。真出现,应该要处个 npe因为就是要错哈
// TODO @puhui999headExpireRecord 可以简化成 headRecord
if (headExpireRecord == null) {
return;
}
@@ -386,14 +389,13 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
// 1.更新拼团记录
List<CombinationRecordDO> headsAndRecords = updateBatchCombinationRecords(headExpireRecord,
CombinationRecordStatusEnum.FAILED);
// TODO @puhui999这里的 null 其实不用判断。真出现,应该要处个 npe因为就是要错哈
if (headsAndRecords == null) {
return;
}
// 2.订单取消
headsAndRecords.forEach(item -> {
tradeOrderApi.cancelPaidOrder(item.getUserId(), item.getOrderId());
});
headsAndRecords.forEach(item -> tradeOrderApi.cancelPaidOrder(item.getUserId(), item.getOrderId()));
}
/**
@@ -403,6 +405,8 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
*/
@Transactional(rollbackFor = Exception.class)
public void handleVirtualGroupRecord(CombinationRecordDO virtualGroupHeadRecord) {
// TODO @puhui999这里的 null 其实不用判断。真出现,应该要处个 npe因为就是要错哈
// TODO @puhui999headExpireRecord 可以简化成 headRecord
if (virtualGroupHeadRecord == null) {
return;
}
@@ -413,18 +417,21 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
updateBatchCombinationRecords(virtualGroupHeadRecord, CombinationRecordStatusEnum.SUCCESS);
}
// TODO @puhui999写下方法注释
private List<CombinationRecordDO> updateBatchCombinationRecords(CombinationRecordDO headRecord, CombinationRecordStatusEnum status) {
// 1. 查询团成员(包含团长)
List<CombinationRecordDO> records = combinationRecordMapper.selectListByHeadId(headRecord.getId());
// TODO @puhui999是不是不用判断空哈例如说就一个团长然后过期。
if (CollUtil.isEmpty(records)) {
return null;
}
records.add(headRecord);// 把团长加进去
// 2.批量更新拼团记录 status 和 失败/成团时间
// 2. 批量更新拼团记录 status 和 endTime
List<CombinationRecordDO> updateRecords = new ArrayList<>(records.size());
LocalDateTime now = LocalDateTime.now();
records.forEach(item -> {
// TODO @puhui999record 改成 updateRecord
CombinationRecordDO record = new CombinationRecordDO().setId(item.getId())
.setStatus(status.getStatus()).setEndTime(now);
if (CombinationRecordStatusEnum.isSuccess(status.getStatus())) { // 虚拟成团完事更改状态成功后还需要把参与人数修改为成团需要人数