Skip to content

Commit 90ea290

Browse files
authored
Merge pull request #61 from bufanyun/v2.0
发布v2.15.1版本,更新内容请查看:https://github.com/bufanyun/hotgo/blob/v2.0/docs/…
2 parents 50a32db + e144b12 commit 90ea290

File tree

445 files changed

+17293
-6544
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

445 files changed

+17293
-6544
lines changed

README.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
</p>
77
<p align="center">
88
<a href="https://goframe.org/pages/viewpage.action?pageId=1114119" target="_blank">
9-
<img src="https://img.shields.io/badge/goframe-2.6-green" alt="goframe">
9+
<img src="https://img.shields.io/badge/goframe-2.7-green" alt="goframe">
1010
</a>
1111
<a href="https://v3.vuejs.org/" target="_blank">
1212
<img src="https://img.shields.io/badge/vue.js-vue3.4-green" alt="vue">
1313
</a>
1414
<a href="https://www.naiveui.com" target="_blank">
15-
<img src="https://img.shields.io/badge/naiveui-%3E2.36.0-blue" alt="naiveui">
15+
<img src="https://img.shields.io/badge/naiveui-%3E2.38.0-blue" alt="naiveui">
1616
</a>
1717
<a href="https://www.tslang.cn/" target="_blank">
1818
<img src="https://img.shields.io/badge/typescript-%3E4.0.0-blue" alt="typescript">
@@ -83,24 +83,28 @@
8383

8484
<table>
8585
<tr>
86-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/1.png"/></td>
87-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/2.png"/></td>
86+
<td><img src="./docs/guide-zh-CN/images/demo/1.png"/></td>
87+
<td><img src="./docs/guide-zh-CN/images/demo/2.png"/></td>
8888
</tr>
8989
<tr>
90-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/3.png"/></td>
91-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/4.png"/></td>
90+
<td><img src="./docs/guide-zh-CN/images/demo/3.png"/></td>
91+
<td><img src="./docs/guide-zh-CN/images/demo/4.png"/></td>
9292
</tr>
9393
<tr>
94-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/5.png"/></td>
95-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/6.png"/></td>
94+
<td><img src="./docs/guide-zh-CN/images/demo/5.png"/></td>
95+
<td><img src="./docs/guide-zh-CN/images/demo/6.png"/></td>
9696
</tr>
9797
<tr>
98-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/7.png"/></td>
99-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/8.png"/></td>
98+
<td><img src="./docs/guide-zh-CN/images/demo/7.png"/></td>
99+
<td><img src="./docs/guide-zh-CN/images/demo/8.png"/></td>
100100
</tr>
101101
<tr>
102-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/9.png"/></td>
103-
<td><img src="https://bufanyun.cn-bj.ufileos.com/hotgo/example/10.png"/></td>
102+
<td><img src="./docs/guide-zh-CN/images/demo/9.png"/></td>
103+
<td><img src="./docs/guide-zh-CN/images/demo/10.png"/></td>
104+
</tr>
105+
<tr>
106+
<td><img src="./docs/guide-zh-CN/images/demo/11.png"/></td>
107+
<td><img src="./docs/guide-zh-CN/images/demo/12.png"/></td>
104108
</tr>
105109
</table>
106110

docs/guide-zh-CN/README.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,35 @@
2020
- [WebHook](sys-webhook.md)
2121
- [权限控制](sys-auth.md)
2222
- [支付网关](sys-payment.md)
23-
- [数据库](sys-db.md)
24-
- [代码生成](sys-code.md)
2523
- [定时任务](sys-cron.md)
2624
- [消息队列](sys-queue.md)
2725
- [功能扩展库](sys-library.md)
2826
- [工具方法](sys-utility.md)
2927
- [WebSocket服务器](sys-websocket-server.md)
3028
- [TCP服务器](sys-tcp-server.md)
29+
- [SaaS多租户](sys-tenant.md)
3130
- [单元测试](sys-test.md)
3231

33-
32+
3433
#### 插件模块开发
3534

3635
- [模块介绍及目录](addon-introduce-catalog.md)
3736
- [模块开发流程](addon-flow.md)
3837
- [模块辅助说明](addon-helper.md)
3938

4039

