using System; using System.Threading.Tasks; using System.Web.Http; using System.Web.Http.Description; using System.Web.UI.WebControls; using log4net; 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) }; 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 }; } } } }