using Ewide.Core; using Ewide.RoadFlowLite.Utility; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using RoadFlow.Data; using RoadFlow.Utility; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ewide.RoadFlowLite.Serivce.DbConnection { /// /// 工作流字典服务 /// [Route("/api/roadflow/DbConnection/")] [ApiDescriptionSettings("RoadFlow")] public class DbConnectionService : IDynamicApiController, ITransient { private readonly IDbConnection _dbConnection; private readonly ILog _log; private readonly IUserManager _userManager; public DbConnectionService(IDbConnection dbConnection,ILog log, IUserManager userManager) { _dbConnection = dbConnection; _log = log; _userManager = userManager; } /// /// 测试一个SQL是否正确 /// /// [HttpPost("TestSql")] public string TestSql([FromBody] JObject args) { string connId = args.GetJsonValue("connid"); string sql = args.GetJsonValue("sql"); if (!connId.IsGuid(out Guid connGuid)) { throw Oops.Oh("数据库连接ID错误"); //return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["ConnectionIdError"].Value); } if (sql.IsNullOrWhiteSpace()) { throw Oops.Oh("测试sql为空"); //return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["TestSqlEmpty"].Value); } string msg =_dbConnection.TestSQL(connId, sql); if (msg.IsInt()) return msg; else throw Oops.Oh(msg); //RoadFlowCommon.Tools.GetReturnJsonString(msg.IsInt(), msg); } /// /// 查询列表 /// /// [HttpGet("GetList")] public dynamic GetList() { var dbconns = _dbConnection.GetAll(); JArray jArray = new JArray(); foreach (var dbconn in dbconns.OrderBy(p => p.Sort)) { JObject jObject = new JObject() { { "Id", dbconn.Id }, { "Name", dbconn.Name }, { "ConnType", dbconn.ConnType }, { "ConnString", dbconn.ConnString }, { "Note", dbconn.Note }, { "Sort", dbconn.Sort }, }; jArray.Add(jObject); } return jArray;// RoadFlowCommon.Tools.GetReturnJsonString(jArray: jArray); } [HttpGet("Get")] public dynamic Get(string id) { // string id = args.GetJsonValue("id"); if (!id.IsGuid(out Guid guid)) { return new JObject(); //return RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject()); } var connModel = _dbConnection.GetOneById(id); if (connModel == null) { return new JObject(); //return RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject()); } return connModel.ToJObject(); //RoadFlowCommon.Tools.GetReturnJsonString(jObject: connModel.ToJObject()); } /// /// 得到数据类型选项 /// /// [HttpGet("GetDbConnTypeOptions")] public dynamic GetDbConnTypeOptions() { return _dbConnection.GetConnTypeOptionsVue();//RoadFlowCommon.Tools.GetReturnJsonString(jArray: new RoadFlow.Business.DbConnection().GetConnTypeOptionsVue()); } /// /// 保存 /// /// [HttpPost("Save")] public string Save([FromBody]RoadFlow.Model.rf_dbconnection dbConnectionModel) { string id = dbConnectionModel.Id; if (id.IsGuid(out Guid connId)) { var oldModel = _dbConnection.GetOneById(id); _dbConnection.Update(dbConnectionModel); _log.Add("修改了数据连接-" + dbConnectionModel.Name, type: LogType.系统管理, oldContents: oldModel.ToString(), newContents: dbConnectionModel.ToString()); } else { dbConnectionModel.Id = GuidExtensions.NewGuid().ToString(); _dbConnection.Add(dbConnectionModel); _log.Add("添加了数据连接-" + dbConnectionModel.Name,_userManager.UserId, dbConnectionModel.ToString(), LogType.系统管理); } return "保存成功"; //RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["SaveSuccess"].Value); } /// /// 删除 /// /// [HttpPost("Delete")] public string Delete([FromBody] JObject args) { string ids = args.GetJsonValue("ids"); List dbConnections = new List(); foreach (string id in ids.Split(',')) { if (!id.IsGuid(out Guid guid)) { continue; } var connModel = _dbConnection.GetOneById(id); if (null == connModel) { continue; } dbConnections.Add(connModel); } _dbConnection.Delete(dbConnections); _log.Add("删除了数据连接", _userManager.UserId,dbConnections.Serialize(), LogType.系统管理); return "共计删除了 " + dbConnections.Count + " 条"; //return RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["TotalDelete"].Value + dbConnections.Count.ToString() + localizer["DeleteItems"].Value); } /// /// 测试一个连接是否正确 /// /// [HttpGet("TestConn")] public string TestConn(string connId) { if (!connId.IsGuid(out Guid connGuid)) { throw Oops.Oh("连接ID错误"); //return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["ConnectionIdError"].Value); } string msg = _dbConnection.TestConnection(connId, null);// localizer); if (msg == "1") return "连接成功"; else throw Oops.Oh(msg); //return RoadFlowCommon.Tools.GetReturnJsonString("1".Equals(msg), "1".Equals(msg) ? localizer["ConnSuccess"].Value : msg); } } }