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();
}
}
}