示例#1
0
        /// <summary>
        ///
        /// </summary>
        public void Execute()
        {
            using (var db = new PXinContext())
            {
                var pushList = from push in db.TpxinPushDataSet
                               join chat in db.TchatUserSet on push.Nodeid equals chat.Nodeid
                               join pushkey in db.TnetReginfoExtSet on push.Nodeid equals pushkey.Nodeid
                               where push.Expecttime < DateTime.Now && push.Status == 0 && chat.IsSysNotice == 1
                               select new
                {
                    ID             = push.Id,
                    Typeid         = push.Typeid,
                    Nodeid         = push.Nodeid,
                    Title          = push.Title,
                    Content        = push.Content,
                    Url            = push.Url,
                    GTClientid     = pushkey.Gtclientid,
                    DeviceToken    = pushkey.Devicetoken,
                    IsNoticeDetail = chat.IsNoticeDetail,
                };
                string content = "";
                foreach (var item in pushList)
                {
                    string cnt = item.Content;
                    if (item.IsNoticeDetail == 0)
                    {
                        cnt = "您有一条新消息";
                    }
                    content = JsonConvert.SerializeObject(new
                    {
                        Type    = "APonitOut",//((BusinessCategoryEnum)item.Typeid).ToString(),
                        Title   = item.Title,
                        Content = cnt,
                        Url     = item.Url.Replace("{sign}", GetQueryString(item.Nodeid))
                    });
                    facade.GtPush(item.Nodeid, item.GTClientid, item.DeviceToken, item.Title, content);
                    facade.AddMessage(db, item.Nodeid, item.Content, item.Url, item.Title);

                    var pushData = db.TpxinPushDataSet.FirstOrDefault(f => f.Id == item.ID);
                    pushData.Pushtime = DateTime.Now;
                    pushData.Status   = 1;
                    if (db.SaveChanges() < 0)
                    {
                        log.Info("修改推送状态失败:ID=" + pushData.Id);
                    }
                }
            }
        }