Esempio n. 1
0
        /// <summary>
        /// 创建WebAPI接口
        /// </summary>
        /// <param name="sysTableInfo"></param>
        /// <exception cref="Exception"></exception>
        private void GenerateWebApi(BuilderTable sysTableInfo, List <BuilderTableColumn> sysColumns)
        {
            string domainContent;
            string apiPath = ProjectPath.GetProjectDirectoryInfo()
                             .GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".webapi"))?.FullName;

            if (string.IsNullOrEmpty(apiPath))
            {
                throw new Exception("未找到webapi类库,请确认是存在weiapi类库命名以.webapi结尾");
            }

            var controllerName = sysTableInfo.ClassName + "sController";

            CheckExistsModule(controllerName); //单元测试下无效,因为没有执行webapi项目
            var controllerPath = apiPath + $"\\Controllers\\";

            domainContent = FileHelper.ReadFile(@"Template\\BuildControllerApi.html")
                            .Replace("{TableName}", sysTableInfo.TableName)
                            .Replace("{ModuleCode}", sysTableInfo.ModuleCode)
                            .Replace("{ModuleName}", sysTableInfo.ModuleName)
                            .Replace("{ClassName}", sysTableInfo.ClassName)
                            .Replace("{StartName}", StratName);

            var primarykey = sysColumns.FirstOrDefault(u => u.IsKey);

            if (primarykey == null)
            {
                throw new Exception($"未能找到表{sysTableInfo.TableName}的主键字段");
            }
            if (primarykey.ColumnType == "decimal" || primarykey.ColumnType == "numeric") //是否为数字
            {
                if (primarykey.IsIncrement)                                               //是否自增
                {
                    domainContent = domainContent.Replace("{KeyTypeName}", "int");
                }
                else     //普通的雪花算法生成id
                {
                    domainContent = domainContent.Replace("{KeyTypeName}", "decimal");
                }
            }
            else
            {
                domainContent = domainContent.Replace("{KeyTypeName}", "string");
            }
            FileHelper.WriteFile(controllerPath, controllerName + ".cs", domainContent);
        }
