You've already forked FrameTour-BE
refactor(scenic): 重构景区相关接口和缓存机制
- 移除 ScenicMapper 接口,将相关方法移至 ScenicRepository - 修改景区列表查询逻辑,使用 ScenicRepository 的 list 方法 - 优化景区详情获取方式,使用 ScenicRepository 的 getScenicBasic 方法 - 重构缓存机制,增加对景区基本信息的缓存 - 优化 AppScenicService 和 ScenicService接口,使用 ScenicV2DTO 替代 ScenicRespV
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
package com.ycwl.basic.repository;
|
||||
|
||||
import com.ycwl.basic.utils.JacksonUtil;
|
||||
import com.ycwl.basic.facebody.enums.FaceBodyAdapterType;
|
||||
import com.ycwl.basic.integration.common.util.ConfigValueUtil;
|
||||
import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO;
|
||||
import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2ListResponse;
|
||||
import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2WithConfigDTO;
|
||||
import com.ycwl.basic.integration.scenic.service.ScenicIntegrationService;
|
||||
import com.ycwl.basic.mapper.MpConfigMapper;
|
||||
import com.ycwl.basic.mapper.MpNotifyConfigMapper;
|
||||
import com.ycwl.basic.model.pc.mp.MpConfigEntity;
|
||||
@@ -8,13 +13,10 @@ import com.ycwl.basic.model.pc.mp.MpNotifyConfigEntity;
|
||||
import com.ycwl.basic.model.pc.mp.ScenicMpNotifyVO;
|
||||
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
|
||||
import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity;
|
||||
import com.ycwl.basic.integration.scenic.service.ScenicIntegrationService;
|
||||
import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO;
|
||||
import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2WithConfigDTO;
|
||||
import com.ycwl.basic.integration.common.util.ConfigValueUtil;
|
||||
import com.ycwl.basic.facebody.enums.FaceBodyAdapterType;
|
||||
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
||||
import com.ycwl.basic.pay.enums.PayAdapterType;
|
||||
import com.ycwl.basic.storage.enums.StorageType;
|
||||
import com.ycwl.basic.utils.JacksonUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -31,6 +33,7 @@ public class ScenicRepository {
|
||||
private ScenicIntegrationService scenicIntegrationService;
|
||||
|
||||
public static final String SCENIC_CACHE_KEY = "scenic:%s";
|
||||
public static final String SCENIC_BASIC_CACHE_KEY = "scenic:basic:%s";
|
||||
public static final String SCENIC_FULL_CACHE_KEY = "scenic:f%s";
|
||||
public static final String SCENIC_CONFIG_CACHE_KEY = "scenic:%s:config";
|
||||
public static final String SCENIC_MP_CACHE_KEY = "scenic:%s:mp";
|
||||
@@ -38,6 +41,30 @@ public class ScenicRepository {
|
||||
@Autowired
|
||||
private MpNotifyConfigMapper mpNotifyConfigMapper;
|
||||
|
||||
public ScenicV2DTO getScenicBasic(Long id) {
|
||||
String key = String.format(SCENIC_BASIC_CACHE_KEY, id);
|
||||
try {
|
||||
ScenicV2DTO scenicDTO = scenicIntegrationService.getScenic(id);
|
||||
|
||||
// 请求成功,写入缓存
|
||||
if (scenicDTO != null) {
|
||||
redisTemplate.opsForValue().set(
|
||||
key,
|
||||
JacksonUtil.toJSONString(scenicDTO)
|
||||
);
|
||||
}
|
||||
return scenicDTO;
|
||||
} catch (Exception e) {
|
||||
// 请求失败,尝试从缓存获取历史成功数据
|
||||
String cacheKey = key;
|
||||
if (redisTemplate.hasKey(cacheKey)) {
|
||||
return JacksonUtil.parseObject(redisTemplate.opsForValue().get(cacheKey), ScenicV2DTO.class);
|
||||
}
|
||||
// 缓存也没有,返回null
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public ScenicEntity getScenic(Long id) {
|
||||
String key = String.format(SCENIC_CACHE_KEY, id);
|
||||
try {
|
||||
@@ -155,8 +182,34 @@ public class ScenicRepository {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<ScenicV2DTO> list(ScenicReqQuery scenicReqQuery) {
|
||||
try {
|
||||
// 将 ScenicReqQuery 参数转换为 zt-scenic 服务需要的参数
|
||||
Integer page = scenicReqQuery.getPageNum();
|
||||
Integer pageSize = scenicReqQuery.getPageSize();
|
||||
Integer status = null;
|
||||
if (scenicReqQuery.getStatus() != null) {
|
||||
status = Integer.valueOf(scenicReqQuery.getStatus());
|
||||
}
|
||||
String name = scenicReqQuery.getName();
|
||||
|
||||
// 调用 zt-scenic 服务的 list 方法
|
||||
ScenicV2ListResponse response = scenicIntegrationService.listScenics(page, pageSize, status, name);
|
||||
|
||||
// 将 ScenicV2DTO 列表转换为 ScenicEntity 列表
|
||||
if (response != null && response.getList() != null) {
|
||||
return response.getList();
|
||||
}
|
||||
return new java.util.ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
// 如果调用失败,返回空列表
|
||||
return new java.util.ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
public void clearCache(Long scenicId) {
|
||||
redisTemplate.delete(String.format(SCENIC_CACHE_KEY, scenicId));
|
||||
redisTemplate.delete(String.format(SCENIC_BASIC_CACHE_KEY, scenicId));
|
||||
redisTemplate.delete(String.format(SCENIC_FULL_CACHE_KEY, scenicId));
|
||||
redisTemplate.delete(String.format(SCENIC_CONFIG_CACHE_KEY, scenicId));
|
||||
redisTemplate.delete(String.format(SCENIC_MP_CACHE_KEY, scenicId));
|
||||
@@ -172,8 +225,6 @@ public class ScenicRepository {
|
||||
entity.setName(dto.getName());
|
||||
entity.setMpId(dto.getMpId());
|
||||
entity.setStatus(dto.getStatus().toString());
|
||||
entity.setCreateTime(new java.util.Date(dto.getCreateTime()));
|
||||
entity.setUpdateTime(new java.util.Date(dto.getUpdateTime()));
|
||||
return entity;
|
||||
}
|
||||
|
||||
@@ -186,8 +237,6 @@ public class ScenicRepository {
|
||||
entity.setName(dto.getName());
|
||||
entity.setMpId(dto.getMpId());
|
||||
entity.setStatus(dto.getStatus().toString());
|
||||
entity.setCreateTime(new java.util.Date(dto.getCreateTime()));
|
||||
entity.setUpdateTime(new java.util.Date(dto.getUpdateTime()));
|
||||
if (dto.getConfig() != null) {
|
||||
entity.setAddress(ConfigValueUtil.getStringValue(dto.getConfig(), "address"));
|
||||
entity.setArea(ConfigValueUtil.getStringValue(dto.getConfig(), "area"));
|
||||
|
Reference in New Issue
Block a user