MultiTableController.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using Lottomat.Application.Busines.AuthorizeManage;
  2. using Lottomat.Application.Code;
  3. using Lottomat.Application.Entity.AuthorizeManage;
  4. using Lottomat.CodeGenerator;
  5. using Lottomat.CodeGenerator.Model;
  6. using Lottomat.CodeGenerator.Template;
  7. using Lottomat.Util;
  8. using System.Web.Mvc;
  9. using Lottomat.Util.Extension;
  10. using Lottomat.Utils;
  11. namespace Lottomat.Application.Admin.Areas.GeneratorManage.Controllers
  12. {
  13. /// <summary>
  14. /// 版 本 1.0.0
  15. /// Copyright (c) 2016-2017
  16. /// 创建人:赵轶
  17. /// 日 期:2016.2.13 14:29
  18. /// 描 述:生成器多表
  19. /// </summary>
  20. public class MultiTableController : MvcControllerBase
  21. {
  22. private ModuleBLL moduleBLL = new ModuleBLL();
  23. #region 视图功能
  24. /// <summary>
  25. /// 代码生成器
  26. /// </summary>
  27. /// <returns></returns>
  28. [HttpGet]
  29. public ActionResult CodeBuilder()
  30. {
  31. string OutputDirectory = Server.MapPath("~/Web.config"); ;
  32. for (int i = 0; i < 2; i++)
  33. OutputDirectory = OutputDirectory.Substring(0, OutputDirectory.LastIndexOf('\\'));
  34. ViewBag.OutputDirectory = OutputDirectory;
  35. ViewBag.UserName = OperatorProvider.Provider.Current().UserName;
  36. return View();
  37. }
  38. /// <summary>
  39. /// 编辑控件
  40. /// </summary>
  41. /// <returns></returns>
  42. [HttpGet]
  43. public ActionResult EditControl()
  44. {
  45. return View();
  46. }
  47. #endregion
  48. #region 提交数据
  49. /// <summary>
  50. /// 查看代码
  51. /// </summary>
  52. /// <param name="baseInfoJson">基本信息配置</param>
  53. /// <param name="gridPrimaryFieldJson"></param>
  54. /// <param name="gridDetailsFieldJson"></param>
  55. /// <param name="formPrimaryFieldJson"></param>
  56. /// <param name="formDetailsFieldJson"></param>
  57. /// <returns></returns>
  58. [HttpPost]
  59. [AjaxOnly]
  60. public ActionResult LookCode(string baseInfoJson, string gridPrimaryFieldJson, string gridDetailsFieldJson, string formPrimaryFieldJson, string formDetailsFieldJson)
  61. {
  62. MultiTableConfigModel multiTableConfigModel = baseInfoJson.ToObject<MultiTableConfigModel>();
  63. var gridPrimary = gridPrimaryFieldJson.ToList<GridColumnModel>();
  64. var gridDetails = gridDetailsFieldJson.ToList<GridColumnModel>();
  65. var formPrimary = formPrimaryFieldJson.ToList<GridColumnModel>();
  66. var formDetails = formDetailsFieldJson.ToList<GridColumnModel>();
  67. MultiTable multiTable = new MultiTable();
  68. string entitybuilder = multiTable.EntityBuilder(multiTableConfigModel, gridPrimary, false);//主表实体
  69. string childEntitybuilder = multiTable.EntityBuilder(multiTableConfigModel, gridDetails, true);//子表实体
  70. string entitymapbuilder = multiTable.EntityMapBuilder(multiTableConfigModel, false);//实体映射类
  71. string childEntitymapbuilder = multiTable.EntityMapBuilder(multiTableConfigModel, true);
  72. //服务类
  73. string servicebuilder = multiTable.ServiceBuilder(multiTableConfigModel);
  74. //服务接口类
  75. string iservicebuilder = multiTable.IServiceBuilder(multiTableConfigModel);
  76. //业务类
  77. string businesbuilder = multiTable.BusinesBuilder(multiTableConfigModel);
  78. //控制器
  79. string controllerbuilder = multiTable.ControllerBuilder(multiTableConfigModel);
  80. //主页面
  81. string indexbuilder = multiTable.IndexBuilder(multiTableConfigModel, gridPrimary, gridDetails);
  82. //表单页面
  83. string formbuilder = multiTable.FormBuilder(multiTableConfigModel, formPrimary, formDetails);
  84. var jsonData = new
  85. {
  86. entityCode = entitybuilder,
  87. entityChildCode = childEntitybuilder,
  88. entitymapCode = entitymapbuilder,
  89. entitymapChildCode = childEntitymapbuilder,
  90. serviceCode = servicebuilder,
  91. iserviceCode = iservicebuilder,
  92. businesCode = businesbuilder,
  93. controllerCode = controllerbuilder,
  94. indexCode = indexbuilder,
  95. formCode = formbuilder
  96. };
  97. return ToJsonResult(jsonData);
  98. }
  99. /// <summary>
  100. /// 创建代码(自动写入VS里面目录)
  101. /// </summary>
  102. /// <param name="baseInfoJson">基本信息配置Json</param>
  103. /// <param name="strCode">生成代码内容</param>
  104. /// <returns></returns>
  105. [HttpPost]
  106. [AjaxOnly]
  107. public ActionResult CreateCode(string baseInfoJson, string strCode)
  108. {
  109. MultiTableConfigModel baseConfigModel = baseInfoJson.ToObject<MultiTableConfigModel>();
  110. CreateCodeFile.CreateExecution(baseConfigModel, Server.UrlDecode(strCode));
  111. return Success("恭喜您,创建成功!");
  112. }
  113. /// <summary>
  114. /// 发布功能(自动创建导航菜单)
  115. /// </summary>
  116. /// <param name="baseInfoJson">基本信息配置Json</param>
  117. /// <param name="moduleEntity">功能实体</param>
  118. /// <param name="moduleButtonListJson">按钮实体列表</param>
  119. /// <param name="moduleColumnListJson">视图实体列表</param>
  120. /// <returns></returns>
  121. [HttpPost]
  122. [AjaxOnly]
  123. public ActionResult PublishModule(string baseInfoJson, ModuleEntity moduleEntity, string moduleButtonListJson, string moduleColumnListJson)
  124. {
  125. MultiTableConfigModel baseConfigModel = baseInfoJson.ToObject<MultiTableConfigModel>();
  126. var urlAddress = "/" + baseConfigModel.OutputAreas + "/" + StringHelper.DelLastLength(baseConfigModel.ControllerName, 10) + "/" + baseConfigModel.IndexPageName;
  127. moduleEntity.SortCode = moduleBLL.GetSortCode();
  128. moduleEntity.IsMenu = 1;
  129. moduleEntity.EnabledMark = 1;
  130. moduleEntity.Target = "iframe";
  131. moduleEntity.UrlAddress = urlAddress;
  132. moduleBLL.SaveForm("", moduleEntity, moduleButtonListJson, moduleColumnListJson);
  133. return Success("发布成功!");
  134. }
  135. #endregion
  136. #region 处理数据
  137. #endregion
  138. }
  139. }