小程序开发-服务端
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

商城信息获取方法重构说明

背景

原来的 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 方法继续给旧站点使用

优势

  1. 完全独立: 商城服务完全独立在 shop 包下,不会被 cms 包覆盖
  2. 职责分离: 商城和旧站点使用完全独立的服务,避免相互影响
  3. 缓存独立: 使用不同的缓存键,可以独立管理缓存策略
  4. 灵活配置: 商城信息缓存时间更短,适应商城信息更新频率
  5. 向后兼容: 旧站点的 getSiteInfo 方法保持不变
  6. 日志区分: 可以更好地区分商城和站点的日志信息
  7. 避免覆盖: CMS 相关文件可以安全地还原,不影响商城功能

使用方式

商城前端调用

// 获取商城信息
const response = await api.get('/api/shop/getShopInfo');

旧站点调用

// 继续使用原有的 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. 测试缓存清除功能是否正常