优化仓储
This commit is contained in:
@@ -63,18 +63,34 @@ namespace ZR.Repository
|
||||
{
|
||||
return Context.Updateable(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实体根据主键更新
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <param name="ignoreNullColumns"></param>
|
||||
/// <returns></returns>
|
||||
public int Update(T entity, bool ignoreNullColumns = false)
|
||||
{
|
||||
return Context.Updateable(entity).IgnoreColumns(ignoreNullColumns).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实体根据主键更新指定字段
|
||||
/// return Update(user, t => new { t.NickName, }, true);
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <param name="expression"></param>
|
||||
/// <param name="ignoreAllNull"></param>
|
||||
/// <returns></returns>
|
||||
public int Update(T entity, Expression<Func<T, object>> expression, bool ignoreAllNull = false)
|
||||
{
|
||||
return Context.Updateable(entity).UpdateColumns(expression).IgnoreColumns(ignoreAllNull).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据实体类更新指定列 eg:Update(dept, it => new { it.Status }, f => depts.Contains(f.DeptId));只更新Status列,条件是包含
|
||||
/// 根据指定条件更新指定列 eg:Update(new SysUser(){ }, it => new { it.Status }, f => f.Userid == 1));
|
||||
/// 只更新Status列,条件是包含
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <param name="expression"></param>
|
||||
|
||||
@@ -1,211 +0,0 @@
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Model;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System;
|
||||
|
||||
namespace ZR.Repository.System
|
||||
{
|
||||
/// <summary>
|
||||
/// 角色操作类
|
||||
/// </summary>
|
||||
[AppService(ServiceLifetime = LifeTime.Transient)]
|
||||
public class SysRoleRepository : BaseRepository<SysRole>
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询所有角色数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<SysRole> SelectRoleList()
|
||||
{
|
||||
return Context.Queryable<SysRole>()
|
||||
.Where(role => role.DelFlag == "0")
|
||||
.OrderBy(role => role.RoleSort)
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据条件分页查询角色数据
|
||||
/// </summary>
|
||||
/// <param name="sysRole"></param>
|
||||
/// <param name="pager"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<SysRole> SelectRoleList(SysRole sysRole, PagerInfo pager)
|
||||
{
|
||||
var exp = Expressionable.Create<SysRole>();
|
||||
exp.And(role => role.DelFlag == "0");
|
||||
exp.AndIF(!string.IsNullOrEmpty(sysRole.RoleName), role => role.RoleName.Contains(sysRole.RoleName));
|
||||
exp.AndIF(!string.IsNullOrEmpty(sysRole.Status), role => role.Status == sysRole.Status);
|
||||
exp.AndIF(!string.IsNullOrEmpty(sysRole.RoleKey), role => role.RoleKey == sysRole.RoleKey);
|
||||
|
||||
var query = Context.Queryable<SysRole>()
|
||||
.Where(exp.ToExpression())
|
||||
.OrderBy(x => x.RoleSort)
|
||||
.Select((role) => new SysRole
|
||||
{
|
||||
RoleId = role.RoleId.SelectAll(),
|
||||
UserNum = SqlFunc.Subqueryable<SysUserRole>().Where(f => f.RoleId == role.RoleId).Count()
|
||||
});
|
||||
|
||||
return query.ToPage(pager);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据用户查询
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public List<SysRole> SelectRolePermissionByUserId(long userId)
|
||||
{
|
||||
return Context.Queryable<SysRole>()
|
||||
.Where(role => role.DelFlag == "0")
|
||||
.Where(it => SqlFunc.Subqueryable<SysUserRole>().Where(s => s.UserId == userId).Any())
|
||||
.OrderBy(role => role.RoleSort)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过角色ID查询角色
|
||||
/// </summary>
|
||||
/// <param name="roleId">角色编号</param>
|
||||
/// <returns></returns>
|
||||
public SysRole SelectRoleById(long roleId)
|
||||
{
|
||||
return GetId(roleId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过角色ID删除角色
|
||||
/// </summary>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
public int DeleteRoleByRoleIds(long[] roleId)
|
||||
{
|
||||
return Delete(roleId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户所有角色信息
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public List<SysRole> SelectUserRoleListByUserId(long userId)
|
||||
{
|
||||
return Context.Queryable<SysUserRole, SysRole>((ur, r) => new JoinQueryInfos(
|
||||
JoinType.Left, ur.RoleId == r.RoleId
|
||||
)).Where((ur, r) => ur.UserId == userId)
|
||||
.Select((ur, r) => r).ToList();
|
||||
}
|
||||
|
||||
#region 用户角色对应菜单 用户N-1角色
|
||||
|
||||
/// <summary>
|
||||
/// 根据角色获取菜单id
|
||||
/// </summary>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
public List<SysRoleMenu> SelectRoleMenuByRoleId(long roleId)
|
||||
{
|
||||
return Context.Queryable<SysRoleMenu>().Where(it => it.Role_id == roleId).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据用户所有角色获取菜单
|
||||
/// </summary>
|
||||
/// <param name="roleIds"></param>
|
||||
/// <returns></returns>
|
||||
public List<SysRoleMenu> SelectRoleMenuByRoleIds(long[] roleIds)
|
||||
{
|
||||
return Context.Queryable<SysRoleMenu>().Where(it => roleIds.Contains(it.Role_id)).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量插入用户菜单
|
||||
/// </summary>
|
||||
/// <param name="sysRoleMenus"></param>
|
||||
/// <returns></returns>
|
||||
public int AddRoleMenu(List<SysRoleMenu> sysRoleMenus)
|
||||
{
|
||||
return Context.Insertable(sysRoleMenus).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除角色与菜单关联
|
||||
/// </summary>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
public int DeleteRoleMenuByRoleId(long roleId)
|
||||
{
|
||||
return Context.Deleteable<SysRoleMenu>().Where(it => it.Role_id == roleId).ExecuteCommand();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 添加角色
|
||||
/// </summary>
|
||||
/// <param name="sysRole"></param>
|
||||
/// <returns></returns>
|
||||
public long InsertRole(SysRole sysRole)
|
||||
{
|
||||
sysRole.Create_time = DateTime.Now;
|
||||
return InsertReturnBigIdentity(sysRole);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户角色
|
||||
/// </summary>
|
||||
/// <param name="sysRole"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateSysRole(SysRole sysRole)
|
||||
{
|
||||
var db = Context;
|
||||
sysRole.Update_time = db.GetDate();
|
||||
|
||||
return db.Updateable<SysRole>()
|
||||
.SetColumns(it => it.Update_time == sysRole.Update_time)
|
||||
.SetColumns(it => it.DataScope == sysRole.DataScope)
|
||||
.SetColumns(it => it.Remark == sysRole.Remark)
|
||||
.SetColumns(it => it.Update_by == sysRole.Update_by)
|
||||
//.SetColumns(it => it.MenuCheckStrictly == sysRole.MenuCheckStrictly)
|
||||
.SetColumns(it => it.DeptCheckStrictly == sysRole.DeptCheckStrictly)
|
||||
.SetColumnsIF(!string.IsNullOrEmpty(sysRole.RoleName), it => it.RoleName == sysRole.RoleName)
|
||||
.SetColumnsIF(!string.IsNullOrEmpty(sysRole.RoleKey), it => it.RoleKey == sysRole.RoleKey)
|
||||
.SetColumnsIF(sysRole.RoleSort >= 0, it => it.RoleSort == sysRole.RoleSort)
|
||||
.Where(it => it.RoleId == sysRole.RoleId)
|
||||
.ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更改角色权限状态
|
||||
/// </summary>
|
||||
/// <param name="role"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateRoleStatus(SysRole role)
|
||||
{
|
||||
return Context.Updateable(role).UpdateColumns(t => new { t.Status }).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查角色权限是否存在
|
||||
/// </summary>
|
||||
/// <param name="roleKey">角色权限</param>
|
||||
/// <returns></returns>
|
||||
public SysRole CheckRoleKeyUnique(string roleKey)
|
||||
{
|
||||
return GetFirst(it => it.RoleKey == roleKey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 校验角色名称是否唯一
|
||||
/// </summary>
|
||||
/// <param name="roleName">角色名称</param>
|
||||
/// <returns></returns>
|
||||
public SysRole CheckRoleNameUnique(string roleName)
|
||||
{
|
||||
return GetFirst(it => it.RoleName == roleName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Extensions;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.System.Dto;
|
||||
|
||||
namespace ZR.Repository.System
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户管理
|
||||
/// </summary>
|
||||
[AppService(ServiceLifetime = LifeTime.Transient)]
|
||||
public class SysUserRepository : BaseRepository<SysUser>
|
||||
{
|
||||
/// <summary>
|
||||
/// 根据条件分页查询用户列表
|
||||
/// <paramref name="user"/>
|
||||
/// <paramref name="user"/>
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<SysUser> SelectUserList(SysUser user, PagerInfo pager)
|
||||
{
|
||||
var exp = Expressionable.Create<SysUser>();
|
||||
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<SysDept> depts = Context.Queryable<SysDept>().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<SysUser>()
|
||||
.LeftJoin<SysDept>((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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过用户ID查询用户
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public SysUser SelectUserById(long userId)
|
||||
{
|
||||
return Context.Queryable<SysUser>().Filter(null, true).Where(f => f.UserId == userId).First();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 校验用户名是否存在
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
/// <returns></returns>
|
||||
public int CheckUserNameUnique(string userName)
|
||||
{
|
||||
return Context.Queryable<SysUser>().Where(it => it.UserName == userName).Count();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加用户
|
||||
/// </summary>
|
||||
/// <param name="sysUser"></param>
|
||||
/// <returns></returns>
|
||||
public int AddUser(SysUser sysUser)
|
||||
{
|
||||
sysUser.Create_time = DateTime.Now;
|
||||
return Context.Insertable(sysUser).ExecuteReturnIdentity();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重置密码
|
||||
/// </summary>
|
||||
/// <param name="userid"></param>
|
||||
/// <param name="password"></param>
|
||||
/// <returns></returns>
|
||||
public int ResetPwd(long userid, string password)
|
||||
{
|
||||
return Context.Updateable(new SysUser() { UserId = userid, Password = password })
|
||||
.UpdateColumns(it => new { it.Password }).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 改变用户状态
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
public int ChangeUserStatus(SysUser user)
|
||||
{
|
||||
return Context.Updateable(user).UpdateColumns(t => new { t.Status })
|
||||
.ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除用户(软删除)
|
||||
/// </summary>
|
||||
/// <param name="userid">用户id</param>
|
||||
/// <returns></returns>
|
||||
public int DeleteUser(long userid)
|
||||
{
|
||||
return Context.Updateable(new SysUser() { UserId = userid, DelFlag = "2" })
|
||||
.UpdateColumns(t => t.DelFlag)
|
||||
.ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户信息
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户头像
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdatePhoto(SysUser user)
|
||||
{
|
||||
return Context.Updateable<SysUser>()
|
||||
.SetColumns(t => new SysUser()
|
||||
{
|
||||
Avatar = user.Avatar
|
||||
})
|
||||
.Where(f => f.UserId == user.UserId).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="user">登录实体</param>
|
||||
/// <returns></returns>
|
||||
public SysUser Login(LoginBodyDto user)
|
||||
{
|
||||
return GetFirst(it => it.UserName == user.Username && it.Password == user.Password);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改登录信息
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public void UpdateLoginInfo(LoginBodyDto user, long userId)
|
||||
{
|
||||
var db = Context;
|
||||
db.Updateable(new SysUser() { LoginIP = user.LoginIP, LoginDate = db.GetDate(), UserId = userId })
|
||||
.UpdateColumns(it => new { it.LoginIP, it.LoginDate })
|
||||
.ExecuteCommand();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Extensions;
|
||||
using SqlSugar;
|
||||
using System.Collections.Generic;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.System.Dto;
|
||||
|
||||
namespace ZR.Repository.System
|
||||
{
|
||||
[AppService(ServiceLifetime = LifeTime.Transient)]
|
||||
public class SysUserRoleRepository : BaseRepository<SysUserRole>
|
||||
{
|
||||
/// <summary>
|
||||
/// 批量删除角色对应用户
|
||||
/// </summary>
|
||||
/// <param name="roleId">角色id</param>
|
||||
/// <param name="userIds">用户id集合</param>
|
||||
/// <returns></returns>
|
||||
public int DeleteRoleUserByUserIds(long roleId, List<long> userIds)
|
||||
{
|
||||
return Context.Deleteable<SysUserRole>().Where(it => it.RoleId == roleId && userIds.Contains(it.UserId))
|
||||
.ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户数据根据角色id
|
||||
/// </summary>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
public List<SysUser> GetSysUsersByRoleId(long roleId)
|
||||
{
|
||||
return Context.Queryable<SysUserRole, SysUser>((t1, u) => new JoinQueryInfos(
|
||||
JoinType.Left, t1.UserId == u.UserId))
|
||||
.Where((t1, u) => t1.RoleId == roleId && u.DelFlag == "0")
|
||||
.Select((t1, u) => u)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户数据根据角色id
|
||||
/// </summary>
|
||||
/// <param name="roleUserQueryDto"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<SysUser> GetSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
|
||||
{
|
||||
var query = Context.Queryable<SysUserRole, SysUser>((t1, u) => new JoinQueryInfos(
|
||||
JoinType.Left, t1.UserId == u.UserId))
|
||||
.Where((t1, u) => t1.RoleId == roleUserQueryDto.RoleId && u.DelFlag == "0");
|
||||
if (!string.IsNullOrEmpty(roleUserQueryDto.UserName))
|
||||
{
|
||||
query = query.Where((t1, u) => u.UserName.Contains(roleUserQueryDto.UserName));
|
||||
}
|
||||
return query.Select((t1, u) => u).ToPage(roleUserQueryDto);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取尚未指派的用户数据根据角色id
|
||||
/// </summary>
|
||||
/// <param name="roleUserQueryDto"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<SysUser> GetExcludedSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
|
||||
{
|
||||
var query = Context.Queryable<SysUser>()
|
||||
.Where(it => it.DelFlag == "0")
|
||||
.Where(it => SqlFunc.Subqueryable<SysUserRole>().Where(s => s.UserId == it.UserId && s.RoleId == roleUserQueryDto.RoleId).NotAny())
|
||||
.WhereIF(roleUserQueryDto.UserName.IsNotEmpty(), it => it.UserName.Contains(roleUserQueryDto.UserName));
|
||||
|
||||
return query.ToPage(roleUserQueryDto);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user