docs: 添加商城信息重构和网站信息接口重新设计文档
- 新增《商城信息获取方法重构说明》文档,详细介绍了商城信息获取服务的独立和重构过程 - 新增《getSiteInfo 接口重新设计 - 彻底解决空值异常》文档,详细说明了网站信息接口的重新设计和改进 - 更新了《VO模式解决方案》、《最终修复完成-编译错误解决》和《重构总结-Service层架构》等文档 - 修改了 CmsMainController 的导入信息
This commit is contained in:
131
docs/SHOP_INFO_REFACTOR.md
Normal file
131
docs/SHOP_INFO_REFACTOR.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# 商城信息获取方法重构说明
|
||||
|
||||
## 背景
|
||||
原来的 `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
|
||||
```java
|
||||
package com.gxwebsoft.shop.service;
|
||||
|
||||
public interface ShopWebsiteService {
|
||||
/**
|
||||
* 获取商城基本信息(VO格式)
|
||||
*/
|
||||
ShopVo getShopInfo(Integer tenantId);
|
||||
|
||||
/**
|
||||
* 清除商城信息缓存
|
||||
*/
|
||||
void clearShopInfoCache(Integer tenantId);
|
||||
}
|
||||
```
|
||||
|
||||
### 2. ShopWebsiteServiceImpl.java
|
||||
```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
|
||||
```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` 方法继续给旧站点使用
|
||||
|
||||
## 优势
|
||||
|
||||
1. **完全独立**: 商城服务完全独立在 `shop` 包下,不会被 `cms` 包覆盖
|
||||
2. **职责分离**: 商城和旧站点使用完全独立的服务,避免相互影响
|
||||
3. **缓存独立**: 使用不同的缓存键,可以独立管理缓存策略
|
||||
4. **灵活配置**: 商城信息缓存时间更短,适应商城信息更新频率
|
||||
5. **向后兼容**: 旧站点的 `getSiteInfo` 方法保持不变
|
||||
6. **日志区分**: 可以更好地区分商城和站点的日志信息
|
||||
7. **避免覆盖**: CMS 相关文件可以安全地还原,不影响商城功能
|
||||
|
||||
## 使用方式
|
||||
|
||||
### 商城前端调用
|
||||
```javascript
|
||||
// 获取商城信息
|
||||
const response = await api.get('/api/shop/getShopInfo');
|
||||
```
|
||||
|
||||
### 旧站点调用
|
||||
```javascript
|
||||
// 继续使用原有的 CMS 服务方法
|
||||
const response = await cmsApi.getSiteInfo(tenantId);
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **商城服务独立**: 所有商城相关的调用都使用 `ShopWebsiteService`
|
||||
2. **CMS 服务保持**: 旧站点继续使用 `CmsWebsiteService.getSiteInfo` 方法
|
||||
3. **缓存管理独立**:
|
||||
- 商城: `ShopWebsiteService.clearShopInfoCache(tenantId)`
|
||||
- 旧站点: `CmsWebsiteService.clearSiteInfoCache(tenantId)`
|
||||
4. **包结构清晰**: 商城相关代码都在 `com.gxwebsoft.shop` 包下
|
||||
5. **安全还原**: CMS 相关文件可以安全地从版本控制还原,不影响商城功能
|
||||
|
||||
## 测试建议
|
||||
|
||||
1. 测试商城信息获取功能是否正常
|
||||
2. 测试旧站点信息获取功能是否不受影响
|
||||
3. 测试缓存功能是否正常工作
|
||||
4. 测试缓存清除功能是否正常
|
||||
Reference in New Issue
Block a user