40+
#### 生成代码
41+
- [使用前提](code-start.md)
42+
- [数据库](sys-db.md)
43+
- [生成配置](code-config.md)
44+
- [生成CURD](code-curd.md)
45+
- [生成关联表CURD](code-curd-join.md)
46+
- [生成树型CURD](code-tree.md)
47+
- [生成业务模板](code-business.md)
48+
- [生成模板开发](code-template-dev.md)
49+
- [生成常见问题](code-help.md)
50+
51+
4152
### 前端开发
4253
- [表单组件](web-form.md)
4354
- [WebSocket客户端](sys-websocket-client.md)

docs/guide-zh-CN/addon-introduce-catalog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ HotGo 入口文件->隐式注入(hotgo/addons/modules)->注册所有插件->初
2525
│ ├── modules
2626
│ ├── xxx插件
2727
│ | ├── api
28+
│ | ├── consts
2829
│ | ├── controller
2930
│ | ├── crons
3031
│ | ├── global

docs/guide-zh-CN/code-business.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## 生成业务模板
2+
3+
根据`api`接口文件一键生成业务模板:api、controller、logic、service
4+
5+
待写。

docs/guide-zh-CN/code-config.md

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
## 生成配置
2+
3+
目录
4+
5+
- 模板配置
6+
- CLI配置
7+
- 多数据库使用
8+
9+
### 模板配置
10+
11+
- 配置路径:server/manifest/config/config.yaml
12+
13+
```yaml
14+
# 生成代码
15+
hggen:
16+
allowedIPs: [ "127.0.0.1", "*" ] # 白名单,*代表所有,只有允许的IP后台才能使用生成代码功能
17+
selectDbs: [ "default" ] # 可选生成表的数据库配置名称,支持多库
18+
disableTables: [ "hg_sys_gen_codes","hg_admin_role_casbin" ] # 禁用的表,禁用以后将不会在选择表中看到
19+
delimiters: [ "@{", "}" ] # 模板引擎变量分隔符号
20+
# 生成应用模型,所有生成模板允许自定义,可以参考default模板进行改造
21+
application:
22+
# CRUD和关系树列表模板
23+
crud:
24+
templates:
25+
# 默认的主包模板
26+
- group: "default" # 分组名称
27+
isAddon: false # 是否为插件模板 false|true
28+
masterPackage: "sys" # 主包名称,需和controllerPath、logicPath、inputPath保持关联
29+
templatePath: "./resource/generate/default/curd" # 模板路径
30+
apiPath: "./api/admin" # goApi生成路径
31+
controllerPath: "./internal/controller/admin/sys" # 控制器生成路径
32+
logicPath: "./internal/logic/sys" # 主要业务生成路径
33+
inputPath: "./internal/model/input/sysin" # 表单过滤器生成路径
34+
routerPath: "./internal/router/genrouter" # 生成路由表路径
35+
sqlPath: "./storage/data/generate" # 生成sql语句路径
36+
webApiPath: "../web/src/api" # webApi生成路径
37+
webViewsPath: "../web/src/views" # web页面生成路径
38+
39+
# 默认的插件包模板,{$name}会自动替换成实际的插件名称
40+
- group: "addon" # 分组名称
41+
isAddon: true # 是否为插件模板 false|true
42+
masterPackage: "sys" # 主包名称,需和controllerPath、logicPath、inputPath保持关联
43+
templatePath: "./resource/generate/default/curd" # 模板路径
44+
apiPath: "./addons/{$name}/api/admin" # goApi生成路径
45+
controllerPath: "./addons/{$name}/controller/admin/sys" # 控制器生成路径
46+
logicPath: "./addons/{$name}/logic/sys" # 主要业务生成路径
47+
inputPath: "./addons/{$name}/model/input/sysin" # 表单过滤器生成路径
48+
routerPath: "./addons/{$name}/router/genrouter" # 生成路由表路径
49+
sqlPath: "./storage/data/generate/addons" # 生成sql语句路径
50+
webApiPath: "../web/src/api/addons/{$name}" # webApi生成路径
51+
webViewsPath: "../web/src/views/addons/{$name}" # web页面生成路径
52+
53+
# 消息队列模板
54+
queue:
55+
templates:
56+
- group: "default"
57+
templatePath: "./resource/generate/default/queue"
58+
59+
# 定时任务模板
60+
cron:
61+
templates:
62+
- group: "default"
63+
templatePath: "./resource/generate/default/cron"
64+
65+
# 生成插件模块,通过后台创建新插件时使用的模板,允许自定义,可以参考default模板进行改造
66+
addon:
67+
srcPath: "./resource/generate/default/addon" # 生成模板路径
68+
webApiPath: "../web/src/api/addons/{$name}" # webApi生成路径
69+
webViewsPath: "../web/src/views/addons/{$name}" # web页面生成路径
70+
```
71+
72+
### CLI配置
73+
74+
- hotgo在生成dao、service配置时,默认了和gf官方一致的配置方式和代码生成规则。所以无论你是通过hotgo亦或gf命令生成,最终代码格式完全一致,遵循一致的代码规范。
75+
76+
- 配置路径:[server/hack/config.yaml](../../server/hack/config.yaml)
77+
78+
```yaml
79+
gfcli:
80+
build:
81+
name: "hotgo" # 编译后的可执行文件名称
82+
# arch: "all" #不填默认当前系统架构,可选:386,amd64,arm,all
83+
# system: "all" #不填默认当前系统平台,可选:linux,darwin,windows,all
84+
mod: "none"
85+
cgo: 0
86+
packSrc: "resource" # 将resource目录打包进可执行文件,静态资源无需单独部署
87+
packDst: "internal/packed/packed.go" # 打包后生成的Go文件路径,一般使用相对路径指定到本项目目录中
88+
version: ""
89+
output: "./temp/hotgo" # 可执行文件生成路径
90+
extra: ""
91+
92+
gen:
93+
dao:
94+
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
95+
group: "default" # 分组 使用hotgo代码生成功能时必须填
96+
# tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。
97+
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
98+
removePrefix: "hg_"
99+
descriptionTag: true
100+
noModelComment: true
101+
jsonCase: "CamelLower"
102+
gJsonSupport: true
103+
clear: true
104+
105+
service: # 生成业务配置
106+
srcFolder: "internal/logic"
107+
dstFolder: "internal/service"
108+
dstFileNameCase: "CamelLower"
109+
clear: true
110+
```
111+
112+
### 多数据库使用
113+
114+
- 假设我们要增加一个库名为`hotgo2`、分组为`default2`的数据库,并要为其生成代码
115+
116+
1. 配置[server/hack/config.yaml](../../server/hack/config.yaml) 如下:
117+
```yaml
118+
gen:
119+
dao:
120+
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
121+
group: "default" # 分组 使用hotgo代码生成功能时必须填
122+
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
123+
removePrefix: "hg_"
124+
descriptionTag: true
125+
noModelComment: true
126+
jsonCase: "CamelLower"
127+
gJsonSupport: true
128+
clear: false
129+
- link: "mysql:hotgo2:hg123456.@tcp(127.0.0.1:3306)/hotgo2?loc=Local&parseTime=true"
130+
group: "default2" # 分组 使用hotgo代码生成功能时必须填
131+
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
132+
removePrefix: ""
133+
descriptionTag: true
134+
noModelComment: true
135+
jsonCase: "CamelLower"
136+
gJsonSupport: true
137+
clear: false
138+
```
139+
140+
2. 配置`server/manifest/config/config.yaml`,
141+
142+
`database`配置如下:
143+
```yaml
144+
database:
145+
logger:
146+
level: "all"
147+
stdout: true
148+
default:
149+
link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
150+
debug: true
151+
Prefix: "hg_"
152+
default2:
153+
link: "mysql:hotgo2:hg123456.@tcp(127.0.0.1:3306)/hotgo2?loc=Local&parseTime=true"
154+
debug: true
155+
Prefix: ""
156+
```
157+
158+
`hggen`配置如下:
159+
```yaml
160+
hggen:
161+
allowedIPs: ["127.0.0.1", "*"] # 白名单,*代表所有,只有允许的IP后台才能使用生成代码功能
162+
selectDbs: [ "default", "default2" ] # 可选生成表的数据库配置名称,支持多库
163+
disableTables : ["hg_sys_gen_codes","hg_admin_role_casbin"] # 禁用的表,禁用以后将不会在选择表中看到
164+
delimiters: ["@{", "}"] # 模板引擎变量分隔符号
165+
```
166+
167+
3. 登录HotGo后台 -> 开发工具 -> 代码生成 -> 找到立即生成按钮并打开,就会发现`数据库`选项增加了一个`default2`,后续生成步骤和生成例子完全一样
168+
169+
> 注意:上述的配置中所有的`default2`名称必须保持一致
170+

