/// <summary>
        /// 获取素材的默认格式
        /// </summary>
        /// <param name="mType"></param>
        /// <param name="item"></param>
        /// <returns></returns>
        private string GetMediaExtension(PubMediaType mType, WxMediaShow item)
        {
            var extension = Path.GetExtension(item.Title);

            if (string.IsNullOrEmpty(extension))
            {
                switch (mType)
                {
                case PubMediaType.image:
                    extension = ".jpg";
                    break;

                case PubMediaType.voice:
                    extension = ".mp3";
                    break;

                case PubMediaType.video:
                    extension = ".mp4";
                    break;

                case PubMediaType.thumb:
                    extension = ".jpg";
                    break;

                default:
                    break;
                }
            }

            return(extension);
        }
        public Result <string> UpdMediaName([FromBody] WxMediaShow item)
        {
            try
            {
                if (string.IsNullOrEmpty(item.Title))
                {
                    return(new Result <string> {
                        Message = "请输入永久素材的名称!"
                    });
                }

                item.Updater    = currentUser.UserName;
                item.UpdateTime = DateTime.Now;
                repo.Update(item, new List <string> {
                    "Title", "Updater", "UpdateTime"
                });
                return(new Result <string> {
                    IsSucc = true, Message = "更新永久素材名称成功!"
                });
            }
            catch (Exception ex)
            {
                logHelper.Error("UpdMediaName:更新永久素材名称失败:" + ex.Message + "      " + ex.StackTrace);
            }

            return(new Result <string> {
                Message = "更新永久素材名称失败!"
            });
        }
        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 = "保存永久素材失败!"
            });
        }
        /// <summary>
        /// 保存同步的素材和下载
        /// </summary>
        /// <param name="mType"></param>
        /// <param name="syncRes"></param>
        private void SyncMedias(PubMediaType mType, PubMeterialResult syncRes)
        {
            try
            {
                // 保存永久素材记录
                var dtNow      = DateTime.Now;
                var lstWxMedia = new List <WxMediaShow>();
                var userName   = currentUser.UserName;
                foreach (var media in syncRes.item)
                {
                    // 判断是否存在
                    var exist = repo.FirstOrDefault <WxMediaShow>(x => x.MediaId == media.media_id);
                    if (exist == null)
                    {
                        exist            = new WxMediaShow();
                        exist.Creater    = userName;
                        exist.CreateTime = dtNow;
                        exist.Title      = media.name;
                    }

                    exist.MediaId    = media.media_id;
                    exist.Type       = mType.ToString();
                    exist.WxUrl      = media.url;
                    exist.Updater    = userName;
                    exist.UpdateTime = dtNow;
                    exist.IsDel      = 0;
                    repo.Save(exist);
                    lstWxMedia.Add(exist);
                }

                // 下载附件
                var upVirPath = UpPathHelper.GetUploadVirPath("wxmedia", dtNow);
                var upPhyPath = UpPathHelper.GetUploadPhyPath("wxmedia", dtNow);
                DownWxMedia(lstWxMedia, mType, upVirPath, upPhyPath);
            }
            catch (Exception ex)
            {
                logHelper.Error("SyncMedias:保存永久素材失败:" + ex.Message + "     " + ex.StackTrace);
            }
        }
        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 = "删除永久素材失败!"
            });
        }