ComplianceServer/oldcode/BLL/Soft/SOFT_USER_BL.cs

610 lines
24 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using WX.CRM.BLL.Base;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.DAL.Soft;
using WX.CRM.IBLL.Soft;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
using WX.CRM.BLL.Base;
using WX.CRM.BLL.Application.UserComBox;
namespace WX.CRM.BLL.Soft
{
public class SOFT_USER_BL : ISOFT_USER, ISOFT_USER_Q
{
#region
/// <summary>
/// 添加
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.SOFT_USER model)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
model.CTIME = DateTime.Now;
db.SOFT_USER.Add(model);
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
#endregion
#region
public List<SOFT_USER> GetUserList_userName(string[] userNames)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
return db.SOFT_USER.Where(p => userNames.Contains(p.USERNAME)).ToList();
}
}
/// <summary>
/// 查询单个username信息
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public SOFT_USER GetUser_userName(string userName)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
return db.SOFT_USER.Where(p => p.USERNAME == userName).FirstOrDefault();
}
}
/// <summary>
/// 查询单个username信息
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public SOFT_USER GetUser_userNameByCardNo(string userNo)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
decimal cradNo = Convert.ToDecimal(userNo);
return db.SOFT_USER.Where(p => p.USERNO == cradNo).FirstOrDefault();
}
}
/// <summary>
/// 根据resid查询单个username信息
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public SOFT_USER_EXTEND GetUser_ByUserName(string username)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
//return db.SOFT_USER.join;
SOFT_USER_EXTEND user = (from q in db.SOFT_USER
join e in db.RES_CUSTOMERUSER on q.USERNAME equals e.USERNAME
where q.USERNAME == username
select new SOFT_USER_EXTEND
{
USERNAME = q.USERNAME,
RESID = e.RESID,
USERNO = q.USERNO,
REGCAMPAINID = q.REGCAMPAINID
}).FirstOrDefault();
return user;
}
}
public SOFT_USER_EXTEND GetUser_ByResId(string username, string resid)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
//return db.SOFT_USER.join;
SOFT_USER_EXTEND user = (from q in db.SOFT_USER
join e in db.RES_CUSTOMERUSER on q.USERNAME equals e.USERNAME
where e.RESID == resid && q.USERNAME == username
select new SOFT_USER_EXTEND
{
USERNAME = q.USERNAME,
RESID = e.RESID,
USERNO = q.USERNO,
REGCAMPAINID = q.REGCAMPAINID
}).FirstOrDefault();
return user;
}
}
//public List<Soft_User_UserData> GetUserUserDatas()
//{
// using (var db = new crmContext())
// {
// var q = (from t0 in db.SOFT_USER
// join t1 in db.RES_CUSTOMERUSER on t0.USERNAME equals t1.USERNAME
// join t2 in db.GJS_CUSTOMER on t1.RESID equals t2.RESID
// join t3 in db.HST_SETUSERRIGHT on t2.TRADECODE equals t3.TRADECODE into tmp3
// from t2T3 in tmp3.DefaultIfEmpty()
// select new Soft_User_UserData()
// {
// userName = t0.USERNAME,
// tradeCode = t2.TRADECODE,
// Hst_username = t2T3.HST_USERNAME
// }
// );
// return q.ToList();
// }
//}
#region
/// <summary>
/// 获取软件客户列表
/// </summary>
/// <param name="pager"></param>
/// <param name="softName">用户名</param>
/// <param name="saleId"></param>
/// <param name="resId">客户ID</param>
/// <param name="userStatus">用户状态</param>
/// <param name="optime1">权限开通日期1</param>
/// <param name="optime2">权限开通日期2</param>
/// <param name="endtime1">权限截止日期1</param>
/// <param name="endtime2">权限截止日期2</param>
/// <param name="groupId">组别</param>
/// <param name="inneruserId">员工</param>
/// <returns></returns>
public List<SOFT_USER> GetList(ref Pager pager, string softName, string resId, DateTime? ctime1, DateTime? ctime2)
{
using (var db = new crmContext())
{
var queryData = db.SOFT_USER.AsQueryable();
if (!string.IsNullOrWhiteSpace(softName))
{
queryData = queryData.Where(m => m.USERNAME == softName);
}
if (!string.IsNullOrWhiteSpace(resId))
queryData = queryData.Where(m => m.RESID == resId);
//if (userStatus != 0)
// queryData = queryData.Where(m => m.ISACTIVE == userStatus);
if (ctime1.HasValue)
queryData = queryData.Where(m => m.REGDATE >= ctime1.Value);
if (ctime2.HasValue)
{
ctime2 = ctime2.Value.AddDays(1);
queryData = queryData.Where(m => m.REGDATE < ctime2.Value);
}
//if (endtime1.HasValue)
// queryData = queryData.Where(m => m.ENDDATE >= endtime1.Value);
//if (endtime2.HasValue)
//{
// endtime2 = endtime2.Value.AddDays(1);
// queryData = queryData.Where(m => m.ENDDATE < endtime2);
//}
//if (inneruserId != null)
//{
// queryData = queryData.Where(m => m.SALEUSERID.Value == inneruserId);
//}
//else if (!string.IsNullOrEmpty(groupId))
//{
// decimal[] _groupIds = OperationUtil.ConvertToDecimal(groupId.Split(','));
// var userids = db.BAS_INNERUSERGROUP.Where(m => _groupIds.Contains(m.GID.Value)).Select(m => m.INNERUSERID);
// queryData = queryData.Where(m => userids.Contains(m.SALEUSERID.Value));
//}
//if (saleId > 0)
// queryData = queryData.Where(m => m.SALEUSERID.Value == saleId);
IQueryable<SOFT_USER> query = from a in queryData
select a;
//排序
//if (pager.order == "desc")
//{
// switch (pager.sort)
// {
// default:
// query = query.OrderByDescending(c => c.REGDATE);
// break;
// }
//}
//else
//{
// switch (pager.sort)
// {
// default:
// query = query.OrderBy(c => c.REGDATE);
// break;
// }
//}
query = query.OrderByDescending(c => c.REGDATE);
PagerUtil.SetPager<SOFT_USER>(ref query, ref pager);
return query.ToList();
}
}
public List<SOFT_USER> GetList(ref Pager pager, string softName, string resId, DateTime? ctime1, DateTime? ctime2, decimal? eid, decimal? hasMobile, decimal? noInvite, QueryUserComboDto usercomboDto, decimal? inviteFlag)
{
using (var db = new crmContext())
{
var queryData = db.SOFT_USER.AsQueryable();
if (!string.IsNullOrWhiteSpace(softName))
{
queryData = queryData.Where(m => m.USERNAME == softName);
}
if (!string.IsNullOrWhiteSpace(resId))
queryData = queryData.Where(m => m.RESID == resId);
if (ctime1.HasValue)
queryData = queryData.Where(m => m.REGDATE >= ctime1.Value);
if (ctime2.HasValue)
{
ctime2 = ctime2.Value.AddDays(1);
queryData = queryData.Where(m => m.REGDATE < ctime2.Value);
}
if (eid.HasValue)
{
queryData = queryData.Where(m => m.EID == eid);
}
if (hasMobile.HasValue && hasMobile == 1)
{
queryData = queryData.Where(m => m.RESID != null);
}
//非邀请注册用户
if (noInvite.HasValue && noInvite == 1)
{
var innerUser = db.BAS_INNERUSER.AsQueryable();
List<decimal> eids = db.BAS_INNERUSER.AsQueryable().Select(m => m.EID).ToList();
List<decimal?> eidlist = new List<decimal?>();
foreach (var e in eids)
{
eidlist.Add(e);
}
queryData = queryData.Where(m => !eidlist.Contains(m.EID));
}
//邀请客户
if (inviteFlag.HasValue && inviteFlag == 1)
{
var innerUser = db.BAS_INNERUSER.AsQueryable();
List<decimal> eids = db.BAS_INNERUSER.AsQueryable().Select(m => m.EID).ToList();
List<decimal?> eidlist = new List<decimal?>();
foreach (var e in eids)
{
eidlist.Add(e);
}
queryData = queryData.Where(m => eidlist.Contains(m.EID));
}
if (usercomboDto.userId.HasValue && usercomboDto.userId > 0)
{
var returnData = (from a in queryData
join b in db.BAS_INNERUSER on a.EID equals b.EID
where b.PKID == usercomboDto.userId
select a);
queryData = returnData;
}
else if (!string.IsNullOrEmpty(usercomboDto.groupIds))
{
var _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(','));
queryData = (from a in queryData
join c in db.BAS_INNERUSER on a.EID equals c.EID
join b in db.BAS_INNERUSERGROUP on c.PKID equals b.INNERUSERID
where _groupids.Contains(b.GID.Value)
select a);
}
else if (!string.IsNullOrEmpty(usercomboDto.deptId))
{
var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(','));
List<decimal> ALLdeptIDS = new List<decimal>();
List<decimal> ALLgidS = new List<decimal>();
UserServices userservices = new UserServices();
foreach (var item in depts)
{
List<decimal> deptIDS = new List<decimal>();
List<decimal> gidS = new List<decimal>();
userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid
ALLdeptIDS.AddRange(deptIDS);
ALLgidS.AddRange(gidS);
}
queryData = (from a in queryData
join c in db.BAS_INNERUSER on a.EID equals c.EID
join b in db.BAS_INNERUSERGROUP on c.PKID equals b.INNERUSERID
//join g in db.BAS_INNERGROUP on b.GID equals g.GID
where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value)
select a);
}
//else
//{
// if (!string.IsNullOrWhiteSpace(groupId) && (groupId.IndexOf(',') < 0 || saleDeptId <= 1)) //当单个组时走这个判断
// {
// var _groupids = OperationUtil.ConvertToDecimal(groupId.Split(','));
// List<decimal?> groupList = new List<decimal?>();
// if (_groupids != null)
// {
// foreach (var g in _groupids)
// {
// groupList.Add(g);
// }
// }
// if (groupList != null)
// {
// var returnData = (from a in queryData
// join b in db.BAS_INNERUSER on a.EID equals b.EID
// join c in db.BAS_INNERUSERGROUP on b.PKID equals c.INNERUSERID
// where groupList.Contains(c.GID)
// select a);
// queryData = returnData;
// }
// }
// else if (saleDeptId.HasValue && saleDeptId > 1) //销售部门走这个判断
// {
// var returnData = (from a in queryData
// join b in db.BAS_INNERUSER on a.EID equals b.EID
// join c in db.BAS_INNERUSERGROUP on b.PKID equals c.INNERUSERID
// join d in db.BAS_INNERGROUP on c.GID equals d.GID
// where d.SALEDEPTID == saleDeptId
// select a);
// queryData = returnData;
// }
//}
IQueryable<SOFT_USER> query = from a in queryData
select a;
query = query.OrderByDescending(c => c.REGDATE);
PagerUtil.SetPager<SOFT_USER>(ref query, ref pager);
return query.ToList();
}
}
#endregion
#endregion
#region
public void Update(SOFT_USER model)
{
using (var db = new crmContext())
{
var entry = db.Entry(model);
db.Set<SOFT_USER>().Attach(model);
entry.State = EntityState.Modified;
db.SaveChanges();
}
}
public bool ActiveUpdate(ref ValidationErrors errors, SOFT_USER model)
{
try
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var user = db.SOFT_USER.Where(p => p.USERNAME == model.USERNAME).FirstOrDefault();
user.ACTIVERESID = model.ACTIVERESID;
user.USERLEVEL = model.USERLEVEL;
user.ISACTIVE = model.ISACTIVE;
user.ACTIVETIME = DateTime.Now;
db.Entry<WX.CRM.Model.Entity.SOFT_USER>(user).State = EntityState.Modified;
db.SaveChanges();
return true;
}
}
catch (DbUpdateException ex)
{
LogHelper.Error(ex.Message);
errors.Add(ex.Message);
return false;
}
}
public void UpdateByLastLoginTime(string resid)
{
try
{
using (var db = new crmContext())
{
var softuser = db.RES_CUSTOMER_RFM.FirstOrDefault(p => p.RESID == resid);
if (softuser != null)
{
softuser.LASTLOGINTIME = DateTime.Now;
//softuser.UTIME = DateTime.Now;
db.SaveChanges();
}
else
{
RES_CUSTOMER_RFM model = new RES_CUSTOMER_RFM()
{
RESID = resid,
LASTLOGINTIME = DateTime.Now,
CTIME = DateTime.Now,
PKID = new SEQUENCES_BL().Seq_base_get()
};
db.RES_CUSTOMER_RFM.Add(model);
db.SaveChanges();
}
}
}
catch (Exception ex)
{
LogHelper.Error("UpdateByLastLoginTime:" + ex.ToString());
}
}
#endregion
#region
public DataSet getJMDGJSDataFrom(DateTime ctime, DateTime etime)
{
return new Soft_JMDGJSDataFrom().getJMDGJSDataFrom(ctime, etime);
}
#endregion
#region
public List<SOFT_USER> geUnAgentUserList(ref Pager pager, DateTime? ctime, DateTime? etime, string username, decimal? regtag)
{
DataSet ds = new Soft_User_DAL().geUnAgentUserList(ref pager, ctime, etime, username, regtag);
List<SOFT_USER> list = ds.Tables[0].ToList<SOFT_USER>();
//存储过程里返回一行 username ='0',userno =总数量
SOFT_USER model = list.FirstOrDefault(p => p.USERNAME == "0");
if (model != null)
{
pager.totalRows = Convert.ToInt32(model.USERNO);
list.Remove(model);
}
return list;
}
#endregion
//public List<Soft_User_UserData> GetUser_UserInfoByTag(decimal regcampaidid, DateTime? ctime, DateTime? etime)
//{
// using (var db = new crmContext())
// {
// var user = db.SOFT_USER.Where(p => p.REGCAMPAINID == regcampaidid).AsQueryable();
// if (ctime.HasValue && etime.HasValue)
// user = user.Where(p => p.REGDATE >= ctime && p.REGDATE <= etime);
// var q = (from t0 in user
// join t1 in db.RES_CUSTOMERUSER on t0.USERNAME equals t1.USERNAME
// join t2 in db.GJS_CUSTOMER on t1.RESID equals t2.RESID
// select new Soft_User_UserData
// {
// userName = t0.USERNAME,
// tradeCode = t2.TRADECODE,
// }
// );
// return q.ToList();
// }
//}
public List<SOFT_USER> GetUserByResid(string resid)
{
using (var db = new crmContext())
{
var q = (from t1 in db.SOFT_USER
join t2 in db.RES_CUSTOMERUSER on t1.USERNAME equals t2.USERNAME
where t2.RESID == resid
select t1
);
return q.ToList();
}
}
/// <summary>
/// 是否含有 用户名(长沙用)
/// </summary>
/// <param name="username">用户名</param>
/// <returns></returns>
public bool IsHasUser(string username)
{
return new Soft_User_DAL().IsHasUser(username);
}
/// <summary>
/// 是否含有resid
/// </summary>
/// <param name="resid">客户ID</param>
/// <param name="isOne">是否是一部</param>
/// <returns></returns>
public bool IsHasResId(string resid, bool isOne)
{
return new Soft_User_DAL().IsHasResId(resid, isOne);
}
public bool InserSoftUser(bool isOne, string resid, string tag, string cardNo, string userName, DateTime? regDate, int companyId, string activeMobile = null, string platform = null)
{
return new Soft_User_DAL().InserSoftUser(isOne, resid, tag, cardNo, userName, regDate, companyId, activeMobile, platform);
}
public List<SOFT_USER_MK> GetCanOpenRes(string username, string phone, ref Pager pager)
{
using (var db = new crmContext())
{
IQueryable<WX.CRM.Model.Entity.SOFT_USER> queryData = db.SOFT_USER.Where(m => m.RESID != null).AsQueryable();
if (!string.IsNullOrEmpty(username))
{
queryData = queryData.Where(m => m.USERNAME == username);
}
if (!string.IsNullOrEmpty(phone))
{
string resid = ResUtil.CreateResId(phone);
queryData = queryData.Where(m => m.RESID == resid);
}
var xn = from m in queryData
join x in db.RES_RESOURCEMOBILE on m.RESID equals x.RESID
select new SOFT_USER_MK
{
phone = x.MOBILE,
registerTime = m.REGDATE,
resid = x.RESID,
username = m.USERNAME
};
xn = xn.OrderByDescending(m => m.registerTime);
PagerUtil.SetPager<WX.CRM.Model.MAP.SOFT_USER_MK>(ref xn, ref pager);//分页
return xn.ToList();
}
}
public DataSet GetInvistListCount(DateTime? stime, DateTime? etime, decimal? hasMobile, string deptId, string groupId, string innerUserId)
{
if (!stime.HasValue)
{
stime = DateTime.Now.Date;
}
if (!etime.HasValue)
{
etime = DateTime.Now.AddDays(1).Date;
}
else
{
etime = etime.Value.AddDays(1);
}
if (!hasMobile.HasValue)
{
hasMobile = 0;
}
return new Soft_User_DAL().GetInvistListCount(stime, etime, hasMobile.Value, deptId, groupId, innerUserId);
}
public DataSet GetInviteCountByDay(DateTime? stime, DateTime? etime)
{
if (!stime.HasValue)
{
stime = DateTime.Now.Date;
}
if (!etime.HasValue)
{
etime = DateTime.Now.AddDays(1).Date;
}
return new Soft_User_DAL().GetInviteCountByDay(stime, etime);
}
/// <summary>
/// 获取资源注册统计报表
/// </summary>
/// <param name="ctime"></param>
/// <param name="etime"></param>
/// <returns></returns>
public List<SoftRptListView> Soft_Rpt_Get(DateTime ctime, DateTime etime)
{
var ds = new Soft_User_DAL().Soft_Rpt_Get(ctime, etime);
var list = ds.ToList<SoftRptListView>();
return list;
}
}
}