名称 最后更新
deploy/k8s/dev 正在载入提交数据...
document 正在载入提交数据...
pkg 正在载入提交数据...
.DS_Store 正在载入提交数据...
.gitignore 正在载入提交数据...
Dockerfile 正在载入提交数据...
README.md 正在载入提交数据...
go.mod 正在载入提交数据...
go.sum 正在载入提交数据...
main.go 正在载入提交数据...

天联共创

项目架构

  • 基于REST Full的微服务架构

代码仓库及相关文档

项目规范

  • 领域描述语言文档位置:document/allied-creation-cooperation/
  • GIT流程:里程碑->问题->功能分支->代码审查->合并分支
  • 开发分支命名规范:dev-姓名全拼
  • 接口规范:API交互规范
  • 接口版本号:v1
  • 数据交互规范:数据交互格式标准

项目使用框架

  • 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模块开发

标准产品组工具使用

  • 设置全局变量(替换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协议接口

  • Tips

1.代码生成器服务端500错误调试技巧

在任务管理其中关闭由标准化平台带起的eggcode.exe,在命令行通过命令eggcode.exe http -p 9099启动生成器服务,这样就可以打印出生成器500错误的具体信息,关键还是在编写dsl时要细心,不需要的配置整体删干净,需要的配置写完整,注意属性名不要和golang的关键字或者保留字冲突,例如:type、no

2.集成调试技巧

Describe前面添加F可以针对当前用例进行测试,同样的It前面增加F也可以针对一个Describe中的不同IT进行测试,F的意思为Focus,另外还有其他标记如:P(Pending) or X,详情 参考 Ginkgo官方文档The Spec Runner章节