Ver código fonte

解决冲突

wangh 2 anos atrás
pai
commit
ceb45f5755

+ 85 - 20
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -5,8 +5,6 @@ using System.IdentityModel.Tokens.Jwt;
 using System.Security.Claims;
 using StackExchange.Redis;
 using OASystem.Domain.Dtos.UserDto;
-using OASystem.Domain.Entities.System;
-using OASystem.Domain;
 using OASystem.RedisRepository;
 
 namespace OASystem.API.Controllers
@@ -20,11 +18,17 @@ namespace OASystem.API.Controllers
         private readonly IMapper _mapper;
         private readonly IConfiguration _config;
         private readonly LoginRepository _loginRep;
-        public AuthController(IConfiguration config, LoginRepository loginRep, IMapper mapper)
+        private readonly UsersRepository _usersRepository;
+        //private IDatabase _redis;
+        //private RedisHelper _redisHelper;
+        public AuthController(IConfiguration config, LoginRepository loginRep, IMapper mapper, 
+            SetDataRepository setDataRepository, CompanyRepository companyRepository, 
+            SystemMenuPermissionRepository systemMenuPermissionRepository)
         {
             _config = config;
             _loginRep = loginRep;
             _mapper = mapper;
+            //_usersRepository = usersRepository;
         }
 
         /// <summary>
@@ -32,14 +36,13 @@ namespace OASystem.API.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        [AllowAnonymous]
         [Route("login")]
         [HttpPost]
         [ProducesResponseType(typeof(LoginView), StatusCodes.Status200OK)]
         public async Task<IActionResult> LoginAsync(LoginDto dto)
         {
-            #region 校验用户信息,假设此处我们已经校验成功
-            var userData = _loginRep.Login(_loginRep, dto);
+            #region 校验用户信息 
+            var userData = _loginRep.Login(dto);
             if (userData.Result.Code != 0)
             {
                 if (userData.Result.Code != 0) { return Ok(JsonView(false, userData.Result.Msg)); }
@@ -47,23 +50,11 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, "暂无该员工信息!"));
             }
 
-            //人事审核是否通过
-            if (userData.Result.Data.HrAudit != 1)
-            {
-                return Ok(JsonView(false, "该员工账号暂无登录权限,人事审核未通过!"));
-            }
-
-            //该用户是否已删除
-            if (userData.Result.Data.HrAudit != 1)
-            {
-                return Ok(JsonView(false, "已离职员工没有登录权限"));
-            }
-
-
             #endregion
             var view = new LoginView
             {
-                Expires = DateTime.Now.AddMinutes(30)
+                Expires = DateTime.Now.AddMinutes(30),
+                UserInfo = userData.Result.Data
             };
 
             string authorId = dto.Number + "Token";
@@ -158,5 +149,79 @@ namespace OASystem.API.Controllers
 
             return Ok(JsonView(view));
         }
+
+        /// <summary>
+        /// 权限数据页面初始化
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [Authorize]
+        [HttpPost("GetAuth")]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetAuth(AuthDto dto)
+        {
+            Result result = new Result();
+
+            //模块数据
+            var setDataResult = await _setDataRepository.GetSySDefultModule(_setDataRepository);
+            if (setDataResult.Code != 0)
+            {
+                return Ok(JsonView(setDataResult.Msg)) ;
+            }
+
+            List<SetDataView> setDataList = _mapper.Map<List<SetDataView>>(setDataResult.Data);
+            var mod = setDataList.Find(x => x.Name == "权限模块");
+            if (mod == null)
+            {
+                return Ok(JsonView("未找到权限模块!"));
+            }
+
+            //页面数据
+            var SystemMenuPermissionData = _SystemMenuPermissionRepository.GetSystemMenuViweData(_SystemMenuPermissionRepository, mod.Id, dto.pageSize,dto.currentPage);
+            if (SystemMenuPermissionData.Code != 0)
+            {
+                return Ok(JsonView(SystemMenuPermissionData.Msg));
+            }
+
+            //公司数据
+            var CompanyDataResult = _CompanyRepository.GetCompanyData(_CompanyRepository);
+            if (CompanyDataResult.Code != 0)
+            {
+                return Ok(JsonView(CompanyDataResult.Msg));
+            }
+            
+            result.Code = 0;
+            result.Msg = "成功!";
+            var Dyresult = new
+            {
+                setDataResult = setDataResult.Data,
+                CompanyDataResult = CompanyDataResult.Data,
+                SystemMenuPermissionData = SystemMenuPermissionData.Data
+            };
+
+            return Ok(JsonView(200 ,"成功!", Dyresult));
+        }
+
+        /// <summary>
+        /// 查询部门
+        /// </summary>
+        /// <param name="companyid"></param>
+        /// <returns></returns>
+        [Authorize]
+        [HttpPost("QueryDepartmentListByCompId")]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public IActionResult QueryDepartmentListByCompId(int companyid)
+        {
+
+
+
+
+
+            return Ok(JsonView(""));
+        }
+
+
+
+
     }
 }

+ 9 - 1
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -7,7 +7,7 @@ namespace OASystem.API.Controllers
     /// <summary>
     /// 系统设置
     /// </summary>
