void Process(Func <dynamic> mediaIdFiled, Func <dynamic> part, Func <dynamic> createAtFiled , Action <string> setMediaId, Action <int> setCreateAt, string type) { string mediaId1 = mediaIdFiled(); int create1 = 0; int.TryParse(createAtFiled(), out create1); if (string.IsNullOrWhiteSpace(mediaId1) || create1 == 0 || _winXinService.ConvertWXDateTimeInt(DateTime.Now) - create1 >= 3600 * 24 * 3) { var model1 = _weiXinSdk.UploadFile(part(), type); if (model1 != null) { //将上传后的媒体项保存到内容中. setMediaId(model1.media_id); setCreateAt(model1.created_at); } } }
public ActionResult Index(WXReqModel model) { var workContext = _orchardServices.WorkContext; var wxSettings = workContext.CurrentSite.As <WinXinSettingsPart>(); if (model.ToUserName != wxSettings.UserName) { return(Content(string.Format(@"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{3}]]></Content> </xml> ", model.FromUserName, model.ToUserName, _winXinService.ConvertWXDateTimeInt(DateTime.Now), T("微信平台对接错误,本平台不为此服务号或订阅号提供服务!")))); } string name = null; switch (model.MsgType) { case "text": name = "微信文本消息"; break; case "image": name = "微信图片消息"; break; case "voice": name = "微信语音消息"; break; case "video": name = "微信视频消息"; break; case "location": name = "微信地理位置消息"; break; case "link": name = "微信链接消息"; break; case "event": name = "微信事件消息"; if (model.Event == "LOCATION") { name = "微信上报地理位置事件"; } break; default: throw new OrchardException(T(string.Format("未知的消息类型:{0}", model.MsgType))); } if (String.IsNullOrEmpty(Owner)) { Owner = _siteService.GetSiteSettings().SuperUser; } var owner = _membershipService.GetUser(Owner); var msg = _contentManager.New("WeiXinMsg"); msg.As <ICommonPart>().Owner = owner; var part = msg.As <WXMsgPart>(); part.ToUserName = model.ToUserName; part.FromUserName = model.FromUserName; part.CreateTime = model.CreateTime; part.MsgType = model.MsgType; part.Content = model.Content; part.Location_X = model.Location_X; part.Location_Y = model.Location_Y; part.Scale = model.Scale; part.Label = model.Label; part.PicUrl = model.PicUrl; part.EventKey = model.EventKey; part.Event = model.Event; part.MsgId = model.MsgId; part.MediaId = model.MediaId; part.Format = model.Format; part.ThumbMediaId = model.ThumbMediaId; part.Title = model.Title; part.Description = model.Description; part.Url = model.Url; part.Ticket = model.Ticket; part.Latitude = model.Latitude; part.Longitude = model.Longitude; part.Precision = model.Precision; part.Recongnition = model.Recongnition; part.XML = model.XML; _contentManager.Create(msg); _workflowManager.TriggerEvent(name, msg, () => new Dictionary <string, object> { { "Content", msg } }); var tupleList = _weiXinResp.List(); var list = Shape.List(Attributes: new Dictionary <string, object> { { "ToUserName", model.FromUserName }, { "FromUserName", model.ToUserName } }); list.AddRange(tupleList.Select(t => _contentManager.BuildDisplay(t.Item1, "Detail"))); var viewModel = Shape.ViewModel() .ContentItems(list); return(View(viewModel)); }