public async Task <Result <string> > DelWxNews([FromBody] WxNewsShow item) { try { var delRes = PubMediaApi.DeleteMaterial(item.MediaId); logHelper.Debug("DelWxNews:删除永久图文结果:" + delRes.JsonSerialize()); if (!delRes.IsSuss) { var msg = "删除永久图文失败:代码:" + delRes.errcode + " " + delRes.errmsg; logHelper.Error("DelWxNews:" + msg); return(new Result <string> { Message = msg }); } item.IsDel = 1; item.Updater = currentUser.UserName; item.UpdateTime = DateTime.Now; var upRes = await repo.UpdateAsync(item, new List <string> { "IsDel", "Updater", "UpdateTime" }); return(new Result <string> { IsSucc = upRes, Message = $"获取微信永久图文列表{(upRes ? "成功!" : "失败!")}" }); } catch (Exception ex) { logHelper.Error("DelWxNews:获取微信永久图文列表失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "获取微信永久图文列表失败!" }); }
public async Task <Result <string> > SyncNewsList([FromBody] JObject objPara) { try { int count = Convert.ToInt32(objPara["count"]); // 所有素材 var lstAll = new List <PubNews>(); var lstNewsIds = new List <string>(); var startInd = 0; int pageSize = 20; var syncRes = PubMediaApi.GetMaterialNewsList(startInd, pageSize); logHelper.Debug("SyncNewsList:同步微信公众号永久图文素材结果:" + syncRes.JsonSerialize()); if (!syncRes.IsSuss) { var msg = "同步微信公众号永久图文素材失败:" + syncRes.errcode + " " + syncRes.errmsg; logHelper.Error("SyncNewsList:" + msg); return(new Result <string> { Message = msg }); } // 总数 var allCount = syncRes.total_count; if (allCount > count) { allCount = count; } lstAll.AddRange(syncRes.item); await SyncWxNews(lstNewsIds, syncRes); // 循环同步 while (syncRes.IsSuss && lstAll.Count < allCount) { startInd += pageSize; syncRes = PubMediaApi.GetMaterialNewsList(startInd, pageSize); logHelper.Debug("SyncNewsList:同步微信公众号永久图文素材结果:" + syncRes.JsonSerialize()); if (syncRes.IsSuss) { lstAll.AddRange(syncRes.item); await SyncWxNews(lstNewsIds, syncRes); } } return(new Result <string> { IsSucc = true, Message = "获取微信永久图文列表成功!" }); } catch (Exception ex) { logHelper.Error("SyncNewsList:获取微信永久图文列表失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "获取微信永久图文列表失败!" }); }
/// <summary> /// 下载微信永久素材 /// </summary> /// <param name="lstWxMedia"></param> /// <param name="mType"></param> /// <param name="virPath"></param> /// <param name="phyPath"></param> private void DownWxMedia(List <WxMediaShow> lstWxMedia, PubMediaType mType, string virPath, string phyPath) { var client = new WebClient(); var dtNow = DateTime.Now; var userName = currentUser.UserName; foreach (var item in lstWxMedia) { string extension = GetMediaExtension(mType, item); var fileName = item.MediaId + extension; var filePhyPath = phyPath + fileName; // 判断路径是否存在 var fi = new FileInfo(filePhyPath); if (!fi.Directory.Exists) { fi.Directory.Create(); } // 视频特殊处理 if (mType == PubMediaType.video) { var vRes = PubMediaApi.GetMaterialVedio(item.MediaId, mType); logHelper.Debug("DownWxMedia:下载视频素材结果:" + vRes.JsonSerialize()); if (vRes.IsSuss) { item.WxUrl = vRes.down_url; item.Title = vRes.title; item.Introduction = vRes.description; item.Updater = userName; item.UpdateTime = dtNow; repo.Update(item, new List <string> { "WxUrl", "Title", "Introduction", "Updater", "UpdateTime" }); } } // 下载微信永久素材 if (!string.IsNullOrEmpty(item.WxUrl)) { // 有返回url链接的 client.DownloadFile(item.WxUrl, filePhyPath); } else { // 其他素材直接下载 PubMediaApi.GetMaterial(item.MediaId, filePhyPath, mType); } // 更新永久素材路径 item.LocalUrl = virPath + fileName; item.Updater = userName; item.UpdateTime = dtNow; repo.Update(item, new List <string> { "LocalUrl", "Updater", "UpdateTime" }); } }
public Result <string> SaveMedia([FromBody] WxMediaShow item) { try { if (string.IsNullOrEmpty(item.Type) || string.IsNullOrEmpty(item.LocalUrl)) { return(new Result <string> { Message = "保存失败:参数不足!" }); } var mType = ComHelper.GetEnumValueByStr <PubMediaType>(item.Type); var filePath = ComHelper.GetPhyWWWRoot(item.LocalUrl); // 上传永久素材 var upRes = PubMediaApi.AddMaterial(mType, filePath, item.Title, item.Introduction); logHelper.Debug("SaveMedia:上传微信永久素材结果:" + upRes.JsonSerialize()); if (!upRes.IsSuss) { var msg = "上传微信永久素材失败:" + upRes.errcode + " " + upRes.errmsg; logHelper.Debug("SaveMedia:" + msg); return(new Result <string> { Message = msg }); } // 保存上传结果 var userName = currentUser.UserName; var dtNow = DateTime.Now; item.MediaId = upRes.media_id; item.WxUrl = upRes.url; item.Creater = userName; item.Updater = userName; item.CreateTime = dtNow; item.UpdateTime = dtNow; repo.Save(item); return(new Result <string> { IsSucc = true, Message = "保存永久素材成功!" }); } catch (Exception ex) { logHelper.Error("SaveMedia:保存永久素材失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "保存永久素材失败!" }); }
public Result <string> DelMedia([FromBody] WxMediaShow item) { try { // 删除永久素材 var delRes = PubMediaApi.DeleteMaterial(item.MediaId); logHelper.Debug("DelMedia:删除永久素材结果:" + delRes.JsonSerialize()); if (!delRes.IsSuss) { var msg = "删除永久素材失败:" + delRes.errcode + " " + delRes.errmsg; logHelper.Error("DelMedia:" + msg); return(new Result <string> { Message = msg }); } // 保存数据库记录 item.IsDel = 1; item.Updater = currentUser.UserName; item.UpdateTime = DateTime.Now; repo.Update(item, new List <string> { "IsDel", "Updater", "UpdateTime" }); return(new Result <string> { IsSucc = true, Message = "删除永久素材成功!" }); } catch (Exception ex) { logHelper.Error("DelMedia:删除永久素材失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "删除永久素材失败!" }); }
public async Task <Result <string> > SaveWxNews([FromBody] JObject objPara) { try { dynamic obj = objPara as dynamic; var lstNews = ComHelper.JsonDeserialize <List <WxNewsDetailShow> >(obj.lstNews.ToString()); var now = DateTime.Now; // 先把图文保存到数据 var userName = currentUser.UserName; foreach (var item in lstNews) { item.ShowCoverPic = 1; item.IsDel = 1; item.Creater = userName; item.Updater = userName; item.CreateTime = now; item.UpdateTime = now; //await repo.SaveAsync(item); } // 批量保存 var mulSaveRes = await repo.SaveAsync(lstNews); // 构造微信图文消息 var lstWxNew = new List <PubMediaArticle>(); var root = ComHelper.GetAbsPath("~/"); // TODO:预览界面待开发 var newsVirUrl = "~/WxAdmin/Wechat/WxNewsShow?id="; foreach (var item in lstNews) { // 文章相对路径 item.ContentSourceUrl = newsVirUrl + item.Id; // 文章真实路径 item.ContentSourceUrlShow = ComHelper.UpdImgAbsPath(root, item.ContentSourceUrl); // 保存图文信息 var temp = new PubMediaArticle(); temp.title = item.Title; temp.thumb_media_id = item.ThumbMediaId; temp.author = item.Author; temp.digest = item.Digest; temp.show_cover_pic = 1; temp.content = item.Content; temp.content_source_url = item.ContentSourceUrlShow; lstWxNew.Add(temp); } // 创建永久图文消息 var newRes = PubMediaApi.AddNews(lstWxNew); logHelper.Debug("SaveWxNews:保存图文消息结果:" + newRes.JsonSerialize()); if (!newRes.IsSuss) { var msg = "保存图文消息失败:代码:" + newRes.errcode + " 原因:" + newRes.errmsg; logHelper.Error("SaveWxNews:" + msg); return(new Result <string> { Message = msg }); } // 更新图文信息 foreach (var item in lstNews) { item.MediaId = newRes.media_id; item.IsDel = 0; //await repo.SaveAsync(item); } // 批量保存 mulSaveRes = await repo.SaveAsync(lstNews); // 保存图文消息 var dtNow = DateTime.Now; var wxNewsInfo = new WxNewsShow(); wxNewsInfo.MediaId = newRes.media_id; wxNewsInfo.FirstNewsTitle = lstNews[0].Title; wxNewsInfo.IsMultiple = lstNews.Count > 0 ? 1 : 0; wxNewsInfo.Creater = userName; wxNewsInfo.Updater = userName; wxNewsInfo.CreateTime = dtNow; wxNewsInfo.UpdateTime = dtNow; await repo.SaveAsync(wxNewsInfo); return(new Result <string> { IsSucc = true, Message = "保存图文成功!" }); } catch (Exception ex) { logHelper.Error("SaveWxNews:保存微信图文素材失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "保存微信图文素材失败!" }); }
public Result <string> SyncMediaList([FromBody] JObject objPara) { try { // 参数 dynamic obj = objPara as dynamic; string type = obj.type.ToString(); int count = Convert.ToInt32(obj.count.ToString()); if (string.IsNullOrEmpty(type)) { return(new Result <string> { Message = "请先选择要同步的素材类别!" }); } if (count <= 0) { return(new Result <string> { Message = "请先选择要同步的素材的数量!" }); } // 所有的素材 var lstAll = new List <PubMeterial>(); // 同步素材 var mType = ComHelper.GetEnumValueByStr <PubMediaType>(type); var startInd = 0; var pageSize = 20; var syncRes = PubMediaApi.GetMaterialList(mType, startInd, pageSize); logHelper.Debug("SyncMediaList:同步微信公众号永久素材结果:" + syncRes.JsonSerialize()); if (!syncRes.IsSuss) { var msg = "同步微信公众号永久素材失败:" + syncRes.errcode + " " + syncRes.errmsg; logHelper.Error("SyncMediaList:" + msg); return(new Result <string> { Message = msg }); } // 总数 var allCount = syncRes.total_count; if (allCount > count) { allCount = count; } lstAll.AddRange(syncRes.item); SyncMedias(mType, syncRes); // 循环同步 while (syncRes.IsSuss && lstAll.Count < allCount) { startInd += pageSize; syncRes = PubMediaApi.GetMaterialList(mType, startInd, pageSize); logHelper.Debug("SyncMediaList:同步微信公众号永久素材结果:" + syncRes.JsonSerialize()); if (syncRes.IsSuss) { lstAll.AddRange(syncRes.item); SyncMedias(mType, syncRes); } } return(new Result <string> { IsSucc = true, Message = "同步微信公众号永久素材成功!" }); } catch (Exception ex) { logHelper.Error("SyncMediaList:同步微信公众号永久素材失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "同步微信公众号永久素材失败!" }); }