docs: 增加多表代码生成文档

This commit is contained in:
yubaolee
2025-05-18 15:49:33 +08:00
parent dde08ed0d7
commit 16fd40174c
3 changed files with 169 additions and 23 deletions

View File

@@ -1,7 +1,7 @@
/*
* @Author: yubaolee <yubaolee@163.com> | ahfu~ <954478625@qq.com>
* @Date: 2025-04-23 20:26:48
* @LastEditTime: 2025-05-12 14:00:21
* @LastEditTime: 2025-05-17 21:19:46
* @Description: 笔记配置
* Copyright (c) 2025 by yubaolee | ahfu~ , All Rights Reserved.
*/
@@ -54,7 +54,7 @@ const proNote = defineNoteConfig({
{
text: '基础开发',
collapsed: false,
items: ['start','deploy','structure','devnew', 'router','openurl','keepalive','datapropertyrule']
items: ['start','deploy','structure','devnew','devnewmulti', 'router','openurl','keepalive','datapropertyrule']
},
{
text: '内置组件',

View File

@@ -1,5 +1,5 @@
---
title: vue3代码生成
title: 单表代码生成
createTime: 2025/04/23 23:43:26
permalink: /pro/devnew/
---
@@ -49,7 +49,7 @@ getList() {
#### 固定头部
如果不是上面的情况,则生成前端列为固定的头部。如下:
代码生成的时候,按配置生成前端表头,一旦生成完毕,后台就无法通过授权等方式来控制显示的文字等。如下:
```html
@@ -68,6 +68,8 @@ initCfg() {
```
只能通过修改前端代码或使用[列设置](/pro/columnsetting/)组件来修改。
## 准备工作
* 数据库OpenAuthPro中添加仓储表【Stock】本文以该数据表为例。参考表结构如下
@@ -110,27 +112,10 @@ create table stock
这时,编辑字段具体的属性。如是否【可显示】【可编辑】等。
## 子表添加
::: warning 注意
如果只生成单表结构,可以跳过本节
:::
如果需要添加主/从(父/子)结构,需要先添加子表信息。代码生成界面,点击`添加`按钮,输入想添加的模块信息。
![20211208001551](http://img.openauth.net.cn/20211208001551.png)
::: warning 注意
子表的`动态头部`属性务必与父表保持一致,否则会造成生成的代码不能正常运行
:::
## 生成模块
选中刚刚添加的`Stock`依次点击【生成实体】【生成业务代码】【生成vue页面】;
如果存在子表,也进行相同的操作。即选中刚刚添加的`StockDetail`依次点击【生成实体】【生成业务代码】【生成vue页面】子表虽然不需要生成vue页面但需要生成前端js api;
成功后生成的后端.Net代码位置如下
OpenAuth.Repository\Domain\Stock.cs
@@ -153,9 +138,23 @@ src\api\stocks.js
src\views\stocks\index.vue
::: warning 注意
完成以上步骤后请重启OpenAuth.WebApi用来重新加载刚刚生成的后台代码
1. 完成以上步骤后请重启OpenAuth.WebApi用来重新加载刚刚生成的后台代码
子表不需要添加模块
2. 代码生成器生成的应用层XxxxApp.cs里面的编辑功能只修改部分属性且按帕斯卡命名。需要根据业务需要调整要编辑的字段。如
```csharp
public void Update(AddOrUpdateChildtableReq obj)
{
var user = _auth.GetCurrentUser().User;
Repository.Update(u => new Childtable
{
//todo: 根据业务需要调整字段
Updatetime = DateTime.Now,
Updateuserid = user.Id,
Updateusername = user.Name
},u => u.Id == obj.Id);
}
```
:::
## 配置模块地址
@@ -168,6 +167,8 @@ src\views\stocks\index.vue
![20211208011431](http://img.openauth.net.cn/20211208011431.png)
尝试增加一条记录,看看模块是否能正常运行。
## 代码生成功能字段详解
* 模块名称:**必填** 表示这个生成的模块名称,根据自己需要填写。
@@ -193,6 +194,12 @@ src\views\stocks\index.vue
## 生成逻辑详解
::: warning 注意
如果不想了解我们代码生成器生成代码的逻辑,可以跳过以下内容。
:::
如果你觉得框架自带的代码生成器没达到你想要的效果,可以自行修改。以下是代码生成器逻辑概述:
当您在代码生成界面选中一个或多个表并依次点击【生成实体】、【生成业务代码】、【生成vue页面】及Vue API系统会执行一系列后端操作来创建所需的代码文件。以下是这些操作的详细解析
### 1. 生成实体

View File

@@ -0,0 +1,139 @@
---
title: 多表代码生成
createTime: 2025/04/23 23:43:26
permalink: /pro/devnewmulti/
---
本章节视频讲解请参考:[OpenAuth.Net视频合集--使用企业版代码生成器](https://www.bilibili.com/video/BV1JCuyeaEFp/)
上节介绍了[单表代码生成](/pro/devnew/),本节介绍多表代码生成。
## 准备工作
* 数据库OpenAuthPro中添加父表ParentTable,子表ChildTable本文以该数据表为例。参考表结构如下
```SQL
CREATE TABLE `parenttable` (
`id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '父表ID',
`externalno` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '自定义编号',
`status` int(11) NOT NULL COMMENT '状态',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称',
`CreateTime` datetime NOT NULL COMMENT '创建时间',
`CreateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人ID',
`CreateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人',
`UpdateTime` datetime NULL DEFAULT NULL COMMENT '最后更新时间',
`UpdateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人ID',
`UpdateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人',
`orgid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属部门',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '父表' ROW_FORMAT = DYNAMIC;
CREATE TABLE `childtable` (
`id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '子表ID',
`parentid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '父表ID',
`remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '备注',
`pricenotax` decimal(18, 6) NULL DEFAULT NULL COMMENT '单价',
`asnstatus` int(11) NOT NULL COMMENT '细单状态',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品名称',
`goodssku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品SKU',
`goodsbatch` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品批号',
`ordernum` decimal(18, 2) NOT NULL COMMENT '数量',
`proddate` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生产日期',
`expiredate` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '失效日期',
`CreateTime` datetime NOT NULL COMMENT '创建时间',
`CreateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人ID',
`CreateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人',
`UpdateTime` datetime NULL DEFAULT NULL COMMENT '最后更新时间',
`UpdateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人ID',
`UpdateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人',
PRIMARY KEY (`id`, `parentid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '子表' ROW_FORMAT = DYNAMIC;
```
* 使用Visual Studio 以开发模式启动后端。参考:[编译运行webapi](http://doc.openauth.net.cn/core/start/#%E7%BC%96%E8%AF%91%E8%BF%90%E8%A1%8Cwebapi)
* 启动企业版前端。参考:[启动前端](http://doc.openauth.net.cn/pro/#%E5%90%AF%E5%8A%A8%E5%89%8D%E7%AB%AF)
后续操作全部在系统中完成。
## 添加父表
代码生成界面,点击`添加`按钮,输入想添加的模块信息。相关字段说明可参考[代码生成功能字段详解](/pro/devnew/#代码生成功能字段详解)
![20250518152210](http://img.openauth.net.cn/20250518152210.png)
录入基础信息,点击右下角`确认`保存后,系统会添加一条记录,并自动加载对应的字段信息。
![20250518152235](http://img.openauth.net.cn/20250518152235.png)
这时,编辑字段具体的属性。如是否【可显示】【可编辑】等。
## 添加子表
同添加父表一样,点击`添加`按钮,输入子模块信息。
![20250518152326](http://img.openauth.net.cn/20250518152326.png)
::: warning 注意
* 子表的`父表`为必填字段,选择刚刚添加的父表。
* 子表的`外键`字段为必填字段,选择子表设计的类似`父表ID`字段,从而可以与父表关联。
* 子表的`动态头部`属性务必与父表保持一致,否则会造成生成的代码不能正常运行
:::
## 生成模块
选中刚刚添加的父表依次点击【生成实体】【生成业务代码】【生成vue页面】;
子表虽然不需要生成vue页面但需要生成前端js api;
成功后生成的后端.Net代码位置如下
OpenAuth.Repository\Domain\Parentable.cs
OpenAuth.App\ParentableApp\ParentableApp.cs
OpenAuth.App\ParentableApp\Request\AddOrUpdateParentableReq.cs
OpenAuth.App\ParentableApp\Request\QueryParentableListReq.cs
OpenAuth.WebApi\Controllers\ParentablesController.cs
OpenAuth.Repository\Domain\Childtable.cs
OpenAuth.App\ChildtableApp\ChildtableApp.cs
OpenAuth.App\ChildtableApp\Request\AddOrUpdateChildtableReq.cs
OpenAuth.App\ChildtableApp\Request\QueryChildtableListReq.cs
OpenAuth.WebApi\Controllers\ChildtablesController.cs
前端Vue代码
src\api\parentables.js
src\api\childtables.js
src\views\parentables\index.vue
::: warning 注意
1. 完成以上步骤后请重启OpenAuth.WebApi用来重新加载刚刚生成的后台代码
2. 代码生成器生成的应用层XxxxApp.cs里面的编辑功能只修改部分属性且按帕斯卡命名。需要根据业务需要调整要编辑的字段。如
```csharp
public void Update(AddOrUpdateChildtableReq obj)
{
var user = _auth.GetCurrentUser().User;
Repository.Update(u => new Childtable
{
//todo: 根据业务需要调整字段
Updatetime = DateTime.Now,
Updateuserid = user.Id,
Updateusername = user.Name
},u => u.Id == obj.Id);
}
```
:::
## 配置模块地址
经过以上步骤重启系统后使用System账号重新登录在【模块管理】中添加`测试模块`模块,如下图:
![20250518153337](http://img.openauth.net.cn/20250518153337.png)
这样就可以访问刚刚新加的`测试模块`功能,到此就完成了添加一个新模块功能:
![20250518153406](http://img.openauth.net.cn/20250518153406.png)
尝试增加一条记录,看看模块是否能正常运行。