using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using Edu.Cache.WeChat; using Edu.Common; using Edu.Common.API; using Edu.Common.Enum.WeChat; using Edu.Common.Plugin; using Edu.Model.CacheModel; using Edu.Model.Entity.EduTask; using Edu.Model.Public; using Edu.Model.ViewModel.WeChat; using Edu.Repository.EduTask; using Edu.Repository.WeChat; using Edu.ThirdCore.GZHWeChat; using Edu.ThirdCore.QYWinXin; using Edu.ThirdCore.QYWinXin.Model; using Newtonsoft.Json.Linq; using Senparc.Weixin.MP.AdvancedAPIs.GroupMessage; using VT.FW.DB; namespace Edu.Module.QYWeChat { /// /// 投稿管理处理类 /// public class QYContributeModule { /// /// 投稿配置 /// private readonly RB_Contribute_ConfigRepository contribute_ConfigRepository = new RB_Contribute_ConfigRepository(); /// /// 投稿信息 /// private readonly RB_Contribute_InfoRepository contribute_InfoRepository = new RB_Contribute_InfoRepository(); /// /// 投稿发布记录 /// private readonly RB_Contribute_PublishLogRepository contribute_PublishLogRepository = new RB_Contribute_PublishLogRepository(); /// /// 素材分组 /// private readonly RB_Contribute_MediumGroupRepository contribute_MediumGroupRepository = new RB_Contribute_MediumGroupRepository(); /// /// 素材 /// private readonly RB_Contribute_MediumRepository contribute_MediumRepository = new RB_Contribute_MediumRepository(); /// /// 小程序信息 /// private readonly RB_Contribute_AppletRepository contribute_AppletRepository = new RB_Contribute_AppletRepository(); /// /// 投稿日志 /// private readonly RB_Contribute_InfoLogRepository contribute_InfoLogRepository = new RB_Contribute_InfoLogRepository(); /// /// 教务单据 /// private readonly RB_Education_ReceiptRepository education_ReceiptRepository = new RB_Education_ReceiptRepository(); #region 投稿配置 /// /// 获取配置 /// /// /// /// public RB_Contribute_Config_ViewModel GetContributeConfigInfo(int groupId, int type) { var model = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = groupId, Type = (ContributeConfigTypeEnum)type }).FirstOrDefault(); return model; } /// /// 新增修改配置 /// /// /// public string SetContributeConfigInfo(RB_Contribute_Config_ViewModel model) { bool flag = false; if (model.Id > 0) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Config_ViewModel.Name), model.Name}, { nameof(RB_Contribute_Config_ViewModel.AppId), model.AppId}, { nameof(RB_Contribute_Config_ViewModel.AppSecret), model.AppSecret}, { nameof(RB_Contribute_Config_ViewModel.Enable), model.Enable}, { nameof(RB_Contribute_Config_ViewModel.UpdateBy), model.UpdateBy}, { nameof(RB_Contribute_Config_ViewModel.UpdateTime), model.UpdateTime}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Config_ViewModel.Id), FiledValue = model.Id, OperatorEnum = OperatorEnum.Equal } }; flag = contribute_ConfigRepository.Update(keyValues, wheres); } else { #region 验证平台 var oldList = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = model.Group_Id, Type = model.Type }); if (oldList.Any()) { return "该平台已存在配置,无法新增"; } #endregion flag = contribute_ConfigRepository.Insert(model) > 0; } return flag ? "" : "出错了,请联系管理员"; } #endregion #region 素材管理 /// /// 获取素材分组分页列表 /// /// /// /// /// /// public List GetContributeMediumGroupPageList(int pageIndex, int pageSize, out long count, RB_Contribute_MediumGroup_ViewModel demodel) { return contribute_MediumGroupRepository.GetPageList(pageIndex, pageSize, out count, demodel); } /// /// 获取素材分组列表 /// /// /// public List GetContributeMediumGroupList(RB_Contribute_MediumGroup_ViewModel demodel) { return contribute_MediumGroupRepository.GetList(demodel); } /// /// 新增修改分组 /// /// /// public string SetContributeMediumGroup(RB_Contribute_MediumGroup_ViewModel demodel) { bool flag; if (demodel.Id > 0) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_MediumGroup_ViewModel.Name),demodel.Name}, { nameof(RB_Contribute_MediumGroup_ViewModel.Sort),demodel.Sort}, { nameof(RB_Contribute_MediumGroup_ViewModel.UpdateBy),demodel.UpdateBy}, { nameof(RB_Contribute_MediumGroup_ViewModel.UpdateTime),demodel.UpdateTime}, }; List wheres = new List() { new WhereHelper(){ FiledName=nameof(RB_Contribute_MediumGroup_ViewModel.Id), FiledValue=demodel.Id, OperatorEnum=OperatorEnum.Equal } }; flag = contribute_MediumGroupRepository.Update(keyValues, wheres); } else { flag = contribute_MediumGroupRepository.Insert(demodel) > 0; } return flag ? "" : "出错了,请联系管理员"; } /// /// 删除分组 /// /// /// /// public string DelContributeMediumGroup(int mediumId, UserInfo userInfo) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_MediumGroup_ViewModel.Status),1}, { nameof(RB_Contribute_MediumGroup_ViewModel.UpdateBy),userInfo.Id}, { nameof(RB_Contribute_MediumGroup_ViewModel.UpdateTime),DateTime.Now}, }; List wheres = new List() { new WhereHelper(){ FiledName=nameof(RB_Contribute_MediumGroup_ViewModel.Id), FiledValue=mediumId, OperatorEnum=OperatorEnum.Equal } }; var flag = contribute_MediumGroupRepository.Update(keyValues, wheres); return flag ? "" : "出错了,请联系管理员"; } /// /// 获取素材分页列表 /// /// /// /// /// /// public List GetContributeMediumPageList(int pageIndex, int pageSize, out long count, RB_Contribute_Medium_ViewModel demodel) { var list = contribute_MediumRepository.GetPageList(pageIndex, pageSize, out count, demodel); if (list.Any()) { var groupIds = string.Join(",", list.Select(x => x.MediaGroupId).Distinct()); var glist = contribute_MediumGroupRepository.GetList(new RB_Contribute_MediumGroup_ViewModel() { Group_Id = demodel.Group_Id, MediumGroupIds = groupIds }); foreach (var item in list) { item.MediaGroupName = glist.Where(x => x.Id == item.MediaGroupId).FirstOrDefault()?.Name ?? ""; } } return list; } /// /// 新增修改素材 /// /// /// public string SetContributeMediumInfo(RB_Contribute_Medium_ViewModel demodel) { if (demodel.Id > 0) { var oldModel = contribute_MediumRepository.GetEntity(demodel.Id); if (oldModel == null || oldModel.Status == 1) { return "该素材已不存在"; } if (oldModel.Type != demodel.Type) { return "素材类型有误"; } Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Medium_ViewModel.UpdateBy), demodel.UpdateBy}, { nameof(RB_Contribute_Medium_ViewModel.UpdateTime), demodel.UpdateTime}, { nameof(RB_Contribute_Medium_ViewModel.MediaName), demodel.MediaName}, }; if (demodel.Type == ContributeMediumTypeEnum.Video) { keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.VideoWXImage), demodel.VideoWXImage); keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.Description), demodel.Description); } List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Medium_ViewModel.Id), FiledValue = demodel.Id, OperatorEnum = OperatorEnum.Equal } }; bool flag = contribute_MediumRepository.Update(keyValues, wheres); return flag ? "" : "出错了,请联系管理员"; } else { #region 验证平台配置 var configModel = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = demodel.Group_Id, Type = demodel.PlatformType }).FirstOrDefault(); if (configModel == null || configModel.Enable != 1) { return "平台配置未启用"; } #endregion demodel.Media_Id = ""; int MediaId = contribute_MediumRepository.Insert(demodel); if (MediaId > 0) { //上传素材至公众号 先同步 太慢的话 用任务处理 demodel.Id = MediaId; string fileMsg = UploadMediumToGZH(demodel, configModel); if (fileMsg != "") { return fileMsg; } } return MediaId > 0 ? "" : "出错了,请联系管理员"; } } /// /// 上传文件至公众号 /// /// /// private string UploadMediumToGZH(RB_Contribute_Medium_ViewModel dmodel, RB_Contribute_Config_ViewModel configModel) { if (dmodel.PlatformType == ContributeConfigTypeEnum.Subscription) { #region 首先拉取临时文件 if (dmodel.Path.Contains("http")) { //获取服务器文件存至本地 每日定时器清理 string filePath = QYWeiXinHelper.CopyFileByUrl(dmodel.Path, Path.GetFileName(dmodel.Path)); dmodel.Path = filePath; } string vImagePath = ""; if (!string.IsNullOrEmpty(dmodel.VideoImage) && dmodel.VideoImage.Contains("http")) { vImagePath = QYWeiXinHelper.CopyFileByUrl(dmodel.VideoImage, Path.GetFileName(dmodel.VideoImage)); dmodel.VideoImage = vImagePath; } #endregion //获取公众号token string token = GetGZHToken(dmodel.Group_Id, configModel); if (string.IsNullOrEmpty(token)) { return "公众号token获取失败"; } Dictionary keyValues = new Dictionary() { }; if (dmodel.Type == ContributeMediumTypeEnum.Video) { //视频 要多传标题+描述 try { var Rmsg = GZHWeChatHelper.UploadForeverVideo(token, dmodel.Path, dmodel.MediaName, dmodel.Description, "video"); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.Media_Id), Rmsg.media_id); //获取视频素材详情 拿取down_url try { var GRmsg = GZHWeChatHelper.GetForeverVideo(token, Rmsg.media_id); if (GRmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.VideoWXPath), GRmsg.down_url); } else { LogHelper.Write("获取视频素材失败," + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("获取视频素材失败," + ex.Message); } } else { LogHelper.Write("上传永久素材失败," + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("上传永久素材失败," + ex.Message); } if (!string.IsNullOrEmpty(dmodel.VideoImage)) { //视频封面图 缩略图 try { var Rmsg = GZHWeChatHelper.UploadForeverMedia(token, dmodel.VideoImage); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.VideoWXImage), Rmsg.url); } else { LogHelper.Write("上传视频素材封面图失败," + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("上传视频素材封面图失败," + ex.Message); } } } else if (dmodel.Type == ContributeMediumTypeEnum.Audio) { //音频 try { var Rmsg = GZHWeChatHelper.UploadForeverVideo(token, dmodel.Path, dmodel.MediaName, dmodel.Description, "voice"); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.Media_Id), Rmsg.media_id); } else { LogHelper.Write("上传永久素材失败," + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("上传永久素材失败," + ex.Message); } } else { //图片 音频 try { var Rmsg = GZHWeChatHelper.UploadForeverMedia(token, dmodel.Path); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.Media_Id), Rmsg.media_id); if (dmodel.Type == ContributeMediumTypeEnum.Image) { keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.ImageUrl), Rmsg.url); } } else { LogHelper.Write("上传永久素材失败," + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("上传永久素材失败," + ex.Message); } } keyValues.Add(nameof(RB_Contribute_Medium_ViewModel.UploadTime), DateTime.Now);//上传时间 List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Medium_ViewModel.Id), FiledValue = dmodel.Id, OperatorEnum =OperatorEnum.Equal } }; contribute_MediumRepository.Update(keyValues, wheres); return ""; } else { return "平台类型有误,上传失败"; } } /// /// 获取公众号token /// /// /// /// private string GetGZHToken(int Group_Id, RB_Contribute_Config_ViewModel configmodel) { string token = WeChatReidsCache.GetToken(Cache.CacheKey.GZH_ZYSH_Key + Group_Id); if (string.IsNullOrEmpty(token)) { try { var TokenMsg = GZHWeChatHelper.GetGZHToken(configmodel.AppId, configmodel.AppSecret); if (TokenMsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { WeChatReidsCache.TokenSet(Cache.CacheKey.GZH_ZYSH_Key + Group_Id, TokenMsg.access_token, TokenMsg.expires_in - 1); token = TokenMsg.access_token; } else { LogHelper.Write("公众号token获取失败," + TokenMsg.errmsg); return ""; } } catch (Exception ex) { LogHelper.Write("公众号token获取失败," + ex.Message); } } return token; } /// /// 获取启用的素材平台列表 /// /// /// public object GetContributePlatfromList(UserInfo userInfo) { var list = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = userInfo.Group_Id, Enable = 1 }); list = list.OrderBy(x => x.Type).ToList(); return list.Select(x => new { Id = x.Type, Name = x.Type.ToName() }); } /// /// 素材移动分组 /// /// /// /// /// public string SetContributeMediumMoveGroup(string mediumIds, int mediumGroupId, UserInfo userInfo) { var list = contribute_MediumRepository.GetList(new RB_Contribute_Medium_ViewModel() { Group_Id = userInfo.Group_Id, MediumIds = mediumIds }); var trans = contribute_MediumRepository.DbTransaction; try { foreach (var item in list) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Medium_ViewModel.MediaGroupId), mediumGroupId}, { nameof(RB_Contribute_Medium_ViewModel.UpdateBy), userInfo.Id}, { nameof(RB_Contribute_Medium_ViewModel.UpdateTime), DateTime.Now}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Medium_ViewModel.Id), FiledValue = item.Id, OperatorEnum = OperatorEnum.Equal } }; contribute_MediumRepository.Update(keyValues, wheres, trans); } contribute_MediumRepository.DBSession.Commit(); return ""; } catch (Exception ex) { LogHelper.Write(ex, "SetContributeMediumMoveGroup"); contribute_MediumRepository.DBSession.Rollback(); return "出错了,请联系管理员"; } } /// /// 删除素材 /// /// /// /// public string DelContributeMediumBatch(string mediumIds, UserInfo userInfo) { var list = contribute_MediumRepository.GetList(new RB_Contribute_Medium_ViewModel() { Group_Id = userInfo.Group_Id, MediumIds = mediumIds }); if (!list.Any()) { return "没有可删除的数据"; } if (list.Select(x => x.PlatformType).Distinct().Count() > 1) { return "无法批量删除不同平台的素材"; } var type = list.FirstOrDefault().PlatformType; var configModel = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = userInfo.Group_Id, Type = type }).FirstOrDefault(); if (configModel == null || configModel.Enable != 1) { return "平台配置未启用"; } //获取公众号token string token = GetGZHToken(userInfo.Group_Id, configModel); if (string.IsNullOrEmpty(token)) { return "公众号token获取失败"; } var trans = contribute_MediumRepository.DbTransaction; try { foreach (var item in list) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Medium_ViewModel.Status), 1}, { nameof(RB_Contribute_Medium_ViewModel.UpdateBy), userInfo.Id}, { nameof(RB_Contribute_Medium_ViewModel.UpdateTime), DateTime.Now}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Medium_ViewModel.Id), FiledValue = item.Id, OperatorEnum = OperatorEnum.Equal } }; bool flag = contribute_MediumRepository.Update(keyValues, wheres, trans); if (flag) { if (item.PlatformType == ContributeConfigTypeEnum.Subscription && !string.IsNullOrEmpty(item.Media_Id)) { //删除公众号素材 try { var Rmsg = GZHWeChatHelper.DeleteForeverMedia(token, item.Media_Id); if (Rmsg.errcode != Senparc.Weixin.ReturnCode.请求成功) { LogHelper.Write("删除公众号素材失败:" + item.Id + "、MediaId:" + item.Media_Id); } } catch (Exception ex) { LogHelper.Write(ex, "删除公众号素材失败:" + item.Id + "、MediaId:" + item.Media_Id); } } } } contribute_MediumRepository.DBSession.Commit(); return ""; } catch (Exception ex) { LogHelper.Write(ex, "SetContributeMediumMoveGroup"); contribute_MediumRepository.DBSession.Rollback(); return "出错了,请联系管理员"; } } /// /// 上传临时文件-图文素材 图片 至公众号 /// /// /// /// public string UploadImageTextGetUrl(string path_server, int groupId, out bool flag) { flag = false; #region 验证平台配置 var configModel = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = groupId, Type = ContributeConfigTypeEnum.Subscription }).FirstOrDefault(); if (configModel == null || configModel.Enable != 1) { return "平台配置未启用"; } #endregion //获取公众号token string token = GetGZHToken(groupId, configModel); if (string.IsNullOrEmpty(token)) { return "公众号token获取失败"; } //图片 音频 try { var Rmsg = GZHWeChatHelper.UploadImg(token, path_server); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { flag = true; return Rmsg.url; } else { LogHelper.Write("上传永久素材失败," + Rmsg.errmsg); return "上传图片失败"; } } catch (Exception ex) { LogHelper.Write("上传永久素材失败," + ex.Message); return "上传图片失败"; } } /// /// 测试接口 /// /// public string Test() { //var configModel = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = 100000, Type = ContributeConfigTypeEnum.Subscription }).FirstOrDefault(); //if (configModel == null || configModel.Enable != 1) { return "平台配置未启用"; } //string token2 = GetGZHToken(100000, configModel); //LogHelper.Write(token2); string token = "50_mVuK5HbS0_w6mgPxp7Zdaza9h2Nlg4jiqxTZvHCWLfu1ZLaCCSKBZCrkm827tLWXDRB9FGVX-qUlXc6EtvJvciFJfz3Bjg1oa0A4J_-zQZMy9epaQxnOpJ_QbY4EmS-X5qvTyKN9SA490aIgTQEdADAHES"; if (!string.IsNullOrEmpty(token)) { try { //var Rmsg = GZHWeChatHelper.UploadForeverMedia(token, "http://imgfile.oytour.com/Upload/Temporary/202110130619195430000000013.jpg"); //图片 //var Rmsg = GZHWeChatHelper.UploadForeverMedia(token, "C:\\Users\\Administrator\\Desktop\\testImage\\封面图\\QQ123123.jpg"); //视频 //var Rmsg = GZHWeChatHelper.UploadForeverVideo(token, "C:\\Users\\Administrator\\Desktop\\testImage\\视频文件\\微途科技公司\\xmm.mp4", "测试视频文件", "测试视频文件", "video"); //LogHelper.Write(JsonHelper.Serialize(Rmsg)); //音频 var Rmsg2 = GZHWeChatHelper.UploadForeverMedia(token, "C:\\Users\\Administrator\\Desktop\\testImage\\视频文件\\微途科技公司\\bzdsazi.mp3"); LogHelper.Write(JsonHelper.Serialize(Rmsg2)); } catch (Exception ex) { return "上传永久素材失败," + ex.Message; } } return ""; } #endregion #region 投稿管理 /// /// 获取投稿分页列表 /// /// /// /// /// /// public List GetContributeInfoPageList(int pageIndex, int pageSize, out long count, RB_Contribute_Info_ViewModel demodel) { var list = contribute_InfoRepository.GetPageList(pageIndex, pageSize, out count, demodel); if (list.Any()) { List MeadiumIds = new List(); if (list.Where(x => x.CoverImageId > 0).Any()) { MeadiumIds.AddRange(list.Where(x => x.CoverImageId > 0).Select(x => x.CoverImageId).Distinct()); } if (list.Where(x => x.VideoMediumId > 0).Any()) { MeadiumIds.AddRange(list.Where(x => x.VideoMediumId > 0).Select(x => x.VideoMediumId).Distinct()); } if (list.Where(x => !string.IsNullOrEmpty(x.ImageMediumIds)).Any()) { foreach (var item in list.Where(x => !string.IsNullOrEmpty(x.ImageMediumIds))) { MeadiumIds.AddRange(JsonHelper.DeserializeObject>("[" + item.ImageMediumIds + "]")); } } List mediumList = new List(); if (MeadiumIds.Any()) { mediumList = contribute_MediumRepository.GetList(new RB_Contribute_Medium_ViewModel() { Group_Id = demodel.Group_Id, MediumIds = string.Join(",", MeadiumIds.Distinct()) }); } foreach (var item in list) { if (item.CoverImageId > 0) { item.CoverImagePath = mediumList.Where(x => x.Id == item.CoverImageId).FirstOrDefault()?.ImageUrl ?? ""; } if (item.VideoMediumId > 0) { var mediumModel = mediumList.Where(x => x.Id == item.VideoMediumId).FirstOrDefault(); item.VideoMediumPath = mediumModel?.Path ?? ""; if (item.Type == ContributeInfoTypeEnum.Video) { item.VideoCoverImage = mediumModel?.VideoWXImage ?? ""; } } item.ImageList = new List(); if (!string.IsNullOrEmpty(item.ImageMediumIds)) { item.ImageList = mediumList.Where(x => ("," + item.ImageMediumIds + ",").Contains("," + x.Id + ",")).ToList(); } } } return list; } /// /// 获取投稿信息 /// /// /// public RB_Contribute_Info_ViewModel GetContributeInfo(int contributeId, int groupId) { var model = contribute_InfoRepository.GetEntity(contributeId); if (model != null) { List MeadiumIds = new List(); if (model.CoverImageId >0) { MeadiumIds.Add(model.CoverImageId); } if (model.VideoMediumId > 0) { MeadiumIds.Add(model.VideoMediumId); } if (!string.IsNullOrEmpty(model.ImageMediumIds)) { MeadiumIds.AddRange(JsonHelper.DeserializeObject>("[" + model.ImageMediumIds + "]")); } List mediumList = new List(); if (MeadiumIds.Any()) { mediumList = contribute_MediumRepository.GetList(new RB_Contribute_Medium_ViewModel() { Group_Id = groupId, MediumIds = string.Join(",", MeadiumIds.Distinct()) }); } if (model.CoverImageId > 0) { model.CoverImagePath = mediumList.Where(x => x.Id == model.CoverImageId).FirstOrDefault()?.ImageUrl ?? ""; } if (model.VideoMediumId > 0) { var mediumModel = mediumList.Where(x => x.Id == model.VideoMediumId).FirstOrDefault(); model.VideoMediumPath = mediumModel?.Path ?? ""; if (model.Type == ContributeInfoTypeEnum.Video) { model.VideoCoverImage = mediumModel?.VideoWXImage ?? ""; } } model.ImageList = new List(); if (!string.IsNullOrEmpty(model.ImageMediumIds)) { model.ImageList = mediumList.Where(x => ("," + model.ImageMediumIds + ",").Contains("," + x.Id + ",")).ToList(); } } return model; } /// /// 新增修改投稿 /// /// /// public string SetContributeInfo(RB_Contribute_Info_ViewModel demodel) { bool flag; if (demodel.Id > 0) { var oldModel = contribute_InfoRepository.GetEntity(demodel.Id); if (oldModel == null || oldModel.Status == 1) { return "投稿不存在"; } if (oldModel.AuditState != ContributeInfoStateEnum.Temporary && oldModel.AuditState != ContributeInfoStateEnum.Reject) { return "状态不正确,无法修改"; } if (oldModel.CreateBy != demodel.CreateBy) { return "不是您创建的投稿,无法修改"; } Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Info_ViewModel.CoverImageId), demodel.CoverImageId}, { nameof(RB_Contribute_Info_ViewModel.Title), demodel.Title}, { nameof(RB_Contribute_Info_ViewModel.Author), demodel.Author}, { nameof(RB_Contribute_Info_ViewModel.Description), demodel.Description}, { nameof(RB_Contribute_Info_ViewModel.Content), demodel.Content}, { nameof(RB_Contribute_Info_ViewModel.SendContent), demodel.SendContent}, { nameof(RB_Contribute_Info_ViewModel.VideoMediumId), demodel.VideoMediumId}, { nameof(RB_Contribute_Info_ViewModel.ImageMediumIds), demodel.ImageMediumIds}, { nameof(RB_Contribute_Info_ViewModel.AuditState), demodel.AuditState}, { nameof(RB_Contribute_Info_ViewModel.UpdateBy), demodel.UpdateBy}, { nameof(RB_Contribute_Info_ViewModel.UpdateTime), demodel.UpdateTime}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Info_ViewModel.Id), FiledValue = demodel.Id, OperatorEnum =OperatorEnum.Equal } }; var trans = contribute_InfoRepository.DbTransaction; try { flag = contribute_InfoRepository.Update(keyValues, wheres, trans); if (flag && demodel.AuditState == ContributeInfoStateEnum.Auditing && oldModel.AuditState == ContributeInfoStateEnum.Temporary) { //创建审核流程 flag = education_ReceiptRepository.SetEducationReceiptRepository(new RB_Education_Receipt() { Id = 0, Title = "投稿单据", ReceiptType = Common.Enum.Finance.ReceiptTypeEnum.Contribute, RelationId = demodel.Id, Group_Id = demodel.Group_Id, School_Id = demodel.School_Id, CreateBy = demodel.CreateBy, CreateTime = DateTime.Now, UpdateBy = demodel.UpdateBy, UpdateTime = DateTime.Now, RecipientIds = "", VerifyStatus = Common.Enum.EduTask.EduTaskRrocessStatus.NotAudit, ReceiptFile = "" }, out string message); if (flag == false) { contribute_InfoRepository.DBSession.Rollback(); return message; } } contribute_InfoRepository.DBSession.Commit(); if (flag) { contribute_InfoLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_InfoLog() { Id = 0, ContributeId = demodel.Id, CreateBy = demodel.CreateBy, CreateTime = DateTime.Now, Description = demodel.AuditState == ContributeInfoStateEnum.Auditing ? "修改投稿,并提交审核" : "修改投稿", Group_Id = demodel.Group_Id, Record = "", Status = 0 }); } return flag ? "" : "出错了,请联系管理员"; } catch (Exception ex) { LogHelper.Write(ex, "SetContributeInfo"); contribute_InfoRepository.DBSession.Rollback(); return "出错了,请联系管理员"; } } else { var trans = contribute_InfoRepository.DbTransaction; try { int ContributeId = contribute_InfoRepository.Insert(demodel, trans); flag = ContributeId > 0; if (flag && demodel.AuditState == ContributeInfoStateEnum.Auditing) { //创建审核流程~ flag = education_ReceiptRepository.SetEducationReceiptRepository(new RB_Education_Receipt() { Id = 0, Title = "投稿单据", ReceiptType = Common.Enum.Finance.ReceiptTypeEnum.Contribute, RelationId = ContributeId, Group_Id = demodel.Group_Id, School_Id = demodel.School_Id, CreateBy = demodel.CreateBy, CreateTime = DateTime.Now, UpdateBy = demodel.UpdateBy, UpdateTime = DateTime.Now, RecipientIds = "", VerifyStatus = Common.Enum.EduTask.EduTaskRrocessStatus.NotAudit, ReceiptFile = "" }, out string message); if (flag == false) { contribute_InfoRepository.DBSession.Rollback(); return message; } } if (flag) { contribute_InfoLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_InfoLog() { Id = 0, ContributeId = ContributeId, CreateBy = demodel.CreateBy, CreateTime = DateTime.Now, Description = demodel.AuditState == ContributeInfoStateEnum.Auditing ? "新增投稿,并提交审核" : "新增投稿", Group_Id = demodel.Group_Id, Record = "", Status = 0 }); } contribute_InfoRepository.DBSession.Commit(); return flag ? "" : "出错了,请联系管理员"; } catch (Exception ex) { LogHelper.Write(ex, "SetContributeInfo"); contribute_InfoRepository.DBSession.Rollback(); return "出错了,请联系管理员"; } } } /// /// 设置投稿状态 /// /// /// /// /// public string SetContributeInfoState(int contributeId, int type, UserInfo userInfo) { var model = contribute_InfoRepository.GetEntity(contributeId); if (model == null || model.Status == 1) { return "投稿不存在"; } if (model.AuditState != ContributeInfoStateEnum.Temporary && model.AuditState != ContributeInfoStateEnum.Reject) { return "状态不正确"; } Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Info_ViewModel.UpdateBy), userInfo.Id}, { nameof(RB_Contribute_Info_ViewModel.UpdateTime), DateTime.Now} }; if (type == 1) { //提交审核 keyValues.Add(nameof(RB_Contribute_Info_ViewModel.AuditState), ContributeInfoStateEnum.Auditing); } else if (type == 2) { //删除 keyValues.Add(nameof(RB_Contribute_Info_ViewModel.Status), 1); } else { return "type有误"; } List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Info_ViewModel.Id), FiledValue = contributeId, OperatorEnum=OperatorEnum.Equal } }; var trans = contribute_InfoRepository.DbTransaction; try { var flag = contribute_InfoRepository.Update(keyValues, wheres, trans); if (flag && type == 1) { //创建审核流程 flag = education_ReceiptRepository.SetEducationReceiptRepository(new RB_Education_Receipt() { Id = 0, Title = "投稿单据", ReceiptType = Common.Enum.Finance.ReceiptTypeEnum.Contribute, RelationId = contributeId, Group_Id = model.Group_Id, School_Id = model.School_Id, CreateBy = userInfo.Id, CreateTime = DateTime.Now, UpdateBy = userInfo.Id, UpdateTime = DateTime.Now, RecipientIds = "", VerifyStatus = Common.Enum.EduTask.EduTaskRrocessStatus.NotAudit, ReceiptFile = "" }, out string message); if (flag == false) { contribute_InfoRepository.DBSession.Rollback(); return message; } } contribute_InfoRepository.DBSession.Commit(); if (flag) { contribute_InfoLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_InfoLog() { Id = 0, ContributeId = contributeId, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Description = type == 1 ? "提交审核" : "删除投稿", Group_Id = userInfo.Group_Id, Record = "", Status = 0 }); } return flag ? "" : "出错了,请联系管理员"; } catch (Exception ex) { LogHelper.Write(ex, "SetContributeInfoState"); contribute_InfoRepository.DBSession.Rollback(); return "出错了,请联系管理员"; } } /// /// 设置投稿发放 /// /// /// /// /// public string SetRemunerationState(int contributeId, int remunerationState, UserInfo userInfo) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Info_ViewModel.RemunerationState), remunerationState}, { nameof(RB_Contribute_Info_ViewModel.UpdateBy), userInfo.Id}, { nameof(RB_Contribute_Info_ViewModel.UpdateTime), DateTime.Now} }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Info_ViewModel.Id), FiledValue = contributeId, OperatorEnum=OperatorEnum.Equal } }; bool flag = contribute_InfoRepository.Update(keyValues, wheres); return flag ? "" : "出错了,请联系管理员"; } #endregion #region 小程序信息 /// /// 获取小程序信息分页列表 /// /// /// /// /// /// public List GetContributeAppletPageList(int pageIndex, int pageSize, out long count, RB_Contribute_Applet_ViewModel demodel) { return contribute_AppletRepository.GetPageList(pageIndex, pageSize, out count, demodel); } /// /// 获取小程序列表 /// /// /// public List GetContributeAppletList(RB_Contribute_Applet_ViewModel demodel) { return contribute_AppletRepository.GetList(demodel); } /// /// 新增修改小程序 /// /// /// public string SetContributeApplet(RB_Contribute_Applet_ViewModel demodel) { bool flag; if (demodel.Id > 0) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Applet_ViewModel.Name), demodel.Name}, { nameof(RB_Contribute_Applet_ViewModel.AppID), demodel.AppID}, { nameof(RB_Contribute_Applet_ViewModel.Image), demodel.Image}, { nameof(RB_Contribute_Applet_ViewModel.Page), demodel.Page}, { nameof(RB_Contribute_Applet_ViewModel.UpdateBy), demodel.UpdateBy}, { nameof(RB_Contribute_Applet_ViewModel.UpdateTime), demodel.UpdateTime}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Applet_ViewModel.Id), FiledValue = demodel.Id, OperatorEnum=OperatorEnum.Equal } }; flag = contribute_AppletRepository.Update(keyValues, wheres); } else { flag = contribute_AppletRepository.Insert(demodel) > 0; } return flag ? "" : "出错了,请联系管理员"; } /// /// 删除小程序信息 /// /// /// /// public string DelContributeApplet(int appletId, UserInfo userInfo) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Applet_ViewModel.Status), 1}, { nameof(RB_Contribute_Applet_ViewModel.UpdateBy), userInfo.Id}, { nameof(RB_Contribute_Applet_ViewModel.UpdateTime), DateTime.Now}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Applet_ViewModel.Id), FiledValue = appletId, OperatorEnum=OperatorEnum.Equal } }; var flag = contribute_AppletRepository.Update(keyValues, wheres); return flag ? "" : "出错了,请联系管理员"; } #endregion #region 发布投稿 /// /// 发布 /// /// /// /// 1预览 2群发 /// 用户标签 / 微信号(预览时使用) /// /// public string SetContributeInfoPublish(int contributeId, int platformId, int IsPreview, string tagId, UserInfo userInfo) { var model = contribute_InfoRepository.GetEntity(contributeId); if (model.AuditState != ContributeInfoStateEnum.Audited) { return "未审核通过,无法发布"; } #region 验证平台配置 var configModel = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = userInfo.Group_Id, Type = (ContributeConfigTypeEnum)platformId }).FirstOrDefault(); if (configModel == null || configModel.Enable != 1) { return "平台配置未启用"; } #endregion if (configModel.Type == ContributeConfigTypeEnum.Subscription) { //获取公众号token string token = GetGZHToken(userInfo.Group_Id, configModel); if (string.IsNullOrEmpty(token)) { return "公众号token获取失败"; } string Media_Id = ""; int PublishLogId = 0; Senparc.Weixin.MP.GroupMessageType PType = Senparc.Weixin.MP.GroupMessageType.mpnews; if (model.Type == ContributeInfoTypeEnum.ImgText) { string thumb_media_id = ""; if (model.Type == ContributeInfoTypeEnum.ImgText && model.CoverImageId > 0) { thumb_media_id = contribute_MediumRepository.GetEntity(model.CoverImageId)?.Media_Id ?? ""; } NewsModel newsModel = new NewsModel() { author = model.Author, content = model.SendContent, content_source_url = model.SourceUrl, digest = model.Description, need_open_comment = model.IsOpenComment, only_fans_can_comment = model.IsFansCanComment, show_cover_pic = model.IsShowCover.ToString(), title = model.Title, thumb_media_id = thumb_media_id, thumb_url = "" }; //查询该平台是否已发布过 var pmodel = contribute_PublishLogRepository.GetList(new RB_Contribute_PublishLog_ViewModel() { Group_Id = userInfo.Group_Id, ContributeId = contributeId, PlatfromId = (ContributeConfigTypeEnum)platformId }).FirstOrDefault(); if (pmodel == null) { //新增图文 var nlist = new List() { newsModel }; try { var Rmsg = GZHWeChatHelper.UploadNews(token, nlist.ToArray()); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { Media_Id = Rmsg.media_id; //新增平台发布 PublishLogId = contribute_PublishLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_PublishLog() { Id = 0, Content = "发布图文素材", ContributeId = contributeId, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Group_Id = userInfo.Group_Id, Media_Id = Media_Id, PlatfromId = configModel.Type, Status = 0, UpdateBy = userInfo.Id, UpdateTime = DateTime.Now }); } else { LogHelper.Write("新增图文素材失败:" + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("新增图文素材失败:" + ex.Message); } } else { PublishLogId = pmodel.Id; //修改图文 try { var Rmsg = GZHWeChatHelper.UpdateForeverNews(token, pmodel.Media_Id, 0, newsModel); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { //修改成功 Media_Id = pmodel.Media_Id; } else { LogHelper.Write("修改图文素材失败:" + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("修改图文素材失败:" + ex.Message); } } } else if (model.Type == ContributeInfoTypeEnum.Video) { PType = Senparc.Weixin.MP.GroupMessageType.video; //查询该平台是否已发布过 var pmodel = contribute_PublishLogRepository.GetList(new RB_Contribute_PublishLog_ViewModel() { Group_Id = userInfo.Group_Id, ContributeId = contributeId, PlatfromId = (ContributeConfigTypeEnum)platformId }).FirstOrDefault(); if (pmodel == null) { string mediumId = contribute_MediumRepository.GetEntity(model.VideoMediumId)?.Media_Id ?? ""; try { var Rmsg = GZHWeChatHelper.GetVideoMediaIdResult(token, mediumId, model.Title, model.Description); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { Media_Id = Rmsg.media_id; //新增平台发布 PublishLogId = contribute_PublishLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_PublishLog() { Id = 0, Content = "新增视频发布", ContributeId = contributeId, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Group_Id = userInfo.Group_Id, Media_Id = Media_Id, PlatfromId = configModel.Type, Status = 0, UpdateBy = userInfo.Id, UpdateTime = DateTime.Now }); } else { LogHelper.Write("新增视频发布失败:" + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("新增视频发布失败:" + ex.Message); } } else { PublishLogId = pmodel.Id; try { var Rmsg = GZHWeChatHelper.GetVideoMediaIdResult(token, pmodel.Media_Id, model.Title, model.Description); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { //修改成功 Media_Id = pmodel.Media_Id; } else { LogHelper.Write("修改视频发布失败:" + Rmsg.errmsg); } } catch (Exception ex) { LogHelper.Write("修改视频发布失败:" + ex.Message); } } } else if (model.Type == ContributeInfoTypeEnum.Audio) { PType = Senparc.Weixin.MP.GroupMessageType.voice; Media_Id = contribute_MediumRepository.GetEntity(model.VideoMediumId)?.Media_Id ?? ""; //查询该平台是否已发布过 var pmodel = contribute_PublishLogRepository.GetList(new RB_Contribute_PublishLog_ViewModel() { Group_Id = userInfo.Group_Id, ContributeId = contributeId, PlatfromId = (ContributeConfigTypeEnum)platformId }).FirstOrDefault(); if (pmodel == null) { PublishLogId = contribute_PublishLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_PublishLog() { Id = 0, Content = "新增音频发布", ContributeId = contributeId, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Group_Id = userInfo.Group_Id, Media_Id = Media_Id, PlatfromId = configModel.Type, Status = 0, UpdateBy = userInfo.Id, UpdateTime = DateTime.Now }); } else { PublishLogId = pmodel.Id; } } else if (model.Type == ContributeInfoTypeEnum.Text) { PType = Senparc.Weixin.MP.GroupMessageType.text; Media_Id = model.Description; //查询该平台是否已发布过 var pmodel = contribute_PublishLogRepository.GetList(new RB_Contribute_PublishLog_ViewModel() { Group_Id = userInfo.Group_Id, ContributeId = contributeId, PlatfromId = (ContributeConfigTypeEnum)platformId }).FirstOrDefault(); if (pmodel == null) { PublishLogId = contribute_PublishLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_PublishLog() { Id = 0, Content = "新增文本发布:", ContributeId = contributeId, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Group_Id = userInfo.Group_Id, Media_Id = "", PlatfromId = configModel.Type, Status = 0, UpdateBy = userInfo.Id, UpdateTime = DateTime.Now }); } else { PublishLogId = pmodel.Id; } } else if (model.Type == ContributeInfoTypeEnum.Image) { //图片 自己写推送方法 盛派不支持多图片 var mediumList = contribute_MediumRepository.GetList(new RB_Contribute_Medium_ViewModel() { Group_Id = userInfo.Group_Id, MediumIds = model.ImageMediumIds }); List midsList = JsonHelper.DeserializeObject>("[" + model.ImageMediumIds + "]"); List wxMediaId = new List(); foreach (var item in midsList) { string mediaId = mediumList.Where(x => x.Id == item).FirstOrDefault()?.Media_Id ?? ""; if (!string.IsNullOrEmpty(mediaId)) { wxMediaId.Add(mediaId); } } if (wxMediaId.Any()) { var pmodel = contribute_PublishLogRepository.GetList(new RB_Contribute_PublishLog_ViewModel() { Group_Id = userInfo.Group_Id, ContributeId = contributeId, PlatfromId = (ContributeConfigTypeEnum)platformId }).FirstOrDefault(); if (pmodel == null) { PublishLogId = contribute_PublishLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_PublishLog() { Id = 0, Content = "新增图片发布:" + model.Description, ContributeId = contributeId, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Group_Id = userInfo.Group_Id, Media_Id = Media_Id, PlatfromId = configModel.Type, Status = 0, UpdateBy = userInfo.Id, UpdateTime = DateTime.Now }); } else { PublishLogId = pmodel.Id; } if (IsPreview == 1) {//预览 var Rmsg = GZHWeChatHelper.SendImageMessagePreview(token, tagId, wxMediaId.FirstOrDefault(), model.Description); if (Rmsg != null && Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { //推送OK } else { //推送失败 LogHelper.Write("推送群发图文消息失败:" + Rmsg.errmsg); return "推送失败,请联系管理员"; } } else if (IsPreview == 2) {//群发 var Rmsg = GZHWeChatHelper.SendImageMessageByTagId(token, tagId, wxMediaId, model.Description, string.IsNullOrEmpty(tagId) ? true : false); if (Rmsg != null && Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { //推送OK if (PublishLogId > 0) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_PublishLog_ViewModel.Msg_Id), Rmsg.msg_id}, { nameof(RB_Contribute_PublishLog_ViewModel.Msg_Data_Id), Rmsg.msg_data_id}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_PublishLog_ViewModel.Id), FiledValue = PublishLogId, OperatorEnum = OperatorEnum.Equal } }; contribute_PublishLogRepository.Update(keyValues, wheres); } } else { //推送失败 LogHelper.Write("推送群发图文消息失败:" + Rmsg.errmsg); return "推送失败,请联系管理员"; } } } } if (!string.IsNullOrEmpty(Media_Id)) { //开始群发推送 try { if (IsPreview == 1) { //预览接口 var Rmsg = GZHWeChatHelper.SendGroupMessagePreview(token, PType, Media_Id, "", tagId); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { //推送OK } else { //推送失败 LogHelper.Write("推送群发图文消息失败:" + Rmsg.errmsg); return "推送失败,请联系管理员"; } } else if (IsPreview == 2) { //群发 var Rmsg = GZHWeChatHelper.SendGroupMessageByTagId(token, tagId, Media_Id, PType, string.IsNullOrEmpty(tagId) ? true : false); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { //推送OK 需要记录推送的 Msg_Id 以后用作查询使用 if (PublishLogId > 0) { Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_PublishLog_ViewModel.Msg_Id), Rmsg.msg_id}, { nameof(RB_Contribute_PublishLog_ViewModel.Msg_Data_Id), Rmsg.msg_data_id}, { nameof(RB_Contribute_PublishLog_ViewModel.UpdateTime), DateTime.Now} }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_PublishLog_ViewModel.Id), FiledValue = PublishLogId, OperatorEnum = OperatorEnum.Equal } }; contribute_PublishLogRepository.Update(keyValues, wheres); } } else { //推送失败 LogHelper.Write("推送群发图文消息失败:" + Rmsg.errmsg); return "推送失败,请联系管理员"; } } } catch (Exception ex) { LogHelper.Write("推送群发图文消息失败:" + ex.Message); return "推送失败,请联系管理员"; } } } else if (configModel.Type == ContributeConfigTypeEnum.Other) { //查询该平台是否已发布过 var pmodel = contribute_PublishLogRepository.GetList(new RB_Contribute_PublishLog_ViewModel() { Group_Id = userInfo.Group_Id, ContributeId = contributeId, PlatfromId = (ContributeConfigTypeEnum)platformId }).FirstOrDefault(); if (pmodel == null) { contribute_PublishLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_PublishLog() { Id = 0, Content = "发布其他平台", ContributeId = contributeId, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Group_Id = userInfo.Group_Id, Media_Id = "", PlatfromId = configModel.Type, Status = 0, UpdateBy = userInfo.Id, UpdateTime = DateTime.Now }); } } else { return "该平台未开通"; } return ""; } /// /// 新增修改投稿 /// /// /// public string SetAdminContributeInfo(RB_Contribute_Info_ViewModel demodel, UserInfo userInfo) { if (demodel.Id > 0) { var oldModel = contribute_InfoRepository.GetEntity(demodel.Id); if (oldModel == null || oldModel.Status == 1) { return "投稿不存在"; } if (oldModel.AuditState != ContributeInfoStateEnum.Audited) { return "状态不正确,无法修改"; } Dictionary keyValues = new Dictionary() { { nameof(RB_Contribute_Info_ViewModel.CoverImageId), demodel.CoverImageId}, { nameof(RB_Contribute_Info_ViewModel.Title), demodel.Title}, { nameof(RB_Contribute_Info_ViewModel.Author), demodel.Author}, { nameof(RB_Contribute_Info_ViewModel.Description), demodel.Description}, { nameof(RB_Contribute_Info_ViewModel.Content), demodel.Content}, { nameof(RB_Contribute_Info_ViewModel.SendContent), demodel.SendContent}, { nameof(RB_Contribute_Info_ViewModel.VideoMediumId), demodel.VideoMediumId}, { nameof(RB_Contribute_Info_ViewModel.ImageMediumIds), demodel.ImageMediumIds}, { nameof(RB_Contribute_Info_ViewModel.AuditState), demodel.AuditState}, { nameof(RB_Contribute_Info_ViewModel.UpdateBy), demodel.UpdateBy}, { nameof(RB_Contribute_Info_ViewModel.UpdateTime), demodel.UpdateTime}, { nameof(RB_Contribute_Info_ViewModel.IsShowCover), demodel.IsShowCover}, { nameof(RB_Contribute_Info_ViewModel.IsOpenComment), demodel.IsOpenComment}, { nameof(RB_Contribute_Info_ViewModel.IsFansCanComment), demodel.IsFansCanComment}, { nameof(RB_Contribute_Info_ViewModel.SourceUrl), demodel.SourceUrl}, }; List wheres = new List() { new WhereHelper(){ FiledName = nameof(RB_Contribute_Info_ViewModel.Id), FiledValue = demodel.Id, OperatorEnum =OperatorEnum.Equal } }; var flag = contribute_InfoRepository.Update(keyValues, wheres); if (flag) { //记录管理端操作日志 contribute_InfoLogRepository.Insert(new Model.Entity.WeChat.RB_Contribute_InfoLog() { Id = 0, ContributeId = demodel.Id, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Description = "管理端修改投稿", Group_Id = userInfo.Group_Id, Record = JsonHelper.Serialize(oldModel), Status = 0 }); if (demodel.IsPreview > 0) { string rmsg = SetContributeInfoPublish(demodel.Id, demodel.PlatformId, demodel.IsPreview, demodel.TagId, userInfo); if (rmsg != "") { return rmsg; } } } return flag ? "" : "出错了,请联系管理员"; } else { return "管理端无法新增"; } } /// /// 获取微信公众号用户标签 /// /// /// public object GetGZHUserTagList(UserInfo userInfo, out bool flag) { flag = false; #region 验证平台配置 var configModel = contribute_ConfigRepository.GetList(new RB_Contribute_Config_ViewModel() { Group_Id = userInfo.Group_Id, Type = ContributeConfigTypeEnum.Subscription }).FirstOrDefault(); if (configModel == null || configModel.Enable != 1) { return "平台配置未启用"; } #endregion //获取公众号token string token = GetGZHToken(userInfo.Group_Id, configModel); if (string.IsNullOrEmpty(token)) { return "公众号token获取失败"; } try { var Rmsg = GZHWeChatHelper.GetUserTagList(token); if (Rmsg.errcode == Senparc.Weixin.ReturnCode.请求成功) { flag = true; return Rmsg.tags.Select(x => new { x.id, x.name }); } else { LogHelper.Write("获取公众号用户标签失败:" + Rmsg.errmsg); return "获取标签失败,请联系管理员"; } } catch (Exception ex) { LogHelper.Write(ex, "GetGZHUserTagList"); return "出错了,请联系管理员"; } } /// /// 获取发布记录 /// /// /// /// public List GetContributeInfoPublishLogList(int contributeId, UserInfo userInfo) { var list = contribute_PublishLogRepository.GetList(new RB_Contribute_PublishLog_ViewModel() { Group_Id = userInfo.Group_Id, ContributeId = contributeId }); return list; } #endregion } }