Пример #1
0
        public void Execute()
        {
            // Trace.WriteLine("现在时间是:" + DateTime.Now);
            lock (_lock)
            {
                if (_shuttingDown)
                {
                    return;
                }

                ILoggingService _logger = new LoggingService();
                try
                {
                    VideoServices       videoServices       = new VideoServices();
                    ReservationServices reservationServices = new ReservationServices();
                    CacheService        cacheServices       = new CacheService();

                    var videos = videoServices.GetNoticedElementsAsync().Result;

                    //_logger.Info("消息发送处理视频:" + videos.Count() + "条");
                    foreach (var video in videos)
                    {
                        var res = video.Reservations;
                        //_logger.Info("Reservations.Any:" + video.Reservations.Any());
                        if (!video.Reservations.Any())
                        {
                            continue;
                        }

                        string accesstoken;
                        if (cacheServices.IsSet("access_token"))
                        {
                            accesstoken = (string)cacheServices.Get("access_token");
                        }
                        else
                        {
                            var atvm = WeChatHepler.GetAccessTokenAsync(SettingsManager.WeiXin.AppId, SettingsManager.WeiXin.AppSecret).Result;
                            accesstoken = atvm.access_token;
                            cacheServices.Set("access_token", accesstoken, 120);
                        }
                        //_logger.Info("accesstoken:" + accesstoken);

                        var msg = $"您预约的直播视频[{video.Title}]即将在{video.StartDate:F}直播,At@{DateTime.Now}";
                        _logger.Info("消息内容:" + msg);
                        var openIds = res.Select(d => d.OpenId).ToArray();

                        if (openIds.Length == 1)
                        {
                            //  _logger.Info("accesstoken:单发");
                            var message = new SingleSendMessagesVM {
                                ToUser = openIds[0], MsgType = "text", Text = new Message {
                                    Content = msg
                                }
                            };

                            var json = JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented,
                                                                   new JsonSerializerSettings {
                                ContractResolver = new LowercaseContractResolver()
                            });

                            //Log("post:" + json);
                            HttpContent content = new StringContent(json);
                            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                            var result = WeChatHepler.SingleSendMessagesAsync(accesstoken, content).Result;
                            if (result.ErrCode == 0)
                            {
                                foreach (var r in res)
                                {
                                    r.NoticedDate = DateTime.Now;
                                }
                                videoServices.Update(video);
                            }

                            _logger.Info($"单发结果[errcode:{result.ErrCode},errmsg:{result.ErrMsg}];消息主体:{json}");
                        }
                        else
                        {
                            // _logger.Info("accesstoken:群发");
                            var message = new BatchSendMessagesVM {
                                ToUser = openIds, MsgType = "text", Text = new Message {
                                    Content = msg
                                }
                            };
                            var json = JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented,
                                                                   new JsonSerializerSettings {
                                ContractResolver = new LowercaseContractResolver()
                            });

                            //Log("post:" + json);
                            HttpContent content = new StringContent(json);
                            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                            var result = WeChatHepler.BatchSendMessagesAsync(accesstoken, content).Result;
                            if (result.ErrCode == 0)
                            {
                                foreach (var r in res)
                                {
                                    r.NoticedDate = DateTime.Now;
                                }
                                videoServices.Update(video);
                            }
                            _logger.Info($"群发结果[errcode:{result.ErrCode},errmsg:{result.ErrMsg}];消息主体:{json}");
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.Fatal("发送失败:" + ex.Message);
                }
            }
        }
        public ActionResult VideoSave(VideoViewModel viewModel, HttpPostedFileBase Thumbnail)
        {
            SessionKontrol();
            if (_users != null)
            {
                try
                {
                    if (viewModel.Thumbnail == null)
                    {
                        viewModel.Thumbnail = "0";
                    }
                    var isValid = Validate(viewModel, new VideoValidator(), ModelState);
                    if (isValid)
                    {
                        if (viewModel.Id == 0)
                        {
                            UploadFiles(Thumbnail);
                            viewModel.Thumbnail = imagename;
                            viewModel.Status    = true;

                            _VideoServices.Add(viewModel);
                        }
                        else
                        {
                            var getimg = _VideoServices.Get(viewModel.Id).Thumbnail;
                            if (viewModel.Thumbnail == "0")
                            {
                                viewModel.Thumbnail = getimg;
                                viewModel.Status    = true;
                                _VideoServices.Update(viewModel);
                            }
                            else
                            {
                                UploadFiles(Thumbnail);
                                viewModel.Thumbnail = "/Areas/Login/Assets/images/" + imagename;
                                _VideoServices.Update(viewModel);
                            }
                        }
                    }
                    else
                    {
                        if (viewModel.Id == 0)
                        {
                            return(View("videoadd", viewModel));
                        }
                        else
                        {
                            return(View("videodetail", viewModel));
                        }
                    }
                }
                catch (Exception)
                {
                    return(View(ViewForm, viewModel));
                }
                _unitOfWork.SaveChanges();
                return(RedirectToAction("VideoList", "Video"));
            }
            else
            {
                return(RedirectToAction("Index", "Login"));
            }
        }