MakeCodeController.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using Vo;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Model;
  4. using Services;
  5. using Model.Base;
  6. using Vo.Admin;
  7. using Mapster;
  8. using Infrastructure;
  9. using Dto.Client;
  10. using Custom;
  11. using Feign;
  12. using Common;
  13. using Util;
  14. using System.Linq;
  15. namespace Controllers.Client
  16. {
  17. public class MakeCodeController : BaseController
  18. {
  19. private readonly IDatabaseInfoService _DatabaseInfoService;
  20. private readonly IDatabaseTableService _DatabaseTableService;
  21. private readonly IApiGroupService _ApiGroupService;
  22. private readonly IApiInfoService _ApiInfoService;
  23. public MakeCodeController(IDatabaseInfoService DatabaseInfoService, IDatabaseTableService DatabaseTableService, IApiGroupService ApiGroupService, IApiInfoService ApiInfoService)
  24. {
  25. _DatabaseInfoService = DatabaseInfoService;
  26. _DatabaseTableService = DatabaseTableService;
  27. _ApiGroupService = ApiGroupService;
  28. _ApiInfoService = ApiInfoService;
  29. }
  30. /// <summary>
  31. /// 生成代码
  32. /// </summary>
  33. /// <param name="param">参数</param>
  34. /// <returns>生成代码</returns>
  35. [HttpPost("/v1/omega_source/vscode/makerFile")]
  36. public IActionResult makerFile([FromBody] MakeCodeDto param)
  37. {
  38. try
  39. {
  40. TokenModel loginUser = JwtUtil.GetLoginUser(HttpContext);
  41. Utils.WriteLog(loginUser.username, "测试生成代码");
  42. Utils.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(param), "测试生成代码");
  43. ProjectService baseInfo = IProject.getProjectService(param.serverId);
  44. string versionNo = baseInfo.devLanguage + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
  45. Utils.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(baseInfo), "测试生成代码");
  46. List<int> databaseIds = baseInfo.databaseList.ToList();
  47. Utils.WriteLog("databaseIds:" + databaseIds.Count.ToString(), "测试生成代码");
  48. foreach(var databaseId in databaseIds)
  49. {
  50. var tables = _DatabaseTableService.GetList(a => a.databaseId == databaseId).OrderBy(a => a.tableName).ToList();
  51. Utils.WriteLog("tables:" + tables.Count.ToString(), "测试生成代码");
  52. foreach(var table in tables)
  53. {
  54. if(baseInfo.devLanguage == "Java")
  55. {
  56. _DatabaseTableService.makeJavaModel(baseInfo, table, loginUser, versionNo);
  57. _DatabaseTableService.makeJavaService(baseInfo, table, loginUser, versionNo);
  58. _DatabaseTableService.makeJavaServiceImpl(baseInfo, table, loginUser, versionNo);
  59. _DatabaseTableService.makeJavaMapper(baseInfo, table, loginUser, versionNo);
  60. _DatabaseTableService.makeJavaMapperXml(baseInfo, table, loginUser, versionNo);
  61. }
  62. else if(baseInfo.devLanguage == "CSharp")
  63. {
  64. _DatabaseTableService.makeCSharpModel(baseInfo, table, loginUser, versionNo);
  65. _DatabaseTableService.makeCSharpService(baseInfo, table, loginUser, versionNo);
  66. _DatabaseTableService.makeCSharpIService(baseInfo, table, loginUser, versionNo);
  67. }
  68. }
  69. }
  70. var apiGroups = _ApiGroupService.GetList(a => a.serviceId == param.serverId);
  71. Utils.WriteLog("apiGroups:" + apiGroups.Count.ToString(), "测试生成代码");
  72. foreach(var apiGroup in apiGroups)
  73. {
  74. var apiInfos = _ApiInfoService.GetList(a => a.groupId == apiGroup.id).OrderBy(a => a.linkTableName).ToList();
  75. Utils.WriteLog("apiInfos:" + apiInfos.Count.ToString(), "测试生成代码");
  76. foreach(var apiInfo in apiInfos)
  77. {
  78. if(apiInfo.apiParamCount > 1)
  79. {
  80. if(baseInfo.devLanguage == "Java")
  81. {
  82. _DatabaseTableService.makeJavaDto(baseInfo, apiInfo, loginUser, versionNo);
  83. }
  84. }
  85. if(apiInfo.apiParamCount > 0 && apiInfo.apiKind < 3)
  86. {
  87. if(baseInfo.devLanguage == "CSharp")
  88. {
  89. _DatabaseTableService.makeCSharpDto(baseInfo, apiInfo, loginUser, versionNo);
  90. }
  91. }
  92. if(apiInfo.apiResParamCount > 0)
  93. {
  94. if(baseInfo.devLanguage == "Java")
  95. {
  96. _DatabaseTableService.makeJavaVo(baseInfo, apiInfo, loginUser, versionNo);
  97. }
  98. else if(baseInfo.devLanguage == "CSharp")
  99. {
  100. _DatabaseTableService.makeCSharpVo(baseInfo, apiInfo, loginUser, versionNo);
  101. }
  102. }
  103. }
  104. List<string> controllerNameList = _ApiInfoService.GetList(a => a.groupId == apiGroup.id).Select(m => m.controllerName).Distinct().ToList();
  105. foreach(var controllerName in controllerNameList)
  106. {
  107. if(baseInfo.devLanguage == "Java")
  108. {
  109. _DatabaseTableService.makeJavaController(baseInfo, apiGroup, controllerName, loginUser, versionNo);
  110. }
  111. else if(baseInfo.devLanguage == "CSharp")
  112. {
  113. _DatabaseTableService.makeCSharpController(baseInfo, apiGroup, controllerName, loginUser, versionNo);
  114. }
  115. }
  116. }
  117. Utils.WriteLog("end\n\n\n", "测试生成代码");
  118. IMake.addVersion(baseInfo.projectId, param.serverId, (int)loginUser.userId, versionNo);
  119. }
  120. catch(Exception ex)
  121. {
  122. Utils.WriteLog(ex.ToString(), "测试生成代码异常");
  123. }
  124. return SUCCESS(IMake.versions(param.serverId));
  125. }
  126. }
  127. }