diff --git a/OpenAuth.App/Form/DragForm.cs b/OpenAuth.App/Form/DragForm.cs index 88069b1c..9bed4bc4 100644 --- a/OpenAuth.App/Form/DragForm.cs +++ b/OpenAuth.App/Form/DragForm.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Text; using Infrastructure; @@ -6,7 +6,6 @@ using Newtonsoft.Json.Linq; using OpenAuth.Repository; using OpenAuth.Repository.Interface; using OpenAuth.Repository.QueryObj; - namespace OpenAuth.App { /// @@ -15,12 +14,10 @@ namespace OpenAuth.App public class DragForm: IForm { private IUnitWork _unitWork; - public DragForm(IUnitWork unitWork) { _unitWork = unitWork; } - /** * 功能: 创建表单数据表格(基于sql server) */ @@ -30,77 +27,55 @@ namespace OpenAuth.App { // 获取字段并处理 var jsonArray = JsonHelper.Instance.Deserialize(form.ContentData)["list"]; - // 数据库名称 string tableName = form.DbName; - var exist = _unitWork.FromSql($"select '1' as value from sysobjects where name = '{tableName}' and type = 'U'").SingleOrDefault(); if (exist != null) return string.Empty; - // 创建数据表 StringBuilder sql = new StringBuilder($"CREATE TABLE {tableName} ( [Id] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,"); //主键 - string sqlDefault = ""; - foreach (var json in jsonArray) { string type = json["type"].ToString(); string name = json["model"].ToString(); - sql.Append("[" + name + "] " + field_type_sql(type)); //字段拼接 - - if ("checkboxs" == type) sqlDefault += field_type_sql_default(tableName, name, "0"); else sqlDefault += field_type_sql_default(tableName, name, "''"); } - sql.Append(");"); - //设置主键 sql.Append("ALTER TABLE " + tableName + " ADD CONSTRAINT [PK_" + form.DbName + "] PRIMARY KEY NONCLUSTERED ([Id])"); sql.Append( "WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) "); sql.Append("ON [PRIMARY];"); - //主键默认值 sql.Append("ALTER TABLE " + tableName + " ADD DEFAULT (newid()) FOR [Id];"); - return sql + sqlDefault; } else { // 获取字段并处理 var jsonArray = JsonHelper.Instance.Deserialize(form.ContentData)["list"]; - // 数据库名称 string tableName = form.DbName; - var exist = _unitWork.FromSql($"select table_name as value from information_schema.tables where table_name ='{tableName}'").SingleOrDefault(); if (exist != null) return string.Empty; - // 创建数据表 - StringBuilder sql = new StringBuilder("create table if not exists `" - + tableName - + "` ( Id varchar(50) not null primary key,"); //主键 - + StringBuilder sql = new StringBuilder($"create table if not exists `{tableName}` ( Id varchar(50) not null primary key,"); //主键 foreach (var json in jsonArray) { string type = json["type"].ToString(); string name = json["model"].ToString(); - sql.Append("`" + name + "` " + field_type_mysql(type)); //字段拼接 - } - sql.Append(");"); - - return sql.ToString(); + var result = sql.ToString().TrimEnd(',') + ");"; + return result; } } - private string field_type_sql(string leipiplugins) { if ("textarea" == leipiplugins || "listctrl" == leipiplugins) @@ -116,7 +91,6 @@ namespace OpenAuth.App return " varchar(255) NULL ,"; } } - private string field_type_mysql(string leipiplugins) { if ("textarea" == leipiplugins || "listctrl" == leipiplugins) @@ -132,7 +106,6 @@ namespace OpenAuth.App return " varchar(255) NULL ,"; } } - private string field_type_sql_default(string tablename, string field, string defaultValue) { return "ALTER TABLE " + tablename + " ADD DEFAULT (" + defaultValue + ") FOR [" + field + "];"; diff --git a/OpenAuth.App/Form/LeipiForm.cs b/OpenAuth.App/Form/LeipiForm.cs index c7e4979f..ec340d41 100644 --- a/OpenAuth.App/Form/LeipiForm.cs +++ b/OpenAuth.App/Form/LeipiForm.cs @@ -5,16 +5,14 @@ using Newtonsoft.Json.Linq; using OpenAuth.Repository; using OpenAuth.Repository.Interface; using OpenAuth.Repository.QueryObj; - namespace OpenAuth.App { public class LeipiForm : IForm { - private IUnitWork _uniwWork; - - public LeipiForm(IUnitWork uniwWork) + private IUnitWork _unitWork; + public LeipiForm(IUnitWork unitWork) { - _uniwWork = uniwWork; + _unitWork = unitWork; } /** * 功能: 创建表单数据表格(基于sql server) @@ -25,89 +23,67 @@ namespace OpenAuth.App { // 获取字段并处理 var jsonArray = JArray.Parse(form.ContentData); - // 数据库名称 string tableName = form.DbName; - var exist = _uniwWork.FromSql($"select '1' as value from sysobjects where name = '{tableName}' and type = 'U'").SingleOrDefault(); + var exist = _unitWork.FromSql($"select '1' as value from sysobjects where name = '{tableName}' and type = 'U'").SingleOrDefault(); if (exist != null) return string.Empty; - // 创建数据表 StringBuilder sql = new StringBuilder($"CREATE TABLE {tableName} ( [Id] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,"); //主键 string sqlDefault = ""; - foreach (var json in jsonArray) { string name; string type = json["leipiplugins"].ToString(); - if ("checkboxs" == type) name = json["parse_name"].ToString(); else name = json["name"].ToString(); - sql.Append("[" + name + "] " + field_type_sql(type)); //字段拼接 - - if ("checkboxs" == type) sqlDefault += field_type_sql_default(tableName, name, "0"); else sqlDefault += field_type_sql_default(tableName, name, "''"); } - sql.Append(");"); - //设置主键 sql.Append("ALTER TABLE " + tableName + " ADD CONSTRAINT [PK_" + form.DbName + "] PRIMARY KEY NONCLUSTERED ([Id])"); sql.Append( "WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) "); sql.Append("ON [PRIMARY];"); - //主键默认值 sql.Append("ALTER TABLE " + tableName + " ADD DEFAULT (newid()) FOR [Id];"); - return sql + sqlDefault; } else { // 获取字段并处理 var jsonArray = JArray.Parse(form.ContentData); - // 数据库名称 string tableName = form.DbName; - var exist = _uniwWork.FromSql($"select table_name as value from information_schema.tables where table_name ='{tableName}'").SingleOrDefault(); + var exist = _unitWork.FromSql($"select table_name as value from information_schema.tables where table_name ='{tableName}'").SingleOrDefault(); if (exist != null) return string.Empty; - // 创建数据表 - StringBuilder sql = new StringBuilder("create table if not exists `" - + tableName - + "` ( Id varchar(50) not null primary key,"); //主键 - + StringBuilder sql = new StringBuilder($"create table if not exists `{tableName}` ( Id varchar(50) not null primary key,"); //主键 foreach (var json in jsonArray) { string name; string type = json["leipiplugins"].ToString(); - if ("checkboxs" == type) name = json["parse_name"].ToString(); else name = json["name"].ToString(); - sql.Append("`" + name + "` " + field_type_mysql(type)); //字段拼接 - // // if ("checkboxs" == type) // sqlDefault += field_type_sql_default(tableName, name, "0"); // else // sqlDefault += field_type_sql_default(tableName, name, "''"); } - - sql.Append(");"); - - return sql.ToString(); + var result = sql.ToString().TrimEnd(',') + ");"; + return result; } } - private string field_type_sql(string leipiplugins) { if ("textarea" == leipiplugins || "listctrl" == leipiplugins) @@ -123,7 +99,6 @@ namespace OpenAuth.App return " varchar(255) NULL ,"; } } - private string field_type_mysql(string leipiplugins) { if ("textarea" == leipiplugins || "listctrl" == leipiplugins) @@ -139,7 +114,6 @@ namespace OpenAuth.App return " varchar(255) NULL ,"; } } - private string field_type_sql_default(string tablename, string field, string defaultValue) { return "ALTER TABLE " + tablename + " ADD DEFAULT (" + defaultValue + ") FOR [" + field + "];"; diff --git a/OpenAuth.App/Test/TestForm.cs b/OpenAuth.App/Test/TestForm.cs index 562c77c4..10e0b178 100644 --- a/OpenAuth.App/Test/TestForm.cs +++ b/OpenAuth.App/Test/TestForm.cs @@ -56,5 +56,18 @@ namespace OpenAuth.App.Test FrmType = 2 }); } + + [Test] + public void Add() + { + var app = _autofacServiceProvider.GetService(); + app.Add(new Form() + { + ContentData = "{\"list\":[{\"type\":\"input\",\"icon\":\"icon-input\",\"name\":\"单行文本\",\"options\":{\"width\":\"100%\",\"defaultValue\":\"\",\"required\":false,\"dataType\":\"string\",\"pattern\":\"\",\"placeholder\":\"\",\"disabled\":false,\"remoteFunc\":\"func_1642578757000_60891\"},\"key\":\"1642578757000_60891\",\"model\":\"input_1642578757000_60891\",\"rules\":[{\"type\":\"string\",\"message\":\"input_1642578757000_60891格式不正确\"}]}],\"config\":{\"labelWidth\":100,\"labelPosition\":\"right\",\"size\":\"small\"}}", + DbName = "stock2", + OrgId = "08f41bf6-4388-4b1e-bd3e-2ff538b44b1b", + FrmType = 2 + }); + } } }