docs/guide-zh-CN/code-curd-join.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
## 生成关联表CURD
2+
3+
### 热编译启动
4+
- 推荐使用热编译方式启动HotGo,这样生成完成页面自动刷新即可看到新生成内容,无需手动重启
5+
6+
```shell
7+
# 服务端
8+
cd server
9+
gf run main.go
10+
11+
# web端
12+
cd web
13+
yarn dev
14+
```
15+
16+
以下是一个关联表的CURD生成流程
17+
18+
### 创建表结构
19+
- 以下表结构和数据为了方便功能演示已经内置无需再次创建
20+
21+
22+
- 创建主表:hg_sys_gen_curd_demo
23+
```sql
24+
CREATE TABLE `hg_sys_gen_curd_demo` (
25+
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
26+
`category_id` bigint(20) DEFAULT '0' COMMENT '分类ID',
27+
`title` varchar(64) NOT NULL COMMENT '标题',
28+
`description` varchar(255) DEFAULT '' COMMENT '描述',
29+
`content` text COMMENT '内容',
30+
`image` varchar(255) DEFAULT NULL COMMENT '单图',
31+
`attachfile` varchar(255) DEFAULT NULL COMMENT '附件',
32+
`city_id` bigint(20) DEFAULT '0' COMMENT '所在城市',
33+
`switch` int(11) DEFAULT '1' COMMENT '显示开关',
34+
`sort` int(11) DEFAULT NULL COMMENT '排序',
35+
`status` tinyint(1) DEFAULT '1' COMMENT '状态',
36+
`created_by` bigint(20) DEFAULT '0' COMMENT '创建者',
37+
`updated_by` bigint(20) DEFAULT '0' COMMENT '更新者',
38+
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
39+
`updated_at` datetime DEFAULT NULL COMMENT '修改时间',
40+
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
41+
PRIMARY KEY (`id`)
42+
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COMMENT='系统_生成curd演示';
43+
```
44+
45+
创建关联表:hg_test_category
46+
```sql
47+
CREATE TABLE `hg_test_category` (
48+
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',
49+
`name` varchar(255) NOT NULL COMMENT '分类名称',
50+
`short_name` varchar(128) DEFAULT NULL COMMENT '简称',
51+
`description` varchar(255) DEFAULT NULL COMMENT '描述',
52+
`sort` int(11) NOT NULL COMMENT '排序',
53+
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
54+
`status` tinyint(1) DEFAULT '1' COMMENT '状态',
55+
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
56+
`updated_at` datetime DEFAULT NULL COMMENT '修改时间',
57+
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
58+
PRIMARY KEY (`id`)
59+
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='测试分类';
60+
```
61+
62+
### 表字段要求
63+
- 使用生成时,表中必须具有以下字段和属性
64+
65+
| 字段名称 | 字段含义 | 字段类型 | 可为空 |
66+
|--------|----------------------|---------------------|-----|
67+
| id | 主键ID | bigint(20) ||
68+
69+
70+
71+
### 创建生成配置
72+
- 登录HotGo后台 -> 开发工具 -> 代码生成 -> 找到立即生成按钮并打开,选择和填写如下参数:
73+
74+
![](images/code/join-add.png)
75+
76+
77+
### 基本设置
78+
- 确认无误后,点击生成配置会跳转到生成配置页面,如下:
79+
- 你可以在该页面调整生成表格表头/表列的接口功能、菜单权限、高级设置和关联表设置
80+
81+
![](images/code/join-init.png)
82+
83+
### 主表字段设置
84+
85+
- 在该页面你可以调整生成表格字段名称、表单组件、表单编辑/验证项、列表展示/查询项、字段排序、重置和同步字段
86+
87+
![](images/code/join-fields.png)
88+
89+
90+
### 关联表字段设置
91+
- 在该页面你可以调整生成表格关联表字段名称、列表展示/查询项、字段排序、重置和同步字段
92+
- 如果存在多个关联表,也可以对多个关联表字段进行设置
93+
94+
![](images/code/join-fields2.png)
95+
96+
### 预览并生成
97+
98+
点击`预览代码`查看生成的代码内容。如果无需继续调整直接点击`提交生成`即可,以下是预览代码效果:
99+
100+
![](images/code/join-preview.png)
101+
102+
- 如果你使用的热编译,那么页面会在生成成功后立即刷新,刷新完成你即可在后台菜单栏中看到`测试表格`菜单。如果不是使用热编译启动,请手动重启服务后刷新。
103+
104+
105+
### 生成完成
106+
107+
- 让我们看看生成的表格页面,效果如下:
108+
109+
![](images/code/join-list.png)
110+
111+
### 常见问题
112+
113+
- [生成常见问题](code-help.md)
114+
115+

0 commit comments

Comments
 (0)