Esempio n. 2
0
        /// <summary>
        /// 创建应用层
        /// </summary>
        /// <param name="sysTableInfo"></param>
        /// <exception cref="Exception"></exception>
        private void GenerateApp(BuilderTable sysTableInfo, List <BuilderTableColumn> sysColumns)
        {
            string appRootPath = ProjectPath.GetProjectDirectoryInfo()
                                 .GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".app"))?.FullName;

            if (string.IsNullOrEmpty(appRootPath))
            {
                throw new Exception("未找到openauth.app类库,请确认是否存在");
            }

            CheckExistsModule(sysTableInfo.ModuleCode);

            string domainContent = FileHelper.ReadFile(@"Template\\BuildApp.html");

            domainContent = domainContent
                            .Replace("{TableName}", sysTableInfo.TableName)
                            .Replace("{ModuleCode}", sysTableInfo.ModuleCode)
                            .Replace("{ModuleName}", sysTableInfo.ModuleName)
                            .Replace("{ClassName}", sysTableInfo.ClassName)
                            .Replace("{StartName}", StratName);


            var primarykey = sysColumns.FirstOrDefault(u => u.IsKey);

            if (primarykey == null)
            {
                throw new Exception($"未能找到表{sysTableInfo.TableName}的主键字段");
            }
            if (primarykey.ColumnType == "decimal" || primarykey.ColumnType == "numeric") //是否为数字
            {
                if (primarykey.IsIncrement)                                               //是否自增
                {
                    domainContent = domainContent.Replace("{BaseAppName}", "BaseIntAutoGenApp");
                }
                else     //普通的雪花算法生成id
                {
                    domainContent = domainContent.Replace("{BaseAppName}", "BaseLongApp");
                }
            }
            else
            {
                domainContent = domainContent.Replace("{BaseAppName}", "BaseStringApp");
            }
            FileHelper.WriteFile($"{appRootPath}\\{sysTableInfo.ModuleCode}", $"{sysTableInfo.ModuleCode}.cs", domainContent);
        }
        /// <summary>
        /// 创建应用层
        /// </summary>
        /// <param name="sysTableInfo"></param>
        /// <exception cref="Exception"></exception>
        private void GenerateApp(BuilderTable sysTableInfo)
        {
            string appRootPath = ProjectPath.GetProjectDirectoryInfo()
                                 .GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".app"))?.FullName;

            if (string.IsNullOrEmpty(appRootPath))
            {
                throw new Exception("未找到SysCommon.app类库,请确认是否存在");
            }

            CheckExistsModule(sysTableInfo.ModuleCode);

            string domainContent = FileHelper.ReadFile(@"Template\\BuildApp.html")
                                   .Replace("{TableName}", sysTableInfo.TableName)
                                   .Replace("{ModuleCode}", sysTableInfo.ModuleCode)
                                   .Replace("{ModuleName}", sysTableInfo.ModuleName)
                                   .Replace("{ClassName}", sysTableInfo.ClassName)
                                   .Replace("{StartName}", StratName);

            FileHelper.WriteFile(appRootPath, sysTableInfo.ModuleCode + ".cs", domainContent);
        }
        /// <summary>
        /// 创建WebAPI接口
        /// </summary>
        /// <param name="sysTableInfo"></param>
        /// <exception cref="Exception"></exception>
        private void GenerateWebApi(BuilderTable sysTableInfo)
        {
            string domainContent;
            string apiPath = ProjectPath.GetProjectDirectoryInfo()
                             .GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".webapi"))?.FullName;

            if (string.IsNullOrEmpty(apiPath))
            {
                throw new Exception("未找到webapi类库,请确认是存在weiapi类库命名以.webapi结尾");
            }

            var controllerName = sysTableInfo.ClassName + "sController";

            CheckExistsModule(controllerName); //单元测试下无效,因为没有执行webapi项目
            var controllerPath = apiPath + $"\\Controllers\\";

            domainContent = FileHelper.ReadFile(@"Template\\BuildControllerApi.html")
                            .Replace("{TableName}", sysTableInfo.TableName)
                            .Replace("{ModuleCode}", sysTableInfo.ModuleCode)
                            .Replace("{ModuleName}", sysTableInfo.ModuleName)
                            .Replace("{ClassName}", sysTableInfo.ClassName)
                            .Replace("{StartName}", StratName);
            FileHelper.WriteFile(controllerPath, controllerName + ".cs", domainContent);
        }
