using CRM.Core.BLL.Util; using CRM.Core.Common.Layui; using CRM.Core.DAL; using CRM.Core.Model.Entity; using CRM.Core.Model.Map; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using WX.CRM.Common; namespace CRM.Core.BLL.Base { public class BAS_INNERUSER_BL : DbContextRepository { CACHE_BL cache_BL = new CACHE_BL(); #region 添加 /// /// 添加 /// /// /// public decimal Create(ref ValidationErrors errors, BAS_INNERUSER model) { try { using (var db = new zxdContext()) { var entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == model.EID); if (entry != null) { errors.Add("工号已被占用!"); return 0; } string user_salt = Utility.CreateRandomSatl(8); model.PASSWORD = Utility.Sha512(model.PASSWORD + user_salt);//密码进行加密处理 db.Configuration.ValidateOnSaveEnabled = false; db.BAS_INNERUSER.Add(model); db.SaveChanges(); db.BAS_INNERUSERSALT.Add(new BAS_INNERUSERSALT() { EID = model.EID, CTIME = DateTime.Now, CREATEUSER = model.CREATEUSER, INNERUSERID = model.PKID, PWDSALT = user_salt }); db.SaveChanges(); return model.PKID; } } catch (Exception ex) { errors.Add(ex.Message); return 0; } } #endregion #region 修改 /// /// 数据的修改 /// /// /// public bool Update(ref ValidationErrors errors, BAS_INNERUSER model) { try { using (var db = new zxdContext()) { var nmodel = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == model.EID && m.PKID != model.PKID); if (nmodel != null) { errors.Add("工号已被占用!"); return false; } db.Configuration.ValidateOnSaveEnabled = false; var entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == model.PKID); entry.UNAME = model.UNAME; entry.EID = model.EID; entry.GENDER = model.GENDER; entry.BIRTHDAY = model.BIRTHDAY; if (!string.IsNullOrWhiteSpace(model.PASSWORD)) {//密码为空不修改 var salt = db.BAS_INNERUSERSALT.FirstOrDefault(m => m.INNERUSERID == model.PKID); string user_salt = ""; if (salt == null)//如果此时缺少了salt,那么就补充一条记录 { user_salt = Utility.CreateRandomSatl(8); db.BAS_INNERUSERSALT.Add(new BAS_INNERUSERSALT() { EID = model.EID, CTIME = DateTime.Now, CREATEUSER = model.CREATEUSER, INNERUSERID = model.PKID, PWDSALT = user_salt }); } else { user_salt = salt.PWDSALT; } entry.PASSWORD = Utility.Sha512(model.PASSWORD + user_salt);//密码做了修改,需要进行重新加密 } if (entry.ISDISMISS == 0 && model.ISDISMISS == 1) { entry.DISMISSTIME = DateTime.Now;//修改成了离职,记录离职时间 } entry.ISDISMISS = model.ISDISMISS; entry.ENTRYDATE = model.ENTRYDATE; entry.UTIME = model.UTIME; entry.UPDATEUSER = model.UPDATEUSER; db.SaveChanges(); db.Configuration.ValidateOnSaveEnabled = true; return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 密码修改 /// /// 数据的修改 /// /// /// public bool PwdUpdate(ref ValidationErrors errors, string pwd, int userid, int eid) { try { using (var db = new zxdContext()) { var entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == userid); if (entry == null) { errors.Add("参数错误!"); return false; } db.Configuration.ValidateOnSaveEnabled = false; if (!string.IsNullOrWhiteSpace(pwd)) {//密码为空不修改 var salt = db.BAS_INNERUSERSALT.FirstOrDefault(m => m.INNERUSERID == userid); string user_salt = ""; if (salt == null)//如果此时缺少了salt,那么就补充一条记录 { user_salt = Utility.CreateRandomSatl(8); db.BAS_INNERUSERSALT.Add(new BAS_INNERUSERSALT() { EID = eid, CTIME = DateTime.Now, CREATEUSER = userid, INNERUSERID = userid, PWDSALT = user_salt }); } else { user_salt = salt.PWDSALT; } entry.PASSWORD = Utility.Sha512(pwd + user_salt);//密码做了修改,需要进行重新加密 } else { errors.Add("密码不能为空!"); return false; } entry.UTIME = DateTime.Now; entry.UPDATEUSER = userid; db.SaveChanges(); db.Configuration.ValidateOnSaveEnabled = true; return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 删除 /// /// 删除数据(修改隐藏状态) /// /// /// public bool Delete(ref ValidationErrors errors, int id, int delid) { try { using (var db = new zxdContext()) { var entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == id); if (entry == null) { errors.Add("找不到对象!"); return false; } entry.ISHIDE = 1; entry.UPDATEUSER = delid; entry.UTIME = DateTime.Now; db.Configuration.ValidateOnSaveEnabled = false; return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 获取全部信息 /// /// 获取全部信息 /// /// public List GetList() { using (var db = new zxdContext()) { return db.BAS_INNERUSER.OrderBy(m => m.PKID).ToList(); } } #endregion #region 获取单条用户信息 /// /// 获取实体 /// /// /// public BAS_INNERUSER GetModel(decimal id) { using (zxdContext db = new zxdContext()) { BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == id); return entry; } } #endregion #region 获取单条用户信息 /// /// 获取实体 /// /// /// public BAS_INNERUSER GetModelByEid(decimal EID) { using (var db = new zxdContext()) { var entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == EID); return entry; } } public decimal? GetSaleDeptIdByEid(decimal EID) { using (var db = new zxdContext()) { var q = (from a in db.BAS_INNERUSER join c in db.BAS_INNERUSERGROUP on a.PKID equals c.INNERUSERID join d in db.BAS_INNERGROUP on c.GID equals d.GID where a.EID == EID select new { d.SALEDEPTID } ); var list = q.ToList(); if (list == null) { return 0; } else { return list.Select(p => p.SALEDEPTID).FirstOrDefault(); } } } #endregion #region GetUserComBoxUser数据源 public object GetUserComBoxUser(int queryType, string innerUserId, string salegGoupIds, decimal innerDeptId, string isShowDismiss) { using (var db = new zxdContext()) { List obj = new List(); var queryable = db.BAS_INNERUSER.AsQueryable(); //查询单个用户 if (queryType == 3) { if (string.IsNullOrWhiteSpace(innerUserId) || innerUserId == "0") return new object(); decimal iinnerUserid = Convert.ToDecimal(innerUserId); BAS_INNERUSER inneruser = null; if (innerDeptId == 0) inneruser = queryable.Where(m => m.PKID == iinnerUserid).FirstOrDefault(); else inneruser = queryable.Where(m => m.PKID == iinnerUserid && (from a in db.BAS_INNERUSERGROUP where a.DEPTID == innerDeptId where a.INNERUSERID == iinnerUserid select a.INNERUSERID).Contains(m.PKID)).FirstOrDefault(); if (inneruser == null) return new object(); obj.Add(new { id = inneruser.PKID, text = string.Format("{0}---{1}", inneruser.EID, inneruser.UNAME) }); } else//获取销售组下的部门 { decimal[] iSaleGroupdIds = OperationUtil.ConvertToDecimal(salegGoupIds.Split(',')); List inneruserList = null; if (innerDeptId == 0) inneruserList = (from a in queryable join m in db.BAS_INNERUSERGROUP on a.PKID equals m.INNERUSERID where iSaleGroupdIds.Contains(m.GID.Value) select a).OrderBy(m => m.EID).ToList(); else inneruserList = (from a in queryable join m in db.BAS_INNERUSERGROUP on a.PKID equals m.INNERUSERID where iSaleGroupdIds.Contains(m.GID.Value) where m.DEPTID == innerDeptId select a).OrderBy(m => m.EID).ToList(); if (!string.IsNullOrEmpty(isShowDismiss))//优先考虑控件参数是否显示离职员工 { if (isShowDismiss != "1")//不显示就做隐藏 { inneruserList = inneruserList.Where(m => m.ISDISMISS == 0).ToList(); } } else { string flag = cache_BL.GetValue_Parameter(Model.Enum.Parameter.Sys_UserComBoxAllShow); if (!string.IsNullOrWhiteSpace(flag) && flag.Trim() == "0") { inneruserList = inneruserList.Where(m => m.ISDISMISS == 0).ToList(); } } obj = (from a in inneruserList select new { id = a.PKID, text = string.Format("{0}---{1}{2}", a.EID, a.UNAME, a.ISDISMISS == 1 ? "(离职)" : "") }).ToList(); } return obj; } } #endregion #region 验证登录 public bool ValidateUser(int Eid, string password, out string errorMessage, out int UserId) { errorMessage = string.Empty; BAS_INNERUSER user = null; using (zxdContext db = new zxdContext()) { user = db.BAS_INNERUSER.FirstOrDefault(u => u.EID.Equals(Eid) && u.ISDISMISS == 0 && u.ISHIDE == 0);//离职员和已经删除的员工不能登录 UserId = 0; if (null == user) { errorMessage = "用户名或密码错误!"; return false; } else { UserId = user.PKID; } var usersalt = db.BAS_INNERUSERSALT.FirstOrDefault(p => p.INNERUSERID == user.PKID && p.EID == Eid); if (null == usersalt) { errorMessage = "用户名或密码错误!"; return false; } string user_salt = usersalt.PWDSALT; string sha_password = Utility.Sha512(password + user_salt); if (user.PASSWORD != sha_password) { errorMessage = "用户名或密码错误!"; return false; } return true; } } #endregion /// /// 获取员工列表 /// /// /// /// /// public List GetList(ref Laypage pager, string name, int? isdismiss) { using (var db = new zxdContext()) { var query = db.BAS_INNERUSER.Where(m => m.ISHIDE == 0).AsQueryable(); if (!string.IsNullOrEmpty(name)) { int eid = 0; if (int.TryParse(name, out eid)) { query = query.Where(m => m.EID == eid || name.Contains(m.UNAME)); } else { query = query.Where(m => name.Contains(m.UNAME)); } } if (isdismiss.HasValue) { query = query.Where(m => m.ISDISMISS == isdismiss.Value); } query = query.OrderByDescending(m => m.CTIME); PagerUtil.SetPager(ref query, ref pager); return query.ToList(); } } /// /// 获取员工列表 /// /// /// /// /// public List GetList(ref Laypage pager, string name, int? isdismiss, int? roleId) { using (var db = new zxdContext()) { var query = db.BAS_INNERUSER.Where(m => m.ISHIDE == 0).AsQueryable(); if (!string.IsNullOrEmpty(name)) { int eid = 0; if (int.TryParse(name, out eid)) { query = query.Where(m => m.EID == eid || name.Contains(m.UNAME)); } else { query = query.Where(m => name.Contains(m.UNAME)); } } if (isdismiss.HasValue) { query = query.Where(m => m.ISDISMISS == isdismiss.Value); } if (roleId.HasValue && roleId.Value != 0) { query = query.Where(m => (from a in db.BAS_INNERUSERROLE where a.ROLEID == roleId.Value select a.INNERUSERID).Contains(m.PKID)); } query = query.OrderByDescending(m => m.PKID); PagerUtil.SetPager(ref query, ref pager); List list = (from a in query select new Bas_Inneruser_List() { DISMISSTIME = a.DISMISSTIME, DISMISSTYPE = a.DISMISSTYPE, EID = a.EID, GENDER = a.GENDER, ISDISMISS = a.ISDISMISS, UNAME = a.UNAME, PKID = a.PKID }).ToList(); List roleList = db.BAS_ROLE.ToList(); foreach (var item in list) { decimal itemeid = item.PKID; var roleids = (from a in db.BAS_INNERUSERROLE where a.INNERUSERID == itemeid select a.ROLEID).ToList(); foreach (var role in roleList.Where(m => roleids.Contains(m.ROLEID)))//赋值 { item.ROLEIDS += role.ROLEID + ","; item.ROLESNAMES += "[" + role.RNAME + "] "; } if (item.ROLEIDS != null && item.ROLEIDS.Length > 0) item.ROLEIDS = item.ROLEIDS.Substring(0, item.ROLEIDS.Length - 1); } return list; } } /// /// 获取登陆用户的权限信息 /// /// /// /// /// public void GetUserInfo(int userid, ref string[] RightCodes, ref int[] RoleIds, ref string RoleCodes, ref string RoleNames) { using (var db = new zxdContext()) { var rightcodes = (from a in db.BAS_ROLE_PERMISSION join b in db.BAS_INNERUSERROLE on a.RID equals b.ROLEID where b.INNERUSERID == userid group a by a.CODE into a select new { CODE = a.Key, TOOLBARAVLUE = a.Max(x => x.TOOLBARAVLUE) } ).ToList(); RightCodes = rightcodes.Select(m => m.CODE + "|" + m.TOOLBARAVLUE).ToArray(); var roles = (from a in db.BAS_ROLE join b in db.BAS_INNERUSERROLE on a.ROLEID equals b.ROLEID where b.INNERUSERID == userid select new { a.ROLEID, a.CODE, a.RNAME } ); RoleIds = roles.Select(m => m.ROLEID).ToArray(); RoleCodes = String.Join("][", roles.Select(m => m.CODE).ToArray()); RoleCodes = RoleCodes.Length > 0 ? string.Format("[{0}]", RoleCodes) : RoleCodes; RoleNames = String.Join("][", roles.Select(m => m.RNAME).ToArray()); RoleNames = RoleNames.Length > 0 ? string.Format("[{0}]", RoleNames) : RoleNames; } } public string GetUserButtonSite(string rightcode, int buttonid) { using (var db = new zxdContext()) { var query = (from a in db.BAS_PERMISSION join b in db.BAS_PERMISSION_BUTTON on a.ID equals b.PID where a.CODE == rightcode where b.BUTTONID == buttonid select b.SITE); var sql = query.ToString(); var site = query.FirstOrDefault(); return site; } } public List GetSsoUserInfo(string eids) { var prams = new List { new MySqlParameter("@arg_eid", eids) }; var sql = $"select e.employee_id as eid,e.employee_name as name from zxdcrm.employee e where e.employee_id in(@arg_eid);"; var ds = MySqlDbHelper.DataQueray(ConfigurationManager.ConnectionStrings["zxdContext"].ConnectionString, CommandType.Text, sql, prams.ToArray()); var data = ds.Tables[0].ToList(); return data; } } public class SsoUserInfo { public int eid { get; set; } public string name { get; set; } //public string deptid { get; set; } //public string deptname { get; set; } } }