MakeHelper.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. string makeObjectName = "";
  51. if(fileType == "db")
  52. {
  53. int databaseId = int.Parse(jsonData["data"]["databaseInfo"]["id"].ToString());
  54. var dbService = App.GetService<IDatabaseInfoService>();
  55. var databaseInfo = dbService.GetFirst(m => m.id == databaseId) ?? new DatabaseInfo();
  56. makeObjectId = databaseId;
  57. makeObjectName = databaseInfo.dbName;
  58. }
  59. var logService = App.GetService<IDatabaseMakeLogService>();
  60. var logId = logService.addDatabaseMakeLog(new DatabaseMakeLog()
  61. {
  62. createTime = DateTime.Now,
  63. updateTime = DateTime.Now,
  64. createBy = attachObj["createBy"].ToString(),
  65. updateBy = attachObj["createBy"].ToString(),
  66. makeObject = 1,
  67. makeObjectId = makeObjectId,
  68. makeObjectName = makeObjectName,
  69. makeContent = data,
  70. });
  71. return logId.ToString();
  72. }
  73. return "";
  74. }
  75. public static string Push(Dictionary<string, object> pushData, string modePath, string fileType, TokenModel createBy, string dataId = "0", string versionNo = "0")
  76. {
  77. MakeData makeData = new();
  78. string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8);
  79. makeData.requestId = requestId;
  80. makeData.modePath = modePath;
  81. Dictionary<string, string> attach = new();
  82. attach.Add("fileType", fileType);
  83. attach.Add("dataId", dataId);
  84. attach.Add("userId", createBy.userId.ToString());
  85. attach.Add("createBy", createBy.username);
  86. attach.Add("versionNo", versionNo);
  87. makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach);
  88. makeData.data = pushData;
  89. RabbitMQClient.Instance.Push("MakeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(makeData));
  90. return requestId;
  91. }
  92. public static string Make(Dictionary<string, object> pushData, string modePath, string fileType, TokenModel createBy, string dataId = "0", string versionNo = "0")
  93. {
  94. MakeData makeData = new();
  95. string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8);
  96. makeData.requestId = requestId;
  97. makeData.modePath = modePath;
  98. Dictionary<string, string> attach = new();
  99. attach.Add("fileType", fileType);
  100. attach.Add("dataId", dataId);
  101. attach.Add("userId", createBy.userId.ToString());
  102. attach.Add("createBy", createBy.username);
  103. attach.Add("versionNo", versionNo);
  104. makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach);
  105. makeData.data = pushData;
  106. return IMake.makeFile( Newtonsoft.Json.JsonConvert.SerializeObject(makeData));
  107. }
  108. }
  109. }