-    //[Authorize]
+    [Authorize]
     [Route("api/[controller]/[action]")]
     public class SystemController : ControllerBase
     {
@@ -400,6 +400,14 @@ namespace OASystem.API.Controllers
             }
            
         }
+
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> AddUser(AddUserDto dto)
+        {
+            int id = 0;
+            return Ok(JsonView(true, "添加成功!", new { Id = id }));
+        }
         #endregion
 
     }

+ 6 - 0
OASystem/OASystem.Api/OASystemAuthentication.cs

@@ -0,0 +1,6 @@
+namespace OASystem.API
+{
+    public class OASystemAuthentication
+    {
+    }
+}

+ 15 - 0
OASystem/OASystem.Api/Program.cs

@@ -173,8 +173,23 @@ builder.Services.AddScoped<IMapper, Mapper>();
 
 #endregion
 
+#region ¿çÓòÅäÖÃ
+builder.Services.AddCors(c =>
+{
+    c.AddPolicy("AllowAllOrigins", policy =>
+    {
+        policy.AllowAnyOrigin()
+        .AllowAnyMethod()
+        .AllowAnyHeader();
+    });
+});
+#endregion
+
+
 var app = builder.Build();
 
+app.UseCors("AllowAllOrigins");
+
 // Configure the HTTP request pipeline.
 if (!app.Environment.IsDevelopment())
 {

+ 3 - 3
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -30,9 +30,9 @@ namespace OASystem.Domain.AutoMappers
 
             #region 用户板块
             CreateMap<UserDto, Sys_Users>();
-            CreateMap<Sys_Users, UserInfoView>();
-            CreateMap<UserInfoView,UserIView>();
-            CreateMap<UserInfoView, UserIWebView>();
+            CreateMap<Sys_Users, UserInfo>();
+
+
             #endregion
 
         }

+ 7 - 0
OASystem/OASystem.Domain/Dtos/System/UserDto.cs

@@ -20,4 +20,11 @@ namespace OASystem.Domain.Dtos.System
         /// </summary>
         public int DepId { get;set; }
     }
+    /// <summary>
+    /// 员工添加dto
+    /// </summary>
+    public class AddUserDto
+    {
+
+    }
 }

+ 44 - 16
OASystem/OASystem.Domain/Entities/Resource/Res_CarData.cs

@@ -33,7 +33,7 @@ namespace OASystem.Domain.Entities.Resource
         /// <summary>
         /// 联系人
         /// </summary>
-        [SugarColumn(IsNullable = true,ColumnDataType = "varchar(30)")]
+        [SugarColumn(IsNullable = true,ColumnDataType = "varchar(50)")]
         public string Contact { get; set; }
 
         /// <summary>
@@ -54,10 +54,24 @@ namespace OASystem.Domain.Entities.Resource
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
         public string ContactFax { get; set; }
 
+        /// <summary>
+        /// 车描述
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string CarDes { get; set; }
+
+        /// <summary>
+        /// 车图片路径
+        /// 存储多个 使用/r/n
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string CarPicPaths { get; set; }
+
+
         /// <summary>
         /// 其他信息
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         public string OtherInfo { get; set; }
 
         /// <summary>
@@ -67,52 +81,66 @@ namespace OASystem.Domain.Entities.Resource
         public int Score { get; set; }
 
         /// <summary>
-        /// 着装得体
+        /// 相关的车辆资质
         /// A B C  选择
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
-        public string SuitScore { get; set; }
+        public string QualificationScore { get; set; }
 
         /// <summary>
-        /// 服务意识强度
+        /// 车辆2-4年新,VIP及以上需要2年新
         /// A B C  选择
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
-        public string ServeScore { get; set; }
+        public string CarAgeScore { get; set; }
 
         /// <summary>
-        /// 讲解水平专业
+        /// 车身干净,无文字图片等
         /// A B C  选择
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
-        public string TalkProScore { get; set; }
+        public string CleanImgScore { get; set; }
 
         /// <summary>
-        /// 时间概念强度
+        /// 车内整洁、无异味
         /// A B C  选择
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
-        public string TimeScore { get; set; }
+        public string SmellScore { get; set; }
+
+        /// <summary>
+        /// 提前备水,纸巾等
+        /// A B C  选择
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
+        public string WaterPaperScore { get; set; }
+
+        /// <summary>
+        /// 车辆配置高(皮座椅等)
+        /// A B C  选择
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
+        public string HardwareScore { get; set; }
 
         /// <summary>
-        /// 配合能力强,服从安排
+        /// 时间概念强
         /// A B C  选择
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
-        public string FitScore { get; set; }
+        public string TimeScore { get; set; }
 
         /// <summary>
-        /// 应变能力强
+        /// 安全意识高
         /// A B C  选择
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
-        public string StrainScore { get; set; }
+        public string SafetyScore { get; set; }
 
         /// <summary>
-        /// 当地语言和中文表达流畅
+        /// 司机驾龄时间长,提前熟悉路线
         /// A B C  选择
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
-        public string LocalAndChineseScore { get; set; }
+        public string DrivingAgeScore { get; set; }
     }
 }

