Exemple #1
0
        /// <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,
            });
        }