refactor(scenic): 重构景区相关接口和缓存机制

- 移除 ScenicMapper 接口,将相关方法移至 ScenicRepository
- 修改景区列表查询逻辑,使用 ScenicRepository 的 list 方法
- 优化景区详情获取方式,使用 ScenicRepository 的 getScenicBasic 方法
- 重构缓存机制,增加对景区基本信息的缓存
- 优化 AppScenicService 和 ScenicService接口,使用 ScenicV2DTO 替代 ScenicRespV
This commit is contained in:
2025-08-27 16:37:57 +08:00
parent 21f76ff9c5
commit f2ac6aaea0
20 changed files with 324 additions and 474 deletions

View File

@@ -1,14 +1,14 @@
package com.ycwl.basic.task;
import cn.hutool.core.date.DateUtil;
import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO;
import com.ycwl.basic.mapper.ScenicDeviceStatsMapper;
import com.ycwl.basic.mapper.ScenicMapper;
import com.ycwl.basic.mapper.StatisticsMapper;
import com.ycwl.basic.model.mobile.statistic.req.CommonQueryReq;
import com.ycwl.basic.model.mobile.statistic.resp.AppStatisticsFunnelVO;
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
import com.ycwl.basic.model.pc.scenicDeviceStats.entity.ScenicDeviceStatsEntity;
import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.service.mobile.AppStatisticsService;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,7 +31,8 @@ public class ScenicStatsTask {
@Autowired
private AppStatisticsService statisticsService;
@Autowired
private ScenicMapper scenicMapper;
private ScenicRepository scenicRepository;
@Scheduled(cron = "0 1 0 * * *")
public void countDeviceStats() {
Date yesterdayStart = DateUtil.beginOfDay(DateUtil.yesterday());
@@ -58,16 +59,19 @@ public class ScenicStatsTask {
public void countScenicStats() {
Date yesterdayStart = DateUtil.beginOfDay(DateUtil.yesterday());
Date yesterdayEnd = DateUtil.endOfDay(yesterdayStart);
List<ScenicRespVO> list = scenicMapper.list(new ScenicReqQuery());
list.forEach((scenic) -> {
CommonQueryReq query = new CommonQueryReq();
query.setScenicId(scenic.getId());
query.setStartTime(yesterdayStart);
query.setEndTime(yesterdayEnd);
query.setRealtime(true);
ApiResponse<AppStatisticsFunnelVO> resp = statisticsService.userConversionFunnel(query);
ScenicReqQuery query = new ScenicReqQuery();
query.setPageSize(1000);
List<ScenicV2DTO> scenicList = scenicRepository.list(query);
scenicList.forEach((scenic) -> {
CommonQueryReq commonQueryReq = new CommonQueryReq();
Long scenicId = Long.valueOf(scenic.getId());
commonQueryReq.setScenicId(scenicId);
commonQueryReq.setStartTime(yesterdayStart);
commonQueryReq.setEndTime(yesterdayEnd);
commonQueryReq.setRealtime(true);
ApiResponse<AppStatisticsFunnelVO> resp = statisticsService.userConversionFunnel(commonQueryReq);
AppStatisticsFunnelVO data = resp.getData();
statisticsMapper.insertStat(scenic.getId(), yesterdayStart, data);
statisticsMapper.insertStat(scenicId, yesterdayStart, data);
});
}
}