using Microsoft.Data.Sqlite; using SqlSugar; using System; using System.Configuration; using System.Threading.Tasks; using UFIDA.U8.Framework.Api.Common.Unit.GM; using UFIDA.U8.Framework.Api.ControlObject.Entity; using UFIDA.U8.Framework.Api.ControlObject.Json; using UFIDA.U8.Framework.Api.Entity; namespace UFIDA.U8.Framework.Api.Unit { /// /// 公共帮助类 /// public static class CommUnit { /// /// 读取对应配置 /// /// /// public static string GetConfig(string key) { return ConfigurationManager.AppSettings[key]; } /// /// 解密 /// /// /// public static string GetDecrypt(string val) { return GMUtil.SM2Decrypt(GetConfig("PrivateKey"), val); } /// /// 加密 /// /// /// public static string GetEncrypt(string val) { return GMUtil.SM2Encrypt(GetConfig("PublicKey"), val); } /// /// 获取数据库配置信息 /// /// /// public static ConnectionConfig GetConnectionConfig() { if (Enum.TryParse(GetConfig("DbType"), true, out var dbType)) { var connStr = GetDecrypt(GetConfig("ConnectionString")); var path = $"{AppDomain.CurrentDomain.BaseDirectory}{connStr}"; var liteConn = new SqliteConnectionStringBuilder() { DataSource = path }; var conn = new ConnectionConfig() { DbType = dbType, ConnectionString = liteConn.ConnectionString, ConfigId = "0", IsAutoCloseConnection = true, MoreSettings = new ConnMoreSettings() { IsWithNoLockQuery = true } }; return conn; } else { throw new Exception("请维护数据库类型"); } } /// /// 获取连接对象 /// /// public static SqlSugarClient GetDbClient() { var db = new SqlSugarClient(GetConnectionConfig()); return db; } /// /// 获取登录参数 /// /// /// /// /// public static async Task GetLoginParamter(string cAccId, bool bAP = false, string pDate = "") { var db = new SqlSugarClient(GetConnectionConfig()); var account = await db.Queryable().FirstAsync(a => a.Status == StatusEnum.Enable && a.cAccountNo == cAccId); if (account != null) { var param = new LoginParamter() { cSrv = account.cSrv, pAccId = account.cAcc_DataSource, pDate = string.IsNullOrWhiteSpace(pDate) ? $"{DateTime.Today:yyyy-MM-dd}" : pDate, pPassword = string.IsNullOrWhiteSpace(account.cPassword) ? "" : GetDecrypt(account.cPassword), pYearId = string.IsNullOrWhiteSpace(pDate) ? $"{DateTime.Today.Year}" : $"{DateTime.Parse(pDate).Year}", pSubId = bAP ? "AP" : "DP", pUserId = account.cUser_Id, cAccId = account.cAcc_Id }; return param; } return null; } /// /// 获取用户令牌 /// /// 用户令牌 /// public static string GetUserToken(string userToken) { var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); return token; } /// /// 保存请求结果 /// /// /// /// /// /// public static async Task SaveResult(string tradeid, bool bRun, BaseResult result = null) { var db = GetDbClient(); if (!db.DbMaintenance.IsAnyTable("SysTradeResult")) { db.CodeFirst.InitTables(typeof(SysTradeResult)); } if (bRun == true) { if (await db.Queryable().AnyAsync(a => a.cTradeId == tradeid)) { throw new Exception($"请求ID:{tradeid}重复"); } var count = await db.Queryable().CountAsync(); if (count > 1000) { var idList = await db.Queryable().Select(a => a.Id).Take(count - 1000).ToListAsync(); await db.Deleteable().Where(a => idList.Contains(a.Id)).ExecuteCommandAsync(); } var entity = new SysTradeResult { Id = SnowFlakeSingle.Instance.NextId(), bRun = bRun, cTradeId = tradeid, cResult = result, dStartDate = DateTime.Now, }; await db.Insertable(entity).ExecuteCommandAsync(); } else { var entity = await db.Queryable().Where(a => a.cTradeId == tradeid).FirstAsync(); entity.cResult = result; entity.bRun = false; entity.dEndDate = DateTime.Now; await db.Updateable(entity).ExecuteCommandAsync(); } } } }