Pārlūkot izejas kodu

😎基础服务用户、登录等服务方法增加virtual关键字方便重写

zuohuaijun 2 gadi atpakaļ
vecāks
revīzija
7cf3dfdb00

+ 11 - 6
Admin.NET/Admin.NET.Core/Service/APIJSON/APIJSONService.cs

@@ -5,7 +5,7 @@
 namespace Admin.NET.Core.Service;
 
 /// <summary>
-/// APIJSON服务
+/// APIJSON服务 💥
 /// </summary>
 [ApiDescriptionSettings(Order = 100)]
 public class APIJSONService : IDynamicApiController, ITransient
@@ -26,24 +26,26 @@ public class APIJSONService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 统一查询入口
+    /// 统一查询入口 🔖
     /// </summary>
     /// <param name="jobject"></param>
     /// <remarks>参数:{"[]":{"SYSLOGOP":{}}}</remarks>
     /// <returns></returns>
     [HttpPost("get")]
+    [DisplayName("APIJSON统一查询")]
     public JObject Query([FromBody] JObject jobject)
     {
         return _selectTable.Query(jobject);
     }
 
     /// <summary>
-    /// 查询
+    /// 查询 🔖
     /// </summary>
     /// <param name="table"></param>
     /// <param name="jobject"></param>
     /// <returns></returns>
     [HttpPost("get/{table}")]