+ 2 - 2
OASystem/OASystem.Domain/Entities/Resource/Res_LocalGuideData.cs

@@ -33,7 +33,7 @@ namespace OASystem.Domain.Entities.Resource
         /// <summary>
         /// 联系人
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string Contact { get; set; }
 
         /// <summary>
@@ -57,7 +57,7 @@ namespace OASystem.Domain.Entities.Resource
         /// <summary>
         /// 其他信息
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         public string OtherInfo { get; set; }
 
         /// <summary>

+ 1 - 1
OASystem/OASystem.Domain/Entities/System/Sys_Users.cs

@@ -162,7 +162,7 @@ namespace OASystem.Domain.Entities.System
     /// 用户表
     /// 数据库查询接受实体类
     /// </summary>
-    public class UserInfoView : Sys_Users
+    public class UserInfo : Sys_Users
     {
         /// <summary>
         /// 公司名称

+ 10 - 7
OASystem/OASystem.Domain/ViewModels/CompanyView.cs

@@ -1,9 +1,4 @@
 using OASystem.Domain.Entities.System;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace OASystem.Domain.ViewModels
 {
@@ -13,12 +8,20 @@ namespace OASystem.Domain.ViewModels
     public class CompanyView
     {
         /// <summary>
-        /// 公司Id
+        /// 公司id
         /// </summary>
-        public int Id { get; set; }
+        public int id { get; set; }
+        /// <summary>
+        /// 公司Code
+        /// </summary>
+        public string CompanyCode { get; set; }
         /// <summary>
         /// 公司名称
         /// </summary>
         public string CompanyName { get; set; }
+        /// <summary>
+        /// 父级公司Id
+        /// </summary>
+        public int ParentCompanyId { get; set; }
     }
 }

+ 4 - 1
OASystem/OASystem.Domain/ViewModels/LoginView.cs

@@ -15,5 +15,8 @@ public class LoginView
     /// </summary>
     public DateTime Expires { get; set; }
 
-
+    /// <summary>
+    /// 返回用户信息
+    /// </summary>
+    public object? UserInfo { get; set; }
 }

+ 14 - 3
OASystem/OASystem.Domain/ViewModels/System/DepartmentView.cs

@@ -7,15 +7,26 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.ViewModels.System
 {
-    public class DepartmentIView
+    public class DepartmentView
     {
         /// <summary>
-        /// 用户Id
+        /// id
         /// </summary>
-        public int Id { get; set; }
+        public int id { get; set; }
+
+        /// <summary>
+        /// 公司Id
+        /// </summary>
+        public int CompanyId { get; set; }
+
         /// <summary>
         /// 部门名称
         /// </summary>
         public string DepName { get; set; }
+
+        /// <summary>
+        /// 父级部门Id
+        /// </summary>
+        public int ParentDepId { get; set; }
     }
 }

+ 43 - 36
OASystem/OASystem.Domain/ViewModels/System/UserInfoView.cs

@@ -7,7 +7,7 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.ViewModels.System
 {
-    
+
     /// <summary>
     /// 用户数据 数据库返回数据实体接受类
     /// 查询返回View
@@ -29,7 +29,7 @@ namespace OASystem.Domain.ViewModels.System
         /// </summary>
 
         public int DepId { get; set; }
-       
+
         /// <summary>
         /// 部门名称
         /// </summary>
@@ -45,17 +45,17 @@ namespace OASystem.Domain.ViewModels.System
         /// <summary>
         /// 用户Id
         /// </summary>
-        public int Id { get; set; }
+        public int UserId { get; set; }
         /// <summary>
         /// 中文姓名
         /// </summary>
-        
+
         public string CnName { get; set; }
-       
+
         /// <summary>
         /// 工号
         /// </summary>
-        
+
         public string Number { get; set; }
 
         /// <summary>
@@ -66,23 +66,23 @@ namespace OASystem.Domain.ViewModels.System
         /// <summary>
         /// 手机号
         /// </summary>
-        
+
         public string Phone { get; set; }
         /// <summary>
         /// 紧急联系人 手机号
         /// </summary>
-        
+
         public string UrgentPhone { get; set; }
         /// <summary>
         /// 邮箱
         /// </summary>
-        
+
         public string Email { get; set; }
     }
 
+
     /// <summary>
-    /// 用户数据 - Web
-    /// 查询返回View
+    /// 用户信息 - 个人基本信息 登陆时返回信息
     /// </summary>
     public class UserLoginInfoView
     {
@@ -91,15 +91,10 @@ namespace OASystem.Domain.ViewModels.System
         ///// </summary>
         ////public string Number { get; set; }
 
-        /// <summary>
-        /// 工号
-        /// </summary>
-        public string Number { get; set; }
-
         /// <summary>
         /// 用户Id
         /// </summary>
-        public int Id { get; set; }
+        public int UserId { get; set; }
 
         /// <summary>
         /// 中文姓名
@@ -107,26 +102,24 @@ namespace OASystem.Domain.ViewModels.System
         public string CnName { get; set; }
 
         /// <summary>
-        /// 公司Id
+        /// 公司名称
         /// </summary>
-        public int CompanyId { get; set; }
+        public string CompanyName { get; set; }
 
         /// <summary>
-        /// 公司名称
+        /// 部门名称
         /// </summary>
-        public string CompanyName { get; set; }
+        public string DepName { get; set; }
 
         /// <summary>
-        /// 部门Id
+        /// 岗位名称
         /// </summary>
         public string JobName { get; set; }
 
         /// <summary>
-        /// 部门名称
+        /// 邮箱
         /// </summary>
-        public string Email { get; set; }
-    }
-
+        public int DepId { get; set; }
 
     /// <summary>
     /// 用户信息 - 个人基本信息
