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