public ActionResult GeneratCode() { var inModel = new CodeMakerGeneratCodeIn(); UpdateModel(inModel); try { inModel.Lang = HttpUtility.UrlDecode(inModel.Lang); inModel.ClassName = HttpUtility.UrlDecode(inModel.ClassName); inModel.ConnectionString = HttpUtility.UrlDecode(inModel.ConnectionString); inModel.Package = HttpUtility.UrlDecode(inModel.Package); inModel.Table = HttpUtility.UrlDecode(inModel.Table); inModel.DbType = HttpUtility.UrlDecode(inModel.DbType); JlDatabaseType databaseType; switch (inModel.DbType.ToLower()) { case "mysql": databaseType = JlDatabaseType.MySql; break; case "postgresql": databaseType = JlDatabaseType.PostgreSql; break; case "sqlserver": databaseType = JlDatabaseType.SqlServer; break; default: databaseType = JlDatabaseType.MySql; break; } var databaseColumns = CommonMethod.GetDatabaseColumns(inModel.ConnectionString, inModel.Table, (JlDatabaseType)Enum.Parse(typeof(JlDatabaseType), inModel.DbType)); var outModel = new CodeMakerGeneratCodeOut { CodeMakerGeneratCodeIn = inModel, FieldDescriptions = databaseColumns, databaseType = databaseType }; #region 通过反射调用方法 var type = Type.GetType(JlConfig.GetValue <string>("ReflectClass") + "_" + inModel.Lang); //声明创建当前类实例 var model = Activator.CreateInstance(type); var method = type.GetMethod(inModel.Type); var result = method.Invoke(model, new object[] { outModel }).ToString(); #endregion return(new JlJsonResult() { Content = JlJson.ToJson(result) }); } catch (Exception ex) { return(new JlJsonResult() { Content = JlJson.ToJson(new { Message = ex.Message }) }); } }
public void DownloadAllFile() { var inModel = new CodeMakerGeneratCodeIn(); UpdateModel(inModel); inModel.Lang = HttpUtility.UrlDecode(inModel.Lang); inModel.ClassName = HttpUtility.UrlDecode(inModel.ClassName); inModel.ConnectionString = HttpUtility.UrlDecode(inModel.ConnectionString); inModel.Package = HttpUtility.UrlDecode(inModel.Package); inModel.DbType = HttpUtility.UrlDecode(inModel.DbType); inModel.Extension = HttpUtility.UrlDecode(inModel.Extension); JlDatabaseType databaseType; switch (inModel.DbType.ToLower()) { case "mysql": databaseType = JlDatabaseType.MySql; break; case "postgresql": databaseType = JlDatabaseType.PostgreSql; break; case "sqlserver": databaseType = JlDatabaseType.SqlServer; break; default: databaseType = JlDatabaseType.MySql; break; } var databaseTables = CommonMethod.GetDatabaseTables(inModel.ConnectionString, (JlDatabaseType)Enum.Parse(typeof(JlDatabaseType), inModel.DbType)); var zipDir = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + JlConfig.GetValue <string>("SaveFilePath") + "zip\\"; var zipFileName = JlGuid.NewGuid(); var pathName = zipDir + zipFileName + "\\"; if (databaseTables.Any()) { if (!Directory.Exists(zipDir)) { Directory.CreateDirectory(zipDir); } Directory.CreateDirectory(pathName); } databaseTables.ForEach(table => { var databaseColumns = CommonMethod.GetDatabaseColumns(inModel.ConnectionString, table, (JlDatabaseType)Enum.Parse(typeof(JlDatabaseType), inModel.DbType)); var outModel = new CodeMakerGeneratCodeOut { CodeMakerGeneratCodeIn = inModel, FieldDescriptions = databaseColumns, databaseType = databaseType }; #region 通过反射调用方法 var type = Type.GetType(JlConfig.GetValue <string>("ReflectClass") + "_" + inModel.Lang); //声明创建当前类实例 var model = Activator.CreateInstance(type); var method = type.GetMethod(inModel.Type); var result = method.Invoke(model, new object[] { outModel }).ToString(); #endregion //下载文件到文件夹内 var fileName = string.Empty; if (inModel.Lang.ToLower() == "dotnet") { if (inModel.Type.ToLower().StartsWith("dao")) { fileName = table + "Dao.cs"; } else { fileName = table + ".cs"; } } else { if (inModel.Type.ToLower().EndsWith("xml")) { fileName = table + "Mapper.xml"; } else if (inModel.Type.ToLower().EndsWith("mapper")) { fileName = table + "Mapper.java"; } else if (inModel.Type.ToLower().StartsWith("dao")) { fileName = table + "Dao.java"; } else { fileName = table + ".java"; } } var fullName = pathName + fileName; if (!System.IO.File.Exists(fullName)) { System.IO.File.WriteAllText(fullName, result); } }); if (databaseTables.Any()) { ZipUtil.ZipDirectory(pathName, zipDir, zipFileName); new DirectoryInfo(pathName).Delete(true); } FileStream fis = new FileStream(zipDir + zipFileName + ".zip", FileMode.Open); Response.Clear(); Response.Buffer = true; Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip"); byte[] pReadByte = new byte[0]; BinaryReader r = new BinaryReader(fis); r.BaseStream.Seek(0, SeekOrigin.Begin); //将文件指针设置到文件开 pReadByte = r.ReadBytes((int)r.BaseStream.Length); Response.BinaryWrite(pReadByte); Response.Flush(); Response.End(); }