修复top的定时任务

This commit is contained in:
2025-11-28 17:59:29 +08:00
parent dfb11c85f1
commit 8a8059d05b
2 changed files with 60 additions and 3 deletions

View File

@@ -8,10 +8,12 @@ import org.xyzh.api.news.resource.ResourceService;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.dto.BaseDTO;
import org.xyzh.common.dto.crontab.TbCrontabLog;
import org.xyzh.common.dto.resource.TbResource;
import org.xyzh.common.dto.resource.TbResourceRecommend;
import org.xyzh.common.utils.IDUtils;
import org.xyzh.common.vo.ResourceVO;
import org.xyzh.crontab.mapper.CrontabLogMapper;
import org.xyzh.crontab.pojo.TaskParams;
import org.xyzh.crontab.task.BaseTask;
@@ -37,6 +39,9 @@ public class TopRecommendTask extends BaseTask {
@Autowired
private ResourceRecommendService resourceRecommendService;
@Autowired
private CrontabLogMapper crontabLogMapper;
@Override
@Transactional(rollbackFor = Exception.class)
protected void doExecute(TaskParams taskParams) throws Exception {
@@ -100,6 +105,10 @@ public class TopRecommendTask extends BaseTask {
recommendList.add(createRecommend(resourceId, orderNum++));
viewAdded++;
}
if (viewPageList.size()<viewPageSize){
// 遍历完了所有
break;
}
viewPageNumber++;
}
@@ -139,14 +148,34 @@ public class TopRecommendTask extends BaseTask {
recommendList.add(createRecommend(resourceId, orderNum++));
timeAdded++;
}
if (pageList.size() < timePageSize){
break;
}
timePageNumber++;
}
// 更新状态
TbCrontabLog log = new TbCrontabLog();
log.setId((String) taskParams.getParams().get("logId"));
if (recommendList.isEmpty()) {
log.setExecuteMessage("热门资源推荐任务执行完成,但没有找到符合条件的新资源(已收集" + viewAdded + "条浏览量资源," + timeAdded + "条时间资源)");
crontabLogMapper.updateLog(log);
logger.info("没有找到可推荐的新资源,任务完成");
return;
}
logger.info("热门资源推荐任务执行成功,共推荐{}个资源", resourceIds.size());
ResultDomain<TbResourceRecommend> ret = resourceRecommendService.batchAddRecommends(recommendList.stream().map(TbResourceRecommend::getResourceID).toList(),1,"系统推荐");
if(ret.isSuccess()){
log.setExecuteMessage("热门资源推荐任务执行成功,共推荐"+resourceIds.size()+"个资源(浏览量"+viewAdded+"条,时间"+timeAdded+"条)");
crontabLogMapper.updateLog(log);
logger.info("热门资源推荐任务执行成功,共推荐{}个资源", resourceIds.size());
}else{
log.setExecuteMessage("添加热门资源推荐失败:" + ret.getMessage());
crontabLogMapper.updateLog(log);
logger.error("添加热门资源推荐失败:{}", ret.getMessage());
}
} catch (Exception e) {
logger.error("热门资源推荐任务执行失败: {}", e.getMessage(), e);
throw e;
@@ -177,6 +206,7 @@ public class TopRecommendTask extends BaseTask {
PageParam pageParam = new PageParam();
pageParam.setPageSize(pageSize);
pageParam.setPageNumber(pageNumber);
ResultDomain<ResourceVO> result = resourceService.getResourcePageOrder(filter, pageParam);
if (result.isSuccess() && result.getDataList() != null) {
@@ -200,6 +230,7 @@ public class TopRecommendTask extends BaseTask {
PageParam pageParam = new PageParam();
pageParam.setPageSize(pageSize);
pageParam.setPageNumber(pageNumber);
ResultDomain<ResourceVO> result = resourceService.getResourcePageOrder(filter, pageParam);
if (result.isSuccess() && result.getDataList() != null) {