You've already forked FrameTour-BE
feat(scenic): 优化景区信息获取与缓存机制
-移除景区信息查询相关冗余代码 - 增加缓存逻辑,提高景区信息获取效率 - 更新 ScenicRepository 中的 getScenic 和 getScenicConfig 方法 - 重构 ScenicServiceImpl 中的 list 方法 - 删除 ScenicService 接口中未使用的多个方法
This commit is contained in:
@@ -3,7 +3,6 @@ package com.ycwl.basic.repository;
|
||||
import com.ycwl.basic.utils.JacksonUtil;
|
||||
import com.ycwl.basic.mapper.MpConfigMapper;
|
||||
import com.ycwl.basic.mapper.MpNotifyConfigMapper;
|
||||
import com.ycwl.basic.mapper.ScenicMapper;
|
||||
import com.ycwl.basic.model.pc.mp.MpConfigEntity;
|
||||
import com.ycwl.basic.model.pc.mp.MpNotifyConfigEntity;
|
||||
import com.ycwl.basic.model.pc.mp.ScenicMpNotifyVO;
|
||||
@@ -24,8 +23,6 @@ import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ScenicRepository {
|
||||
@Autowired
|
||||
private ScenicMapper scenicMapper;
|
||||
@Autowired
|
||||
private MpConfigMapper mpConfigMapper;
|
||||
@Autowired
|
||||
@@ -44,18 +41,48 @@ public class ScenicRepository {
|
||||
public ScenicEntity getScenic(Long id) {
|
||||
try {
|
||||
ScenicV2DTO scenicDTO = scenicIntegrationService.getScenic(id);
|
||||
return convertToScenicEntity(scenicDTO);
|
||||
ScenicEntity scenicEntity = convertToScenicEntity(scenicDTO);
|
||||
|
||||
// 请求成功,写入缓存
|
||||
if (scenicEntity != null) {
|
||||
redisTemplate.opsForValue().set(
|
||||
String.format(SCENIC_CACHE_KEY, id),
|
||||
JacksonUtil.toJSONString(scenicEntity)
|
||||
);
|
||||
}
|
||||
return scenicEntity;
|
||||
} catch (Exception e) {
|
||||
return scenicMapper.get(id);
|
||||
// 请求失败,尝试从缓存获取历史成功数据
|
||||
String cacheKey = String.format(SCENIC_CACHE_KEY, id);
|
||||
if (redisTemplate.hasKey(cacheKey)) {
|
||||
return JacksonUtil.parseObject(redisTemplate.opsForValue().get(cacheKey), ScenicEntity.class);
|
||||
}
|
||||
// 缓存也没有,返回null
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public ScenicConfigEntity getScenicConfig(Long scenicId) {
|
||||
try {
|
||||
ScenicV2WithConfigDTO scenicWithConfigDTO = scenicIntegrationService.getScenicWithConfig(scenicId);
|
||||
return convertToScenicConfigEntity(scenicWithConfigDTO, scenicId);
|
||||
ScenicConfigEntity configEntity = convertToScenicConfigEntity(scenicWithConfigDTO, scenicId);
|
||||
|
||||
// 请求成功,写入缓存
|
||||
if (configEntity != null) {
|
||||
redisTemplate.opsForValue().set(
|
||||
String.format(SCENIC_CONFIG_CACHE_KEY, scenicId),
|
||||
JacksonUtil.toJSONString(configEntity)
|
||||
);
|
||||
}
|
||||
return configEntity;
|
||||
} catch (Exception e) {
|
||||
return scenicMapper.getConfig(scenicId);
|
||||
// 请求失败,尝试从缓存获取历史成功数据
|
||||
String cacheKey = String.format(SCENIC_CONFIG_CACHE_KEY, scenicId);
|
||||
if (redisTemplate.hasKey(cacheKey)) {
|
||||
return JacksonUtil.parseObject(redisTemplate.opsForValue().get(cacheKey), ScenicConfigEntity.class);
|
||||
}
|
||||
// 缓存也没有,返回null
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user