155 lines
6.2 KiB
C#
155 lines
6.2 KiB
C#
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<WX_ALIVE_SERVICE>, IWX_ALIVE_SERVICE
|
|
{
|
|
|
|
|
|
public List<string> 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<string> 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<WX_ALIVE_SERVICE_Extend> 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<WX_ALIVE_SERVICE_Extend>(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();
|
|
}
|
|
}
|
|
}
|
|
}
|