|
@@ -20,15 +20,18 @@ namespace Services
|
|
|
public class SysUserService : BaseService<SysUser>, ISysUserService
|
|
|
{
|
|
|
private readonly ISysRoleService RoleService;
|
|
|
+ private readonly ISysPostService PostService;
|
|
|
private readonly ISysUserRoleService UserRoleService;
|
|
|
private readonly ISysUserPostService UserPostService;
|
|
|
|
|
|
public SysUserService(
|
|
|
ISysRoleService sysRoleService,
|
|
|
+ ISysPostService sysPostService,
|
|
|
ISysUserRoleService userRoleService,
|
|
|
ISysUserPostService userPostService)
|
|
|
{
|
|
|
RoleService = sysRoleService;
|
|
|
+ PostService = sysPostService;
|
|
|
UserRoleService = userRoleService;
|
|
|
UserPostService = userPostService;
|
|
|
}
|
|
@@ -40,21 +43,26 @@ namespace Services
|
|
|
public PagedInfo<SysUser> SelectUserList(SysUserQueryDto user, PagerInfo pager)
|
|
|
{
|
|
|
var exp = Expressionable.Create<SysUser>();
|
|
|
- exp.AndIF(!string.IsNullOrEmpty(user.username), u => u.Username.Contains(user.username));
|
|
|
- exp.AndIF(!string.IsNullOrEmpty(value: user.nickname), u => u.Username.Contains(user.nickname));
|
|
|
- exp.AndIF(!string.IsNullOrEmpty(user.name), u => u.Username.Contains(user.name));
|
|
|
- exp.AndIF(!string.IsNullOrEmpty(user.phone), u => u.Username.Contains(user.phone));
|
|
|
+ exp.AndIF(!string.IsNullOrEmpty(user.username), u => u.username.Contains(user.username));
|
|
|
+ exp.AndIF(!string.IsNullOrEmpty(value: user.nickname), u => u.username.Contains(user.nickname));
|
|
|
+ exp.AndIF(!string.IsNullOrEmpty(user.name), u => u.username.Contains(user.name));
|
|
|
+ exp.AndIF(!string.IsNullOrEmpty(user.phone), u => u.username.Contains(user.phone));
|
|
|
exp.And(u => u.DelFlag == "0");
|
|
|
var query = Queryable()
|
|
|
- .LeftJoin<SysDept>((u, dept) => u.DeptId == dept.DeptId)
|
|
|
.Where(exp.ToExpression())
|
|
|
- .Select((u, dept) => new SysUser
|
|
|
- {
|
|
|
- UserId = u.UserId.SelectAll(),
|
|
|
- Name = dept.Name,
|
|
|
- });
|
|
|
+ .OrderByDescending(m => m.userId);
|
|
|
+
|
|
|
+ PagedInfo<SysUser> result = query.ToPage(pager);
|
|
|
+ foreach(SysUser sub in result.Records)
|
|
|
+ {
|
|
|
+ List<long> userRoles = UserRoleService.GetList(m => m.UserId == sub.userId).Select(m => m.RoleId).ToList();
|
|
|
+ sub.RoleList = RoleService.GetList(m => userRoles.Contains(m.RoleId));
|
|
|
|
|
|
- return query.ToPage(pager);
|
|
|
+ List<long> userPost = UserPostService.GetList(m => m.UserId == sub.userId).Select(m => m.PostId).ToList();
|
|
|
+ sub.PostList = PostService.GetList(m => userPost.Contains(m.PostId));
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -65,7 +73,7 @@ namespace Services
|
|
|
public SysUser SelectUserById(long userId)
|
|
|
{
|
|
|
var user = Queryable().Filter(null, true).WithCache(60 * 5)
|
|
|
- .Where(f => f.UserId == userId).First();
|
|
|
+ .Where(f => f.userId == userId).First();
|
|
|
// if (user != null && user.UserId > 0)
|
|
|
// {
|
|
|
// user.Roles = RoleService.SelectUserRoleListByUserId(userId);
|
|
@@ -81,7 +89,7 @@ namespace Services
|
|
|
/// <returns></returns>
|
|
|
public string CheckUserNameUnique(string userName)
|
|
|
{
|
|
|
- int count = Count(it => it.Username == userName);
|
|
|
+ int count = Count(it => it.username == userName);
|
|
|
if (count > 0)
|
|
|
{
|
|
|
return UserConstants.NOT_UNIQUE;
|
|
@@ -96,9 +104,11 @@ namespace Services
|
|
|
/// <returns></returns>
|
|
|
public SysUser InsertUser(SysUser sysUser)
|
|
|
{
|
|
|
+ sysUser.CreateTime = DateTime.Now;
|
|
|
+ sysUser.UpdateTime = DateTime.Now;
|
|
|
var result = UseTran(() =>
|
|
|
{
|
|
|
- sysUser.UserId = Insertable(sysUser).ExecuteReturnIdentity();
|
|
|
+ sysUser.userId = Insertable(sysUser).ExecuteReturnIdentity();
|
|
|
//新增用户角色信息
|
|
|
UserRoleService.InsertUserRole(sysUser);
|
|
|
//新增用户岗位信息
|
|
@@ -118,7 +128,7 @@ namespace Services
|
|
|
/// <returns></returns>
|
|
|
public int UpdateUser(SysUser user)
|
|
|
{
|
|
|
- var roleIds = RoleService.SelectUserRoles(user.UserId);
|
|
|
+ var roleIds = RoleService.SelectUserRoles(user.userId);
|
|
|
var diffArr = roleIds.Where(c => !((IList)user.RoleIds).Contains(c)).ToArray();
|
|
|
var diffArr2 = user.RoleIds.Where(c => !((IList)roleIds).Contains(c)).ToArray();
|
|
|
bool result = UseTran2(() =>
|
|
@@ -126,12 +136,12 @@ namespace Services
|
|
|
if (diffArr.Length > 0 || diffArr2.Length > 0)
|
|
|
{
|
|
|
//删除用户与角色关联
|
|
|
- UserRoleService.DeleteUserRoleByUserId((int)user.UserId);
|
|
|
+ UserRoleService.DeleteUserRoleByUserId((int)user.userId);
|
|
|
//新增用户与角色关联
|
|
|
UserRoleService.InsertUserRole(user);
|
|
|
}
|
|
|
// 删除用户与岗位关联
|
|
|
- UserPostService.Delete(user.UserId);
|
|
|
+ UserPostService.Delete(user.userId);
|
|
|
// 新增用户与岗位管理
|
|
|
UserPostService.InsertUserPost(user);
|
|
|
ChangeUser(user);
|
|
@@ -142,16 +152,7 @@ namespace Services
|
|
|
public int ChangeUser(SysUser user)
|
|
|
{
|
|
|
user.UpdateTime = DateTime.Now;
|
|
|
- return Update(user, t => new
|
|
|
- {
|
|
|
- t.Nickname,
|
|
|
- t.Email,
|
|
|
- t.Phone,
|
|
|
- t.DeptId,
|
|
|
- t.PostIds,
|
|
|
- t.UpdateBy,
|
|
|
- t.UpdateTime
|
|
|
- }, true);
|
|
|
+ return Update(user, true);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -162,7 +163,7 @@ namespace Services
|
|
|
/// <returns></returns>
|
|
|
public int ResetPwd(long userid, string password)
|
|
|
{
|
|
|
- return Update(new SysUser() { UserId = userid, Password = password }, it => new { it.Password }, f => f.UserId == userid);
|
|
|
+ return Update(new SysUser() { userId = userid, password = password }, it => new { it.password }, f => f.userId == userid);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -173,7 +174,7 @@ namespace Services
|
|
|
public int ChangeUserStatus(SysUser user)
|
|
|
{
|
|
|
CheckUserAllowed(user);
|
|
|
- return Update(user, it => new { it.DelFlag }, f => f.UserId == user.UserId);
|
|
|
+ return Update(user, it => new { it.DelFlag }, f => f.userId == user.userId);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -183,12 +184,12 @@ namespace Services
|
|
|
/// <returns></returns>
|
|
|
public int DeleteUser(long userid)
|
|
|
{
|
|
|
- CheckUserAllowed(new SysUser() { UserId = userid });
|
|
|
+ CheckUserAllowed(new SysUser() { userId = userid });
|
|
|
//删除用户与角色关联
|
|
|
UserRoleService.DeleteUserRoleByUserId((int)userid);
|
|
|
// 删除用户与岗位关联
|
|
|
UserPostService.Delete(userid);
|
|
|
- return Update(new SysUser() { UserId = userid, DelFlag = "2" }, it => new { it.DelFlag }, f => f.UserId == userid);
|
|
|
+ return Update(new SysUser() { userId = userid, DelFlag = "2" }, it => new { it.DelFlag }, f => f.userId == userid);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -198,7 +199,7 @@ namespace Services
|
|
|
/// <returns></returns>
|
|
|
public int UpdatePhoto(SysUser user)
|
|
|
{
|
|
|
- return Update(user, it => new { it.Avatar }, f => f.UserId == user.UserId); ;
|
|
|
+ return Update(user, it => new { it.avatar }, f => f.userId == user.userId); ;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -222,16 +223,16 @@ namespace Services
|
|
|
SysUser user = new()
|
|
|
{
|
|
|
CreateTime = DateTime.Now,
|
|
|
- Username = dto.Username,
|
|
|
- Nickname = dto.Username,
|
|
|
- Password = password,
|
|
|
- DeptId = 0,
|
|
|
+ username = dto.Username,
|
|
|
+ nickname = dto.Username,
|
|
|
+ password = password,
|
|
|
+ deptId = 0,
|
|
|
};
|
|
|
if (UserConstants.NOT_UNIQUE.Equals(CheckUserNameUnique(dto.Username)))
|
|
|
{
|
|
|
throw new CustomException($"保存用户{dto.Username}失败,注册账号已存在");
|
|
|
}
|
|
|
- user.UserId = Insertable(user).ExecuteReturnIdentity();
|
|
|
+ user.userId = Insertable(user).ExecuteReturnIdentity();
|
|
|
return user;
|
|
|
}
|
|
|
|
|
@@ -256,7 +257,7 @@ namespace Services
|
|
|
{
|
|
|
if (!SysUser.IsAdmin(loginUserId))
|
|
|
{
|
|
|
- SysUser user = new SysUser() { UserId = userid };
|
|
|
+ SysUser user = new SysUser() { userId = userid };
|
|
|
|
|
|
//TODO 判断用户是否有数据权限
|
|
|
}
|
|
@@ -273,14 +274,14 @@ namespace Services
|
|
|
{
|
|
|
x.CreateTime = DateTime.Now;
|
|
|
x.DelFlag = "0";
|
|
|
- x.Password = "E10ADC3949BA59ABBE56E057F20F883E";
|
|
|
+ x.password = "E10ADC3949BA59ABBE56E057F20F883E";
|
|
|
});
|
|
|
var x = Context.Storageable(users)
|
|
|
.SplitInsert(it => !it.Any())
|
|
|
- .SplitIgnore(it => it.Item.Username == GlobalConstant.AdminRole)
|
|
|
- .SplitError(x => x.Item.Username.IsEmpty(), "用户名不能为空")
|
|
|
- .SplitError(x => !Tools.CheckUserName(x.Item.Username), "用户名不符合规范")
|
|
|
- .WhereColumns(it => it.Username)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
|
|
+ .SplitIgnore(it => it.Item.username == GlobalConstant.AdminRole)
|
|
|
+ .SplitError(x => x.Item.username.IsEmpty(), "用户名不能为空")
|
|
|
+ .SplitError(x => !Tools.CheckUserName(x.Item.username), "用户名不符合规范")
|
|
|
+ .WhereColumns(it => it.username)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
|
|
.ToStorage();
|
|
|
var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
|
|
|
|
|
@@ -297,11 +298,11 @@ namespace Services
|
|
|
//输出错误信息
|
|
|
foreach (var item in x.ErrorList)
|
|
|
{
|
|
|
- Console.WriteLine("userName为" + item.Item.Username + " : " + item.StorageMessage);
|
|
|
+ Console.WriteLine("userName为" + item.Item.username + " : " + item.StorageMessage);
|
|
|
}
|
|
|
foreach (var item in x.IgnoreList)
|
|
|
{
|
|
|
- Console.WriteLine("userName为" + item.Item.Username + " : " + item.StorageMessage);
|
|
|
+ Console.WriteLine("userName为" + item.Item.username + " : " + item.StorageMessage);
|
|
|
}
|
|
|
|
|
|
return (msg, x.ErrorList, x.IgnoreList);
|
|
@@ -314,7 +315,7 @@ namespace Services
|
|
|
/// <returns></returns>
|
|
|
public SysUser Login(LoginBodyDto user)
|
|
|
{
|
|
|
- return GetFirst(it => it.Username == user.username && it.Password.ToLower() == user.password.ToLower());
|
|
|
+ return GetFirst(it => it.username == user.username && it.password.ToLower() == user.password.ToLower());
|
|
|
}
|
|
|
|
|
|
/// <summary>
|