using System.Collections; using System.Text.RegularExpressions; using Common; using Custom; using Feign; using Infrastructure; using LitJson; using Microsoft.CodeAnalysis.CSharp.Scripting; using Model; using Model.Base; using Services; namespace Tasks { public class MakeHelper { public readonly static MakeHelper Instance = new MakeHelper(); private MakeHelper() { } public void Start(string QueueName) { RabbitMQClient.Instance.StartReceive(QueueName, content => DoWorks(content)); } public void DoWorks(string content) { try { if (!string.IsNullOrEmpty(content)) { DoQueue(content); } } catch (Exception ex) { Utils.WriteLog(DateTime.Now.ToString() + "\n" + ex, "接收生成回调异常"); } } public string DoQueue(string content) { string[] array = content.Split(new string[] { "#cut#" }, StringSplitOptions.None); string req = array[0]; JsonData jsonData = JsonMapper.ToObject(req); string data = array[1]; string requestId = jsonData["requestId"].ToString(); string attach = jsonData["attach"].ToString(); JsonData attachObj = JsonMapper.ToObject(attach); string fileType = attachObj["fileType"].ToString(); if(fileType.StartsWith("db")) { int makeObjectId = 0; int makeObject = 0; if(fileType == "db") makeObject = 1; if(fileType == "dbTable") makeObject = 2; if(fileType == "dbField") makeObject = 3; string makeObjectName = ""; if(fileType == "db") { int databaseId = int.Parse(jsonData["data"]["databaseInfo"]["id"].ToString()); var dbService = App.GetService(); var databaseInfo = dbService.GetFirst(m => m.id == databaseId) ?? new DatabaseInfo(); makeObjectId = databaseId; makeObjectName = databaseInfo.dbName; } var logService = App.GetService(); var logId = logService.addDatabaseMakeLog(new DatabaseMakeLog() { createTime = DateTime.Now, updateTime = DateTime.Now, createBy = attachObj["createBy"].ToString(), updateBy = attachObj["createBy"].ToString(), makeObject = makeObject, makeObjectId = makeObjectId, makeObjectName = makeObjectName, makeContent = data, }); return logId.ToString(); } return ""; } public static string Push(Dictionary pushData, string modePath, string fileType, TokenModel createBy, string dataId = "0", string versionNo = "0") { MakeData makeData = new(); string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8); makeData.requestId = requestId; makeData.modePath = modePath; Dictionary attach = new(); attach.Add("fileType", fileType); attach.Add("dataId", dataId); attach.Add("userId", createBy.userId.ToString()); attach.Add("createBy", createBy.username); attach.Add("versionNo", versionNo); makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach); makeData.data = pushData; RabbitMQClient.Instance.Push("MakeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(makeData)); return requestId; } public static string Make(Dictionary pushData, string modePath, string fileType, TokenModel createBy, string dataId = "0", string versionNo = "0") { MakeData makeData = new(); string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8); makeData.requestId = requestId; makeData.modePath = modePath; Dictionary attach = new(); attach.Add("fileType", fileType); attach.Add("dataId", dataId); attach.Add("userId", createBy.userId.ToString()); attach.Add("createBy", createBy.username); attach.Add("versionNo", versionNo); makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach); makeData.data = pushData; RedisServer.Cache.Set("MakeData:" + requestId, Newtonsoft.Json.JsonConvert.SerializeObject(makeData), TimeSpan.FromMinutes(5)); return IMake.makeFile( requestId); } } }