ComplianceServer/oldcode/BLL/Base/BAS_INNERUSER_BL.cs

901 lines
44 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 System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Base;
using WX.CRM.Model.Entity;
namespace WX.CRM.BLL.Base
{
public class BAS_INNERUSER_BL : IBAS_INNERUSER, IBAS_INNERUSER_Q
{
CACHE_BL cache_BL = new CACHE_BL();
List<string> cacheKeyList = new List<string>() { "cache_select_showbox_list" };
#region
/// <summary>
/// 添加
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public decimal Create(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_INNERUSER model)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == model.EID);
if (entry != null)
{
errors.Add("工号已被占用!");
return 0;
}
db.Configuration.ValidateOnSaveEnabled = false;
model.PKID = new SEQUENCES_BL().Seq_base_get();
model.map_CPASSWORD2 = model.map_CPASSWORD;
db.BAS_INNERUSER.Add(model);
db.SaveChanges();
ClearCache();
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, WX.CRM.Model.Entity.BAS_INNERUSER model)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
//Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == model.PKID);
//entry.BIRTHDAY = model.BIRTHDAY;
//entry.DISMISSTIME = model.DISMISSTIME;
//entry.DISMISSTYPE = model.DISMISSTYPE;
//entry.EID = model.EID;
//entry.ENTRYDATE = model.ENTRYDATE;
//entry.GENDER = model.GENDER;
//entry.ISDISMISS = model.ISDISMISS;
//entry.UNAME = model.UNAME;
//entry.UPDATEUSER = model.UPDATEUSER;
//entry.UTIME = DateTime.Now;
//entry.map_CPASSWORD = model.map_CPASSWORD;
WX.CRM.Model.Entity.BAS_INNERUSER 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;
WX.CRM.Model.Entity.BAS_INNERUSER 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))//密码为空不修改
entry.PASSWORD = model.PASSWORD;
//entry.ISDISMISS = model.ISDISMISS;
//entry.DISMISSTIME = model.DISMISSTIME;
//entry.DISMISSTYPE = model.DISMISSTYPE;
entry.ENTRYDATE = model.ENTRYDATE;
entry.UTIME = model.UTIME;
entry.UPDATEUSER = model.UPDATEUSER;
entry.POSITIVETIME = model.POSITIVETIME;
entry.TRUENAME = model.TRUENAME;
entry.ISHIDE = model.ISHIDE;
//db.BAS_INNERUSER.Attach(model);
//db.Entry(entry).State = EntityState.Modified;
//离职添加修改日志
//if (entry.ISDISMISS != model.ISDISMISS)
//{
// BAS_INNERUSER_EXT_LOG log = new BAS_INNERUSER_EXT_LOG
// {
// PKID = new SEQUENCES_BL().Seq_base_get(),
// UTIME = DateTime.Now,
// OPTIONUSER = optionuserid,
// INNERUSERID = entry.PKID,
// NEWSTATUS = model.ISDISMISS,
// OLDSTATUS = entry.ISDISMISS,
// EXTENDTYPE = 4
// };
// db.BAS_INNERUSER_EXT_LOG.Add(log);
//}
db.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true;
ClearCache();
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
public void UpdateDismiss(WX.CRM.Model.Entity.BAS_INNERUSER model, decimal optionuserid)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
db.Configuration.ValidateOnSaveEnabled = false;
WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == model.PKID);
if (null == entry)
throw new ArgumentException("数据不存在");
//new WhoHasCustomer_DAL().ExecInnerUserDisMiss(entry.PKID);//签约规则表离职状态改为1
entry.ISDISMISS = model.ISDISMISS;
entry.DISMISSTIME = model.DISMISSTIME;
entry.DISMISSTYPE = model.DISMISSTYPE;
entry.UTIME = model.UTIME;
entry.UPDATEUSER = model.UPDATEUSER;
BAS_INNERUSER_EXT_LOG log = new BAS_INNERUSER_EXT_LOG
{
PKID = new SEQUENCES_BL().Seq_base_get(),
UTIME = DateTime.Now,
OPTIONUSER = optionuserid,
INNERUSERID = entry.PKID,
NEWSTATUS = model.ISDISMISS,
OLDSTATUS = entry.ISDISMISS,
EXTENDTYPE = 4
};
db.BAS_INNERUSER_EXT_LOG.Add(log);
db.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true;
}
}
#endregion
#region
/// <summary>
/// 删除数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public bool Delete(ref ValidationErrors errors, decimal id)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_INNERUSERGROUP userGroup = db.BAS_INNERUSERGROUP.FirstOrDefault(m => m.INNERUSERID == id);
if (userGroup != null)
db.BAS_INNERUSERGROUP.Remove(userGroup);
WX.CRM.Model.Entity.BAS_INNERUSER_EXT inneruserExtend = db.BAS_INNERUSER_EXT.FirstOrDefault(m => m.INNERUSERID == id);
if (inneruserExtend == null)
db.BAS_INNERUSER_EXT.Remove(inneruserExtend);
WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == id);
if (entry != null)
db.BAS_INNERUSER.Remove(entry);
ClearCache();
return db.SaveChanges().GetResult();
}
}
catch (Exception ex) { errors.Add(ex.Message); return false; }
}
#endregion
#region
///<summary>
///按照条件查找信息
///</summary>
///<param name="name"></param>
///<param name="phone"></param>
///<param name="gender"></param>
///<param name="address"></param>
///<param name="borthday1"></param>
///<param name="borthday2"></param>
///<returns></returns>
public List<WX.CRM.Model.Entity.BAS_INNERUSER_Extend> GetList(ref Pager pager, string innerGroupId, string innerDeptId, string eId, string uName, string gender, string isDismiss, string dismissType, string dismissTime1, string dismissTime2, string EntryDate1, string EntryDate2, string isfutures, string istrader, string istutor, string isManager, string positiveTime1, string positiveTime2, string otherFilter = "")
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
IQueryable<WX.CRM.Model.Entity.BAS_INNERUSER> queryData = db.BAS_INNERUSER.AsQueryable();
//只传一个id 找出是否为部门 销售组 或者 对应人员
if(!string.IsNullOrWhiteSpace(otherFilter) && otherFilter != "0")
{
if (otherFilter.IndexOf(",") == -1)//只有单个userId
{
List<decimal> userId = new List<decimal>();
decimal id = Convert.ToDecimal(otherFilter);
var user = db.BAS_INNERUSER.FirstOrDefault(n => n.PKID == id);
if (user != null)
{
queryData = queryData.Where(a => a.PKID == id);
}
var group = db.BAS_INNERGROUP.FirstOrDefault(n => n.GID == id);
if (group != null)
{
queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => x.GID == id).Select(m => m.INNERUSERID).Contains(a.PKID));
}
var dept = db.BAS_SALESDEPARTMENT.FirstOrDefault(n => n.SALEDEPTID == id);
//找出下级部门和销售组
if (dept != null)
{
var filterIds = GetDeptIdList(dept);
queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => filterIds.Contains(x.GID.Value) || filterIds.Contains(x.DEPTID.Value)).Select(m => m.INNERUSERID).Contains(a.PKID));
}
}
else//含有多个userId
{
string[] iInnerUserId = otherFilter.Split(',');
decimal[] innerUserIds = new decimal[iInnerUserId.Length];
for (int i = 0; i < iInnerUserId.Length; i++)
{
innerUserIds[i] = Convert.ToDecimal(iInnerUserId[i]);
}
queryData = queryData.Where(a => innerUserIds.Contains(a.PKID));
}
}
if (!string.IsNullOrWhiteSpace(innerGroupId) && innerGroupId != "0")
{
if (innerGroupId.IndexOf(",") == -1)//只有单个groupId
{
decimal iInnerGroupId = Convert.ToDecimal(innerGroupId);
queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => x.GID == iInnerGroupId).Select(m => m.INNERUSERID).Contains(a.PKID));
}
else//含有多个groupID
{
string[] iInnerGroupId = innerGroupId.Split(',');
decimal[] innerGroupIds = new decimal[iInnerGroupId.Length];
for (int i = 0; i < iInnerGroupId.Length; i++)
{
innerGroupIds[i] = Convert.ToDecimal(iInnerGroupId[i]);
}
queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => innerGroupIds.Contains(x.GID.Value)).Select(m => m.INNERUSERID).Contains(a.PKID));
}
}
if (!string.IsNullOrWhiteSpace(innerDeptId) && innerDeptId != "0")
{
string[] iInnerDeptId = innerDeptId.Split(',');
decimal[] innerDeptIds = new decimal[iInnerDeptId.Length];
for (int i = 0; i < iInnerDeptId.Length; i++)
{
innerDeptIds[i] = Convert.ToDecimal(iInnerDeptId[i]);
}
var employeeIds = from n in db.BAS_SALESDEPARTMENT
join m in db.BAS_EMPLOYEE_DEPARTMENT
on n.DEPARTMENT_ID equals m.DEPARTMENT_ID
where innerDeptIds.Contains(n.SALEDEPTID)
select m.EMPLOYEE_ID;
queryData = queryData.Where(a => employeeIds.Contains(a.EMPLOYEE_ID.Value));
}
if (!string.IsNullOrWhiteSpace(eId))
{
int ieId = Convert.ToInt32(eId);
queryData = queryData.Where(m => m.EID == ieId);
}
if (!string.IsNullOrWhiteSpace(uName))
queryData = queryData.Where(a => a.UNAME.Contains(uName));
if (!string.IsNullOrWhiteSpace(gender) && gender != "0")
queryData = queryData.Where(a => a.GENDER == gender);
if (!string.IsNullOrWhiteSpace(isDismiss) && isDismiss != "-1")
{
decimal bisDismiss = decimal.Parse(isDismiss);
queryData = queryData.Where(a => a.ISDISMISS == bisDismiss);
}
if (!string.IsNullOrWhiteSpace(dismissType) && dismissType != "-1")
{
decimal iDismissType = Convert.ToDecimal(dismissType);
queryData = queryData.Where(m => m.DISMISSTYPE == iDismissType);
}
DateTime dt1;
if (!string.IsNullOrWhiteSpace(dismissTime1) && DateTime.TryParse(dismissTime1, out dt1))
queryData = queryData.Where(a => a.map_DISMISSTIME >= dt1);
DateTime dt2;
DateTime dt7;
if (!string.IsNullOrWhiteSpace(dismissTime2) && DateTime.TryParse(dismissTime2, out dt2))
{
dt7 = dt2.AddDays(1);
queryData = queryData.Where(a => a.map_DISMISSTIME < dt7);
}
DateTime dt3;
if (!string.IsNullOrWhiteSpace(EntryDate1) && DateTime.TryParse(EntryDate1, out dt3))
queryData = queryData.Where(a => a.ENTRYDATE >= dt3);
DateTime dt4;
DateTime dt8;
if (!string.IsNullOrWhiteSpace(EntryDate2) && DateTime.TryParse(EntryDate2, out dt4))
{
dt8 = dt4.AddDays(1);
queryData = queryData.Where(a => a.ENTRYDATE < dt8);
}
DateTime dt5;
if (!string.IsNullOrWhiteSpace(positiveTime1) && DateTime.TryParse(positiveTime1, out dt5))
queryData = queryData.Where(a => a.POSITIVETIME >= dt5);
DateTime dt6;
DateTime dt9;
if (!string.IsNullOrWhiteSpace(positiveTime2) && DateTime.TryParse(positiveTime2, out dt6))
{
dt9 = dt6.AddDays(1);
queryData = queryData.Where(a => a.POSITIVETIME < dt9);
}
if (!string.IsNullOrWhiteSpace(isfutures) && isfutures != "-1")
{
decimal futuresstatus = Convert.ToDecimal(isfutures);
queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.FXH_FUTURESSTATUS == futuresstatus).Select(x => x.INNERUSERID).Contains(m.PKID));
}
if (!string.IsNullOrWhiteSpace(istrader) && istrader != "-1")
{
decimal traderstatus = Convert.ToDecimal(istrader);
queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.FXH_TRADERSTATUS == traderstatus).Select(x => x.INNERUSERID).Contains(m.PKID));
}
if (!string.IsNullOrWhiteSpace(istutor) && istutor != "-1")
{
decimal tutorstatus = Convert.ToDecimal(istutor);
queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.FXH_TUTORSTATUS == tutorstatus).Select(x => x.INNERUSERID).Contains(m.PKID));
}
if (!string.IsNullOrWhiteSpace(isManager) && isManager != "-1")
{
decimal Managerstatus = Convert.ToDecimal(isManager);
queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.GJS_CUSTOMERMANAGER == Managerstatus).Select(x => x.INNERUSERID).Contains(m.PKID));
}
return CreateModelList(queryData, db, pager);
}
}
public List<WX.CRM.Model.Entity.BAS_INNERUSER_Extend> GetList(string isDismiss, bool isLeader)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
IQueryable<WX.CRM.Model.Entity.BAS_INNERUSER> queryData = db.BAS_INNERUSER.AsQueryable();
//0:在职1离职
if (!string.IsNullOrWhiteSpace(isDismiss) && isDismiss != "-1")
{
decimal bisDismiss = decimal.Parse(isDismiss);
queryData = queryData.Where(a => a.ISDISMISS == bisDismiss);
}
IQueryable<BAS_INNERUSER_Extend> returnData;
if (isLeader)
{
returnData = (from model in queryData
join userGroup in db.BAS_INNERUSERGROUP on model.PKID equals userGroup.INNERUSERID into jiontemp
from userGroup in jiontemp.DefaultIfEmpty()//左关联(用户组/部门 关系表)
join innerGroup in db.BAS_INNERGROUP on userGroup.GID equals innerGroup.GID into jiontemp2
from innerGroup in jiontemp2.DefaultIfEmpty()//左关联(组表)
//join innerDepartment in db.BAS_INNERDEPARTMENT on userGroup.DEPTID equals innerDepartment.DEPTID into jiontemp3
//from innerDepartment in jiontemp3.DefaultIfEmpty()//左关联(部门表)
where innerGroup.ISSALEDEPT == 1 && !db.BAS_GROUPLEADER.Select(m => m.INNERUSERID).Contains(model.PKID)
select new WX.CRM.Model.Entity.BAS_INNERUSER_Extend()
{
INNERUSER = model,
//DEPTNAME = innerDepartment.DEPTNAME,
GNAME = innerGroup.GNAME,
});
}
else
{
returnData = (from model in queryData
join userGroup in db.BAS_INNERUSERGROUP on model.PKID equals userGroup.INNERUSERID into jiontemp
from userGroup in jiontemp.DefaultIfEmpty()//左关联(用户组/部门 关系表)
join innerGroup in db.BAS_INNERGROUP on userGroup.GID equals innerGroup.GID into jiontemp2
from innerGroup in jiontemp2.DefaultIfEmpty()//左关联(组表)
//join innerDepartment in db.BAS_INNERDEPARTMENT on userGroup.DEPTID equals innerDepartment.DEPTID into jiontemp3
//from innerDepartment in jiontemp3.DefaultIfEmpty()//左关联(部门表)
where innerGroup.ISSALEDEPT == 1
select new WX.CRM.Model.Entity.BAS_INNERUSER_Extend()
{
INNERUSER = model,
//DEPTNAME = innerDepartment.DEPTNAME,
GNAME = innerGroup.GNAME,
});
}
return returnData.ToList();
}
}
#endregion
#region
/// <summary>
/// 获取全部信息
/// </summary>
/// <returns></returns>
public List<WX.CRM.Model.Entity.BAS_INNERUSER> GetList()
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
return db.BAS_INNERUSER.OrderBy(m => m.PKID).ToList();
}
}
/// <summary>
/// 获取全部信息
/// </summary>
/// <returns></returns>
public List<WX.CRM.Model.Entity.BAS_INNERUSER> GetList_Group()
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
var userlist = db.BAS_INNERUSER.Where(obj => obj.ISDISMISS != 1);
var usergrouplist = db.BAS_INNERUSERGROUP;
var grplist = db.BAS_INNERGROUP;
var loginlog = db.BAS_LOGINLOG.Where(obj => obj.LOGINTIME >= DateTime.Today);
foreach (var user in userlist)
{
user.BAS_INNERUSERGROUP = usergrouplist.FirstOrDefault(obj => obj.INNERUSERID == user.PKID);
if (null != user.BAS_INNERUSERGROUP)
{
user.map_GID = user.BAS_INNERUSERGROUP.GID;
}
var login = loginlog.FirstOrDefault(obj => obj.LOGINEID == user.EID);
if (null != login && login.TELNUM != null)
user.map_FJH = (int)login.TELNUM;
}
return userlist.ToList();
}
}
#endregion
#region
private List<WX.CRM.Model.Entity.BAS_INNERUSER_Extend> CreateModelList(IQueryable<WX.CRM.Model.Entity.BAS_INNERUSER> queryData, WX.CRM.Model.Entity.crmContext db, Pager pager)
{
IQueryable<WX.CRM.Model.Entity.BAS_INNERUSER_Extend> modelList = (from model in queryData
join userGroup in db.BAS_INNERUSERGROUP on model.PKID equals userGroup.INNERUSERID into jiontemp
from userGroup in jiontemp.DefaultIfEmpty()//左关联(用户组/部门 关系表)
join innerGroup in db.BAS_INNERGROUP on userGroup.GID equals innerGroup.GID into jiontemp2
from innerGroup in jiontemp2.DefaultIfEmpty()//左关联(组表)
join innerDepartment in db.BAS_SALESDEPARTMENT on userGroup.DEPTID equals innerDepartment.SALEDEPTID into jiontemp3
from innerDepartment in jiontemp3.DefaultIfEmpty()//左关联(部门表)
join innerExtend in db.BAS_INNERUSER_EXT on model.PKID equals innerExtend.INNERUSERID into jointemp4
from innerExtend in jointemp4.DefaultIfEmpty()
select new WX.CRM.Model.Entity.BAS_INNERUSER_Extend()
{
INNERUSER = model,
DEPTID = innerDepartment.DEPARTMENT_ID,
//DEPTNAME = innerDepartment.DEPTNAME,
GNAME = innerGroup.GNAME,
FUTURESSTATUS = innerExtend.FXH_FUTURESSTATUS,
TRADERSTATUS = innerExtend.FXH_TRADERSTATUS,
TUTORSTATUS = innerExtend.FXH_TUTORSTATUS,
MANAGERSTATUS = innerExtend.GJS_CUSTOMERMANAGER,
GENERALCUSTOMER = innerExtend.GENERALCUSTOMER,
SENIORCUSTOMER = innerExtend.SENIORCUSTOMER
});
//如果不排序就直接给pager赋值null
if (pager == null)
return modelList.ToList();
//排序
if (pager.order == "desc")
{
switch (pager.sort)
{
case "map_uName":
modelList = modelList.OrderByDescending(c => c.INNERUSER.UNAME);
break;
case "map_eID":
modelList = modelList.OrderByDescending(c => c.INNERUSER.EID);
break;
case "map_birthday":
modelList = modelList.OrderByDescending(c => c.INNERUSER.BIRTHDAY);
break;
case "map_dismissTime":
modelList = modelList.OrderByDescending(c => c.INNERUSER.DISMISSTIME);
break;
case "map_EntryDate":
modelList = modelList.OrderByDescending(c => c.INNERUSER.ENTRYDATE);
break;
default:
modelList = modelList.OrderByDescending(c => c.INNERUSER.CTIME);
break;
}
}
else
{
switch (pager.sort)
{
case "map_uName":
modelList = modelList.OrderBy(c => c.INNERUSER.UNAME);
break;
case "map_eID":
modelList = modelList.OrderBy(c => c.INNERUSER.EID);
break;
case "map_birthday":
modelList = modelList.OrderBy(c => c.INNERUSER.BIRTHDAY);
break;
case "map_dismissTime":
modelList = modelList.OrderBy(c => c.INNERUSER.DISMISSTIME);
break;
case "map_EntryDate":
modelList = modelList.OrderBy(c => c.INNERUSER.ENTRYDATE);
break;
default:
modelList = modelList.OrderBy(c => c.INNERUSER.CTIME);
break;
}
}
PagerUtil.SetPager<WX.CRM.Model.Entity.BAS_INNERUSER_Extend>(ref modelList, ref pager);//分页
//部门 角色字段处理
var deptNameList = new CACHE_BL().BuildDepartMentShowText(modelList.Select(n=>n.DEPTID).ToList());
var data = modelList.ToList();
var userIds = data.Select(n => n.INNERUSER).Select(n=>n.PKID).ToList();
var roleIdList = db.BAS_INNERUSERROLE.Where(p => userIds.Contains(p.INNERUSERID)).ToList();
List<WX.CRM.Model.Entity.BAS_ROLE> roleList = db.BAS_ROLE.ToList();
foreach (var item in data)
{
item.DEPTNAME = deptNameList.FirstOrDefault(n => n.Key == item.DEPTID).Value;
foreach(var roleid in roleIdList.Where(n=> n.INNERUSERID == item.INNERUSER.PKID))
{
var role = roleList.FirstOrDefault(n => n.ROLEID == roleid.ROLEID);
item.ROLESNAMES = item.ROLESNAMES += "[" + role?.RNAME + "] ";
}
}
return data;
}
#endregion
#region
/// <summary>
/// 获取实体
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public WX.CRM.Model.Entity.BAS_INNERUSER GetModel(decimal id)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == id);
return entry;
}
}
#endregion
#region
/// <summary>
/// 获取实体
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public WX.CRM.Model.Entity.BAS_INNERUSER GetModelByEid(decimal EID)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == EID);
return entry;
}
}
public decimal? GetSaleDeptIdByEid(decimal EID)
{
using (var db = new crmContext())
{
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, string roleCodes, string currentRight)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List<object> obj = new List<object>();
IQueryable<WX.CRM.Model.Entity.BAS_INNERUSER> queryable = db.BAS_INNERUSER.AsQueryable();
if (queryType == 3 && !string.IsNullOrEmpty(currentRight))///有特殊权限的,直接查询特殊权限
{
string[] nowroles = roleCodes.Replace("][", ",").Replace("]", "").Replace("[", "").Split(',');
List<BAS_RIGHT_LEVEL> list = db.BAS_RIGHT_LEVEL.Where(m => m.RIGHTID == currentRight && nowroles.Contains(m.ROLECODE) && m.STATUS == 1).ToList();
if (list.Count > 0)//发现特权
{
innerUserId = "";
queryType = 4;
}
}
//查询单个用户
if (queryType == 3)
{
if (string.IsNullOrWhiteSpace(innerUserId) || innerUserId == "0")
return new object();
decimal iinnerUserid = Convert.ToDecimal(innerUserId);
WX.CRM.Model.Entity.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<WX.CRM.Model.Entity.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.ISDISMISS).ThenBy(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.ISDISMISS).ThenBy(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(WX.CRM.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(decimal Eid, string password, out string errorMessage, out decimal UserId, bool isSso = false)
{
errorMessage = string.Empty;
WX.CRM.Model.Entity.BAS_INNERUSER user = null;
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
user = db.BAS_INNERUSER.FirstOrDefault(u => u.EID.Equals(Eid) && u.ISDISMISS == 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;
}
if (!isSso)
{
string user_salt = usersalt.PWDSALT;
string sha_password = Utility.Sha512(password + user_salt);
if (user.PASSWORD != sha_password)
{
errorMessage = "用户名或密码错误!";
return false;
}
}
return true;
}
}
#endregion
#region -1
/// <summary>
/// 更具用户扩展信息来查询用户信息
/// 三个条件不能同时为-1
/// </summary>
/// <param name="futuresStatus"></param>
/// <param name="traderStatus"></param>
/// <param name="tutorStatus">为(0:非 1:是 -1:此条件不加入查找)</param>
/// <returns></returns>
public List<WX.CRM.Model.Entity.BAS_INNERUSER> GetListByUserExt(int futuresStatus, int traderStatus, int tutorStatus)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
if (futuresStatus == -1 && traderStatus == -1 && tutorStatus == -1)
return new List<WX.CRM.Model.Entity.BAS_INNERUSER>();
var queryable = db.BAS_INNERUSER_EXT.AsQueryable();
if (futuresStatus != -1)
queryable = queryable.Where(m => m.FXH_FUTURESSTATUS == futuresStatus);
if (traderStatus != -1)
queryable = queryable.Where(m => m.FXH_TRADERSTATUS == traderStatus);
if (tutorStatus != -1)
queryable = queryable.Where(m => m.FXH_TUTORSTATUS == tutorStatus);
return (from a in db.BAS_INNERUSER
where queryable.Select(m => m.INNERUSERID).Contains(a.PKID)
select a
).ToList();
}
}
#endregion
public WX.CRM.Model.Entity.BAS_INNERUSER getInnerUserByEid(decimal eid)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == eid);
return entry;
}
}
public List<SysUser> GetList_SysUser()
{
using (var db = new crmContext())
{
var q = (from a in db.BAS_INNERUSER
join b in db.BAS_INNERUSER_EXT on a.PKID equals b.INNERUSERID into tempB
from m in tempB.DefaultIfEmpty()
join c in db.BAS_INNERUSERGROUP on a.PKID equals c.INNERUSERID into tempC
from n in tempC.DefaultIfEmpty()
join d in db.BAS_INNERGROUP on n.GID equals d.GID into tempD
from j in tempD.DefaultIfEmpty()
select new
{
id = a.PKID,
eid = a.EID,
password = a.PASSWORD,
name = a.UNAME,
salesGroupId = n.GID,
deptCode = "",
sex = a.GENDER,
mobile = "",
email = "",
IsDismiss = a.ISDISMISS,
creationDate = a.CTIME,
updateDate = a.UTIME,
creationBy = a.CREATEUSER,
updateBy = a.UPDATEUSER,
futuresStatus = m.FXH_FUTURESSTATUS,
traderStatus = m.FXH_TRADERSTATUS,
tutorStatus = m.FXH_TUTORSTATUS,
MiddleType = false,
DismissTime = a.DISMISSTIME,
DismissType = a.DISMISSTYPE
}
);
return q.ToList()
.Select(p => new SysUser()
{
id = int.Parse(p.id.ToString()),
eid = int.Parse(p.eid.ToString()),
password = p.password,
name = p.name,
salesGroupId = p.salesGroupId.HasValue ? (int?)int.Parse(p.salesGroupId.ToString()) : null,
deptCode = "",
sex = p.sex,
mobile = "",
email = "",
IsDismiss = p.IsDismiss == 1,
creationDate = p.creationDate,
updateDate = p.updateDate,
creationBy = p.creationBy.HasValue ? (int?)int.Parse(p.creationBy.ToString()) : null,
updateBy = p.updateBy.HasValue ? (int?)int.Parse(p.updateBy.ToString()) : null,
futuresStatus = p.futuresStatus == 1,
traderStatus = p.traderStatus,
tutorStatus = p.tutorStatus,
MiddleType = false,
DismissTime = p.DismissTime,
DismissType = p.DismissType.HasValue ? (int?)int.Parse(p.DismissType.ToString()) : null
}).ToList();
}
}
//public List<decimal> GetBackupMont()
//{
// using (var db = new crmContext())
// {
// return db.GJS_MON_INNERUSER.OrderByDescending(s => s.BALANCECODE).Select(p => p.BALANCECODE).Distinct().ToList();
// }
//}
public List<BAS_INNERUSER> GetAllList()
{
using (crmContext db = new crmContext())
{
List<BAS_INNERUSER> list = db.BAS_INNERUSER.ToList();
return list;
}
}
public List<BAS_INNERUSER> GetInnerUserByGroup(decimal[] userids)
{
using (crmContext db = new crmContext())
{
List<BAS_INNERUSER> list = db.BAS_INNERUSER.Where(p => userids.Contains(p.PKID)).ToList();
return list;
}
}
/// <summary>
/// 更新数据时需要清空的缓存
/// </summary>
private void ClearCache()
{
foreach (var key in cacheKeyList)
{
CacheHelper.Remove(key);
}
}
/// <summary>
/// 找出部门 即对应的销售组
/// </summary>
/// <param name="deptId"></param>
/// <returns></returns>
public List<decimal> GetDeptIdList(BAS_SALESDEPARTMENT saltDept)
{
List<decimal> idList = new List<decimal>() { saltDept.SALEDEPTID };
using (var db = new WX.CRM.Model.Entity.crmContext())
{
List<BAS_SALESDEPARTMENT> salesDeptList = db.BAS_SALESDEPARTMENT.Where(n => n.IS_DELETED != 1).ToList();
List<BAS_INNERGROUP> innerGroupList = db.BAS_INNERGROUP.Where(n => n.IS_DELETED != 1).ToList();
BuildChildGroup(salesDeptList, innerGroupList, saltDept, idList);
}
return idList;
}
private void BuildChildGroup(List<BAS_SALESDEPARTMENT> salesDeptList, List<BAS_INNERGROUP> innerGroupList, BAS_SALESDEPARTMENT saltDept, List<decimal> idList)
{
if (saltDept == null)
{
return;
}
var childDept = salesDeptList.Where(n => n.DEPARTMENT_PARENTID == saltDept.DEPARTMENT_ID);
foreach (var c in childDept)
{
idList.Add(c.SALEDEPTID);
BuildChildGroup(salesDeptList, innerGroupList, c, idList);
}
var groupList = innerGroupList.Where(n => n.SALEDEPTID == saltDept.SALEDEPTID).Select(n => n.GID).ToList();
idList.AddRange(groupList);
}
}
}