using Infrastructure.Attribute; using Infrastructure.Extensions; using SqlSugar; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using ARW.Model; using ARW.Model.System; namespace ARW.Repository.System { /// /// 用户管理 /// [AppService(ServiceLifetime = LifeTime.Transient)] public class SysUserRepository : BaseRepository { /// /// 根据条件分页查询用户列表 /// /// /// /// public PagedInfo SelectUserList(SysUser user, PagerInfo pager) { var exp = Expressionable.Create(); exp.AndIF(!string.IsNullOrEmpty(user.UserName), u => u.UserName.Contains(user.UserName)); exp.AndIF(!string.IsNullOrEmpty(user.Status), u => u.Status == user.Status); exp.AndIF(user.BeginTime != DateTime.MinValue && user.BeginTime != null, u => u.Create_time >= user.BeginTime); exp.AndIF(user.EndTime != DateTime.MinValue && user.EndTime != null, u => u.Create_time <= user.EndTime); exp.AndIF(!user.Phonenumber.IsEmpty(), u => u.Phonenumber == user.Phonenumber); exp.And(u => u.DelFlag == "0"); if (user.DeptId != 0) { List depts = Context.Queryable().ToList(); var newDepts = depts.FindAll(delegate (SysDept dept) { string[] parentDeptId = dept.Ancestors.Split(",", StringSplitOptions.RemoveEmptyEntries); return parentDeptId.Contains(user.DeptId.ToString()); }); string[] deptArr = newDepts.Select(x => x.DeptId.ToString()).ToArray(); exp.AndIF(user.DeptId != 0, u => u.DeptId == user.DeptId || deptArr.Contains(u.DeptId.ToString())); } var query = Context.Queryable() .LeftJoin((u, dept) => u.DeptId == dept.DeptId) .Where(exp.ToExpression()) .Select((u, dept) => new SysUser { UserId = u.UserId.SelectAll(), DeptName = dept.DeptName, }); return query.ToPage(pager); } /// /// 通过用户ID查询用户 /// /// /// public SysUser SelectUserById(long userId) { return Context.Queryable().Filter(null, true).Where(f => f.UserId == userId).First(); } /// /// 校验用户名是否存在 /// /// /// public int CheckUserNameUnique(string userName) { return Context.Queryable().Where(it => it.UserName == userName).Count(); } /// /// 添加用户 /// /// /// public int AddUser(SysUser sysUser) { sysUser.Create_time = DateTime.Now; return Context.Insertable(sysUser).ExecuteReturnIdentity(); } /// /// 重置密码 /// /// /// /// public int ResetPwd(long userid, string password) { return Context.Updateable(new SysUser() { UserId = userid, Password = password }) .UpdateColumns(it => new { it.Password }).ExecuteCommand(); } /// /// 改变用户状态 /// /// /// public int ChangeUserStatus(SysUser user) { return Context.Updateable(user).UpdateColumns(t => new { t.Status }) .ExecuteCommand(); } /// /// 删除用户(软删除) /// /// 用户id /// public int DeleteUser(long userid) { return Context.Updateable(new SysUser() { UserId = userid, DelFlag = "2" }) .UpdateColumns(t => t.DelFlag) .ExecuteCommand(); } /// /// 修改用户信息 /// /// /// public int UpdateUser(SysUser user) { return Context.Updateable(user) .UpdateColumns(t => new { t.NickName, t.Email, t.Phonenumber, t.DeptId, t.Status, t.Sex, t.PostIds, t.Remark, t.Update_by, t.Update_time }) .IgnoreColumns(ignoreAllNullColumns: true)//忽略所有为null .Where(f => f.UserId == user.UserId).ExecuteCommand(); } /// /// 修改用户头像 /// /// /// public int UpdatePhoto(SysUser user) { return Context.Updateable() .SetColumns(t => new SysUser() { Avatar = user.Avatar }) .Where(f => f.UserId == user.UserId).ExecuteCommand(); } } }