Files
qiming/qiming-backend/app-platform-modules/app-platform-eco-market/doc/eco-market.md

3.7 KiB
Raw Blame History

生态市场模块开发规则

1. 模块概述

生态市场模块是一个用于管理和分享插件、模板和MCP的平台支持服务器端和客户端两种模式。服务器端负责集中管理配置和审核客户端负责使用和提交配置。

2. 架构设计

2.1 模式选择

生态市场支持两种模式:

  • 服务器模式:作为中心节点,管理所有配置和审核流程
  • 客户端模式:作为使用节点,从服务器获取配置并提交配置审核

通过配置文件中的 eco-market.mode.type 属性设置,可选值为 serverclient

2.2 分层结构

遵循DDD设计原则模块分为以下几层

  • 领域层:核心业务逻辑,包括领域模型和领域服务
  • 应用层:应用服务,协调领域服务和外部服务
  • 接口层控制器处理HTTP请求
  • 基础设施层:数据库访问、缓存、外部服务调用等

3. 领域服务

3.1 服务器端领域服务

  • IEcoMarketServerSecretDomainService:管理客户端密钥,负责注册和验证
  • IEcoMarketServerConfigDomainService:管理服务器端配置,处理配置的保存、发布、下线和审批
  • IEcoMarketServerPublishConfigDomainService:管理已发布配置,提供查询和管理功能

3.2 客户端领域服务

  • IEcoMarketClientSecretService:管理客户端密钥,与服务器进行通信
  • EcoMarketServerApiService封装对服务器API的调用处理HTTP请求和响应

4. 控制器层

控制器层应保持简洁,主要职责是:

  1. 接收HTTP请求
  2. 参数校验
  3. 调用领域服务
  4. 返回响应

不应在控制器中包含业务逻辑,业务逻辑应放在领域服务中。

4.1 服务器端控制器

  • EcoMarketServerSecretController:处理客户端注册和验证
  • EcoMarketServerConfigController:处理配置的保存、发布、下线和审批
  • EcoMarketServerPublishConfigController:处理已发布配置的查询

4.2 客户端控制器

  • EcoMarketClientConfigController:处理客户端配置的保存、发布、下线等操作

5. 鉴权机制

客户端与服务器之间的通信采用客户端ID和密钥进行鉴权

  1. 客户端首次使用时通过服务器端注册接口获取客户端ID和密钥
  2. 后续所有请求都需要携带客户端ID和密钥
  3. 服务器端验证客户端ID和密钥的有效性

6. 配置管理

6.1 配置类

  • EcoMarketProperties解析YAML配置
  • EcoMarketConfig提供配置相关的Bean
  • EcoMarketCondition:根据模式类型条件化启用不同的服务
  • EcoMarketConfigUtils:提供静态方法访问配置
  • ConditionalOnEcoMarketMode:条件化配置注解

6.2 配置示例

ecoMarket:
  mode:
    type: client  # 或 server
  server:
    baseUrl: http://eco-market-server:8080

7. 枚举类型

7.1 分享状态

public enum EcoMarketShareStatusEnum {
    DRAFT(1, "草稿"),
    REVIEWING(2, "审核中"),
    PUBLISHED(3, "已发布"),
    OFFLINE(4, "已下线"),
    REJECTED(5, "驳回");
}

7.2 使用状态

public enum EcoMarketUseStatusEnum {
    ENABLED(1, "启用"),
    DISABLED(2, "禁用");
}

7.3 拥有标记

public enum EcoMarketOwnedFlagEnum {
    NO(0, "否"),
    YES(1, "是");
}

8. 数据库表

主要数据库表包括:

  • eco_market_client_secret客户端密钥表
  • eco_market_client_config客户端配置表
  • eco_market_client_publish_config客户端已发布配置表
  • eco_market_server_secret服务器端密钥表
  • eco_market_server_config服务器端配置表
  • eco_market_server_publish_config服务器端已发布配置表

详细表结构参见 eco_market.sql 文件。