510 lines
19 KiB
C#
510 lines
19 KiB
C#
|
|
using DH.RBAC.Logic.Base;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Security.Principal;
|
|
using DH.RBAC.Model.Sys;
|
|
|
|
using DH.RBAC.Utility.Other;
|
|
using SqlSugar;
|
|
using System.ComponentModel;
|
|
|
|
namespace DH.RBAC.Logic.Sys
|
|
{
|
|
public class SysUserLogic : BaseLogic
|
|
{
|
|
/// <summary>
|
|
/// 根据账号得到用户信息
|
|
/// </summary>
|
|
/// <param name="account"></param>
|
|
/// <returns></returns>
|
|
public SysUser GetByUserName(string account)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
return db.Queryable<SysUser>().Where(it => it.Account == account && it.DeleteFlag == "N")
|
|
.Includes(it => it.Organize)
|
|
.Includes(it => it.CreateUser)
|
|
.Includes(it => it.ModifyUser)
|
|
.First();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改用户基础信息
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public int UpdateBasicInfo(SysUser model, string account)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
model.ModifyUserId = account;
|
|
model.ModifyTime = DateTime.Now;
|
|
return db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
{
|
|
it.RealName,
|
|
it.NickName,
|
|
it.Gender,
|
|
it.Birthday,
|
|
it.MobilePhone,
|
|
it.Avatar,
|
|
it.Email,
|
|
it.Signature,
|
|
it.Address,
|
|
it.ModifyUserId,
|
|
it.ModifyTime
|
|
}).ExecuteCommand();
|
|
}
|
|
}
|
|
|
|
public int AppUpdateBasicInfo(SysUser model)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
model.ModifyUserId = model.Id;
|
|
model.ModifyTime = DateTime.Now;
|
|
return db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
{
|
|
it.RealName,
|
|
it.NickName,
|
|
it.Gender,
|
|
it.Birthday,
|
|
it.MobilePhone,
|
|
it.Avatar,
|
|
it.Email,
|
|
it.Signature,
|
|
it.Address,
|
|
it.ModifyUserId,
|
|
it.ModifyTime
|
|
}).ExecuteCommand();
|
|
}
|
|
}
|
|
|
|
public int Insert(SysUser model, string password, string account, string[] roleIds)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
try
|
|
{
|
|
db.BeginTran();
|
|
////新增用户基本信息。
|
|
model.Id = UUID.StrSnowId;
|
|
model.EnableFlag = "Y";
|
|
model.DeleteFlag = "N";
|
|
model.CreateUserId = account;
|
|
model.CreateTime = DateTime.Now;
|
|
model.ModifyUserId = model.CreateUserId;
|
|
model.ModifyTime = model.CreateTime;
|
|
model.Avatar = "/Content/framework/images/avatar.png";
|
|
int row = db.Insertable<SysUser>(model).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
|
|
//新增新的角色
|
|
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
foreach (string roleId in roleIds)
|
|
{
|
|
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
{
|
|
Id = UUID.StrSnowId,
|
|
UserId = model.Id,
|
|
RoleId = roleId,
|
|
EnableFlag = "Y",
|
|
DeleteFlag = "N",
|
|
CreateUserId = account,
|
|
CreateTime = DateTime.Now,
|
|
ModifyUserId = account,
|
|
ModifyTime = DateTime.Now
|
|
};
|
|
list.Add(roleRelation);
|
|
}
|
|
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
//新增用户登陆信息。
|
|
SysUserLogOn userLogOnEntity = new SysUserLogOn();
|
|
userLogOnEntity.Id = UUID.StrSnowId;
|
|
userLogOnEntity.UserId = model.Id;
|
|
userLogOnEntity.SecretKey = userLogOnEntity.Id.DESEncrypt().Substring(0, 8);
|
|
userLogOnEntity.Password = password.MD5Encrypt().DESEncrypt(userLogOnEntity.SecretKey).MD5Encrypt();
|
|
userLogOnEntity.LoginCount = 0;
|
|
userLogOnEntity.IsOnLine = "0";
|
|
userLogOnEntity.EnableFlag = "Y";
|
|
userLogOnEntity.DeleteFlag = "N";
|
|
userLogOnEntity.CreateUserId = account;
|
|
userLogOnEntity.CreateTime = DateTime.Now;
|
|
userLogOnEntity.ModifyUserId = account;
|
|
userLogOnEntity.ModifyTime = DateTime.Now;
|
|
row = db.Insertable<SysUserLogOn>(userLogOnEntity).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
db.CommitTran();
|
|
return row;
|
|
}
|
|
catch
|
|
{
|
|
db.RollbackTran();
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool ContainsUser(string userAccount, params string[] userIdList)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
List<string> accountList = db.Queryable<SysUser>().Where(it => userIdList.Contains(it.Id)).Select(it => it.Account).ToList();
|
|
if (accountList.IsNullOrEmpty())
|
|
return false;
|
|
if (accountList.Contains(userAccount))
|
|
return true;
|
|
return false;
|
|
}
|
|
}
|
|
public int AppInsert(SysUser model, string password, string[] roleIds, string opearateUser)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
try
|
|
{
|
|
db.BeginTran();
|
|
////新增用户基本信息。
|
|
model.Id = UUID.StrSnowId;
|
|
model.EnableFlag = "Y";
|
|
model.DeleteFlag = "N";
|
|
model.CreateUserId = opearateUser;
|
|
model.CreateTime = DateTime.Now;
|
|
model.ModifyUserId = model.CreateUserId;
|
|
model.ModifyTime = model.CreateTime;
|
|
model.Avatar = "/Content/framework/images/avatar.png";
|
|
int row = db.Insertable<SysUser>(model).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
|
|
//新增新的角色
|
|
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
foreach (string roleId in roleIds)
|
|
{
|
|
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
{
|
|
Id = UUID.StrSnowId,
|
|
UserId = model.Id,
|
|
RoleId = roleId,
|
|
EnableFlag = "Y",
|
|
DeleteFlag = "N",
|
|
CreateUserId = opearateUser,
|
|
CreateTime = DateTime.Now,
|
|
ModifyUserId = opearateUser,
|
|
ModifyTime = DateTime.Now
|
|
};
|
|
list.Add(roleRelation);
|
|
}
|
|
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
//新增用户登陆信息。
|
|
SysUserLogOn userLogOnEntity = new SysUserLogOn();
|
|
userLogOnEntity.Id = UUID.StrSnowId;
|
|
userLogOnEntity.UserId = model.Id;
|
|
userLogOnEntity.SecretKey = userLogOnEntity.Id.DESEncrypt().Substring(0, 8);
|
|
userLogOnEntity.Password = password.DESEncrypt(userLogOnEntity.SecretKey).MD5Encrypt();
|
|
userLogOnEntity.LoginCount = 0;
|
|
userLogOnEntity.IsOnLine = "0";
|
|
userLogOnEntity.EnableFlag = "Y";
|
|
userLogOnEntity.DeleteFlag = "N";
|
|
userLogOnEntity.CreateUserId = opearateUser;
|
|
userLogOnEntity.CreateTime = DateTime.Now;
|
|
userLogOnEntity.ModifyUserId = userLogOnEntity.CreateUserId;
|
|
userLogOnEntity.ModifyTime = userLogOnEntity.CreateTime;
|
|
row = db.Insertable<SysUserLogOn>(userLogOnEntity).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
db.CommitTran();
|
|
return row;
|
|
}
|
|
catch
|
|
{
|
|
db.RollbackTran();
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 根据主键得到用户信息
|
|
/// </summary>
|
|
/// <param name="primaryKey"></param>
|
|
/// <returns></returns>
|
|
public SysUser Get(string primaryKey)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
return db.Queryable<SysUser>().Where(it => it.Id == primaryKey)
|
|
.Includes(it => it.Organize)
|
|
.Includes(it => it.CreateUser)
|
|
.Includes(it => it.ModifyUser).First();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获得用户列表分页
|
|
/// </summary>
|
|
/// <param name="pageIndex"></param>
|
|
/// <param name="pageSize"></param>
|
|
/// <param name="keyWord"></param>
|
|
/// <param name="totalCount"></param>
|
|
/// <returns></returns>
|
|
public List<SysUser> GetList(int pageIndex, int pageSize, string keyWord, ref int totalCount)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
ISugarQueryable<SysUser> queryable = db.Queryable<SysUser>().Where(it => it.DeleteFlag == "N");
|
|
if (!keyWord.IsNullOrEmpty())
|
|
{
|
|
queryable = queryable.Where(it => it.Account.Contains(keyWord) || it.RealName.Contains(keyWord));
|
|
}
|
|
return queryable.OrderBy(it => it.SortCode)
|
|
.Includes(it => it.Organize)
|
|
.Includes(it => it.CreateUser)
|
|
.Includes(it => it.ModifyUser).ToPageList(pageIndex, pageSize, ref totalCount);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 删除用户信息
|
|
/// </summary>
|
|
/// <param name="primaryKeys"></param>
|
|
/// <returns></returns>
|
|
public int Delete(List<string> primaryKeys)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
List<SysUser> list = db.Queryable<SysUser>().Where(it => primaryKeys.Contains(it.Id)).ToList();
|
|
list.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
return db.Updateable<SysUser>(list).ExecuteCommand();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 新增用户基础信息
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public int Insert(SysUser model, string account)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
model.Id = UUID.StrSnowId;
|
|
model.DeleteFlag = "N";
|
|
model.EnableFlag = "Y";
|
|
|
|
|
|
model.CreateUserId = account;
|
|
model.CreateTime = DateTime.Now;
|
|
model.ModifyUserId = model.CreateUserId;
|
|
model.ModifyTime = model.CreateTime;
|
|
model.Avatar = "/Content/framework/images/avatar.png";
|
|
return db.Insertable<SysUser>(model).ExecuteCommand();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 更新用户基础信息
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public int Update(SysUser model, string account)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
model.ModifyUserId = account;
|
|
model.ModifyTime = DateTime.Now;
|
|
|
|
return db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
{
|
|
it.NickName,
|
|
it.RealName,
|
|
it.Birthday,
|
|
it.Gender,
|
|
it.Email,
|
|
it.DepartmentId,
|
|
it.RoleId,
|
|
it.MobilePhone,
|
|
it.Address,
|
|
it.Signature,
|
|
it.SortCode,
|
|
it.IsEnabled,
|
|
it.ModifyUserId,
|
|
it.ModifyTime
|
|
}).ExecuteCommand();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public int AppUpdateAndSetRole(SysUser model, string[] roleIds, string opereateUser)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
try
|
|
{
|
|
db.BeginTran();
|
|
model.ModifyUserId = opereateUser;
|
|
model.ModifyTime = DateTime.Now;
|
|
int row = db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
{
|
|
it.NickName,
|
|
it.RealName,
|
|
it.Birthday,
|
|
it.Gender,
|
|
it.Email,
|
|
it.DepartmentId,
|
|
it.RoleId,
|
|
it.MobilePhone,
|
|
it.Address,
|
|
it.Signature,
|
|
it.SortCode,
|
|
it.ModifyUserId,
|
|
it.ModifyTime
|
|
}).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
//删除原来的角色
|
|
List<SysUserRoleRelation> list2 = db.Queryable<SysUserRoleRelation>().Where(it => it.UserId == model.Id && it.DeleteFlag == "N").ToList();
|
|
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
db.Updateable<SysUserRoleRelation>(list2).ExecuteCommand();
|
|
//新增新的角色
|
|
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
foreach (string roleId in roleIds)
|
|
{
|
|
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
{
|
|
Id = UUID.StrSnowId,
|
|
UserId = model.Id,
|
|
RoleId = roleId,
|
|
DeleteFlag = "N",
|
|
EnableFlag = "Y",
|
|
CreateUserId = opereateUser,
|
|
CreateTime = DateTime.Now,
|
|
ModifyUserId = opereateUser,
|
|
ModifyTime = DateTime.Now
|
|
};
|
|
list.Add(roleRelation);
|
|
}
|
|
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
db.CommitTran();
|
|
return row;
|
|
}
|
|
catch
|
|
{
|
|
db.RollbackTran();
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public int UpdateAndSetRole(SysUser model, string account, string[] roleIds)
|
|
{
|
|
using (var db = GetInstance())
|
|
{
|
|
try
|
|
{
|
|
db.BeginTran();
|
|
model.ModifyUserId = account;
|
|
model.ModifyTime = DateTime.Now;
|
|
int row = db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
{
|
|
it.NickName,
|
|
it.RealName,
|
|
it.Birthday,
|
|
it.Gender,
|
|
it.Email,
|
|
it.DepartmentId,
|
|
it.RoleId,
|
|
it.MobilePhone,
|
|
it.Address,
|
|
it.Signature,
|
|
it.SortCode,
|
|
it.EnableFlag,
|
|
it.ModifyUserId,
|
|
it.ModifyTime
|
|
}).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
//删除原来的角色
|
|
List<SysUserRoleRelation> list2 = db.Queryable<SysUserRoleRelation>().Where(it => it.UserId == model.Id && it.DeleteFlag == "N").ToList();
|
|
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
db.Updateable<SysUserRoleRelation>(list2).ExecuteCommand();
|
|
//新增新的角色
|
|
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
foreach (string roleId in roleIds)
|
|
{
|
|
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
{
|
|
Id = UUID.StrSnowId,
|
|
UserId = model.Id,
|
|
RoleId = roleId,
|
|
EnableFlag = "Y",
|
|
DeleteFlag = "N",
|
|
CreateUserId = account,
|
|
CreateTime = DateTime.Now,
|
|
ModifyTime = DateTime.Now,
|
|
ModifyUserId = account
|
|
};
|
|
list.Add(roleRelation);
|
|
}
|
|
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
if (row == 0)
|
|
{
|
|
db.RollbackTran();
|
|
return row;
|
|
}
|
|
db.CommitTran();
|
|
return row;
|
|
}
|
|
catch
|
|
{
|
|
db.RollbackTran();
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|