Esempio n. 5
0
        /// <summary>
        /// 创建实体
        /// </summary>
        /// <param name="tableColumns"></param>
        /// <param name="sysTableInfo"></param>
        private void CreateEntityModel(List <BuilderTableColumn> sysColumns, BuilderTable tableInfo)
        {
            string template      = "BuildEntity.html";
            string domainContent = FileHelper.ReadFile("Template\\" + template);

            StringBuilder attributeBuilder    = new StringBuilder();
            StringBuilder constructionBuilder = new StringBuilder();   //生成构造函数初始化值

            sysColumns = sysColumns.OrderByDescending(c => c.Sort).ToList();
            foreach (BuilderTableColumn column in sysColumns)
            {
                if (column.IsKey)
                {
                    continue;
                }

                attributeBuilder.Append("/// <summary>");
                attributeBuilder.Append("\r\n");
                attributeBuilder.Append("       ///" + column.Comment + "");
                attributeBuilder.Append("\r\n");
                attributeBuilder.Append("       /// </summary>");
                attributeBuilder.Append("\r\n");

                attributeBuilder.Append("       [Description(\"" + column.Comment + "\")]");
                attributeBuilder.Append("\r\n");

                string entityType = column.EntityType;
                if (!column.IsRequired && column.EntityType != "string")
                {
                    entityType = entityType + "?";
                }

                attributeBuilder.Append("       public " + entityType + " " + column.EntityName + " { get; set; }");
                attributeBuilder.Append("\r\n\r\n       ");

                constructionBuilder.Append("       this." + column.EntityName
                                           + "=" + (GetDefault(column.EntityType) ?? "\"\"")
                                           + ";\r\n");
            }

            //获取的是本地开发代码所在目录,不是发布后的目录
            string mapPath =
                ProjectPath.GetProjectDirectoryInfo()?.FullName; //new DirectoryInfo(("~/").MapPath()).Parent.FullName;

            if (string.IsNullOrEmpty(mapPath))
            {
                throw new Exception("未找到生成的目录!");
            }

            var primarykey = sysColumns.FirstOrDefault(u => u.IsKey);

            if (primarykey == null)
            {
                throw new Exception($"未能找到表{tableInfo.TableName}的主键字段");
            }
            if (primarykey.ColumnType == "decimal" || primarykey.ColumnType == "numeric") //是否为数字
            {
                if (primarykey.IsIncrement)                                               //是否自增
                {
                    domainContent = domainContent.Replace("{BaseEntityName}", "IntAutoGenEntity");
                }
                else //普通的雪花算法生成id
                {
                    domainContent = domainContent.Replace("{BaseEntityName}", "LongEntity");
                }
            }
            else
            {
                domainContent = domainContent.Replace("{BaseEntityName}", "StringEntity");
            }

            domainContent = domainContent.Replace("{ClassName}", tableInfo.ClassName)
                            .Replace("{AttributeList}", attributeBuilder.ToString())
                            .Replace("{Construction}", constructionBuilder.ToString());


            var tableAttr = new StringBuilder();

            tableAttr.Append("/// <summary>");
            tableAttr.Append("\r\n");
            tableAttr.Append("       ///" + tableInfo.Comment + "");
            tableAttr.Append("\r\n");
            tableAttr.Append("       /// </summary>");
            tableAttr.Append("\r\n");
            tableAttr.Append("       [Table(\"" + tableInfo.TableName + "\")]");
            domainContent = domainContent.Replace("{AttributeManager}", tableAttr.ToString());

            FileHelper.WriteFile(
                mapPath +
                $"\\OpenAuth.Repository\\Domain\\", tableInfo.ClassName + ".cs",
                domainContent);

            string openAuthDBContextPath = mapPath + "\\OpenAuth.Repository\\OpenAuthDBContext.cs";

            FileHelper.RegxAddContentByParenthesis(openAuthDBContextPath, "public virtual DbSet<" + tableInfo.ClassName + "> " + tableInfo.TableName + "s { get; set; }");
        }
