You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.0 KiB
4.0 KiB
商城信息获取方法重构说明
背景
原来的 getSiteInfo
方法被商城和旧站点共用,为了更好地区分和管理,现在将商城相关的服务完全独立到 shop
包下,避免 cms
包被覆盖的问题。
重构内容
1. 保留原有 CMS 方法
- 位置:
com.gxwebsoft.cms.service.CmsWebsiteService
- 方法名:
getSiteInfo(Integer tenantId)
- 用途: 专门给旧站点使用
- 缓存键:
site_info:
+ tenantId - 缓存时间: 1天
- 说明: 保持原有逻辑不变,确保旧站点功能正常
2. 新增商城专用服务
- 位置:
com.gxwebsoft.shop.service.ShopWebsiteService
- 方法名:
getShopInfo(Integer tenantId)
- 用途: 专门给商城使用
- 缓存键:
shop_info:
+ tenantId - 缓存时间: 12小时(商城信息更新频率可能更高)
- 说明: 完全独立的商城服务,不依赖 CMS 服务
3. 新增缓存清理方法
- 方法名:
clearShopInfoCache(Integer tenantId)
- 用途: 清除商城信息缓存
- 说明: 商城专用的缓存清理方法
新增的文件
1. ShopWebsiteService.java
package com.gxwebsoft.shop.service;
public interface ShopWebsiteService {
/**
* 获取商城基本信息(VO格式)
*/
ShopVo getShopInfo(Integer tenantId);
/**
* 清除商城信息缓存
*/
void clearShopInfoCache(Integer tenantId);
}
2. ShopWebsiteServiceImpl.java
package com.gxwebsoft.shop.service.impl;
@Service
public class ShopWebsiteServiceImpl implements ShopWebsiteService {
@Override
public ShopVo getShopInfo(Integer tenantId) {
// 商城专用的获取逻辑
// 使用独立的缓存键: "shop_info:" + tenantId
// 缓存时间: 12小时
// 调用 CmsWebsiteService 获取基础数据
}
@Override
public void clearShopInfoCache(Integer tenantId) {
// 清除商城专用缓存
}
}
修改的文件
1. ShopMainController.java
// 修改导入
import com.gxwebsoft.shop.service.ShopWebsiteService;
// 修改注入
@Resource
private ShopWebsiteService shopWebsiteService;
// 修改方法调用
@GetMapping("/getShopInfo")
public ApiResult<ShopVo> getShopInfo() {
ShopVo shopVo = shopWebsiteService.getShopInfo(tenantId);
return success(shopVo);
}
2. CmsWebsiteService.java 和 CmsWebsiteServiceImpl.java
- 已还原: 移除了之前添加的商城相关方法
- 保持原样:
getSiteInfo
方法继续给旧站点使用
优势
- 完全独立: 商城服务完全独立在
shop
包下,不会被cms
包覆盖 - 职责分离: 商城和旧站点使用完全独立的服务,避免相互影响
- 缓存独立: 使用不同的缓存键,可以独立管理缓存策略
- 灵活配置: 商城信息缓存时间更短,适应商城信息更新频率
- 向后兼容: 旧站点的
getSiteInfo
方法保持不变 - 日志区分: 可以更好地区分商城和站点的日志信息
- 避免覆盖: CMS 相关文件可以安全地还原,不影响商城功能
使用方式
商城前端调用
// 获取商城信息
const response = await api.get('/api/shop/getShopInfo');
旧站点调用
// 继续使用原有的 CMS 服务方法
const response = await cmsApi.getSiteInfo(tenantId);
注意事项
- 商城服务独立: 所有商城相关的调用都使用
ShopWebsiteService
- CMS 服务保持: 旧站点继续使用
CmsWebsiteService.getSiteInfo
方法 - 缓存管理独立:
- 商城:
ShopWebsiteService.clearShopInfoCache(tenantId)
- 旧站点:
CmsWebsiteService.clearSiteInfoCache(tenantId)
- 商城:
- 包结构清晰: 商城相关代码都在
com.gxwebsoft.shop
包下 - 安全还原: CMS 相关文件可以安全地从版本控制还原,不影响商城功能
测试建议
- 测试商城信息获取功能是否正常
- 测试旧站点信息获取功能是否不受影响
- 测试缓存功能是否正常工作
- 测试缓存清除功能是否正常