Files
tnb.server/common/Tnb.Common.Core/Manager/User/IUserManager.cs
2023-09-07 11:02:17 +08:00

164 lines
4.6 KiB
C#

using JNPF.Common.Models.Authorize;
using JNPF.Common.Models.User;
using JNPF.Systems.Entitys.Permission;
using SqlSugar;
namespace JNPF.Common.Core.Manager;
/// <summary>
/// 用户管理抽象.
/// </summary>
public interface IUserManager
{
/// <summary>
/// 用户编号.
/// </summary>
string UserId { get; }
/// <summary>
/// 登录类型
/// </summary>
string LoginType { get; }
/// <summary>
/// 用户角色.
/// </summary>
List<string> Roles { get; }
/// <summary>
/// 数据库连接.
/// </summary>
ConnectionConfigOptions ConnectionConfig { get; }
/// <summary>
/// 租户ID.
/// </summary>
string TenantId { get; }
/// <summary>
/// 租户数据库名称.
/// </summary>
string TenantDbName { get; }
/// <summary>
/// 用户账号.
/// </summary>
string Account { get; }
/// <summary>
/// 用户昵称.
/// </summary>
string RealName { get; }
/// <summary>
/// 当前用户 ToKen.
/// </summary>
string ToKen { get; }
/// <summary>
/// 是否管理员.
/// </summary>
bool IsAdministrator { get; }
/// <summary>
/// 获取请求端类型 pc 、 app.
/// </summary>
string UserOrigin { get; }
/// <summary>
/// 获取用户的数据范围.
/// </summary>
List<UserDataScopeModel> DataScope { get; }
/// <summary>
/// 用户当前组织及子组织.
/// </summary>
List<string> Subsidiary { get; }
/// <summary>
/// 当前用户下属.
/// </summary>
List<string> Subordinates { get; }
/// <summary>
/// 用户信息.
/// </summary>
UserEntity User { get; set; }
/// <summary>
/// 获取用户登录信息.
/// </summary>
/// <returns></returns>
Task<UserInfoModel> GetUserInfo();
/// <summary>
/// 获取数据条件.
/// </summary>
/// <typeparam name="T">实体.</typeparam>
/// <param name="moduleId">模块ID.</param>
/// <param name="primaryKey">表主键.</param>
/// <param name="isDataPermissions">是否开启数据权限.</param>
/// <param name="tableNumber">联表编号.</param>
/// <returns></returns>
Task<List<IConditionalModel>> GetConditionAsync<T>(string moduleId, string primaryKey = "F_Id", bool isDataPermissions = true, string tableNumber = "")
where T : new();
/// <summary>
/// 获取数据条件(带副表) .
/// </summary>
/// <typeparam name="T">实体.</typeparam>
/// <param name="moduleId">模块ID.</param>
/// <param name="primaryKey">表主键.</param>
/// <param name="isDataPermissions">是否开启数据权限.</param>
/// <returns></returns>
Task<List<IConditionalModel>> GetDataConditionAsync<T>(string moduleId, string primaryKey, bool isDataPermissions = true)
where T : new();
/// <summary>
/// 获取数据条件(在线开发专用).
/// </summary>
/// <typeparam name="T">实体.</typeparam>
/// <param name="primaryKey">表主键.</param>
/// <param name="moduleId">模块ID.</param>
/// <param name="isDataPermissions">是否开启数据权限.</param>
/// <returns></returns>
Task<List<IConditionalModel>> GetCondition<T>(string primaryKey, string moduleId, bool isDataPermissions = true)
where T : new();
/// <summary>
/// 获取代码生成数据条件.
/// </summary>
/// <typeparam name="T">实体.</typeparam>
/// <param name="moduleId">模块ID.</param>
/// <param name="primaryKey">表主键.</param>
/// <param name="isDataPermissions">是否开启数据权限.</param>
/// <returns></returns>
Task<List<CodeGenAuthorizeModuleResourceModel>> GetCodeGenAuthorizeModuleResource<T>(string moduleId, string primaryKey, bool isDataPermissions = true)
where T : new();
/// <summary>
/// 获取角色名称 根据 角色Ids.
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
Task<string> GetRoleNameByIds(string ids);
/// <summary>
/// 根据角色Ids和组织Id 获取组织下的角色以及全局角色.
/// </summary>
/// <param name="roleIds">角色Id集合.</param>
/// <param name="organizeId">组织Id.</param>
/// <returns></returns>
Task<List<string>> GetUserOrgRoleIds(string roleIds, string organizeId);
/// <summary>
/// 判断是否管理员.
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
bool IsAdmin(string userId);
/// <summary>
/// 获取管理员用户id.
/// </summary>
string GetAdminUserId();
}