@@ -134,30 +127,44 @@ namespace OASystem.Domain.ViewModels.System
     public class UserBasicInfoView 
     {
         /// <summary>
-        /// 岗位名称
+        /// 用户Id
         /// </summary>
-        public string JobName { get; set; }
-       
+        public string DepName { get; set; }
+
         /// <summary>
-        /// 分机号
+        /// 岗位Id
+        /// </summary>
+        public int JobPostId { get; set; }
+        /// <summary>
+        /// 性别
+        /// 0 男1 女  2 未设置
         /// </summary>
 
-        public string Ext { get; set; }
+        public int Sex { get; set; }
 
         /// <summary>
-        /// 手机
+        /// 
         /// </summary>
-        public string Phone { get; set; }
+        public string Number { get; set; }
 
         /// <summary>
-        /// 紧急联系人 手机号
+        /// 公司名称
         /// </summary>
-        public string UrgentPhone { get; set; }
+        public string CompanyName { get; set; }
+
+        /// <summary>
+        /// 部门名称
+        /// </summary>
+        public string DepName { get; set; }
+
+        /// <summary>
+        /// 岗位名称
+        /// </summary>
+        public string JobName { get; set; }
 
         /// <summary>
         /// 邮箱
         /// </summary>
         public string Email { get; set; }
-
     }
 }

+ 18 - 5
OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs

@@ -1,7 +1,12 @@
 
+using AutoMapper;
 using OASystem.Domain;
+using OASystem.Domain.Dtos.System;
 using OASystem.Domain.Dtos.UserDto;
 using OASystem.Domain.Entities.System;
+using OASystem.Domain.ViewModels.System;
+using OASystem.Infrastructure.Repositories.System;
+using SqlSugar;
 
 namespace OASystem.Infrastructure.Repositories.Login
 {
@@ -9,6 +14,7 @@ namespace OASystem.Infrastructure.Repositories.Login
     {
         public LoginRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
         {
+            
         }
 
         /// <summary>
@@ -18,17 +24,24 @@ namespace OASystem.Infrastructure.Repositories.Login
         /// <param name="_loginRep"></param>
         /// <param name="loginDto"></param>
         /// <returns></returns>
-        public async Task<Result> Login(LoginRepository _loginRep, LoginDto loginDto)
+        public async Task<Result> Login(LoginDto loginDto)
         {
-            Result result = new Result();
+            Result result = new Result() { Code = -2 };
             string SQLWhere = string.Format("Where Number='{0}' And Password='{1}'", loginDto.Number, loginDto.Password);
             string sql = string.Format("Select * From Sys_Users With(NoLock) {0}", SQLWhere);
-            Sys_Users _entity = await _loginRep.GetSingleInfoBySqlWithNolockAsync(sql);
+            Sys_Users _entity = await GetSingleInfoBySqlWithNolockAsync(sql);
+
+
             if (_entity == null)
             {
-                result.Code = -2;
                 result.Msg = "暂无该账号信息!";
+                return result;
+            }
 
+            //人事审核是否通过
+            if (_entity.HrAudit != 1)
+            {
+                result.Msg = "该员工账号暂无登录权限,人事审核未通过!";
                 return result;
             }
 
@@ -53,7 +66,7 @@ namespace OASystem.Infrastructure.Repositories.Login
 
             result.Code = 0;
             result.Msg = "登录成功!";
-            result.Data = _entity;
+            result.Data = _userBasicInfo;
             return result;
 
         }

+ 36 - 7
OASystem/OASystem.Infrastructure/Repositories/System/CompanyRepository.cs

@@ -1,10 +1,5 @@
-using OASystem.Domain.Entities.System;
-using OASystem.Domain.ViewModels.System;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using OASystem.Domain;
+using OASystem.Domain.Entities.System;
 
 namespace OASystem.Infrastructure.Repositories.System
 {
@@ -14,5 +9,39 @@ namespace OASystem.Infrastructure.Repositories.System
         {
 
         }
+
+        /// <summary>
+        /// 获取所有公司数据
+        /// </summary>
+        /// <param name="_CompanyRepository"></param>
+        /// <returns></returns>
+        public Result GetCompanyData(CompanyRepository _CompanyRepository)
+        {
+            Result result = new Result();
+
+            string sql = "select * from Sys_Company where isdel = 0";
+            var DBdata =  _CompanyRepository.GetListBySqlWithNolock(sql);
+            if (DBdata == null || DBdata.Count == 0)
+            {
+                result.Code = -1;
+                result.Msg = "暂无数据!";
+                return result;
+            }
+
+            result.Code = 0;
+            result.Msg = "成功!";
+            result.Data = DBdata.Select(x=> new CompanyView
+            {
+                CompanyCode = x.CompanyCode,
+                CompanyName = x.CompanyName,
+                id = x.Id,
+                ParentCompanyId = x.ParentCompanyId
+            });
+            return result;
+        }
+
+
+
+
     }
 }

+ 16 - 6
OASystem/OASystem.Infrastructure/Repositories/System/DepartmentRepository.cs

@@ -1,11 +1,6 @@
-using OASystem.Domain.Dtos;
+using OASystem.Domain;
 using OASystem.Domain.Entities.System;
 using OASystem.Domain.ViewModels.System;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace OASystem.Infrastructure.Repositories.System
 {
@@ -14,5 +9,20 @@ namespace OASystem.Infrastructure.Repositories.System
         public DepartmentRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
         {
         }
+
+
+        public Result QueryDepListByCompId(DepartmentRepository _DepartmentRepository,int companyid)
+        {
+            Result result = new Result();
+            var DBdata =  _DepartmentRepository.QueryDto<Sys_Department, DepartmentView>(x => x.CompanyId == companyid);
+            if (DBdata != null && DBdata.Count() > 0)
+            {
+                result.Code = 0;
+                result.Msg = "成功!";
+                result.Data = DBdata;
+            }
+
+            return result;
+        }
     }
 }

