using System; using System.Collections.Generic; using System.Linq; using WX.CRM.BLL; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.Model.MAP; namespace AY.CRM.BLL.Wx { public class WX_ALIVE_SERVICE_BL : DbContextRepository, IWX_ALIVE_SERVICE { public List GetVersions() { using (var db = new crmContext()) { var query = db.WX_ALIVE_SERVICE.AsQueryable(); var list = query.GroupBy(m => new { m.VERSION }).Select(g => g.Key.VERSION).ToList(); return list; } } public List GetPhoneModes() { using (var db = new crmContext()) { var query = db.WX_ALIVE_SERVICE.AsQueryable(); var list = query.GroupBy(m => new { m.PHONEMODE }).Select(g => g.Key.PHONEMODE).ToList(); return list; } } public List GetList(ref Pager pager, string version, string phoneMode, string groupId, decimal? eid, string alias, decimal? zaixian) { using (crmContext db = new crmContext()) { var al = db.WX_ALIVE_SERVICE.AsQueryable(); var bl = db.BAS_INNERUSERGROUP.AsQueryable(); var c1 = db.BAS_INNERUSER.AsQueryable(); if (!string.IsNullOrEmpty(version)) { al = al.Where(m => m.VERSION == version); } if (!string.IsNullOrEmpty(phoneMode)) { al = al.Where(m => m.PHONEMODE == phoneMode); } if (!string.IsNullOrEmpty(alias))//微信号 { al = al.Where(m => m.ALIAS.Contains(alias)); } if (eid.HasValue) { c1 = c1.Where(m => m.EID == eid); } if (!string.IsNullOrEmpty(groupId)) { decimal[] iSaleGroupdIds = OperationUtil.ConvertToDecimal(groupId.Split(',')); bl = bl.Where(m => iSaleGroupdIds.Contains(m.GID.Value)); } if (zaixian.HasValue) { DateTime t1 = DateTime.Now.AddMinutes(-15);//当前减去15分钟 if (zaixian.Value == 1) { al = al.Where(m => m.LASTTIME >= t1); } else { al = al.Where(m => m.LASTTIME < t1); } } var query = (from a in al join b in db.WX_WORKACCOUNT on a.ALIAS equals b.ALIAS join c in bl on b.INNERUSERID equals c.INNERUSERID join d in c1 on c.INNERUSERID equals d.PKID join e in db.BAS_INNERGROUP on c.GID equals e.GID select new WX_ALIVE_SERVICE_Extend { WX_Alive_Service = a, InnerUserId = b.INNERUSERID, GroupName = e.GNAME, Eid = d.EID }); if (pager == null) { query = query.OrderByDescending(m => m.WX_Alive_Service.PHONEMODE).OrderByDescending(m => m.WX_Alive_Service.VERSION).OrderByDescending(m => m.WX_Alive_Service.LASTTIME); return query.ToList(); } //排序 if (pager.order == "asc") { switch (pager.sort) { case "InnerUserId": query = query.OrderBy(c => c.Eid); break; case "GroupName": query = query.OrderBy(c => c.GroupName); break; case "LASTTIME": query = query.OrderBy(c => c.WX_Alive_Service.LASTTIME); break; case "VERSION": query = query.OrderBy(c => c.WX_Alive_Service.VERSION); break; case "PHONEMODE": query = query.OrderBy(c => c.WX_Alive_Service.PHONEMODE); break; default: query = query.OrderBy(c => c.WX_Alive_Service.LASTTIME); break; } } else { switch (pager.sort) { case "InnerUserId": query = query.OrderByDescending(c => c.Eid); break; case "GroupName": query = query.OrderByDescending(c => c.GroupName); break; case "LASTTIME": query = query.OrderByDescending(c => c.WX_Alive_Service.LASTTIME); break; case "VERSION": query = query.OrderByDescending(c => c.WX_Alive_Service.VERSION); break; case "PHONEMODE": query = query.OrderByDescending(c => c.WX_Alive_Service.PHONEMODE); break; default: query = query.OrderByDescending(c => c.WX_Alive_Service.LASTTIME); break; } } PagerUtil.SetPager(ref query, ref pager);//分页 //query = query.OrderByDescending(m => m.WX_Alive_Service.PHONEMODE).OrderByDescending(m => m.WX_Alive_Service.VERSION).OrderByDescending(m => m.WX_Alive_Service.LASTTIME); return query.ToList(); } } } }