From 16fd40174cd98bf05d3c3dfff5aa33bb07127397 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Sun, 18 May 2025 15:49:33 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=A2=9E=E5=8A=A0=E5=A4=9A=E8=A1=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- newdocs/docs/.vuepress/notes.ts | 4 +- newdocs/docs/notes/pro/devnew.md | 49 +++++---- newdocs/docs/notes/pro/devnewmulti.md | 139 ++++++++++++++++++++++++++ 3 files changed, 169 insertions(+), 23 deletions(-) create mode 100644 newdocs/docs/notes/pro/devnewmulti.md diff --git a/newdocs/docs/.vuepress/notes.ts b/newdocs/docs/.vuepress/notes.ts index 07b372fe..34db7b0d 100644 --- a/newdocs/docs/.vuepress/notes.ts +++ b/newdocs/docs/.vuepress/notes.ts @@ -1,7 +1,7 @@ /* * @Author: yubaolee | 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: '内置组件', diff --git a/newdocs/docs/notes/pro/devnew.md b/newdocs/docs/notes/pro/devnew.md index cd41c8de..5bacf430 100644 --- a/newdocs/docs/notes/pro/devnew.md +++ b/newdocs/docs/notes/pro/devnew.md @@ -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. 生成实体 diff --git a/newdocs/docs/notes/pro/devnewmulti.md b/newdocs/docs/notes/pro/devnewmulti.md new file mode 100644 index 00000000..05af0323 --- /dev/null +++ b/newdocs/docs/notes/pro/devnewmulti.md @@ -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) + +尝试增加一条记录,看看模块是否能正常运行。 \ No newline at end of file