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 添加 /// /// 添加 /// /// /// 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 GetUserList_userName(string[] userNames) { using (var db = new WX.CRM.Model.Entity.crmContext()) { return db.SOFT_USER.Where(p => userNames.Contains(p.USERNAME)).ToList(); } } /// /// 查询单个username信息 /// /// /// 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(); } } /// /// 查询单个username信息 /// /// /// 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(); } } /// /// 根据resid查询单个username信息 /// /// /// 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 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 获取分页数据列表 /// /// 获取软件客户列表 /// /// /// 用户名 /// /// 客户ID /// 用户状态 /// 权限开通日期1 /// 权限开通日期2 /// 权限截止日期1 /// 权限截止日期2 /// 组别 /// 员工 /// public List 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 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(ref query, ref pager); return query.ToList(); } } public List 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 eids = db.BAS_INNERUSER.AsQueryable().Select(m => m.EID).ToList(); List eidlist = new List(); 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 eids = db.BAS_INNERUSER.AsQueryable().Select(m => m.EID).ToList(); List eidlist = new List(); 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 ALLdeptIDS = new List(); List ALLgidS = new List(); UserServices userservices = new UserServices(); foreach (var item in depts) { List deptIDS = new List(); List gidS = new List(); 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 groupList = new List(); // 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 query = from a in queryData select a; query = query.OrderByDescending(c => c.REGDATE); PagerUtil.SetPager(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().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(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 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 list = ds.Tables[0].ToList(); //存储过程里返回一行 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 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 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(); } } /// /// 是否含有 用户名(长沙用) /// /// 用户名 /// public bool IsHasUser(string username) { return new Soft_User_DAL().IsHasUser(username); } /// /// 是否含有resid /// /// 客户ID /// 是否是一部 /// 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 GetCanOpenRes(string username, string phone, ref Pager pager) { using (var db = new crmContext()) { IQueryable 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(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); } /// /// 获取资源注册统计报表 /// /// /// /// public List Soft_Rpt_Get(DateTime ctime, DateTime etime) { var ds = new Soft_User_DAL().Soft_Rpt_Get(ctime, etime); var list = ds.ToList(); return list; } } }