Esempio n. 6
0
        /// <summary>
        /// 生成APP层的请求参数
        /// </summary>
        /// <param name="sysTableInfo"></param>
        /// <param name="tableColumns"></param>
        private void GenerateAppReq(BuilderTable sysTableInfo, List <BuilderTableColumn> tableColumns)
        {
            string appRootPath = ProjectPath.GetProjectDirectoryInfo()
                                 .GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".app"))?.FullName;

            if (string.IsNullOrEmpty(appRootPath))
            {
                throw new Exception("未找到openauth.app类库,请确认是否存在");
            }
            string domainContent;

            domainContent = FileHelper.ReadFile(@"Template\\BuildQueryReq.html")
                            .Replace("{TableName}", sysTableInfo.TableName)
                            .Replace("{ModuleCode}", sysTableInfo.ModuleCode)
                            .Replace("{ModuleName}", sysTableInfo.ModuleName)
                            .Replace("{ClassName}", sysTableInfo.ClassName)
                            .Replace("{StartName}", StratName);
            FileHelper.WriteFile(Path.Combine(appRootPath, $"{sysTableInfo.ModuleCode}\\Request"), $"Query{sysTableInfo.ClassName}ListReq.cs",
                                 domainContent);


            domainContent = FileHelper.ReadFile(@"Template\\BuildUpdateReq.html");

            StringBuilder attributeBuilder = new StringBuilder();
            var           sysColumn        = tableColumns.OrderByDescending(c => c.Sort).ToList();

            foreach (BuilderTableColumn column in sysColumn)
            {
                attributeBuilder.Append("/// <summary>");
                attributeBuilder.Append("\r\n");
                attributeBuilder.Append("       ///" + column.Comment + "");
                attributeBuilder.Append("\r\n");
                attributeBuilder.Append("       /// </summary>");
                attributeBuilder.Append("\r\n");

                string entityType = column.EntityType;
                if (!column.IsRequired && column.EntityType != "string")
                {
                    entityType = entityType + "?";
                }

                attributeBuilder.Append("       public " + entityType + " " + column.EntityName + " { get; set; }");
                attributeBuilder.Append("\r\n\r\n       ");
            }

            domainContent = domainContent.Replace("{ClassName}", sysTableInfo.ClassName)
                            .Replace("{AttributeList}", attributeBuilder.ToString());

            var tableAttr = new StringBuilder();

            tableAttr.Append("/// <summary>");
            tableAttr.Append("\r\n");
            tableAttr.Append("       ///" + sysTableInfo.Comment + "");
            tableAttr.Append("\r\n");
            tableAttr.Append("       /// </summary>");
            tableAttr.Append("\r\n");
            domainContent = domainContent.Replace("{AttributeManager}", tableAttr.ToString());

            FileHelper.WriteFile(Path.Combine(appRootPath, $"{sysTableInfo.ModuleCode}\\Request"), $"AddOrUpdate{sysTableInfo.ClassName}Req.cs",
                                 domainContent);
        }
        /// <summary>
        /// 创建实体
        /// </summary>
        /// <param name="tableColumns"></param>
        /// <param name="sysTableInfo"></param>
        private void CreateEntityModel(List <BuilderTableColumn> sysColumn, BuilderTable tableInfo)
        {
            string template      = "BuildEntity.html";
            string domainContent = FileHelper.ReadFile("Template\\" + template);

            StringBuilder attributeBuilder    = new StringBuilder();
            StringBuilder constructionBuilder = new StringBuilder();   //生成构造函数初始化值

            sysColumn = sysColumn.OrderByDescending(c => c.Sort).ToList();
            foreach (BuilderTableColumn column in sysColumn)
            {
                if (column.IsKey)
                {
                    continue;
                }

                attributeBuilder.Append("/// <summary>");
                attributeBuilder.Append("\r\n");
                attributeBuilder.Append("       ///" + column.Comment + "");
                attributeBuilder.Append("\r\n");
                attributeBuilder.Append("       /// </summary>");
                attributeBuilder.Append("\r\n");

                attributeBuilder.Append("       [Description(\"" + column.Comment + "\")]");
                attributeBuilder.Append("\r\n");

                string entityType = column.EntityType;
                if (!column.IsRequired && column.EntityType != "string")
                {
                    entityType = entityType + "?";
                }

                attributeBuilder.Append("       public " + entityType + " " + column.EntityName + " { get; set; }");
                attributeBuilder.Append("\r\n\r\n       ");

                constructionBuilder.Append("       this." + column.EntityName
                                           + "=" + (GetDefault(column.EntityType) ?? "\"\"")
                                           + ";\r\n");
            }

            //获取的是本地开发代码所在目录,不是发布后的目录
            string mapPath =
                ProjectPath.GetProjectDirectoryInfo()?.FullName; //new DirectoryInfo(("~/").MapPath()).Parent.FullName;

            if (string.IsNullOrEmpty(mapPath))
            {
                throw new Exception("未找到生成的目录!");
            }

            domainContent = domainContent.Replace("{ClassName}", tableInfo.ClassName)
                            .Replace("{AttributeList}", attributeBuilder.ToString())
                            .Replace("{Construction}", constructionBuilder.ToString());


            var tableAttr = new StringBuilder();

            tableAttr.Append("/// <summary>");
            tableAttr.Append("\r\n");
            tableAttr.Append("       ///" + tableInfo.Comment + "");
            tableAttr.Append("\r\n");
            tableAttr.Append("       /// </summary>");
            tableAttr.Append("\r\n");
            tableAttr.Append("       [Table(\"" + tableInfo.TableName + "\")]");
            domainContent = domainContent.Replace("{AttributeManager}", tableAttr.ToString());

            FileHelper.WriteFile(
                mapPath +
                $"\\SysCommon.Repository\\Domain\\", tableInfo.ClassName + ".cs",
                domainContent);
        }