/// <summary> /// 获取同步数据集合 /// </summary> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <param name="page"></param> /// <param name="limit"></param> /// <returns></returns> public List <SynchData> GetSynchDataList(GetSynchDataListInput param) { FilterDefinition <SynchData> filter = Filter.Empty; if (param.StartTime == null && param.EndTime == null && !string.IsNullOrEmpty(param.LastSyncId)) { filter = filter & Filter.Where(row => row.Id > ObjectId.Parse(param.LastSyncId)); } else { if (param.StartTime != null) { filter = filter & Filter.Gte(entity => entity.CreateTime, param.StartTime); } if (param.EndTime != null) { filter = filter & Filter.Lte(entity => entity.CreateTime, param.EndTime); } } var options = new FindOptions <SynchData, SynchData>().Paging(param); param.Total = Collection.Count(filter); return(Collection.FindAsync(filter, options).GetAwaiter().GetResult().ToListAsync().GetAwaiter().GetResult()); }
/// <summary> /// /// </summary> /// <param name="param"></param> /// <returns></returns> public List <SynchData> GetSynchDataList(GetSynchDataListInput param) { var agent = AgentBusiness.GetByAppKey(HttpContext.Current.Request.Headers["AppKey"]); agent.LastRequestTime = DateTime.Now; param.LastSyncId = agent.LastSyncId; var results = SynchDataProvider.GetSynchDataList(param); string minId = null; string maxId = null; if (results.ExistsData()) { var item = results.LastOrDefault(); if (param.StartTime == null && param.EndTime == null) { agent.LastSyncId = item.Id.ToString(); } minId = results.Min(row => row.Id).ToString(); maxId = results.Max(row => row.Id).ToString(); } AgentBusiness.Update(agent); SynchLogBusiness.Add(new SynchLog() { AgentId = agent.Id.ToString(), CollectionName = HttpContext.Current.Request.Headers["CollectionName"], MinId = minId, MaxId = maxId, Result = "", TotalCount = results.Count(), Type = SynchLogTypeEnum.Get, Ip = HttpHelper.IP, Token = HttpContext.Current.Request.Headers["Token"] }); return(results); }
/// <summary> /// 获取同步数据列表 /// </summary> /// <param name="param"></param> /// <returns></returns> public object GetList(GetSynchDataListInput param) { if (param == null) { param = new GetSynchDataListInput(); } var lists = synchDataBusiness.GetSynchDataList(param); var results = new List <JObject>(); lists.ForEach(item => { results.Add(JsonHelper.DeserializeObject <JObject>(item.Data.ToString())); }); return(new { Data = results, Total = param.Total, }); }