ComplianceServer/oldcode/Core.BLL/Base/BAS_INNERUSER_BL.cs

582 lines
23 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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