582 lines
23 KiB
C#
582 lines
23 KiB
C#
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<BAS_INNERUSER>
|
||
{
|
||
CACHE_BL cache_BL = new CACHE_BL();
|
||
|
||
#region 添加
|
||
/// <summary>
|
||
/// 添加
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
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 修改
|
||
/// <summary>
|
||
/// 数据的修改
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
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 密码修改
|
||
/// <summary>
|
||
/// 数据的修改
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
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 删除
|
||
/// <summary>
|
||
/// 删除数据(修改隐藏状态)
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
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 获取全部信息
|
||
/// <summary>
|
||
/// 获取全部信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<BAS_INNERUSER> GetList()
|
||
{
|
||
using (var db = new zxdContext())
|
||
{
|
||
return db.BAS_INNERUSER.OrderBy(m => m.PKID).ToList();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 获取单条用户信息
|
||
/// <summary>
|
||
/// 获取实体
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
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 获取单条用户信息
|
||
/// <summary>
|
||
/// 获取实体
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
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<object> obj = new List<object>();
|
||
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<BAS_INNERUSER> 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<object>();
|
||
}
|
||
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
|
||
|
||
/// <summary>
|
||
/// 获取员工列表
|
||
/// </summary>
|
||
/// <param name="pager"></param>
|
||
/// <param name="name"></param>
|
||
/// <param name="isdismiss"></param>
|
||
/// <returns></returns>
|
||
public List<BAS_INNERUSER> GetList(ref Laypage pager, string name, int? isdismiss)
|
||
{
|
||
|
||
using (var db = new zxdContext())
|
||
{
|
||
var query = db.BAS_INNERUSER.Where(m => m.ISHIDE == 0).AsQueryable<BAS_INNERUSER>();
|
||
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();
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取员工列表
|
||
/// </summary>
|
||
/// <param name="pager"></param>
|
||
/// <param name="name"></param>
|
||
/// <param name="isdismiss"></param>
|
||
/// <returns></returns>
|
||
public List<Bas_Inneruser_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<BAS_INNERUSER>();
|
||
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<Bas_Inneruser_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<BAS_ROLE> 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;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取登陆用户的权限信息
|
||
/// </summary>
|
||
/// <param name="userid"></param>
|
||
/// <param name="RightCodes"></param>
|
||
/// <param name="RoleCodes"></param>
|
||
/// <param name="RoleNames"></param>
|
||
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<SsoUserInfo> GetSsoUserInfo(string eids)
|
||
{
|
||
var prams = new List<MySqlParameter>
|
||
{
|
||
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<SsoUserInfo>();
|
||
|
||
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; }
|
||
}
|
||
}
|