public static User GetUser(int id, string token) { using var db = new MyForContext(); DB.Tables.Account user = db.Accounts.AsNoTracking().FirstOrDefault(p => p.Id == id && p.Token.ToString() == token); if (user is null) { return(new User(User.EMPTY)); } return(new User(user.Id)); }
/// <summary> /// 添加一个账号 /// </summary> /// <param name="newAccount"></param> /// <returns></returns> public async Task <Resp> AddAccount(Models.NewAccount newAccount) { (bool isValid, string msg) = newAccount.IsValid(); if (!isValid) { return(Resp.Fault(msg)); } using var db = new MyForContext(); if (await db.Accounts.AnyAsync(a => a.AccountName == newAccount.AccountName)) { return(Resp.Fault("账号名已经存在")); } //if (await db.Accounts.AnyAsync(a => a.Email == newAccount.Email)) int avatarId; if (newAccount.Avatar is null) { avatarId = User.GetDefaultAvatarId(); } else { Files.File file = new Files.File(); avatarId = await file.SaveFileToDBAsync(newAccount.Avatar); } DB.Tables.Account model = new DB.Tables.Account { AccountName = newAccount.AccountName, Password = newAccount.Password, AvatarId = avatarId, Email = newAccount.Email, Phone = newAccount.Phone, Gender = newAccount.Gender, CreateById = newAccount.CreatorId }; db.Accounts.Add(model); int suc = await db.SaveChangesAsync(); if (suc == 1) { return(Resp.Success(Resp.NONE, "添加成功")); } return(Resp.Fault(msg: "添加账号失败")); }
public static string GetName(int id) { string key = $"3c82d8b0-421a-4686-a003-b01e71cf9933_{id}"; string name = Cache.Get <string>(key); if (name is null) { using var db = new MyForContext(); DB.Tables.Account account = db.Accounts.AsNoTracking() .FirstOrDefault(a => a.Id == id); name = account?.AccountName ?? ""; _ = Cache.Set(key, name, 10); } return(name); }
/// <summary> /// 登出 /// </summary> public async Task <Resp> Logout() { using var db = new MyForContext(); DB.Tables.Account account = await db.Accounts.FirstOrDefaultAsync(a => a.Id == Id); if (account is null) { return(Resp.NeedLogin(Resp.NONE, "请重新登录")); } account.Token = Guid.NewGuid(); int suc = await db.SaveChangesAsync(); if (suc == 1) { return(Resp.Success(Resp.NONE, "成功")); } return(Resp.Fault(Resp.NONE, "失败")); }
/// <summary> /// 启用管理员 /// </summary> /// <param name="description">启用理由</param> /// <returns></returns> public async Task <Resp> EnabledAsync(string description) { using var db = new MyForContext(); DB.Tables.Account account = await db.Accounts.FirstOrDefaultAsync(c => c.Id == Id); if (account is null) { return(Resp.Fault(null, "找不到该用户")); } account.State = (int)StandardStates.Enabled; int suc = await db.SaveChangesAsync(); if (suc == 1) { return(Resp.Success()); } return(Resp.Fault(null, "启用失败")); }
/// <summary> /// 获取管理员详情 /// </summary> /// <returns></returns> public async Task <Resp> GetDetail() { using var db = new MyForContext(); DB.Tables.Account account = await db.Accounts.AsNoTracking() .Include(a => a.Avatar) .FirstOrDefaultAsync(a => a.Id == Id); if (account is null) { return(Resp.Fault(null, "找不到该管理员")); } Models.AccountDetail_Result detail = new Models.AccountDetail_Result { Account = account.AccountName, Avatar = account.Avatar.Path, Email = account.Email, Phone = account.Phone, Gender = account.Gender, CreateDate = account.CreateDate.ToStandardString() }; return(Resp.Success(detail)); }
/// <summary> /// 修改头像 /// </summary> /// <param name="avatar"></param> /// <returns></returns> public async Task <Resp> ChangeAvatar(IFormFile avatar) { if (avatar is null) { return(Resp.Fault(Resp.NONE, "头像不能为空")); } using var db = new MyForContext(); DB.Tables.Account account = await db.Accounts.FirstOrDefaultAsync(a => a.Id == Id); if (account is null) { return(Resp.Fault(Resp.NONE, "管理员不存在")); } int oldAvatarId = account.AvatarId; Files.File file = new Files.File(); int newFileId = await file.SaveImageToDB(avatar); if (newFileId == Files.File.NOT_FILES) { return(Resp.Fault(Resp.NONE, "修改失败")); } account.AvatarId = newFileId; int suc = await db.SaveChangesAsync(); if (suc != 1) { return(Resp.Fault(Resp.NONE, "修改失败")); } // 删除旧头像文件 file.Delete(oldAvatarId); return(Resp.Success(Resp.NONE, "")); }
/// <summary> /// 更新 /// </summary> public async Task <Resp> Update(Models.UpdateAccountInfo info) { (bool isValid, string msg) = info.IsValid(); if (!isValid) { return(Resp.Fault(msg)); } using var db = new MyForContext(); DB.Tables.Account account = await db.Accounts.FirstOrDefaultAsync(a => a.Id == Id); account.Email = info.Email; account.Phone = info.Phone; account.Gender = int.Parse(info.Gender); int suc = await db.SaveChangesAsync(); if (suc == 1) { return(Resp.Success(Resp.NONE, "")); } return(Resp.Fault(Resp.NONE, "修改失败, 请重试")); }