public virtual async Task AddLoginAsync(TUser user, UserLoginInfo login) { user.CheckNotNull("user"); login.CheckNotNull("login"); TUserLogin userLogin = new TUserLogin() { LoginProvider = login.LoginProvider, ProviderKey = login.ProviderKey, User = user }; await UserLoginRepository.InsertAsync(userLogin); }
/// <summary> /// 添加用户登录信息 /// </summary> /// <param name="inputDtos">要添加的用户登录信息Dtos集合</param> /// <param name="cacheUser">当前操作用户的缓存</param> /// <returns>业务操作结果</returns> public async Task <OperationResult> AddUserLogin(CacheUser cacheUser, params UserLoginInputDto[] inputDtos) { try { if (inputDtos.Length <= 0) { return(new OperationResult(OperationResultType.Error, "添加用户的数组不存在存数!")); } else { List <string> names = new List <string>(); UserLoginRepository.UnitOfWork.BeginTransaction(); foreach (UserLoginInputDto dto in inputDtos) { if (cacheUser.Level >= dto.Level) { return(new OperationResult(OperationResultType.ValidError, $"用户:{dto.UserName}权限等级参数设置错误")); } UserLogin value = dto.MapTo <UserLogin>(); value.SecretKey = new Random().NextLetterString(16); value.Password = value.Password.AESEncrypt128(key: value.SecretKey); value.UserMany.Add(new User { CreatedTime = DateTime.Now, CreatorUserId = cacheUser.UserName, LastUpdatedTime = DateTime.Now, UserLoginOne = value, }); await UserLoginRepository.InsertAsync(value); if (value.Level == 2) { int count = UserOrganizeMapRepository.CheckExists(m => m.Organize_Id == value.Organize_Id && m.UserLogin_Id == value.Id) ? 0 : UserOrganizeMapRepository.Insert(new UserOrganizeMap { Organize_Id = value.Organize_Id, UserLogin_Id = value.Id }); } names.Add(value.UserName); } UserLoginRepository.UnitOfWork.Commit(); if (names.Count == 0) { return(new OperationResult(OperationResultType.NoChanged, "未能添加任何用户")); } else { return(new OperationResult(OperationResultType.Success, "用户:{0}创建成功".FormatWith(names.ExpandAndToString()))); } } } catch (Exception ex) { throw new Exception($"id:{ex.InnerException.Message}"); } }
/// <summary> /// 绑定小程序至账号 /// </summary> /// <param name="encrpytedUserId"></param> /// <returns></returns> public virtual async Task BindLogin(string encryptedUserId, string openId) { if (!int.TryParse(SimpleStringCipher.Instance.Decrypt(encryptedUserId, AppConsts.DefaultPassPhrase), out var userid)) { throw new UserFriendlyException("未找到对应用户"); } var user = await UserRepository.GetAll().IgnoreQueryFilters().Where(o => o.Id == userid).SingleAsync(); await UserLoginRepository.DeleteAsync(o => o.UserId == userid && o.LoginProvider == MiniProgramAuthProviderApi.Name); var userlogin = new UserLogin() { UserId = userid, LoginProvider = MiniProgramAuthProviderApi.Name, TenantId = user.TenantId, ProviderKey = openId }; await UserLoginRepository.InsertAsync(userlogin); }