mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-15 02:31:53 +08:00
code review:文章管理
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
|
@@ -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 即可;ps:uniapp 那边也要接下噢
|
||||
}
|
||||
|
@@ -210,6 +210,7 @@ public interface CombinationActivityConvert {
|
||||
* @param virtualGroupHeadRecord 虚拟成团团长记录
|
||||
* @return 虚拟记录列表
|
||||
*/
|
||||
// TODO @puhui999:1)方法名,建议改成 convertVirtualRecordList(CombinationRecordDO headRecord);2)第 220 到 225 可以搞成 mapstruct 一个方法,默认都 copy 进去,然后 set 第 226 到 232 的字段
|
||||
default List<CombinationRecordDO> convertVirtualGroupList(CombinationRecordDO virtualGroupHeadRecord) {
|
||||
List<CombinationRecordDO> createRecords = new ArrayList<>();
|
||||
// 计算需要创建的虚拟成团记录数量
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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 @puhui999:selectListByStatus
|
||||
return articleCategoryMapper.selectList(ArticleCategoryDO::getStatus, status);
|
||||
}
|
||||
|
||||
|
@@ -62,7 +62,7 @@ public interface ArticleService {
|
||||
* @param recommendBanner 是否轮播图
|
||||
* @return 文章详情列表
|
||||
*/
|
||||
List<ArticleDO> getArticleCategoryListByRecommendHotAndRecommendBanner(Boolean recommendHot, Boolean recommendBanner);
|
||||
List<ArticleDO> getArticleCategoryListByRecommend(Boolean recommendHot, Boolean recommendBanner);
|
||||
|
||||
/**
|
||||
* 获得文章详情分页
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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 @puhui999:recordDO 非必要的情况下,不用带 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 @puhui999:headExpireRecord 可以简化成 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 @puhui999:headExpireRecord 可以简化成 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 @puhui999:record 改成 updateRecord
|
||||
CombinationRecordDO record = new CombinationRecordDO().setId(item.getId())
|
||||
.setStatus(status.getStatus()).setEndTime(now);
|
||||
if (CombinationRecordStatusEnum.isSuccess(status.getStatus())) { // 虚拟成团完事更改状态成功后还需要把参与人数修改为成团需要人数
|
||||
|
Reference in New Issue
Block a user