优化仓储

This commit is contained in:
不做码农
2022-10-20 18:30:05 +08:00
parent e6dc9448fd
commit b5326df532
15 changed files with 435 additions and 590 deletions

View File

@@ -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>
/// 根据实体类更新指定列 egUpdate(dept, it => new { it.Status }, f => depts.Contains(f.DeptId));只更新Status列条件是包含
/// 根据指定条件更新指定列 egUpdate(new SysUser(){ }, it => new { it.Status }, f => f.Userid == 1));
/// 只更新Status列条件是包含
/// </summary>
/// <param name="entity"></param>
/// <param name="expression"></param>

View File

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

View File

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

View File

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