SingleTableController.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using Lottomat.Application.Busines.AuthorizeManage;
  2. using Lottomat.Application.Busines.SystemManage;
  3. using Lottomat.Application.Code;
  4. using Lottomat.Application.Entity.AuthorizeManage;
  5. using Lottomat.Application.Entity.SystemManage;
  6. using Lottomat.CodeGenerator;
  7. using Lottomat.CodeGenerator.Model;
  8. using Lottomat.CodeGenerator.Template;
  9. using Lottomat.Util;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Web;
  16. using System.Web.Mvc;
  17. using Lottomat.Util.Extension;
  18. using Lottomat.Utils;
  19. namespace Lottomat.Application.Admin.Areas.GeneratorManage.Controllers
  20. {
  21. /// <summary>
  22. /// 版 本 1.0
  23. /// Copyright (c) 2016-2017
  24. /// 创建人:赵轶
  25. /// 日 期:2016.2.2 10:29
  26. /// 描 述:生成器单表
  27. /// </summary>
  28. public class SingleTableController : MvcControllerBase
  29. {
  30. private ModuleBLL moduleBLL = new ModuleBLL();
  31. #region 视图功能
  32. /// <summary>
  33. /// 代码生成器
  34. /// </summary>
  35. /// <returns></returns>
  36. [HttpGet]
  37. public ActionResult CodeBuilder()
  38. {
  39. string OutputDirectory = Server.MapPath("~/Web.config"); ;
  40. for (int i = 0; i < 2; i++)
  41. OutputDirectory = OutputDirectory.Substring(0, OutputDirectory.LastIndexOf('\\'));
  42. ViewBag.OutputDirectory = OutputDirectory;
  43. ViewBag.UserName = OperatorProvider.Provider.Current().UserName;
  44. return View();
  45. }
  46. /// <summary>
  47. /// 编辑表格
  48. /// </summary>
  49. /// <returns></returns>
  50. [HttpGet]
  51. public ActionResult EditGrid()
  52. {
  53. return View();
  54. }
  55. /// <summary>
  56. /// 编辑控件
  57. /// </summary>
  58. /// <returns></returns>
  59. [HttpGet]
  60. public ActionResult EditControl()
  61. {
  62. return View();
  63. }
  64. #endregion
  65. #region 提交数据
  66. /// <summary>
  67. /// 查看代码
  68. /// </summary>
  69. /// <param name="baseInfoJson">基本信息配置Json</param>
  70. /// <param name="gridInfoJson">表格信息Json</param>
  71. /// <param name="gridColumnJson">表格字段信息Json</param>
  72. /// <param name="formInfoJson">表单信息Json</param>
  73. /// <param name="formFieldJson">表单字段信息Json</param>
  74. /// <returns></returns>
  75. [HttpPost]
  76. [AjaxOnly]
  77. public ActionResult LookCode(string baseInfoJson, string gridInfoJson, string gridColumnJson, string formInfoJson, string formFieldJson)
  78. {
  79. SingleTable default_Template = new SingleTable();
  80. BaseConfigModel baseConfigModel = baseInfoJson.ToObject<BaseConfigModel>();
  81. baseConfigModel.gridModel = gridInfoJson.ToObject<GridModel>();
  82. baseConfigModel.gridColumnModel = gridColumnJson.ToList<GridColumnModel>();
  83. baseConfigModel.formModel = formInfoJson.ToObject<FormModel>();
  84. baseConfigModel.formFieldModel = formFieldJson.ToList<FormFieldModel>();
  85. var tableFiled = new DataBaseTableBLL().GetTableFiledList(baseConfigModel.DataBaseLinkId, baseConfigModel.DataBaseTableName);
  86. string entitybuilder = default_Template.EntityBuilder(baseConfigModel, tableFiled.ToList().ListToDataTable<DataBaseTableFieldEntity>());
  87. string entitymapbuilder = default_Template.EntityMapBuilder(baseConfigModel);
  88. string servicebuilder = default_Template.ServiceBuilder(baseConfigModel);
  89. string iservicebuilder = default_Template.IServiceBuilder(baseConfigModel);
  90. string businesbuilder = default_Template.BusinesBuilder(baseConfigModel);
  91. string controllerbuilder = default_Template.ControllerBuilder(baseConfigModel);
  92. string indexbuilder = default_Template.IndexBuilder(baseConfigModel);
  93. string formbuilder = default_Template.FormBuilder(baseConfigModel);
  94. var jsonData = new
  95. {
  96. entityCode = entitybuilder,
  97. entitymapCode = entitymapbuilder,
  98. serviceCode = servicebuilder,
  99. iserviceCode = iservicebuilder,
  100. businesCode = businesbuilder,
  101. controllerCode = controllerbuilder,
  102. indexCode = indexbuilder,
  103. formCode = formbuilder
  104. };
  105. return ToJsonResult(jsonData);
  106. }
  107. /// <summary>
  108. /// 创建代码(自动写入VS里面目录)
  109. /// </summary>
  110. /// <param name="baseInfoJson">基本信息配置Json</param>
  111. /// <param name="strCode">生成代码内容</param>
  112. /// <returns></returns>
  113. [HttpPost]
  114. [AjaxOnly]
  115. public ActionResult CreateCode(string baseInfoJson, string strCode)
  116. {
  117. BaseConfigModel baseConfigModel = baseInfoJson.ToObject<BaseConfigModel>();
  118. CreateCodeFile.CreateExecution(baseConfigModel, Server.UrlDecode(strCode));
  119. return Success("恭喜您,创建成功!");
  120. }
  121. /// <summary>
  122. /// 发布功能(自动创建导航菜单)
  123. /// </summary>
  124. /// <param name="baseInfoJson">基本信息配置Json</param>
  125. /// <param name="moduleEntity">功能实体</param>
  126. /// <param name="moduleButtonList">按钮实体列表</param>
  127. /// <param name="moduleColumnList">视图实体列表</param>
  128. /// <returns></returns>
  129. [HttpPost]
  130. [AjaxOnly]
  131. public ActionResult PublishModule(string baseInfoJson, ModuleEntity moduleEntity, string moduleButtonListJson, string moduleColumnListJson)
  132. {
  133. BaseConfigModel baseConfigModel = baseInfoJson.ToObject<BaseConfigModel>();
  134. var urlAddress = "/" + baseConfigModel.OutputAreas + "/" + StringHelper.DelLastLength(baseConfigModel.ControllerName, 10) + "/" + baseConfigModel.IndexPageName;
  135. moduleEntity.SortCode = moduleBLL.GetSortCode();
  136. moduleEntity.IsMenu = 1;
  137. moduleEntity.EnabledMark = 1;
  138. moduleEntity.Target = "iframe";
  139. moduleEntity.UrlAddress = urlAddress;
  140. moduleBLL.SaveForm("", moduleEntity, moduleButtonListJson, moduleColumnListJson);
  141. return Success("发布成功!");
  142. }
  143. #endregion
  144. #region 处理数据
  145. /// <summary>
  146. /// 加载模板数据
  147. /// </summary>
  148. /// <param name="templateId">模板Id</param>
  149. /// <returns></returns>
  150. [HttpGet]
  151. [AjaxOnly]
  152. public ActionResult GetTemplateData(string templateId)
  153. {
  154. string filepath = Server.MapPath("~/Areas/SystemManage/Views/CodeGenerator/template/" + templateId + ".txt");
  155. FileStream fs = new System.IO.FileStream(filepath, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite);
  156. StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312"));
  157. return Content(sr.ReadToEnd().ToString());
  158. }
  159. #endregion
  160. }
  161. }