审查视图

陈志颖 authored
1 2
# 天联共创
陈志颖 authored
3 4 5
## 项目架构
- 基于REST Full的微服务架构
陈志颖 authored
6
## 代码仓库及相关文档
陈志颖 authored
7 8 9
- [代码仓库地址](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/标准产品文件)
陈志颖 authored
10
- [天联共创API(APP)](http://47.97.5.102:36666/project/342/interface/api)
陈志颖 authored
11 12
- [APP端原型地址](https://9cnuol.axshare.com/)
- [WEB端原型地址](https://eq4yc2.axshare.com/)
陈志颖 authored
13
陈志颖 authored
14
## 项目规范
陈志颖 authored
15
- 领域描述语言文档位置:document/allied-creation-cooperation/
陈志颖 authored
16 17 18
- GIT流程:里程碑->问题->功能分支->代码审查->合并分支
- 开发分支命名规范:dev-姓名全拼
- 接口规范:[API交互规范](https://doc-press.fjmaimaimai.com/standard/api.html)
陈志颖 authored
19
- 接口版本号:v1
陈志颖 authored
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
- 数据交互规范:[数据交互格式标准](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            包缓存
```

## 领域驱动设计-战略建模
### 领域

### 限界上下文
陈志颖 authored
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
### 上下文映射

## 领域驱动设计-战术建模
### 实体

### 值对象

### 聚合根

### 领域服务

### 领域事件

## 领域驱动设计工程实现
### 模块

### 领域对象

### 资源库

### 防腐层

### 领域服务

### 数据流转

### 上下文集成

### 分离领域

## 功能模块实现

### 领域事件发布流程

### DTO模块开发
陈志颖 authored
95 96
### REST集成限界上下文
陈志颖 authored
97 98 99 100 101
## 标准产品组工具使用
- 设置全局变量(替换YOUR-USER-PATH为你真实的项目路径)

  1.生成路径(项目生成路径):/YOUR-USER-PATH/go/src/
陈志颖 authored
102
  2.eggs根目录路径(领域描述语言DSL文档路径生成或引用路径):/YOUR-USER-PATH/go/src/allied-creation-cooperation/document/
陈志颖 authored
103
陈志颖 authored
104
  3.egg名称(通常为项目名称,同样是DSL文件夹名称):allied-creation-cooperation
陈志颖 authored
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129

- 应用描述语言生成

  1.应用描述语言egg脚手架生成

  2.生成属性(Attribute)

  3.生成模式(Schema)

  4.生成服务(Service)

  5.生成接口(Api)

- 具体工程生成

  1.生成接口文档(OpenApi)

  2.生成项目代码脚手架

  3.生成领域模型

  4.生成应用服务

  5.生成Http协议接口
陈志颖 authored
130
- 调试技巧
陈志颖 authored
131 132 133

  1.代码生成器服务端500错误调试技巧
陈志颖 authored
134
  在任务管理其中关闭由标准化平台启动的eggcode.exe(需要debug版本才能查看日志),在命令行通过命令eggcode.exe http -p 9099启动生成器服务,这样就可以打印出生成器500错误的具体信息,关键还是在编写dsl时要细心,不需要的配置整体删干净,需要的配置写完整,注意属性名不要和golang的关键字或者保留字冲突,例如:type、no
陈志颖 authored
135
陈志颖 authored
136
  2.集成测试技巧
陈志颖 authored
137
陈志颖 authored
138
  Describe前面添加F可以针对当前用例进行测试,同样的It前面增加F也可以针对一个Describe中的不同IT进行测试,F的意思为Focus,另外还有其他标记如:P(Pending) or X,详情 [参考](https://onsi.github.io/ginkgo/) Ginkgo官方文档The Spec Runner章节