修复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"));
logger.info("热门资源推荐任务执行成功,共推荐{}个资源", resourceIds.size());
if (recommendList.isEmpty()) {
log.setExecuteMessage("热门资源推荐任务执行完成,但没有找到符合条件的新资源(已收集" + viewAdded + "条浏览量资源," + timeAdded + "条时间资源)");
crontabLogMapper.updateLog(log);
logger.info("没有找到可推荐的新资源,任务完成");
return;
}
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) {

View File

@@ -13,10 +13,12 @@ import org.springframework.util.StringUtils;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.core.page.PageDomain;
import org.xyzh.common.core.page.PageParam;
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.ResourceRecommendVO;
import org.xyzh.common.vo.UserDeptRoleVO;
import org.xyzh.news.mapper.ResourceMapper;
import org.xyzh.news.mapper.ResourceRecommendMapper;
import org.xyzh.api.news.recommend.ResourceRecommendService;
import org.xyzh.system.utils.LoginUtil;
@@ -36,6 +38,9 @@ public class NCResourceRecommendServiceImpl implements ResourceRecommendService
@Autowired
private ResourceRecommendMapper resourceRecommendMapper;
@Autowired
private ResourceMapper resourceMapper;
@Override
public ResultDomain<ResourceRecommendVO> getRecommendList() {
ResultDomain<ResourceRecommendVO> resultDomain = new ResultDomain<>();
@@ -99,6 +104,10 @@ public class NCResourceRecommendServiceImpl implements ResourceRecommendService
if (result > 0) {
logger.info("添加推荐成功: {}", recommend.getResourceID());
resultDomain.success("添加推荐成功", recommend);
TbResource resource = new TbResource();
resource.setResourceID(recommend.getResourceID());
resource.setIsRecommend(true);
resourceMapper.updateResource(resource);
return resultDomain;
} else {
resultDomain.fail("添加推荐失败");
@@ -174,6 +183,10 @@ public class NCResourceRecommendServiceImpl implements ResourceRecommendService
int result = resourceRecommendMapper.deleteResourceRecommend(recommend);
if (result > 0) {
logger.info("删除推荐成功: {}", resourceID);
TbResource resource = new TbResource();
resource.setResourceID(recommend.getResourceID());
resource.setIsRecommend(false);
resourceMapper.updateResource(resource);
resultDomain.success("删除推荐成功", true);
return resultDomain;
} else {
@@ -247,6 +260,13 @@ public class NCResourceRecommendServiceImpl implements ResourceRecommendService
// 批量插入
int result = resourceRecommendMapper.batchInsertResourceRecommends(recommendList);
if (result > 0) {
// 更新resource的状态
for(String id:resourceIDs){
TbResource resource = new TbResource();
resource.setResourceID(id);
resource.setIsRecommend(true);
resourceMapper.updateResource(resource);
}
logger.info("批量添加推荐成功,数量: {}", result);
resultDomain.success("批量添加推荐成功", recommendList);
return resultDomain;
@@ -295,6 +315,12 @@ public class NCResourceRecommendServiceImpl implements ResourceRecommendService
int result = resourceRecommendMapper.batchDeleteResourceRecommends(recommendIDs);
if (result > 0) {
logger.info("批量移除推荐成功,数量: {}", result);
for(String id:resourceIDs){
TbResource resource = new TbResource();
resource.setResourceID(id);
resource.setIsRecommend(true);
resourceMapper.updateResource(resource);
}
resultDomain.success("批量移除推荐成功", true);
return resultDomain;
} else {