using Google.Protobuf.WellKnownTypes; using LinqToDB; using MasaBlazorApp3.DataAccess.Dao; using MasaBlazorApp3.Pojo; using MasaBlazorApp3.Pojo.Config; using MasaBlazorApp3.Util; using Microsoft.Extensions.Options; using System.Data; using System.Xml.Linq; namespace MasaBlazorApp3.DataAccess.Impl { public class UserDao : IUserDao { //private MyContext Context; private readonly AppDataConnection _connection; private readonly SettingConfig _setting; //public UserDao(MyContext context) //{ // Context = context; //} public UserDao(AppDataConnection connection, IOptions setting) { _connection = connection; _setting = setting.Value; } public async Task> GetAllByNickname(string nickname, int? take, int? skip) { var query = _connection.User.AsQueryable(); if (!String.IsNullOrEmpty(nickname)) { query = query.Where(r => r.NickName.IndexOf(nickname) > -1); } query = query.Where(u => u.MachineId == _setting.machineId); List list = await query .LoadWith(u => u.role) .OrderBy(u => u.Id) .Skip((int)skip) .Take((int)take) .ToListAsync(); int pagedData = await query.CountAsync(); return new PageData() { TotalDesserts = pagedData, Desserts = list }; } public User GetById(int id) { return _connection.User.LoadWith(u => u.role).FirstOrDefault(u => u.Id == id); } public User GetByUsername(string username) { return _connection.User.LoadWith(u => (u.role)).FirstOrDefault(u => u.Username == username&&u.MachineId== _setting.machineId); } public int InsertUser(User user) { user.MachineId = _setting.machineId; user.Password = MD5.GetMD5Hash("123456").ToLower(); return _connection.InsertWithInt32Identity(user); } public bool UpdateUser(User user) { var statement = _connection.User .Where(u => u.Id == user.Id) .Set(u => u.NickName, user.NickName) .Set(u => u.Username, user.Username) .Set(u => u.RoleId, user.RoleId); //if(!String.IsNullOrEmpty(user.Password)) //{ // statement.Set(u => user.Password, MD5.GetMD5Hash(user.Password).ToLower()); //} return statement.Update() > 0; } public bool DeleteeUser(int id) { return _connection.User.Where(u => u.Id == id).Delete() > 0; } //重置用户密码 public bool ResetPassword(int id) { var statement= _connection.User.Where(u => u.Id == id).Set(u=>u.Password, MD5.GetMD5Hash("123456").ToLower()); return statement.Update() > 0; } public async Task UpdateSign(int id, string sign) { var statement = _connection.User .Where(u => u.Id == id) .Set(u => u.Sign, Convert.FromBase64String(sign)); //if(!String.IsNullOrEmpty(user.Password)) //{ // statement.Set(u => user.Password, MD5.GetMD5Hash(user.Password).ToLower()); //} return (await statement.UpdateAsync()) > 0; } //修改密码 public bool UpdateUserPassword(User user) { var statement = _connection.User .Where(u => u.Id == user.Id) .Set(u => u.Password, MD5.GetMD5Hash(user.Password).ToLower()); return statement.Update() > 0; } } }