using Attribute; using Model; using Model.Base; using Repository; using Service; using Microsoft.AspNetCore.Mvc; using Vo.Admin; using Dto.Admin; using Custom; using Common; namespace Services { /// /// 数据库配置Service业务层处理 /// [AppService(ServiceType = typeof(IDatabaseInfoService), ServiceLifetime = LifeTime.Transient)] public class DatabaseInfoService : BaseService, IDatabaseInfoService { /// /// 数据库配置-列表 /// /// 参数请求体 /// 分页参数 /// 列表 public PagedInfo getDatabaseInfoList([FromQuery] PagerInfo page, [FromQuery] DatabaseInfo param) { //拼装查询条件 var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.dbName), m => m.dbName.Contains(param.dbName)); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.hostAddress), m => m.hostAddress.Contains(param.hostAddress)); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(m => m.id) .ToPage(page); return response; } /// /// 生成SQL脚本 /// /// 参数请求体 /// 生成 public void makeDatabaseInfo([FromBody] MakeDatabaseInfoDto param, List tables, List fields, TokenModel loginUser) { DatabaseInfo databaseInfo = GetById(param.id) ?? new DatabaseInfo(); foreach(DatabaseTable table in tables) { table.fields = fields.Where(m => m.tableId == table.id).ToList(); } MakeData makeData = new(); string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8); makeData.requestId = requestId; makeData.modePath = "Sql/db.sql"; Dictionary attach = new(); attach.Add("id", param.id.ToString()); attach.Add("kind", "db"); attach.Add("operator", loginUser.username); makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach); makeData.data = new Dictionary(); makeData.data.Add("databaseInfo", databaseInfo); makeData.data.Add("databaseTable", tables); RabbitMQClient.Instance.Push("MakeSqlQueue", Newtonsoft.Json.JsonConvert.SerializeObject(makeData)); } } }