Ver código fonte

增加代码生成前后端配置项

Signed-off-by: rqc <rqiancheng@qq.com>
rqc 3 anos atrás
pai
commit
8f95d64d5d

+ 4 - 2
Admin.NET/Admin.NET.Application/AppConfig.json

@@ -1,4 +1,4 @@
-{
+{
     "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
 
     "DbConnection": {
@@ -23,7 +23,9 @@
     },
     // 代码生成配置项-程序集名称集合
     "CodeGen": {
-        "EntityAssemblyNames": [ "Admin.NET.Core", "Admin.NET.Application" ]
+        "EntityAssemblyNames": [ "Admin.NET.Core", "Admin.NET.Application" ],
+        "FrontRootPath": "Vben2", //前端文件根目录
+        "BackendApplicationNamespace": "Admin.NET.Application" //后端生成到的项目
     },
     "Wechat": {
         // 公众号

+ 10 - 0
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -3183,6 +3183,16 @@
             数据库实体程序集名称集合
             </summary>
         </member>
+        <member name="P:Admin.NET.Core.CodeGenOptions.FrontRootPath">
+            <summary>
+            前端文件根目录
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.CodeGenOptions.BackendApplicationNamespace">
+            <summary>
+            后端生成到的项目
+            </summary>
+        </member>
         <member name="T:Admin.NET.Core.DbConnectionOptions">
             <summary>
             数据库配置选项

+ 11 - 1
Admin.NET/Admin.NET.Core/Option/CodeGenOptions.cs

@@ -1,4 +1,4 @@
-namespace Admin.NET.Core;
+namespace Admin.NET.Core;
 
 /// <summary>
 /// 代码生成配置选项
@@ -9,4 +9,14 @@ public sealed class CodeGenOptions : IConfigurableOptions
     /// 数据库实体程序集名称集合
     /// </summary>
     public List<string> EntityAssemblyNames { get; set; }
+    
+    /// <summary>
+    /// 前端文件根目录
+    /// </summary>
+    public string FrontRootPath { get; set; }
+
+    /// <summary>
+    /// 后端生成到的项目
+    /// </summary>
+    public string BackendApplicationNamespace { get; set; }
 }

+ 8 - 5
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs

@@ -11,16 +11,19 @@ public class SysCodeGenService : IDynamicApiController, ITransient
     private readonly SysCodeGenConfigService _codeGenConfigService;
     private readonly IViewEngine _viewEngine;
     private readonly ICommonService _commonService;
+    private readonly CodeGenOptions _codeGenOptions;
 
     public SysCodeGenService(ISqlSugarClient db,
         SysCodeGenConfigService codeGenConfigService,
         IViewEngine viewEngine,
-        ICommonService commonService)
+        ICommonService commonService,
+        IOptions<CodeGenOptions> codeGenOptions)
     {
         _db = db;
         _codeGenConfigService = codeGenConfigService;
         _viewEngine = viewEngine;
         _commonService = commonService;
+        _codeGenOptions = codeGenOptions.Value;
     }
 
     /// <summary>
@@ -405,18 +408,18 @@ public class SysCodeGenService : IDynamicApiController, ITransient
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    private static List<string> GetTargetPathList(SysCodeGen input)
+    private List<string> GetTargetPathList(SysCodeGen input)
     {
-        var backendPath = Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName, "Admin.NET.Application", "Service", input.TableName);
+        var backendPath = Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName, _codeGenOptions.BackendApplicationNamespace, "Service", input.TableName);
         var servicePath = Path.Combine(backendPath, input.TableName + "Service.cs");
         var inputPath = Path.Combine(backendPath, "Dto", input.TableName + "Input.cs");
         var outputPath = Path.Combine(backendPath, "Dto", input.TableName + "Output.cs");
         var viewPath = Path.Combine(backendPath, "Dto", input.TableName + "Dto.cs");
-        var frontendPath = Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName, "Vben2", "src", "views", "main");
+        var frontendPath = Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName, _codeGenOptions.FrontRootPath, "src", "views", "main");
         var indexPath = Path.Combine(frontendPath, input.TableName, "index.vue");
         var formDataPath = Path.Combine(frontendPath, input.TableName, "data.data.ts");
         var formModalPath = Path.Combine(frontendPath, input.TableName, "dataModal.vue");
-        var apiJsPath = Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName, "Vben2", "src", "api", "main", input.TableName + ".ts");
+        var apiJsPath = Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName, _codeGenOptions.FrontRootPath, "src", "api", "main", input.TableName + ".ts");
 
         return new List<string>()
         {

+ 2 - 1
Admin.NET/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm

@@ -1,4 +1,5 @@
-using Admin.NET.Application.Const;
+using @(@Model.NameSpace).Const;
+using @(@Model.NameSpace).Entity;
 
 namespace @Model.NameSpace;
 /// <summary>