# 天联共创 ## 项目架构 - 基于REST Full的微服务架构 ## 代码仓库及相关文档 - [代码仓库地址](http://gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation.git) - [DSL文件仓库地址](http://gitlab.fjmaimaimai.com/allied-creation/document) - [标准产品文件svn](svn://220.250.41.79/repo/标准产品文件) - [天联共创API(APP)](http://47.97.5.102:36666/project/342/interface/api) - [APP端原型地址](https://9cnuol.axshare.com/) - [WEB端原型地址](https://eq4yc2.axshare.com/) ## 项目规范 - 领域描述语言文档位置:document/allied-creation-cooperation/ - GIT流程:里程碑->问题->功能分支->代码审查->合并分支 - 开发分支命名规范:dev-姓名全拼 - 接口规范:[API交互规范](https://doc-press.fjmaimaimai.com/standard/api.html) - 接口版本号:v1 - 数据交互规范:[数据交互格式标准](https://doc-press.fjmaimaimai.com/team/frontend/overview/http.html) ## 项目使用框架 - HTTP框架:Beego - ORM框架:go-pg - 数据存储:PostgreSQL - 项目结构分层:六边形架构(接口适配器模式) - 消息中间件:kafka ## 项目整体结构 ``` ├─conf 项目配置文件 ├─deploy 项目部署文件 ├─document 项目dsl文档、openapi文档、diagram图片 ├─pkg │ ├─application 应用服务层(调度编排仓储、dao、领域服务等,完成User Case) │ │ ├─xxx xxx │ │ ├─factory 工厂类,实例具体的实现(数据仓储) │ │ └─xxx xxx │ ├─domain 领域模型层(核心数据处理,接口定义) │ │ ├─event 领域事件定义 │ │ └─service 领域服务定义 │ ├─infrastructure 基础设施层 │ │ ├─dao 特殊的数据库操作 │ │ ├─domainService 实现领域服务(操作多个领域对象,实现领域内的业务逻辑) │ │ ├─pg 数据库模型定义 │ │ ├─repository 数据仓储具体实现(对应domain定义数据库的数据存储接口) │ │ └─serviceGateway 其他系统服务调用 │ ├─log │ └─port 用户接入层(http接入) │ └─beego beego接入 └─vendor 包缓存 ``` ## 领域驱动设计-战略建模 ### 领域 ### 限界上下文 ### 上下文映射 ## 领域驱动设计-战术建模 ### 实体 ### 值对象 ### 聚合根 ### 领域服务 ### 领域事件 ## 领域驱动设计工程实现 ### 模块 ### 领域对象 ### 资源库 ### 防腐层 ### 领域服务 ### 数据流转 ### 上下文集成 ### 分离领域 ## 功能模块实现 ### 领域事件发布流程 ### DTO模块开发 ### REST集成限界上下文 ## 标准产品组工具使用 - 设置全局变量(替换YOUR-USER-PATH为你真实的项目路径) 1.生成路径(项目生成路径):/YOUR-USER-PATH/go/src/ 2.eggs根目录路径(领域描述语言DSL文档路径生成或引用路径):/YOUR-USER-PATH/go/src/allied-creation-cooperation/document/ 3.egg名称(通常为项目名称,同样是DSL文件夹名称):allied-creation-cooperation - 应用描述语言生成 1.应用描述语言egg脚手架生成 2.生成属性(Attribute) 3.生成模式(Schema) 4.生成服务(Service) 5.生成接口(Api) - 具体工程生成 1.生成接口文档(OpenApi) 2.生成项目代码脚手架 3.生成领域模型 4.生成应用服务 5.生成Http协议接口 - 调试技巧 1.代码生成器服务端500错误调试技巧 在任务管理其中关闭由标准化平台启动的eggcode.exe(需要debug版本才能查看日志),在命令行通过命令eggcode.exe http -p 9099启动生成器服务,这样就可以打印出生成器500错误的具体信息,关键还是在编写dsl时要细心,不需要的配置整体删干净,需要的配置写完整,注意属性名不要和golang的关键字或者保留字冲突,例如:type、no 2.集成测试技巧 Describe前面添加F可以针对当前用例进行测试,同样的It前面增加F也可以针对一个Describe中的不同IT进行测试,F的意思为Focus,另外还有其他标记如:P(Pending) or X,详情 [参考](https://onsi.github.io/ginkgo/) Ginkgo官方文档The Spec Runner章节