MakeHelper.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using System.Collections;
  2. using System.Text.RegularExpressions;
  3. using Common;
  4. using Custom;
  5. using Feign;
  6. using Infrastructure;
  7. using LitJson;
  8. using Microsoft.CodeAnalysis.CSharp.Scripting;
  9. using Model;
  10. using Model.Base;
  11. using Services;
  12. namespace Tasks
  13. {
  14. public class MakeHelper
  15. {
  16. public readonly static MakeHelper Instance = new MakeHelper();
  17. private MakeHelper()
  18. { }
  19. public void Start(string QueueName)
  20. {
  21. RabbitMQClient.Instance.StartReceive(QueueName, content => DoWorks(content));
  22. }
  23. public void DoWorks(string content)
  24. {
  25. try
  26. {
  27. if (!string.IsNullOrEmpty(content))
  28. {
  29. DoQueue(content);
  30. }
  31. }
  32. catch (Exception ex)
  33. {
  34. Utils.WriteLog(DateTime.Now.ToString() + "\n" + ex, "接收生成回调异常");
  35. }
  36. }
  37. public string DoQueue(string content)
  38. {
  39. string[] array = content.Split(new string[] { "#cut#" }, StringSplitOptions.None);
  40. string req = array[0];
  41. JsonData jsonData = JsonMapper.ToObject(req);
  42. string data = array[1];
  43. string requestId = jsonData["requestId"].ToString();
  44. string attach = jsonData["attach"].ToString();
  45. JsonData attachObj = JsonMapper.ToObject(attach);
  46. string fileType = attachObj["fileType"].ToString();
  47. if(fileType.StartsWith("db"))
  48. {
  49. int makeObjectId = 0;
  50. int makeObject = 0;
  51. if(fileType == "db") makeObject = 1;
  52. if(fileType == "dbTable") makeObject = 2;
  53. if(fileType == "dbField") makeObject = 3;
  54. string makeObjectName = "";
  55. if(fileType == "db")
  56. {
  57. int databaseId = int.Parse(jsonData["data"]["databaseInfo"]["id"].ToString());
  58. var dbService = App.GetService<IDatabaseInfoService>();
  59. var databaseInfo = dbService.GetFirst(m => m.id == databaseId) ?? new DatabaseInfo();
  60. makeObjectId = databaseId;
  61. makeObjectName = databaseInfo.dbName;
  62. }
  63. var logService = App.GetService<IDatabaseMakeLogService>();
  64. var logId = logService.addDatabaseMakeLog(new DatabaseMakeLog()
  65. {
  66. createTime = DateTime.Now,
  67. updateTime = DateTime.Now,
  68. createBy = attachObj["createBy"].ToString(),
  69. updateBy = attachObj["createBy"].ToString(),
  70. makeObject = makeObject,
  71. makeObjectId = makeObjectId,
  72. makeObjectName = makeObjectName,
  73. makeContent = data,
  74. });
  75. return logId.ToString();
  76. }
  77. return "";
  78. }
  79. public static string Push(Dictionary<string, object> pushData, string modePath, string fileType, TokenModel createBy, string dataId = "0", string versionNo = "0")
  80. {
  81. MakeData makeData = new();
  82. string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8);
  83. makeData.requestId = requestId;
  84. makeData.modePath = modePath;
  85. Dictionary<string, string> attach = new();
  86. attach.Add("fileType", fileType);
  87. attach.Add("dataId", dataId);
  88. attach.Add("userId", createBy.userId.ToString());
  89. attach.Add("createBy", createBy.username);
  90. attach.Add("versionNo", versionNo);
  91. makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach);
  92. makeData.data = pushData;
  93. RabbitMQClient.Instance.Push("MakeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(makeData));
  94. return requestId;
  95. }
  96. public static string Make(Dictionary<string, object> pushData, string modePath, string fileType, TokenModel createBy, string dataId = "0", string versionNo = "0")
  97. {
  98. MakeData makeData = new();
  99. string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8);
  100. makeData.requestId = requestId;
  101. makeData.modePath = modePath;
  102. Dictionary<string, string> attach = new();
  103. attach.Add("fileType", fileType);
  104. attach.Add("dataId", dataId);
  105. attach.Add("userId", createBy.userId.ToString());
  106. attach.Add("createBy", createBy.username);
  107. attach.Add("versionNo", versionNo);
  108. makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach);
  109. makeData.data = pushData;
  110. RedisServer.Cache.Set("MakeData:" + requestId, Newtonsoft.Json.JsonConvert.SerializeObject(makeData), TimeSpan.FromMinutes(5));
  111. return IMake.makeFile( requestId);
  112. }
  113. }
  114. }