From 97113c38c6b4acb7d06ba498a2942fd101125d7f Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 06 5月 2025 06:57:21 +0800
Subject: [PATCH] 2222

---
 Weben_CMS专用代码生成器/Code/Templete/EntityFrameworkCore/EfCoreRepository模板.txt       |  113 ++++++++++++++++++++++
 Weben_CMS专用代码生成器/Code/Generate/Domain/IRepository_Generate.cs                   |   27 +++++
 Weben_CMS专用代码生成器/Code/MainForm.cs                                               |   21 ++++
 Weben_CMS专用代码生成器/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs |   27 +++++
 Weben_CMS专用代码生成器/Code/Templete/Domain/IRepository模板.txt                         |   53 ++++++++++
 Weben_CMS专用代码生成器/Code/Templete/AppService/AppService模板.txt                      |    4 
 Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj                            |    8 +
 7 files changed, 251 insertions(+), 2 deletions(-)

diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Domain/IRepository_Generate.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Domain/IRepository_Generate.cs"
new file mode 100644
index 0000000..04ae3ff
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Domain/IRepository_Generate.cs"
@@ -0,0 +1,27 @@
+锘�
+
+using GenerateCode_WeiBen_WMS.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace GenerateCode_GEBrilliantFactory
+{
+    /// <summary>
+    /// 鐢熸垚鏌ヨ瀹炰綋绫�
+    /// </summary>
+    public class IRepository_Generate : BaseGenerate
+    {
+        public static string CreateText(GenerateCodeParam param)
+        {
+            var str = TextHelper.ReadText(@"Templete\Domain\IRepository妯℃澘.txt");
+            CommonReplace(ref str);
+
+            CommonHelper.CommonReplaceStr(param, ref str);
+
+
+            return str;
+        }
+    }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs"
new file mode 100644
index 0000000..1c198b7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs"
@@ -0,0 +1,27 @@
+锘�
+
+using GenerateCode_WeiBen_WMS.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace GenerateCode_GEBrilliantFactory
+{
+    /// <summary>
+    /// 鐢熸垚鏌ヨ瀹炰綋绫�
+    /// </summary>
+    public class EfCoreRepository_Generate : BaseGenerate
+    {
+        public static string CreateText(GenerateCodeParam param)
+        {
+            var str = TextHelper.ReadText(@"Templete\EntityFrameworkCore\EfCoreRepository妯℃澘.txt");
+            CommonReplace(ref str);
+
+            CommonHelper.CommonReplaceStr(param, ref str);
+
+
+            return str;
+        }
+    }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj"
index 9d31ff0..5ae5d62 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj"
@@ -110,6 +110,8 @@
     <Compile Include="Generate\AppService\IAppService_Generate.cs" />
     <Compile Include="Generate\BaseGenerate.cs" />
     <Compile Include="Generate\Controller\Controller_Generate.cs" />
+    <Compile Include="Generate\Domain\IRepository_Generate.cs" />
+    <Compile Include="Generate\EntityFrameworkCore\EfCoreRepository_Generate.cs" />
     <Compile Include="Generate\Entity\ImportModel_Generate.cs" />
     <Compile Include="Generate\Entity\ExportModel_Generate.cs" />
     <Compile Include="Generate\Entity\Dto_Generate.cs" />
@@ -201,6 +203,12 @@
     <Content Include="Templete\Controller妯℃澘.txt">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
+    <Content Include="Templete\Domain\IRepository妯℃澘.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Templete\EntityFrameworkCore\EfCoreRepository妯℃澘.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
     <Content Include="Templete\Entity\AddModel妯℃澘.txt">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs"
index 0c4b085..22b30fa 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs"
@@ -245,6 +245,27 @@
 
                 #endregion
 
+                #region Domain
+
+                //11銆佺敓鎴� IRepository 鏂囦欢
+                var iRepositoryPath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Domain\" + tb_EntityName.Text.Trim(); ;
+                str_generate = IRepository_Generate.CreateText(param);
+                tf = TextHelper.Export2File_V2(iRepositoryPath, $"I{param.EntityName}Repository.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
+
+
+                #endregion
+
+                #region EntityFrameworkCore
+
+                //12銆佺敓鎴� EfCoreRepository 鏂囦欢
+                var efCoreRepositoryPath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".EntityFrameworkCore\Repositories";
+                str_generate = EfCoreRepository_Generate.CreateText(param);
+                tf = TextHelper.Export2File_V2(efCoreRepositoryPath, $"EfCore{param.EntityName}Repository.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
+
+
+                #endregion
+
+
 
                 ////鐢熸垚 OutputModel 鏂囦欢
                 //str_generate = OutputModel_Generate.CreateQueryModelLText(modulelogo, chinaComment, columnList, entityName);
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt"
index 46c7fb2..35d7019 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt"
@@ -2,8 +2,8 @@
 using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
 using CMS.Plugin.$NameSpacePath$.Domain.Shared;
 using CMS.Plugin.$NameSpacePath$.Domain.Shared.Util;
-using CMS.Plugin.$NameSpacePath$.Domain.Shared.$EntityInstanceName$s;
-using CMS.Plugin.$NameSpacePath$.Domain.$EntityInstanceName$s;
+using CMS.Plugin.$NameSpacePath$.Domain.Shared.$EntityName$;
+using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
 using CmsQueryExtensions.Extension;
 using System.Linq.Expressions;
 using Volo.Abp;
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Domain/IRepository\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Domain/IRepository\346\250\241\346\235\277.txt"
new file mode 100644
index 0000000..9ec6318
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Domain/IRepository\346\250\241\346\235\277.txt"
@@ -0,0 +1,53 @@
+using CmsQueryExtensions.Extension;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories;
+
+namespace CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
+
+/// <summary>
+/// $ChinaComment$仓储
+/// </summary>
+public interface I$EntityName$Repository : IBasicRepository<$EntityName$, Guid>
+{
+    /// <summary>
+    /// 按照名称查找$ChinaComment$
+    /// </summary>
+    /// <param name="name"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<$EntityName$> FindByNameAsync(string name, CancellationToken cancellationToken = default);
+
+    /// <summary>
+    /// 验证名称是否存在$ChinaComment$
+    /// </summary>
+    /// <param name="name"></param>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    Task<bool> NameExistAsync(string name, Guid? id = null);
+
+    /// <summary>
+    /// 获取最大排序$ChinaComment$
+    /// </summary>
+    /// <returns></returns>
+    Task<int> GetMaxSortAsync();
+
+    /// <summary>
+    /// 获取分页列表$ChinaComment$
+    /// </summary>
+    /// <param name="whereConditions"></param>
+    /// <param name="sorting"></param>
+    /// <param name="maxResultCount"></param>
+    /// <param name="skipCount"></param>
+    /// <param name="includeDetails"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<List<$EntityName$>> GetListAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default);
+
+    /// <summary>
+    /// 获取总数$ChinaComment$
+    /// </summary>
+    /// <param name="whereConditions"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/EntityFrameworkCore/EfCoreRepository\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/EntityFrameworkCore/EfCoreRepository\346\250\241\346\235\277.txt"
new file mode 100644
index 0000000..c355d6a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/EntityFrameworkCore/EfCoreRepository\346\250\241\346\235\277.txt"
@@ -0,0 +1,113 @@
+using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
+using CMS.Plugin.$NameSpacePath$.EntityFrameworkCore.Extensions;
+using CmsQueryExtensions.Extension;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+
+namespace CMS.Plugin.$NameSpacePath$.EntityFrameworkCore.Repositories;
+
+/// <summary>
+/// $ChinaComment$仓储实现
+/// </summary>
+public class EfCore$EntityName$Repository : EfCoreRepository<ICMSPluginDbContext, $EntityName$, Guid>, I$EntityName$Repository
+{
+    /// <summary>
+    /// Initializes a new instance of the <see cref="EfCore$EntityName$Repository"/> class.
+    /// </summary>
+    /// <param name="dbContextProvider">The database context provider.</param>
+    public EfCore$EntityName$Repository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+        : base(dbContextProvider)
+    {
+    }
+
+    /// <summary>
+    /// 按照名称查找$ChinaComment$
+    /// </summary>
+    /// <param name="name"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public virtual async Task<$EntityName$> FindByNameAsync(string name, CancellationToken cancellationToken = default)
+    {
+        return await (await GetDbSetAsync())
+            .IncludeDetails()
+            .Where(x => !x.IsDeleted)
+            .OrderBy(t => t.Sort)
+            .FirstOrDefaultAsync(t => t.MaterialCode == name, GetCancellationToken(cancellationToken));
+    }
+
+    /// <summary>
+    /// 验证名称是否存在$ChinaComment$
+    /// </summary>
+    /// <param name="materialCode"></param>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    public async Task<bool> NameExistAsync(string materialCode, Guid? id = null)
+    {
+        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == materialCode);
+    }
+
+    /// <summary>
+    /// 获取最大排序$ChinaComment$
+    /// </summary>
+    /// <returns></returns>
+    public async Task<int> GetMaxSortAsync()
+    {
+        var hasAny = await (await GetQueryableAsync())
+            .Where(x => !x.IsDeleted).AnyAsync();
+        if (!hasAny)
+        {
+            return 1;
+        }
+
+        var sort = await (await GetQueryableAsync())
+            .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+        return sort + 1;
+    }
+
+    /// <summary>
+    /// 获取分页列表$ChinaComment$
+    /// </summary>
+    /// <param name="whereConditions"></param>
+    /// <param name="sorting"></param>
+    /// <param name="maxResultCount"></param>
+    /// <param name="skipCount"></param>
+    /// <param name="includeDetails"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<List<$EntityName$>> GetListAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default)
+    {
+        return await (await GetDbSetAsync())
+            .IncludeDetails(includeDetails)
+            .WhereIf(whereConditions != null, whereConditions.data)
+            .Where(x => !x.IsDeleted)
+            .OrderBy(sorting.IsNullOrEmpty() ? nameof($EntityName$.Sort) : sorting)
+            .PageBy(skipCount, maxResultCount)
+            .ToListAsync(GetCancellationToken(cancellationToken));
+    }
+
+    /// <summary>
+    /// 获取总数$ChinaComment$
+    /// </summary>
+    /// <param name="whereConditions"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, CancellationToken cancellationToken = default)
+    {
+        return await (await GetQueryableAsync())
+            .WhereIf(whereConditions != null, whereConditions.data)
+            .Where(x => !x.IsDeleted)
+            .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+    }
+
+
+    /// <inheritdoc />
+    public override async Task<IQueryable<$EntityName$>> WithDetailsAsync()
+    {
+        return (await GetQueryableAsync())
+            .Where(x => !x.IsDeleted).IncludeDetails();
+    }
+}

--
Gitblit v1.9.3