using Common; using Common.DJYModel; using Common.Extensions; using Common.Tools; using Common.Utilities; using djy.IService.Djy; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Linq; namespace djy_AfrApi.Controllers { /// /// api接口基类 /// public class ApiBase : Controller { #region 构建响应对象 [NonAction] protected ResponsePage SuccessPage(PageModel pageModel) { if (pageModel is null) { throw new ArgumentNullException(nameof(pageModel)); } return new ResponsePage() { Code = 200, Message = "查询成功", Result = pageModel.Result, Count = pageModel.Count, PageNumber = pageModel.PageNumber, PageSize = pageModel.PageSize }; } [NonAction] protected Response SuccessResp(string message = "操作成功") { return new Response() { Code = 200, Message = message }; } [NonAction] protected Response SuccessResp(T result) { return new Response() { Code = 200, Message = "操作成功", Result = result }; } #endregion #region http数据获取 /// /// 创建日志 /// /// 内容 /// /// /// /// protected void _LogsAdd(string Message, string GroupName = null, object DataJson = null, string ObjGid = null, object ResultJson = null) { var toolsserver = IOC.AddServer(); toolsserver.LogsAdd(Message, GroupName, DataJson, ObjGid, ResultJson); } /// /// 获取大简云设置权限 /// /// keyname标识 /// protected DJyUserAuthorityDto GetDJyUserAuthority(string KeyName) { var _djyserver = IOC.AddServer(); var rs = _djyserver.GetUserAuthority(GetLoginId, KeyName); if (rs.Status) { return rs.Data; } else { return null; } } /// /// 获取登录详情信息 /// /// protected User GetUserInfo(Guid? UserGid = null) { var _suser = IOC.AddServer(); if (UserGid == null) { UserGid = GetLoginId; } var rs = _suser.GetUserInfo(UserGid.ToString()); if (rs.Status) { return rs.Data; } else { return null; } } /// /// 统一获取大简云权限查询权限的userid companyid 没有权限则指定userid和companyid 为不存的guid值 /// /// /// /// 模块keyname标识 /// 0 查询查看权限 1 操作更新权限 默认 0 /// protected UserAuthorityDto GetUserAuthorityToFormDto(string KeyName, int type = 0) { //本人的绑定UserId 全部 userid 和 compayid不做绑定 注册公司的 绑定 companyid 没有权限则指定userid和companyid 为不存的guid值 var RetrunData = new UserAuthorityDto(); var _djyserver = IOC.AddServer(); User User; User = null; var uuid = GetLoginId.ToString(); var userrs = _djyserver.GetUserInfo(GetLoginId.ToString()); var notguid = Guid.Parse("00000000-0000-0000-0000-000000000001"); RetrunData.CompayId = null; if (userrs.Status) { User = userrs.Data; RetrunData.CompayId = Guid.Parse(User.CompId); } if (User == null) { RetrunData.UserId = notguid; RetrunData.CompayId = notguid; } var aut = GetDJyUserAuthority(KeyName); if (aut != null) {//根据权限处理 _userid 和 _companyid 值 RetrunData.IsPower = true; var _useraut = aut.Visiblerange; if (type == 1) { _useraut = aut.Operaterange; } switch (_useraut) { case 0://全部 RetrunData.UserId = null; RetrunData.CompayId = null; break; case 1://本公司 RetrunData.UserId = null; RetrunData.CompayId = Guid.Parse(User.CompId); break; case 3://本人 RetrunData.UserId = GetLoginId; RetrunData.CompayId = null; break; case 4://无权限或或默认权限 //_uerid = notguid; //_companyid = notguid; RetrunData.UserId = null; RetrunData.CompayId = null; break; case 7://注册公司 RetrunData.UserId = null; RetrunData.CompayId = Guid.Parse(User.CompId); break; default: RetrunData.UserId = notguid; RetrunData.CompayId = notguid; break; } } else { RetrunData.UserId = GetLoginId; RetrunData.CompayId = null; RetrunData.IsPower = true; } //if (sysOptionConfig.Webconfig.IsDev) //{ // RetrunData.UserId = null; // RetrunData.CompayId =null; // RetrunData.IsPower = true; //} return RetrunData; } /// /// 获取登录Id /// protected Guid? GetLoginId { get { return Guid.Parse(GetClaimsValue("loginid")); } } /// /// 获取登录类型 /// protected EnumUser.UserType GetLoginType { get { var type = GetClaimsValue("logintype"); if (type.Isint()) { return (EnumUser.UserType)int.Parse(type); } else { return EnumUser.UserType.All; } } } /// /// 根据key获取claims值 没有则返回null /// /// /// 是否是加密 /// protected string GetClaimsValue(string Key, bool IsDecrtypt = true) { try { var claims = HttpContext.User.Claims; var id = claims.SingleOrDefault(s => s.Type == Key); if (id == null) { return "0"; } return IsDecrtypt ? _DecryptDES(id.Value) : id.Value; } catch { return null; } } /// /// DES解密 /// /// /// protected static string _DecryptDES(string value) { return SafeTools.DecryptDES(value, sysOptionConfig.Webconfig.DesKey); } #endregion } }