Exemple #1
0
        /// <summary>
        ///     生成服务接口,与服务方法
        /// </summary>
        /// <param name="type"></param>
        public static void Create(Type type, string projectName = "zkcloudv11s")
        {
            //type = typeof(Theme);

            if (!type.BaseType.FullName.Contains("Entities"))
            {
                throw new ValidException("命名空间必须包含Entities");
            }

            var testBuilder = new StringBuilder();

            var filePath = BaseTemplate.GetFilePath(type, "Repositories");
            var fileName = $"{filePath}\\I{type.Name}Repository.cs".Replace("test\\", "app\\")
                           .Replace("Entities", "Services").Replace("zkcloudv11s", projectName);

            if (!File.Exists(fileName))
            {
                testBuilder.AppendLine(
                    "using System;using Alabo.Domains.Repositories.EFCore;using Alabo.Domains.Repositories.Model;");
                testBuilder.AppendLine("using System.Linq;");
                testBuilder.AppendLine("using MongoDB.Bson;");
                testBuilder.AppendLine("using Alabo.Domains.Repositories;");
                testBuilder.AppendLine($"using {type.Namespace};");

                if (testBuilder.ToString().IndexOf(type.Namespace, StringComparison.OrdinalIgnoreCase) == -1)
                {
                    testBuilder.AppendLine($"using {type.Namespace};");
                }

                testBuilder.AppendLine();
                testBuilder.AppendLine($"namespace {type.Namespace.Replace("Entities", "Repositories")} {{");
                ;

                testBuilder.AppendLine(
                    $"\tpublic interface I{type.Name}Repository : IRepository<{type.Name}, ObjectId>  {{");

                testBuilder.AppendLine("\t}");
                testBuilder.AppendLine("}");
                //创建文件

                using (var stream = File.Create(fileName))
                {
                    using (var writer = new StreamWriter(stream))
                    {
                        writer.Write(testBuilder);
                    }
                }
            }

            fileName = $"{filePath}\\{type.Name}Repository.cs".Replace("test\\", "app\\")
                       .Replace("Entities", "Services")
                       .Replace("zkcloudv11s", projectName);
            if (!File.Exists(fileName))
            {
                testBuilder = new StringBuilder();
                testBuilder.AppendLine(
                    "using System;using Alabo.Domains.Repositories.EFCore;using Alabo.Domains.Repositories.Model;");
                testBuilder.AppendLine("using System.Linq;");
                testBuilder.AppendLine("using MongoDB.Bson;");
                testBuilder.AppendLine($"using {type.Namespace};");
                testBuilder.AppendLine("using Alabo.Domains.Repositories;");
                testBuilder.AppendLine("using Alabo.Datas.UnitOfWorks;");
                testBuilder.AppendLine($"using  {type.Namespace.Replace("Entities", "Repositories")};");

                if (testBuilder.ToString().IndexOf(type.Namespace, StringComparison.OrdinalIgnoreCase) == -1)
                {
                    testBuilder.AppendLine($"using {type.Namespace};");
                }

                testBuilder.AppendLine();
                testBuilder.AppendLine($"namespace {type.Namespace.Replace("Entities", "Repositories")} {{");
                ;

                testBuilder.AppendLine(
                    $"\tpublic class {type.Name}Repository : RepositoryMongo<{type.Name}, ObjectId>,I{type.Name}Repository  {{");

                testBuilder.AppendLine($"\tpublic  {type.Name}Repository(IUnitOfWork unitOfWork) : base(unitOfWork){{");
                testBuilder.AppendLine("\t}");
                testBuilder.AppendLine("\t}");
                testBuilder.AppendLine("}");
                //创建文件

                using (var stream = File.Create(fileName))
                {
                    using (var writer = new StreamWriter(stream))
                    {
                        writer.Write(testBuilder);
                    }
                }
            }
        }
        /// <summary>
        ///     生成服务方法
        ///     生成服务接口,与服务方法
        /// </summary>
        /// <param name="type"></param>
        public static void CreateApiController(Type type, string idType, string projectName = "zkcloudv11s")
        {
            //  type = typeof(WidgetHistory);
            //if (type.BaseType.FullName != typeof(MongoEntity).FullName) throw new ValidException("非Mongodb实体方法,不支持服务方法生成");

            if (!type.BaseType.FullName.Contains("Entities"))
            {
                throw new ValidException("命名空间必须包含Entities");
            }

            var testBuilder = new StringBuilder();
            var filePath    = BaseTemplate.GetFilePath(type, "Controllers").Replace("Domain", "").Replace("Domains", "")
                              .Replace(projectName, "");

            DirectoryHelper.CreateIfNotExists(filePath);
            var fileName = filePath + $"\\Api{type.Name}Controller.cs";

            if (!File.Exists(fileName))
            {
                testBuilder.AppendLine(
                    "using System;using Alabo.Domains.Repositories.EFCore;using Alabo.Domains.Repositories.Model;");
                testBuilder.AppendLine("using System.Linq;");

                testBuilder.AppendLine("using Alabo.Domains.Entities;");
                testBuilder.AppendLine("using Microsoft.AspNetCore.Mvc;");
                testBuilder.AppendLine("using Alabo.Framework.Core.WebApis.Filter;");
                testBuilder.AppendLine("");
                testBuilder.AppendLine("using MongoDB.Bson;");
                testBuilder.AppendLine("using Alabo.App.Core.User;");
                testBuilder.AppendLine("using Alabo.RestfulApi;using ZKCloud.Open.ApiBase.Configuration;");
                testBuilder.AppendLine("using Alabo.Domains.Services;");
                testBuilder.AppendLine("using Alabo.Web.Mvc.Attributes;");
                testBuilder.AppendLine("using Alabo.Web.Mvc.Controllers;");
                testBuilder.AppendLine($"using {type.Namespace};");

                if (testBuilder.ToString().IndexOf(type.Namespace, StringComparison.OrdinalIgnoreCase) == -1)
                {
                    testBuilder.AppendLine($"using {type.Namespace};");
                }

                testBuilder.AppendLine();
                testBuilder.AppendLine(
                    $"namespace {type.Namespace.Replace("Entities", "Controllers").Replace("Domain.", "")} {{");

                testBuilder.AppendLine("\t\t[ApiExceptionFilter]");
                testBuilder.AppendLine($"\t\t[Route(\"Api/{type.Name}/[action]\")]");
                testBuilder.AppendLine(
                    $"\t\tpublic class Api{type.Name}Controller : ApiBaseController<{type.Name},{idType}>  {{");

                testBuilder.AppendLine(
                    $" public Api{type.Name}Controller() : base() ");
                testBuilder.AppendLine("\t{ ");
                testBuilder.AppendLine($"\t\tBaseService = Resolve<I{type.Name}Service>();");
                testBuilder.AppendLine("\t}");
                testBuilder.AppendLine();

                testBuilder.AppendLine("\t}");
                testBuilder.AppendLine("}");
                //创建文件

                using (var stream = File.Create(fileName))
                {
                    using (var writer = new StreamWriter(stream))
                    {
                        writer.Write(testBuilder);
                    }
                }
            }
        }