Files
number_zj/20220330_Vote/Ewide.RoadFlow/Serivce/DbConnection/DbConnectionService.cs
2022-03-30 17:54:33 +08:00

196 lines
7.0 KiB
C#

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
{
/// <summary>
/// 工作流字典服务
/// </summary>
[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;
}
/// <summary>
/// 测试一个SQL是否正确
/// </summary>
/// <returns></returns>
[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);
}
/// <summary>
/// 查询列表
/// </summary>
/// <returns></returns>
[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());
}
/// <summary>
/// 得到数据类型选项
/// </summary>
/// <returns></returns>
[HttpGet("GetDbConnTypeOptions")]
public dynamic GetDbConnTypeOptions()
{
return _dbConnection.GetConnTypeOptionsVue();//RoadFlowCommon.Tools.GetReturnJsonString(jArray: new RoadFlow.Business.DbConnection().GetConnTypeOptionsVue());
}
/// <summary>
/// 保存
/// </summary>
/// <returns></returns>
[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);
}
/// <summary>
/// 删除
/// </summary>
/// <returns></returns>
[HttpPost("Delete")]
public string Delete([FromBody] JObject args)
{
string ids = args.GetJsonValue("ids");
List<RoadFlow.Model.rf_dbconnection> dbConnections = new List<RoadFlow.Model.rf_dbconnection>();
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);
}
/// <summary>
/// 测试一个连接是否正确
/// </summary>
/// <returns></returns>
[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);
}
}
}