動態

詳情 返回 返回

基於 Code 開源版二次開發流程:DDD 架構落地用户模型管理全流程 - 動態 詳情

最近有基於coze開源版做二次開發,踩了不少坑,我把花了幾天時間梳理出來的開發流程分享給大家。

下面以自定義用户接入的模型舉例:
coze開源版的模型是在配置文件中配置的,不夠靈活,我們希望讓用户能夠在網站直接配置自己的模型,類似下面這種效果:

大家理解清楚需求之後,看下面的實現思路,你們開發別的功能也可以參考我的開發流程,能讓你少踩很多坑:

一、領域層(Domain - 核心層,聚焦純業務領域模型與抽象接口)

領域層是業務的核心,需先定義純業務相關的實體、接口,再通過基礎設施層實現接口。

1. 數據表設計與創建

  • 依據用户模型管理的業務需求,設計對應的數據庫表結構(如用户基本信息表、用户角色關聯表等)。
  • 執行建表語句,完成物理表的創建。

2. 生成數據庫相關基礎代碼

  • 使用gorm工具生成數據庫交互的基礎代碼:

    • 實體類:backend/domain/usermodel/internal/dal/model/(與數據表一一映射的結構體)。
    • 基礎操作:backend/domain/usermodel/internal/dal/query/(表的基礎CRUD方法)。
  • 若需多個數據訪問對象(DAO),可在backend/domain/usermodel/internal/dal/下創建dao文件夾,統一管理DAO文件;DAO的作用是實現後續定義的數據倉庫接口。

3. 定義領域實體(業務對象)

  • 編寫backend/domain/usermodel/entity/下的實體類(非數據庫表映射)。
  • 內容:包含用户模型管理領域所需的業務字段、結構體,以及核心業務行為(如用户狀態校驗、角色權限判斷等)和業務規則(如用户名唯一性約束)。

4. 定義領域服務接口(業務邏輯聚合)

  • 編寫backend/domain/usermodel/service/user_model.go,定義領域服務接口。
  • 接口內容:聚合用户模型管理業務的核心功能(如創建用户、查詢用户詳情、更新用户角色等),明確業務邏輯的抽象契約。

5. 定義數據倉庫接口(數據庫交互抽象)

  • 編寫backend/domain/usermodel/repository/repository.go,定義數據倉庫接口。
  • 接口內容:聚合與數據庫交互的方法(如從庫中查詢用户、保存用户數據等),作為領域層與數據層的抽象交互契約。

6. 實現數據倉庫接口(數據庫交互邏輯)

  • 編寫backend/domain/usermodel/internal/dal/user_model.go,實現步驟5中定義的數據倉庫接口。
  • 邏輯:通過gorm生成的基礎代碼(model/query)或自定義DAO,完成具體的數據庫讀寫操作。

7. 實現領域服務接口(業務邏輯實現)

  • 編寫backend/domain/usermodel/service/user_model_impl.go,實現步驟4中定義的領域服務接口。
  • 同時,在該文件中創建用户模型領域服務實例(供應用層調用),封裝業務邏輯的具體實現(如調用數據倉庫接口完成數據交互,結合領域實體的業務規則處理邏輯)。

二、應用層(Application - 協調領域層與外部交互)

應用層作為中間層,負責調用領域層的功能,協調業務流程,對外提供統一交互入口。

1. 應用服務實例初始化與交互邏輯實現

  • 創建全局應用服務實例:編寫backend/application/usermodel/user_model.go,定義全局應用服務實例(用於銜接領域層與API網關層)。
  • 初始化實例:編寫backend/application/usermodel/init.go,通過調用領域層user_model_impl.go提供的領域服務實例創建方法,完成全局應用服務實例的初始化。
  • 實現交互邏輯:在user_model.go中,基於初始化後的應用服務實例,編寫與領域層的具體交互邏輯(如組合多個領域服務接口,完成複雜業務流程)。

三、API網關層(基礎設施層,實現抽象接口,對外提供訪問入口)

API網關層負責接收外部請求,通過應用層調用領域層功能,返回處理結果。

1. 生成API相關代碼

  • 在IDL(接口定義語言)目錄下編寫api.thrift文件,定義用户模型管理的外部接口(如HTTP/Thrift接口)。
  • 執行命令hz update --idl ../idl/api.thrift --enable_extends,生成對應的API框架代碼(包括路由、參數解析等)。

2. 實現Handler邏輯

  • 在生成的Handler文件中,通過調用應用層的全局應用服務實例,將外部請求轉換為領域層的業務調用。
  • 邏輯:接收請求參數→調用應用層方法→處理返回結果→返回給調用方。

總結

按照前面的思路,就可以很清晰的進行新功能的開發了,整理不易,覺好留贊。

對智能體開發感興趣的朋友可以關注我,私信我:wangzhongyang1993
user avatar u_16756731 頭像 jiangyi 頭像 u_15214399 頭像
點贊 3 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.