+ 12 - 14
OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs

@@ -11,7 +11,7 @@ using System.Threading.Tasks;
 
 namespace OASystem.Infrastructure.Repositories.System
 {
-    public class UsersRepository : BaseRepository<UserInfoView, UserIView>
+    public class UsersRepository : BaseRepository<UserInfo, JsonView>
     {
         private readonly IMapper _mapper;
         public UsersRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
@@ -77,25 +77,23 @@ namespace OASystem.Infrastructure.Repositories.System
             }
             else if (portType == 2) //Android
             {
-                List<UserIView> _userDataList = _mapper.Map<List<UserIView>>(_userList);
-                if (_userDataList.Count != 0)
-                {
-                    result.Code = 0;
-                    result.Msg = "成功!";
-                    result.Data = _userDataList;
-                }
-                else
-                {
-                    result.Code = -1;
-                    result.Msg = "暂无数据!";
-                }
+                //List<UserView> _userDataList = _mapper.Map<List<UserView>>(_userList);
+                //if (_userDataList.Count != 0)
+                //{
+                //    result.Code = 0;
+                //    result.Msg = "成功!";
+                //    result.Data = _userDataList;
+                //}
+                //else
+                //{
+                //    result.Msg = "暂无数据!";
+                //}
             }
             else if (portType == 3) //IOS
             {
             }
             else
             {
-                result.Code = -1;
                 result.Msg = "暂无数据!";
             } 
             

+ 248 - 248
OASystem/OASystem.RedisRepository/RedisAsyncHelper/IRedisHelper.cs

@@ -53,256 +53,256 @@ namespace OASystem.RedisRepository.RedisAsyncHelper
 
         #region Redis数据类型—Hash
 
-        ///// <summary>
-        ///// 向Hash key中存储任意类型任意值
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="field"></param>
-        ///// <param name="value"></param>
-        ///// <returns>是否成功</returns>
-        //Task<bool> HashSetAsync<T>(string key, string field, T value);
+        /// <summary>
+        /// 向Hash key中存储任意类型任意值
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="field"></param>
+        /// <param name="value"></param>
+        /// <returns>是否成功</returns>
+        Task<bool> HashSetAsync<T>(string key, string field, T value);
 
-        ///// <summary>
-        ///// 批量 向Hash key中存储任意类型任意值
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="hashFields"></param>
-        ///// <returns>无返回值</returns>
-        //Task HashMultiSetAsync<T>(string key, Dictionary<string, T> hashFields);
+        /// <summary>
+        /// 批量 向Hash key中存储任意类型任意值
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="hashFields"></param>
+        /// <returns>无返回值</returns>
+        Task HashMultiSetAsync<T>(string key, Dictionary<string, T> hashFields);
 
-        ///// <summary>
-        ///// 对指定hash key中制定field做数量增加操作 默认自增1 
-        ///// 如果此操作前key不存在 则创建。 如果此操作前该field不存在或者非数字 则先被置0,再被继续操作
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="field"></param>
-        ///// <param name="incrCount"></param>
-        ///// <returns>操作后的结果</returns>
-        //Task<long> HashIncrementAsync(string key, string field, long incrCount = 1);
+        /// <summary>
+        /// 对指定hash key中制定field做数量增加操作 默认自增1 
+        /// 如果此操作前key不存在 则创建。 如果此操作前该field不存在或者非数字 则先被置0,再被继续操作
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="field"></param>
+        /// <param name="incrCount"></param>
+        /// <returns>操作后的结果</returns>
+        Task<long> HashIncrementAsync(string key, string field, long incrCount = 1);
 
-        ///// <summary>
-        ///// 对指定hash key中制定field做数量增加操作 默认自减1 
-        ///// 如果此操作前key不存在 则创建。 如果此操作前该field不存在或者非数字 则先被置0,再被继续操作
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="field"></param>
-        ///// <param name="decrCount"></param>
-        ///// <returns>操作后的结果</returns>
-        //Task<long> HashDecrementAsync(string key, string field, long decrCount = 1);
+        /// <summary>
+        /// 对指定hash key中制定field做数量增加操作 默认自减1 
+        /// 如果此操作前key不存在 则创建。 如果此操作前该field不存在或者非数字 则先被置0,再被继续操作
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="field"></param>
+        /// <param name="decrCount"></param>
+        /// <returns>操作后的结果</returns>
+        Task<long> HashDecrementAsync(string key, string field, long decrCount = 1);
 
-        ///// <summary>
-        ///// 从指定Hash中 删除指定field
-        ///// 如果key或者field不存在,则false
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="field"></param>
-        ///// <returns>是否成功</returns>
-        //Task<bool> HashDeleteFieldAsync(string key, string field);
+        /// <summary>
+        /// 从指定Hash中 删除指定field
+        /// 如果key或者field不存在,则false
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="field"></param>
+        /// <returns>是否成功</returns>
+        Task<bool> HashDeleteFieldAsync(string key, string field);
 
-        ///// <summary>
-        ///// 从指定Hash key中 批量删除指定field
-        ///// 如果key或者field不存在,则false
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="fields"></param>
-        ///// <returns>移除数量</returns>
-        //Task<long> HashMultiDeleteFieldAsync(string key, List<string> fields);
+        /// <summary>
+        /// 从指定Hash key中 批量删除指定field
+        /// 如果key或者field不存在,则false
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="fields"></param>
+        /// <returns>移除数量</returns>
+        Task<long> HashMultiDeleteFieldAsync(string key, List<string> fields);
 
-        ///// <summary>
-        ///// 从指定Hash key中获取指定field值
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="field"></param>
-        ///// <returns></returns>
-        //Task<T> HashGetAsync<T>(string key, string field);
+        /// <summary>
+        /// 从指定Hash key中获取指定field值
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="field"></param>
+        /// <returns></returns>
+        Task<T> HashGetAsync<T>(string key, string field);
 
-        ///// <summary>
-        ///// 从指定Hash key中判断field是否存在
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="field"></param>
-        ///// <returns></returns>
-        //Task<bool> HashFieldExistAsync(string key, string field);
+        /// <summary>
+        /// 从指定Hash key中判断field是否存在
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="field"></param>
+        /// <returns></returns>
+        Task<bool> HashFieldExistAsync(string key, string field);
 
-        ///// <summary>
-        ///// 获取指定Hash key中的所有field的值 
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<List<T>> HashValuesAsync<T>(string key);
+        /// <summary>
+        /// 获取指定Hash key中的所有field的值 
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<List<T>> HashValuesAsync<T>(string key);
 
-        ///// <summary>
-        ///// 获取指定Hash key中所有 field名称及其Value
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<Dictionary<string, T>> HashGetAllAsync<T>(string key);
+        /// <summary>
+        /// 获取指定Hash key中所有 field名称及其Value
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<Dictionary<string, T>> HashGetAllAsync<T>(string key);
 
-        ///// <summary>
-        ///// 获取指定Hash key中所有field
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<List<string>> HashFieldsAsync(string key);
+        /// <summary>
+        /// 获取指定Hash key中所有field
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<List<string>> HashFieldsAsync(string key);
 
         #endregion
 
         #region Redis数据类型—List     
 
-        ///// <summary>
-        ///// 在指定pivot后插入value, 如果pivot不存在,则返回-1, 如果key不存在,则返回0
-        ///// 如果存在多个相同指定的的pivot,则插入第一个指定pivot后面.
-        ///// 即链表从左向右查找,遇到指定pivot,则确定位置
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="pivot">list中的一个值</param>
-        ///// <param name="value"></param>
-        ///// <returns></returns>
-        //Task<long> ListInsertAfterAsync<T>(string key, string pivot, T value);
+        /// <summary>
+        /// 在指定pivot后插入value, 如果pivot不存在,则返回-1, 如果key不存在,则返回0
+        /// 如果存在多个相同指定的的pivot,则插入第一个指定pivot后面.
+        /// 即链表从左向右查找,遇到指定pivot,则确定位置
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="pivot">list中的一个值</param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task<long> ListInsertAfterAsync<T>(string key, string pivot, T value);
 
-        ///// <summary>
-        ///// 在指定pivot前插入value, 如果pivot不存在,则返回-1, 如果key不存在,则返回0
-        ///// 如果存在多个相同指定的的pivot,则插入第一个指定pivot前面.
-        ///// 即链表从左向右查找,遇到指定pivot,则确定位置
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="pivot"></param>
-        ///// <param name="value"></param>
-        ///// <returns></returns>
-        //Task<long> ListInsertBeforeAsync<T>(string key, string pivot, T value);
+        /// <summary>
+        /// 在指定pivot前插入value, 如果pivot不存在,则返回-1, 如果key不存在,则返回0
+        /// 如果存在多个相同指定的的pivot,则插入第一个指定pivot前面.
+        /// 即链表从左向右查找,遇到指定pivot,则确定位置
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="pivot"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task<long> ListInsertBeforeAsync<T>(string key, string pivot, T value);
 
-        ///// <summary>
-        ///// 从链表左侧弹出第一个元素(弹出能获取到该元素并且被删除)
-        ///// 如果key不存在 或者链表为空 则为null
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<T> ListLeftPopAsync<T>(string key);
+        /// <summary>
+        /// 从链表左侧弹出第一个元素(弹出能获取到该元素并且被删除)
+        /// 如果key不存在 或者链表为空 则为null
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<T> ListLeftPopAsync<T>(string key);
 
-        ///// <summary>
-        ///// 从链表左侧增加一个元素,key不存在则被创建
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="value"></param>
-        ///// <returns>返回操作后的链表长度</returns>
-        //Task<long> ListLeftPushAsync<T>(string key, T value);
+        /// <summary>
+        /// 从链表左侧增加一个元素,key不存在则被创建
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="value"></param>
+        /// <returns>返回操作后的链表长度</returns>
+        Task<long> ListLeftPushAsync<T>(string key, T value);
 
-        ///// <summary>
-        ///// 从链表左侧批量增加元素,如果 a b c  则c会在链表左侧第一位  b第二位  a第三位
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="values"></param>
-        ///// <returns>返回操作后的链表长度</returns>
-        //Task<long> ListLeftMultiPushAsync<T>(string key, List<T> values);
+        /// <summary>
+        /// 从链表左侧批量增加元素,如果 a b c  则c会在链表左侧第一位  b第二位  a第三位
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="values"></param>
+        /// <returns>返回操作后的链表长度</returns>
+        Task<long> ListLeftMultiPushAsync<T>(string key, List<T> values);
 
-        ///// <summary>
-        ///// 获取链表长度,不存在key则为0
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<long> ListLengthAsync<T>(string key);
+        /// <summary>
+        /// 获取链表长度,不存在key则为0
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<long> ListLengthAsync<T>(string key);
 
-        ///// <summary>
-        ///// 获取链表中所有数据,从左侧start开始到stop结束,从0—-1则认为获取全部,默认获取全部
-        ///// start为负数则代表从链表右侧开始,-1为右侧第一位,-2为右侧第二位
-        ///// start要小于stop,否则返回null
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="start"></param>
-        ///// <param name="stop"></param>
-        ///// <returns></returns>
-        //Task<List<T>> ListRangeAsync<T>(string key, long start = 0L, long stop = -1L);
+        /// <summary>
+        /// 获取链表中所有数据,从左侧start开始到stop结束,从0—-1则认为获取全部,默认获取全部
+        /// start为负数则代表从链表右侧开始,-1为右侧第一位,-2为右侧第二位
+        /// start要小于stop,否则返回null
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="start"></param>
+        /// <param name="stop"></param>
+        /// <returns></returns>
+        Task<List<T>> ListRangeAsync<T>(string key, long start = 0L, long stop = -1L);
 
-        ///// <summary>
-        ///// 从链表中一处count数量的value. count大于0则从左至右,count小于0则从右至左,count=0则移除全部
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="value"></param>
-        ///// <param name="count"></param>
-        ///// <returns></returns>
-        //Task<long> ListRemoveAsync<T>(string key, T value, long count = 0L);
+        /// <summary>
+        /// 从链表中一处count数量的value. count大于0则从左至右,count小于0则从右至左,count=0则移除全部
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="value"></param>
+        /// <param name="count"></param>
+        /// <returns></returns>
+        Task<long> ListRemoveAsync<T>(string key, T value, long count = 0L);
 
-        ///// <summary>
-        ///// 从右侧弹出第一个元素(弹出能获取到该元素并且被删除)
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<T> ListRightPopAsync<T>(string key);
+        /// <summary>
+        /// 从右侧弹出第一个元素(弹出能获取到该元素并且被删除)
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<T> ListRightPopAsync<T>(string key);
 
 
-        ///// <summary>
-        ///// 从链表右侧加入元素,如果 rpush a b c 则c为右侧第一位 b第二位 c第三位
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="value"></param>
-        ///// <returns></returns>
-        //Task<long> ListRightPushAsync<T>(string key, T value);
+        /// <summary>
+        /// 从链表右侧加入元素,如果 rpush a b c 则c为右侧第一位 b第二位 c第三位
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task<long> ListRightPushAsync<T>(string key, T value);
 
-        ///// <summary>
-        ///// 从右侧批量插入,和左侧相反
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="values"></param>
-        ///// <returns></returns>
-        //Task<long> ListRightMultiPushAsync<T>(string key, List<T> values);
+        /// <summary>
+        /// 从右侧批量插入,和左侧相反
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="values"></param>
+        /// <returns></returns>
+        Task<long> ListRightMultiPushAsync<T>(string key, List<T> values);
 
-        ///// <summary>
-        ///// 在链表指定索引处,插入元素
-        ///// 正数索引从0开始,代表左侧。负数从-1开始 代表从右侧。-1为右侧第一位
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="index"></param>
-        ///// <param name="value"></param>
-        ///// <returns></returns>
-        //Task ListSetByIndexAsync<T>(string key, int index, T value);
+        /// <summary>
+        /// 在链表指定索引处,插入元素
+        /// 正数索引从0开始,代表左侧。负数从-1开始 代表从右侧。-1为右侧第一位
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="index"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task ListSetByIndexAsync<T>(string key, int index, T value);
 
-        ///// <summary>
-        ///// 留下start到stop之间的数据。负数代表从右侧寻找  -1为右侧第一位
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="start"></param>
-        ///// <param name="stop"></param>
-        ///// <returns></returns>
-        //Task ListTrimAsync(string key, long start, long stop);
+        /// <summary>
+        /// 留下start到stop之间的数据。负数代表从右侧寻找  -1为右侧第一位
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="start"></param>
+        /// <param name="stop"></param>
+        /// <returns></returns>
+        Task ListTrimAsync(string key, long start, long stop);
 
-        ///// <summary>
-        ///// 获取指定index的值,负数代表从右侧寻找  -1为右侧第一位
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="index"></param>
-        ///// <returns></returns>
-        //Task<T> ListGetByIndexAsync<T>(string key, long index);
+        /// <summary>
+        /// 获取指定index的值,负数代表从右侧寻找  -1为右侧第一位
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        Task<T> ListGetByIndexAsync<T>(string key, long index);
 
         #endregion
 
         #region Redis数据类型—Set
 
-        ///// <summary>
-        ///// 向指定集合中增加一个元素
-        ///// </summary>
-        ///// <typeparam name="T"></typeparam>
-        ///// <param name="key"></param>
-        ///// <param name="value"></param>
-        ///// <returns></returns>
-        //Task<bool> SetAddAsync<T>(string key, T value);
+        /// <summary>
+        /// 向指定集合中增加一个元素
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="key"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task<bool> SetAddAsync<T>(string key, T value);
 
         ///// <summary>
         ///// 指定集合计算操作operation枚举,指定计算结果将存的目标destKey,指定需要参与计算的多个key
@@ -410,43 +410,43 @@ namespace OASystem.RedisRepository.RedisAsyncHelper
 
         #region Redis Key操作
 
-        ///// <summary>
-        ///// 删除指定key
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<bool> KeyDeleteAsync(string key);
+        /// <summary>
+        /// 删除指定key
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<bool> KeyDeleteAsync(string key);
 
-        ///// <summary>
-        ///// 设置key过期时间具体DateTime
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="expireAt"></param>
-        ///// <returns></returns>
+        /// <summary>
+        /// 设置key过期时间具体DateTime
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="expireAt"></param>
+        /// <returns></returns>
         //Task<bool> KeyExpireAtAsync(string key, DateTime expireAt);
 
-        ///// <summary>
-        ///// 设置key在将来的timeout后过期(TimeSpan)
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="timeout"></param>
-        ///// <returns></returns>
-        //Task<bool> KeyExpireInAsync(string key, TimeSpan timeout);
+        /// <summary>
+        /// 设置key在将来的timeout后过期(TimeSpan)
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="timeout"></param>
+        /// <returns></returns>
+        Task<bool> KeyExpireInAsync(string key, TimeSpan timeout);
 
-        ///// <summary>
-        ///// key重命名
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <param name="newKey"></param>
-        ///// <returns></returns>
-        //Task<bool> KeyRenameAsync(string key, string newKey);
+        /// <summary>
+        /// key重命名
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="newKey"></param>
+        /// <returns></returns>
+        Task<bool> KeyRenameAsync(string key, string newKey);
 
-        ///// <summary>
-        ///// 判断key是否已存在
-        ///// </summary>
-        ///// <param name="key"></param>
-        ///// <returns></returns>
-        //Task<bool> KeyExistsAsync(string key);
+        /// <summary>
+        /// 判断key是否已存在
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<bool> KeyExistsAsync(string key);
 
         #endregion
 

+ 31 - 0
OASystem/OASystem.RedisRepository/RedisAsyncHelper/RedisKeyHelperAsync.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.RedisRepository.RedisAsyncHelper
+{
+    internal partial class RedisHelper
+    {
+        public async Task<bool> KeyDeleteAsync(string key)
+        {
+            return await _client.KeyDeleteAsync(key);
+        }
+
+        public async Task<bool> KeyExpireInAsync(string key, TimeSpan timeout)
+        {
+            return await _client.KeyExpireAsync(key, timeout);
+        }
+
+        public async Task<bool> KeyRenameAsync(string key, string newKey)
+        {
+            return await _client.KeyRenameAsync(key, newKey);
+        }
+
+        public async Task<bool> KeyExistsAsync(string key)
+        {
+            return await _client.KeyExistsAsync(key);
+        }
+    }
+}

+ 19 - 0
OASystem/OASystem.RedisRepository/RedisAsyncHelper/RedisSetHelper.cs

@@ -0,0 +1,19 @@
+using OASystem.RedisRepository.CommonHelper;
+using StackExchange.Redis;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.RedisRepository.RedisAsyncHelper
+{
+    internal partial class RedisHelper
+    {
+        public async Task<bool> SetAddAsync<T>(string key, T value)
+        {
+            return await _client.SetAddAsync(key, SerializeHelper.Serialize(value));
+        }
+
+    }
+}