Example #1
0
        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));
        }
Example #2
0
        /// <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: "添加账号失败"));
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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, "失败"));
        }
Example #5
0
        /// <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, "启用失败"));
        }
Example #6
0
        /// <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));
        }
Example #7
0
        /// <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, ""));
        }
Example #8
0
        /// <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, "修改失败, 请重试"));
        }