using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Http; using System.Web.Http.Description; using System.Web.UI.WebControls; using log4net; using Microsoft.Extensions.Hosting; using UFIDA.U8.Framework.Api.ControlObject.Common; using UFIDA.U8.Framework.Api.ControlObject.Entity; using UFIDA.U8.Framework.Api.ControlObject.Json; using UFIDA.U8.Framework.Api.ControlObject.U8M; using UFIDA.U8.Framework.Api.Entity; using UFIDA.U8.Framework.Api.Models; using UFIDA.U8.Framework.Api.Unit; namespace UFIDA.U8.Framework.Api.Controllers.U8 { /// /// 平台功能 /// public class DPController : ApiController { /// /// 日志组件 /// protected readonly ILog _logInfo = LogManager.GetLogger("logInfo"); /// /// U8登录接口 /// /// 系统号 /// 登录参数 /// [HttpPost] [Route("api/U8/DP/Login")] public async Task> Login(string cAccId, [FromBody] LoginInput input) { try { _logInfo.Debug($"当前接口:api/U8/DP/Login,参数:{input.ToJson()}"); var db = CommUnit.GetDbClient(); var account = await db.Queryable().FirstAsync(a => a.Status == StatusEnum.Enable && a.cAccountNo == cAccId); if (account == null) { throw new Exception($"未能找到[{cAccId}]的配置信息"); } var param = new LoginParamter() { cSrv = account.cSrv, pAccId = account.cAcc_DataSource, pDate = string.IsNullOrWhiteSpace(input.pDate) ? $"{DateTime.Today:yyyy-MM-dd}" : input.pDate, pPassword = string.IsNullOrWhiteSpace(input.pPassword) ? "" : CommUnit.GetDecrypt(input.pPassword), pYearId = string.IsNullOrWhiteSpace(input.pDate) ? $"{DateTime.Today.Year}" : $"{DateTime.Parse(input.pDate).Year}", pSubId = "DP", pUserId = input.pUserId }; var login = new BaseLogin(); login.Init(param, false); var userToken = login.userToken; if (!string.IsNullOrWhiteSpace(userToken)) { var output = new LoginOutput { cAccId = cAccId, userToken = CommUnit.GetEncrypt(userToken), loginParamter = param }; return new BaseResult() { bSuccess = true, message = "登录成功", result = CommUnit.GetEncrypt(output.ToJson()) }; } throw new Exception("未知错误,请检查系统日志"); } catch (Exception ex) { _logInfo.Error(ex.Message, ex); await Task.Delay(1); return new BaseResult { bSuccess = false, message = "登录失败", result = ex.Message }; } } /// /// U8登录接口 /// /// 用户令牌 /// [HttpPost] [Route("api/U8/DP/Login/Token")] public async Task> Login([FromBody] UserTokenInput input) { try { _logInfo.Debug($"当前接口:api/U8/DP/Login/Token,参数:{input.ToJson()}"); var token = CommUnit.GetUserToken(input.userToken); var login = new BaseLogin(); login.Init(token, false); var userToken = login.userToken; if (!string.IsNullOrWhiteSpace(userToken)) { return new BaseResult() { bSuccess = true, message = "登录成功", result = "登录成功" }; } throw new Exception("未知错误,请检查系统日志"); } catch (Exception ex) { _logInfo.Error(ex.Message, ex); await Task.Delay(1); return new BaseResult { bSuccess = false, message = "登录失败", result = ex.Message }; } } /// /// 获取U8密码 /// /// /// [HttpGet] [Route("api/U8/DP/GetPassword")] public async Task> GetPassword(string cPwd) { try { await Task.Delay(1); return new BaseResult() { bSuccess = true, message = "加密成功", result = CommonHelper.U8Encrypt(cPwd) }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = "登录失败", result = ex.Message }; } } /// /// 获取对接账套设置 /// /// /// [HttpPost] [Route("api/U8/DP/GetAccountConfig")] public async Task> GetAccountConfig([FromBody] U8AccountConfigInput input) { try { var db = CommUnit.GetDbClient(); var res = await db.Queryable() .Where(a => a.cAccountNo == input.cAccId) .FirstAsync(); return new BaseResult { bSuccess = true, message = "查询成功", result = res }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = "查询失败", result = ex.Message }; } } /// /// 获取加密字符串 /// /// /// [HttpGet] [Route("api/U8/DP/GetEncryptString")] public async Task> GetEncryptString(string input) { try { await Task.Delay(1); return new BaseResult { bSuccess = true, message = "加密成功", result = CommUnit.GetEncrypt(input) }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = "加密失败", result = ex.Message }; } } /// /// 获取解密字符串 /// /// /// [HttpGet] [Route("api/U8/DP/GetDecryptString")] [ApiExplorerSettings(IgnoreApi = true)] public async Task> GetDecryptString(string input) { try { await Task.Delay(1); return new BaseResult { bSuccess = true, message = "解密成功", result = CommUnit.GetDecrypt(input) }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = "解密失败", result = ex.Message }; } } /// /// 注册对接系统 /// /// /// [HttpPost] [Route("api/U8/DP/AddAccountConfig")] public async Task> AddAccountConfig([FromBody] AddU8AccountConfigInput input) { try { var db = CommUnit.GetDbClient(); var isExists = await db.Queryable().AnyAsync(a => a.cAccountNo == input.cAccountNo); if (isExists) { throw new Exception($"已存在系统号为{input.cAccountNo}的数据"); } try { if (!string.IsNullOrWhiteSpace(input.cPassword)) { CommUnit.GetDecrypt(input.cPassword); } } catch (Exception ex) { _logInfo.Debug($"密码未加密:{ex.Message},将进行密码加密"); input.cPassword = CommUnit.GetEncrypt(input.cPassword); } var id = await db.Insertable(input).ExecuteReturnIdentityAsync(); return new BaseResult { bSuccess = true, message = "新增成功", result = id }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } } /// /// 更新对接系统 /// /// /// [HttpPost] [Route("api/U8/DP/UpdateAccountConfig")] public async Task> UpdateAccountConfig([FromBody] AddU8AccountConfigInput input) { try { var db = CommUnit.GetDbClient(); var isExists = await db.Queryable().AnyAsync(a => a.Id == input.Id); if (!isExists) { throw new Exception($"不存在系统号为{input.cAccountNo}的数据"); } try { if (!string.IsNullOrWhiteSpace(input.cPassword)) { CommUnit.GetDecrypt(input.cPassword); } } catch (Exception ex) { _logInfo.Debug($"密码未加密:{ex.Message},将进行密码加密"); input.cPassword = CommUnit.GetEncrypt(input.cPassword); } var id = await db.Updateable(input).ExecuteCommandAsync(); return new BaseResult { bSuccess = true, message = "更新成功", result = id }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = "更新失败", result = ex.Message }; } } /// /// 获取对接系统列表 /// /// /// [HttpPost] [Route("api/U8/DP/ListAccountConfig")] public async Task> ListAccountConfig([FromBody] ListU8AccountConfigInput input) { try { var db = CommUnit.GetDbClient(); var res = await db.Queryable() .WhereIF(!string.IsNullOrWhiteSpace(input.cAccId), a => a.cAccountNo == input.cAccId) .ToListAsync(); return new BaseResult { bSuccess = true, message = "查询成功", result = res }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = "查询失败", result = ex.Message }; } } /// /// 上传配置 /// /// /// /// [HttpPost] [Route("api/U8/DP/UploadConfig")] public async Task> UploadConfig(string cKey,[FromBody] List> inputs) { try { var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"App_Data/{cKey}.json"); File.WriteAllText(fileName, inputs.ToJson()); return new BaseResult() { result = "上传成功", message = "上传成功", bSuccess = true }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); await Task.Delay(1); return new BaseResult { bSuccess = false, message = "查询失败", result = ex.Message }; } } /// /// 下载配置 /// /// /// [HttpPost] [Route("api/U8/DP/DownloadConfig")] public async Task> DownloadConfig(string cKey) { try { var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"App_Data/{cKey}.json"); var txt=File.ReadAllText(fileName ); return new BaseResult() { result = txt, message = "上传成功", bSuccess = true }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); await Task.Delay(1); return new BaseResult { bSuccess = false, message = "查询失败", result = ex.Message }; } } /// /// 查询日志 /// /// /// [HttpGet] [Route("api/U8/DP/LoadLog")] public async Task LoadLog(string dDate) { try { if (!DateTime.TryParse(dDate, out var cDate)) { throw new Exception("日期格式错误"); } var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Log/Log_{cDate:yyyyMMdd}.log"); var txt = File.ReadAllLines(fileName); return string.Join(Environment.NewLine, txt); } catch (Exception ex) { _logInfo.Error(ex.Message, ex); await Task.Delay(1); return ex.Message; } } } }