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")); } }