From 94143ce897ec6519dd20f372013d8fabfc627a00 Mon Sep 17 00:00:00 2001 From: niltor Date: Fri, 12 Apr 2024 15:39:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh/ater.web/.order | 3 ++- ...\223\346\236\204\350\257\264\346\230\216.md" | 4 ++++ ...x\350\277\201\347\247\273\350\207\2638.0.md" | 11 ++++++++++- zh/images/Architecture.png | Bin 0 -> 33688 bytes 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 zh/images/Architecture.png diff --git a/zh/ater.web/.order b/zh/ater.web/.order index 627886b..c5dfb9a 100644 --- a/zh/ater.web/.order +++ b/zh/ater.web/.order @@ -5,4 +5,5 @@ 功能模块 高级 示例 -常见问题 \ No newline at end of file +常见问题 +迁移 \ No newline at end of file diff --git "a/zh/ater.web/\346\225\231\347\250\213/\351\241\271\347\233\256\347\273\223\346\236\204\350\257\264\346\230\216.md" "b/zh/ater.web/\346\225\231\347\250\213/\351\241\271\347\233\256\347\273\223\346\236\204\350\257\264\346\230\216.md" index c28e8e0..82d8012 100644 --- "a/zh/ater.web/\346\225\231\347\250\213/\351\241\271\347\233\256\347\273\223\346\236\204\350\257\264\346\230\216.md" +++ "b/zh/ater.web/\346\225\231\347\250\213/\351\241\271\347\233\256\347\273\223\346\236\204\350\257\264\346\230\216.md" @@ -26,6 +26,10 @@ - Manager 该模块的业务实现逻辑 - Controller 该模块定义或公开的接口 +其结构图如下: + +![结构图](../../images/Architecture.png) + > [!NOTE] > 这里不存在基于`模块`的开发,也没有这个概念。这里的模块是基于业务上的划分,将相应的业务实现在代码上进行拆分,实现关注点分离。 > diff --git "a/zh/ater.web/\350\277\201\347\247\273/\344\273\2167.x\350\277\201\347\247\273\350\207\2638.0.md" "b/zh/ater.web/\350\277\201\347\247\273/\344\273\2167.x\350\277\201\347\247\273\350\207\2638.0.md" index 8532f04..b733232 100644 --- "a/zh/ater.web/\350\277\201\347\247\273/\344\273\2167.x\350\277\201\347\247\273\350\207\2638.0.md" +++ "b/zh/ater.web/\350\277\201\347\247\273/\344\273\2167.x\350\277\201\347\247\273\350\207\2638.0.md" @@ -229,7 +229,7 @@ EndProject 1. 将新模板中的`AppServiceCollectionExtensions.cs`和`ManagerServiceCollectionExtensions.cs`复制到当前项目根目录下,并将之前从`StoreServicesExtensions.cs`复制的Manager注入代码,复制到该类中的`AddManager`方法。 2. 将`IUserContext`接口继承`IUserContextBase`,然后删除已存在的属性,并将该文件移动到根目录中,并参照新模板补充该接口方法; 3. 复制新模板中的`Implement\ManagerBase.cs`文件到当前项目中的`Implement`目录中; -4. 参考新模板中的`UserContext.cs`来完善当前的`UserContext.cs`; +4. 参考新模板中的`UserContext.cs`来完善当前的`UserContext.cs`,比如对IsAdmin的判断。 5. 将新模板中的`Const`目录复制到当前项目; 6. 将新模板中的`Service`目录复制到当前项目; 7. 修改`GlobalUsings.cs`,示例如下: @@ -446,6 +446,15 @@ EndProject 同时修改`appsettings.Development.json`和`appsettings.Production.json`中的内容。 +> [!IMPORTANT] +> Jwt配置选项结构已经修改,所以你需要同步修改代码中获取Jwt配置的代码。 + ### 运行并测试 经过上面的步骤后,程序已经可以构建成功,但仍然需要使用最新的配置运行程序。接下来需要对接口进行人工测试,以评估升级后是否存在问题。 + +## 疑难问题 + +8.0开始将swagger进行了分组,分别为`client`和`admin`分别对应用户端接口和管理端接口。 + +如果开启了拆分控制器,在生成Controller的时候,会分别生成用户端控制器和管理端控制器。 diff --git a/zh/images/Architecture.png b/zh/images/Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..8b976cf71f82e21eec6d3ae3e3780075b410de5a GIT binary patch literal 33688 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