コード例 #1
0
        /// <summary>
        /// 上传并保存微信素材
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <IActionResult> SaveAndUpdate(MpMediaArticleDto input)
        {
            MpMediaArticleDto result = null;

            input.LastModificationTime = DateTime.Now;
            if (Request.Form.Files.Count > 0)
            {
                var    profilePictureFile = Request.Form.Files.First();
                byte[] fileBytes;
                using (var stream = profilePictureFile.OpenReadStream())
                {
                    fileBytes = stream.GetAllBytes();
                }
                var    fileInfo = new FileInfo(profilePictureFile.FileName);
                var    extra    = fileInfo.Extension.Substring(fileInfo.Extension.IndexOf(".") + 1);
                string fileUrl  = await _fileServer.UploadFile(fileBytes, extra, MpMessageType.mpnews.ToString());

                input.FilePathOrUrl = fileUrl;
                Logger.Info($"封面图片URL:{fileUrl}");
                var filename = fileUrl.Substring(fileUrl.LastIndexOf("/") + 1);
                input.PicMediaID = await _wxMediaUpload.UploadAndGetMediaID(input.MpID, fileUrl, MpMessageType.image);

                Logger.Info($"封面图片MediaID:{input.PicMediaID}");
                await _mpMediaImageAppService.Create(new MpMediaImageDto
                {
                    FileID               = input.PicFileID,
                    FilePathOrUrl        = input.FilePathOrUrl,
                    MpID                 = input.MpID,
                    Name                 = input.Title + "封面图片",
                    MediaID              = input.PicMediaID,
                    LastModificationTime = DateTime.Now
                });
            }

            //更换微信图文中图片链接

            var domain = _webUrlService.GetServerRootAddress();

            domain          = domain.Substring(0, domain.Length - 1);
            input.WxContent = await _mpMediaArticleAppService.UpdateWxContentString(input.Content, input.ArticleGrid, domain);

            //获取图文mediaID
            if (string.IsNullOrEmpty(input.MediaID))
            {
                input.MediaID = await _wxMediaUpload.UploadArticleAndGetMediaID(input.MpID, new Senparc.Weixin.MP.AdvancedAPIs.GroupMessage.NewsModel
                {
                    author                = input.Author,
                    title                 = input.Title,
                    digest                = input.Description,
                    content               = input.WxContent,
                    content_source_url    = input.AUrl,
                    show_cover_pic        = input.ShowPic,
                    thumb_media_id        = input.PicMediaID,
                    need_open_comment     = input.EnableComment,
                    only_fans_can_comment = input.OnlyFansComment
                });
            }
            else
            {
                input.MediaID = await _wxMediaUpload.UploadArticleAndGetMediaID(input.MpID, new Senparc.Weixin.MP.AdvancedAPIs.GroupMessage.NewsModel
                {
                    author                = input.Author,
                    title                 = input.Title,
                    digest                = input.Description,
                    content               = input.WxContent,
                    content_source_url    = input.AUrl,
                    show_cover_pic        = input.ShowPic,
                    thumb_media_id        = input.PicMediaID,
                    need_open_comment     = input.EnableComment,
                    only_fans_can_comment = input.OnlyFansComment
                }, false, input.MediaID);
            }

            if (input.Id == 0)
            {
                result = await _mpMediaArticleAppService.Create(input);
            }
            else
            {
                result = await _mpMediaArticleAppService.Update(input);
            }
            return(Json(result));
        }
コード例 #2
0
 public CreateOrEditMpMediaArticleViewModel(MpMediaArticleDto output)
 {
     output.MapTo(this);
 }