+    [DisplayName("APIJSON查询")]
     public JObject QueryByTable([FromRoute] string table, [FromBody] JObject jobject)
     {
         var ht = new JObject
@@ -87,11 +89,12 @@ public class APIJSONService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 新增
+    /// 新增 🔖
     /// </summary>
     /// <param name="tables">表对象或数组,若没有传Id则后端生成Id</param>
     /// <returns></returns>
     [HttpPost("add")]
+    [DisplayName("APIJSON新增")]
     [UnitOfWork]
     public JObject Add([FromBody] JObject tables)
     {
@@ -129,11 +132,12 @@ public class APIJSONService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 修改(只支持Id作为条件)
+    /// 更新(只支持Id作为条件) 🔖
     /// </summary>
     /// <param name="tables">支持多表、多Id批量更新</param>
     /// <returns></returns>
     [HttpPost("update")]
+    [DisplayName("APIJSON更新")]
     [UnitOfWork]
     public JObject Edit([FromBody] JObject tables)
     {
@@ -149,11 +153,12 @@ public class APIJSONService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 删除(支持非Id条件、支持批量)
+    /// 删除(支持非Id条件、支持批量) 🔖
     /// </summary>
     /// <param name="tables"></param>
     /// <returns></returns>
     [HttpPost("delete")]
+    [DisplayName("APIJSON删除")]
     [UnitOfWork]
     public JObject Delete([FromBody] JObject tables)
     {

+ 25 - 25
Admin.NET/Admin.NET.Core/Service/Auth/SysAuthService.cs

@@ -8,7 +8,7 @@ using Lazy.Captcha.Core;
 namespace Admin.NET.Core.Service;
 
 /// <summary>
-/// 系统登录授权服务
+/// 系统登录授权服务 💥
 /// </summary>
 [ApiDescriptionSettings(Order = 500)]
 public class SysAuthService : IDynamicApiController, ITransient
@@ -42,14 +42,14 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 账号密码登录
+    /// 账号密码登录 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <remarks>用户名/密码:superadmin/123456</remarks>
     /// <returns></returns>
     [AllowAnonymous]
     [DisplayName("账号密码登录")]
-    public async Task<LoginOutput> Login([Required] LoginInput input)
+    public virtual async Task<LoginOutput> Login([Required] LoginInput input)
     {
         //// 可以根据域名获取具体租户
         //var host = _httpContextAccessor.HttpContext.Request.Host;
@@ -109,12 +109,12 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 验证锁屏密码
+    /// 验证锁屏密码 🔖
     /// </summary>
     /// <param name="password"></param>
     /// <returns></returns>
     [DisplayName("验证锁屏密码")]
-    public async Task<bool> UnLockScreen([Required, FromQuery] string password)
+    public virtual async Task<bool> UnLockScreen([Required, FromQuery] string password)
     {
         // 账号是否存在
         var user = await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId);
@@ -139,13 +139,13 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 手机号登录
+    /// 手机号登录 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [AllowAnonymous]
     [DisplayName("手机号登录")]
-    public async Task<LoginOutput> LoginPhone([Required] LoginPhoneInput input)
+    public virtual async Task<LoginOutput> LoginPhone([Required] LoginPhoneInput input)
     {
         var verifyCode = _sysCacheService.Get<string>($"{CacheConst.KeyPhoneVerCode}{input.Phone}");
         if (string.IsNullOrWhiteSpace(verifyCode))
@@ -161,12 +161,12 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 生成Token令牌
+    /// 生成Token令牌 🔖
     /// </summary>
     /// <param name="user"></param>
     /// <returns></returns>
     [NonAction]
-    public async Task<LoginOutput> CreateToken(SysUser user)
+    public virtual async Task<LoginOutput> CreateToken(SysUser user)
     {
         // 单用户登录
         await _sysOnlineUserService.SingleLogin(user.Id);
@@ -203,11 +203,11 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取登录账号
+    /// 获取登录账号 🔖
     /// </summary>
     /// <returns></returns>
     [DisplayName("获取登录账号")]
-    public async Task<LoginUserOutput> GetUserInfo()
+    public virtual async Task<LoginUserOutput> GetUserInfo()
     {
         var user = await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D1011).StatusCode(401);
         // 获取机构
@@ -242,22 +242,22 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取刷新Token
+    /// 获取刷新Token 🔖
     /// </summary>
     /// <param name="accessToken"></param>
     /// <returns></returns>
     [DisplayName("获取刷新Token")]
-    public string GetRefreshToken([FromQuery] string accessToken)
+    public virtual string GetRefreshToken([FromQuery] string accessToken)
     {
         var refreshTokenExpire = _sysConfigService.GetRefreshTokenExpire().GetAwaiter().GetResult();
         return JWTEncryption.GenerateRefreshToken(accessToken, refreshTokenExpire);
     }
 
     /// <summary>
-    /// 退出系统
+    /// 退出系统 🔖
     /// </summary>
     [DisplayName("退出系统")]
-    public void Logout()
+    public virtual void Logout()
     {
         if (string.IsNullOrWhiteSpace(_userManager.Account))
             throw Oops.Oh(ErrorCodeEnum.D1011);
@@ -266,13 +266,13 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取登录配置
+    /// 获取登录配置 🔖
     /// </summary>
     /// <returns></returns>
     [AllowAnonymous]
     [SuppressMonitor]
     [DisplayName("获取登录配置")]
-    public async Task<dynamic> GetLoginConfig()
+    public virtual async Task<dynamic> GetLoginConfig()
     {
         var secondVerEnabled = await _sysConfigService.GetConfigValue<bool>(CommonConst.SysSecondVer);
         var captchaEnabled = await _sysConfigService.GetConfigValue<bool>(CommonConst.SysCaptcha);
@@ -280,25 +280,25 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取水印配置
+    /// 获取水印配置 🔖
     /// </summary>
     /// <returns></returns>
     [SuppressMonitor]
     [DisplayName("获取水印配置")]
-    public async Task<dynamic> GetWatermarkConfig()
+    public virtual async Task<dynamic> GetWatermarkConfig()
     {
         var watermarkEnabled = await _sysConfigService.GetConfigValue<bool>(CommonConst.SysWatermark);
         return new { WatermarkEnabled = watermarkEnabled };
     }
 
     /// <summary>
-    /// 获取验证码
+    /// 获取验证码 🔖
     /// </summary>
     /// <returns></returns>
     [AllowAnonymous]
     [SuppressMonitor]
     [DisplayName("获取验证码")]
-    public dynamic GetCaptcha()
+    public virtual dynamic GetCaptcha()
     {
         var codeId = YitIdHelper.NextId().ToString();
         var captcha = _captcha.Generate(codeId);
@@ -306,26 +306,26 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// Swagger登录检查
+    /// Swagger登录检查 🔖
     /// </summary>
     /// <returns></returns>
     [AllowAnonymous]
     [HttpPost("/api/swagger/checkUrl"), NonUnify]
     [DisplayName("Swagger登录检查")]
-    public int SwaggerCheckUrl()
+    public virtual int SwaggerCheckUrl()
     {
         return _httpContextAccessor.HttpContext.User.Identity.IsAuthenticated ? 200 : 401;
     }
 
     /// <summary>
-    /// Swagger登录提交
+    /// Swagger登录提交 🔖
     /// </summary>
     /// <param name="auth"></param>
     /// <returns></returns>
     [AllowAnonymous]
     [HttpPost("/api/swagger/submitUrl"), NonUnify]
     [DisplayName("Swagger登录提交")]
-    public async Task<int> SwaggerSubmitUrl([FromForm] SpecificationAuth auth)
+    public virtual async Task<int> SwaggerSubmitUrl([FromForm] SpecificationAuth auth)
     {
         try
         {

+ 14 - 8
Admin.NET/Admin.NET.Core/Service/Cache/SysCacheService.cs

@@ -7,7 +7,7 @@ using NewLife.Caching.Models;
 namespace Admin.NET.Core.Service;
 
 /// <summary>
-/// 系统缓存服务
+/// 系统缓存服务 💥
 /// </summary>
 [ApiDescriptionSettings(Order = 400)]
 public class SysCacheService : IDynamicApiController, ISingleton
@@ -22,7 +22,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
     }
 
     /// <summary>
-    /// 获取缓存键名集合
+    /// 获取缓存键名集合 🔖
     /// </summary>
     /// <returns></returns>
     [DisplayName("获取缓存键名集合")]
@@ -40,7 +40,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
     /// <param name="value"></param>
     /// <returns></returns>
     [NonAction]
-    public bool Set(string key, object value)
+    public virtual bool Set(string key, object value)
     {
         if (string.IsNullOrWhiteSpace(key)) return false;
         return _cache.Set($"{_cacheOptions.Prefix}{key}", value);
@@ -73,7 +73,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
     }
 
     /// <summary>
-    /// 删除缓存
+    /// 删除缓存 🔖
     /// </summary>
     /// <param name="key"></param>
     /// <returns></returns>
@@ -96,7 +96,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
     }
 
     /// <summary>
-    /// 根据键名前缀删除缓存
+    /// 根据键名前缀删除缓存 🔖
     /// </summary>
     /// <param name="prefixKey">键名前缀</param>
     /// <returns></returns>
@@ -111,7 +111,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
     }
 
     /// <summary>
-    /// 根据键名前缀获取键名集合
+    /// 根据键名前缀获取键名集合 🔖
     /// </summary>
     /// <param name="prefixKey">键名前缀</param>
     /// <returns></returns>
@@ -124,7 +124,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
     }
 
     /// <summary>
-    /// 获取缓存值
+    /// 获取缓存值 🔖
     /// </summary>
     /// <param name="key"></param>
     /// <returns></returns>
@@ -137,7 +137,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
     }
 
     /// <summary>
-    /// 获取或添加缓存,在数据不存在时执行委托请求数据
+    /// 获取或添加缓存(在数据不存在时执行委托请求数据)
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <param name="key"></param>
@@ -151,6 +151,12 @@ public class SysCacheService : IDynamicApiController, ISingleton
         return _cache.GetOrAdd($"{_cacheOptions.Prefix}{key}", callback, expire);
     }
 
+    /// <summary>
+    /// Hash匹配
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key"></param>
+    /// <returns></returns>
     [NonAction]
     public RedisHash<string, T> GetHashMap<T>(string key)
     {

+ 5 - 5
Admin.NET/Admin.NET.Core/Service/OAuth/SysOAuthService.cs

@@ -8,7 +8,7 @@ using System.Security.Claims;
 namespace Admin.NET.Core.Service;
 
 /// <summary>
-/// 系统OAuth服务
+/// 系统OAuth服务 💥
 /// </summary>
 [AllowAnonymous]
 [ApiDescriptionSettings(Order = 495)]
@@ -25,14 +25,14 @@ public class SysOAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 第三方登录
+    /// 第三方登录 🔖
     /// </summary>
     /// <param name="provider"></param>
     /// <param name="redirectUrl"></param>
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "SignIn"), HttpGet]
     [DisplayName("第三方登录")]
-    public async Task<IActionResult> SignIn([FromQuery] string provider, [FromQuery] string redirectUrl)
+    public virtual async Task<IActionResult> SignIn([FromQuery] string provider, [FromQuery] string redirectUrl)
     {
         if (string.IsNullOrWhiteSpace(provider) || !await _httpContextAccessor.HttpContext.IsProviderSupportedAsync(provider))
             throw Oops.Oh("不支持的OAuth类型");
@@ -45,14 +45,14 @@ public class SysOAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 授权回调
+    /// 授权回调 🔖
     /// </summary>
     /// <param name="provider"></param>
     /// <param name="redirectUrl"></param>
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "SignInCallback"), HttpGet]
     [DisplayName("授权回调")]
-    public async Task<IActionResult> SignInCallback([FromQuery] string provider = null, [FromQuery] string redirectUrl = "")
+    public virtual async Task<IActionResult> SignInCallback([FromQuery] string provider = null, [FromQuery] string redirectUrl = "")
     {
         if (string.IsNullOrWhiteSpace(provider) || !await _httpContextAccessor.HttpContext.IsProviderSupportedAsync(provider))
             throw Oops.Oh("不支持的OAuth类型");

+ 26 - 26
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -5,7 +5,7 @@
 namespace Admin.NET.Core.Service;
 
 /// <summary>
-/// 系统用户服务
+/// 系统用户服务 💥
 /// </summary>
 [ApiDescriptionSettings(Order = 490)]
 public class SysUserService : IDynamicApiController, ITransient
@@ -39,12 +39,12 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取用户分页列表
+    /// 获取用户分页列表 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取用户分页列表")]
-    public async Task<SqlSugarPagedList<UserOutput>> Page(PageUserInput input)
+    public virtual async Task<SqlSugarPagedList<UserOutput>> Page(PageUserInput input)
     {
         // 获取用户拥有的机构集合
         var userOrgIdList = await _sysOrgService.GetUserOrgIdList();
@@ -78,14 +78,14 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 增加用户
+    /// 增加用户 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [UnitOfWork]
     [ApiDescriptionSettings(Name = "Add"), HttpPost]
     [DisplayName("增加用户")]
-    public async Task<long> AddUser(AddUserInput input)
+    public virtual async Task<long> AddUser(AddUserInput input)
     {
         var isExist = await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account);
         if (isExist) throw Oops.Oh(ErrorCodeEnum.D1003);
@@ -102,14 +102,14 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 更新用户
+    /// 更新用户 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [UnitOfWork]
     [ApiDescriptionSettings(Name = "Update"), HttpPost]
     [DisplayName("更新用户")]
-    public async Task UpdateUser(UpdateUserInput input)
+    public virtual async Task UpdateUser(UpdateUserInput input)
     {
         if (await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account && u.Id != input.Id))
             throw Oops.Oh(ErrorCodeEnum.D1003);
@@ -142,14 +142,14 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 删除用户
+    /// 删除用户 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [UnitOfWork]
     [ApiDescriptionSettings(Name = "Delete"), HttpPost]
     [DisplayName("删除用户")]
-    public async Task DeleteUser(DeleteUserInput input)
+    public virtual async Task DeleteUser(DeleteUserInput input)
     {
         var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
         if (user.AccountType == AccountTypeEnum.SuperAdmin)
@@ -170,34 +170,34 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 查看用户基本信息
+    /// 查看用户基本信息 🔖
     /// </summary>
     /// <returns></returns>
     [DisplayName("查看用户基本信息")]
-    public async Task<SysUser> GetBaseInfo()
+    public virtual async Task<SysUser> GetBaseInfo()
     {
         return await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId);
     }
 
     /// <summary>
-    /// 更新用户基本信息
+    /// 更新用户基本信息 🔖
     /// </summary>
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "BaseInfo"), HttpPost]
     [DisplayName("更新用户基本信息")]
-    public async Task<int> UpdateBaseInfo(SysUser user)
+    public virtual async Task<int> UpdateBaseInfo(SysUser user)
     {
         return await _sysUserRep.AsUpdateable(user)
             .IgnoreColumns(u => new { u.CreateTime, u.Account, u.Password, u.AccountType, u.OrgId, u.PosId }).ExecuteCommandAsync();
     }
 
     /// <summary>
-    /// 设置用户状态
+    /// 设置用户状态 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("设置用户状态")]
-    public async Task<int> SetStatus(UserInput input)
+    public virtual async Task<int> SetStatus(UserInput input)
     {
         if (_userManager.UserId == input.Id)
             throw Oops.Oh(ErrorCodeEnum.D1026);
@@ -228,7 +228,7 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 授权用户角色
+    /// 授权用户角色 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
@@ -244,12 +244,12 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 修改用户密码
+    /// 修改用户密码 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("修改用户密码")]
-    public async Task<int> ChangePwd(ChangePwdInput input)
+    public virtual async Task<int> ChangePwd(ChangePwdInput input)
     {
         var user = await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
         if (CryptogramUtil.CryptoType == CryptogramEnum.MD5.ToString())
@@ -282,12 +282,12 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 重置用户密码
+    /// 重置用户密码 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("重置用户密码")]
-    public async Task<string> ResetPwd(ResetPwdUserInput input)
+    public virtual async Task<string> ResetPwd(ResetPwdUserInput input)
     {
         var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
         var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
@@ -297,12 +297,12 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 解除登录锁定
+    /// 解除登录锁定 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("解除登录锁定")]
-    public async Task UnlockLogin(UnlockLoginInput input)
+    public virtual async Task UnlockLogin(UnlockLoginInput input)
     {
         var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
 
@@ -312,23 +312,23 @@ public class SysUserService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取用户拥有角色集合
+    /// 获取用户拥有角色集合 🔖
     /// </summary>
     /// <param name="userId"></param>
     /// <returns></returns>
     [DisplayName("获取用户拥有角色集合")]
-    public async Task<List<long>> GetOwnRoleList(long userId)
+    public virtual async Task<List<long>> GetOwnRoleList(long userId)
     {
         return await _sysUserRoleService.GetUserRoleIdList(userId);
     }
 
     /// <summary>
-    /// 获取用户扩展机构集合
+    /// 获取用户扩展机构集合 🔖
     /// </summary>
     /// <param name="userId"></param>
     /// <returns></returns>
     [DisplayName("获取用户扩展机构集合")]
-    public async Task<List<SysUserExtOrg>> GetOwnExtOrgList(long userId)
+    public virtual async Task<List<SysUserExtOrg>> GetOwnExtOrgList(long userId)
     {
         return await _sysUserExtOrgService.GetUserExtOrgList(userId);
     }