package cygx import ( "encoding/json" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hz_crm_api/controllers" "hongze/hz_crm_api/models" "hongze/hz_crm_api/models/cygx" "hongze/hz_crm_api/services" cygxService "hongze/hz_crm_api/services/cygx" "hongze/hz_crm_api/utils" "strconv" "strings" "time" ) // 路演精华 type RoadshowEssenceController struct { controllers.BaseAuthController } // @Title 路演精华内容的保存与发布 // @Description 研究汇总内容的保存与发布接口 // @Param request body cygx.AddArticleRoadshowEssenceRep true "type json string" // @Success 200 操作成功 // @router /roadshowEssence/PreserveAndPublish [post] func (this *RoadshowEssenceController) PreserveAndPublish() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() AdminUser := this.SysUser if AdminUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } var req cygx.AddArticleRoadshowEssenceRep err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } var pars []interface{} var condition string chartPermissionId := req.ChartPermissionId industrialManagementIdStr := req.IndustrialManagementId industrialSubjectIdStr := req.IndustrialSubjectIdStr condition = ` AND chart_permission_id = ` + strconv.Itoa(chartPermissionId) total, _ := cygx.GetChartPermissionCount(condition, pars) if total < 1 { br.Msg = "分类ID不存在,请重新填写" br.ErrMsg = "分类ID不存在,请重新填写:" + strconv.Itoa(req.ChartPermissionId) return } industrialStrList := strings.Split(industrialManagementIdStr, ",") for _, v := range industrialStrList { condition = `AND industrial_management_id = ` + v totalIndustrialManagement, _ := cygx.GetIndustrialManagementCount(condition, pars) if totalIndustrialManagement < 1 { br.Msg = "操作失败,对应产业不存在" br.ErrMsg = "操作失败,产业不存在IndustrialManagementId:" + v return } } if industrialSubjectIdStr != "0" && industrialSubjectIdStr != "" { strList := strings.Split(industrialSubjectIdStr, ",") for _, v := range strList { condition = `AND industrial_subject_id = ` + v + ` AND industrial_management_id IN ( ` + industrialManagementIdStr + `)` totalIndustrialSubject, _ := cygx.GetIndustrialSubjectCount(condition, pars) if totalIndustrialSubject < 1 { br.Msg = "操作失败" br.ErrMsg = "操作失败,标的不存在IndustrialSubjectId:" + v return } } } charInfo, errCategory := cygx.GetCategoryInfoById(chartPermissionId) if errCategory != nil { br.Msg = "获取品种信息失败" br.ErrMsg = "获取品种信息失败,Err:" + errCategory.Error() return } var articleId int maxArticleIdArticleInfo, errMax := cygx.GetMaxArticleIdInfo() if errMax != nil { br.Msg = "发布失败" br.ErrMsg = "发布失败,Err:" + errMax.Error() return } if maxArticleIdArticleInfo.ArticleId < utils.SummaryArticleId { articleId = utils.SummaryArticleId } else { articleId = maxArticleIdArticleInfo.ArticleId + 1 } detailMap, err := cygx.GetMatchTypeNameByPermissionId(chartPermissionId) if err != nil { br.Msg = "保存失败" br.ErrMsg = "归类配置信息,Err:" + err.Error() return } item := new(cygx.CygxArticle) item.AdminId = AdminUser.AdminId item.AdminName = AdminUser.RealName item.Title = req.Title item.SellerAndMobile = req.SellerAndMobile item.PublishDate = utils.StrTimeToTime(req.PublishDate + " 00:00:00") item.ChartPermissionIds = strconv.Itoa(req.ChartPermissionId) item.Abstract = req.Abstract item.Body = cygxService.GetRichtext(req.Body) item.BodyText, _ = cygx.GetReportContentTextSub(req.Body) item.ReportLink = req.ReportLink if item.ReportLink != "" { articleIdLink, err := cygxService.GetReportLinkToArticleid(item.ReportLink) if err != nil { br.Msg = "操作失败" br.ErrMsg = "解析报告链接ID失败,Err:" + err.Error() return } item.LinkArticleId = articleIdLink } item.IsReport = 1 item.Source = 1 item.ReportType = 2 item.ArticleIdMd5 = utils.MD5(strconv.Itoa(articleId)) item.Department = "弘则产品组" item.ArticleType = "lyjh" item.IsClass = 1 item.CreateDate = time.Now() item.UpdateFrequency = "unknow" item.CategoryName = charInfo.PermissionName item.CategoryId = detailMap.CategoryId item.SubCategoryName = "路演精华" if req.DoType == 1 { item.HavePublish = 1 item.PublishStatus = 1 } if req.ArticleId == 0 { if req.DoType == 1 { condition = ` AND article_type = 'lyjh' AND art.have_publish = 1 ` total, err := cygx.GetCygxArticleCount(condition, pars) if err != nil { br.Msg = "添加失败" br.ErrMsg = "新增获取期数信息失败,Err:" + err.Error() return } item.Periods = strconv.Itoa(total + 1) } item.ArticleId = articleId _, err := cygx.AddArticleRoadshowEssence(item, industrialManagementIdStr, industrialSubjectIdStr) if err != nil { br.Msg = "添加失败" br.ErrMsg = "添加失败,Err:" + err.Error() return } } else { articleInfo, errInfo := cygx.GetArticleIdInfoByArticleId(req.ArticleId) if errInfo != nil { br.Msg = "报告不存在" br.ErrMsg = "发布失败,Err:" + errInfo.Error() return } if req.DoType == 1 { condition = ` AND article_type = 'lyjh' AND art.have_publish = 1 ` total, err := cygx.GetCygxArticleCount(condition, pars) if err != nil { br.Msg = "添加失败" br.ErrMsg = "修改获取期数信息失败,Err:" + err.Error() return } item.Periods = strconv.Itoa(total + 1) } else { item.Periods = articleInfo.Periods item.HavePublish = articleInfo.HavePublish } if articleInfo.HavePublish == 1 { item.Periods = articleInfo.Periods } if item.PublishStatus == 0 { item.PublishStatus = articleInfo.PublishStatus item.AdminId = articleInfo.AdminId item.AdminName = articleInfo.AdminName } item.ArticleId = req.ArticleId item.SummaryManageId = articleInfo.SummaryManageId err = cygx.UpdateArticleRoadshowEssence(item, industrialManagementIdStr, industrialSubjectIdStr) if err != nil { br.Msg = "添加失败" br.ErrMsg = "获取期数信息失败,Err:" + err.Error() return } } //同步数据到最新表 if req.ArticleId == 0 { if item.PublishStatus == 1 { go cygxService.UpdateResourceData(item.ArticleId, "article", "add", time.Now().Format(utils.FormatDateTime)) } } else { if item.PublishStatus == 1 { go cygxService.UpdateResourceData(item.ArticleId, "article", "update", time.Now().Format(utils.FormatDateTime)) } if req.DoType == 1 { go cygxService.UpdateResourceData(item.ArticleId, "article", "add", time.Now().Format(utils.FormatDateTime)) } } if req.DoType == 1 { go cygxService.SendWxMsgWithroadshowEssence(articleId) } //生成音频文件 var content string content = "摘要" + item.Abstract + item.Body go services.CreateVideoWhithContent(item.ArticleId, item.Title, content, "cygx_article") br.Ret = 200 br.Success = true br.Msg = "操作成功" br.IsAddLog = true } // @Title 删除路演精华内容 // @Description 删除路演精华内容接口 // @Param request body cygx.ResearchSummaryId true "type json string" // @Success Ret=200 // @router /roadshowEssence/delete [post] func (this *RoadshowEssenceController) Delete() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() AdminUser := this.SysUser if AdminUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req cygx.ResearchSummaryId err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } articleId := req.ArticleId articleInfo, errInfo := cygx.GetArticleIdInfoByArticleId(articleId) if errInfo != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,Err:" + errInfo.Error() return } if articleInfo.HavePublish == 1 { br.Msg = "删除失败" br.ErrMsg = "已经存在期数无法删除" return } err = cygx.DeleteArticleReport(articleId) if err != nil { br.Msg = "删除信息失败" br.ErrMsg = "删除信息失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "已删除" br.IsAddLog = true } // @Title 路演精华内容详情 // @Description 路演精华内容详情接口 // @Param ArticleId query int true "报告Id" // @Success Ret=200 {object} cygx.ArticleRoadshowEssenceDetail // @router /roadshowEssence/detail [get] func (this *RoadshowEssenceController) Detail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() AdminUser := this.SysUser if AdminUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } articleId, _ := this.GetInt("ArticleId") detail, err := cygx.GetArticleRoadshowEssenceDetail(articleId) if err != nil { br.Msg = "内容不存在" br.ErrMsg = "操作失败,Err:" + err.Error() return } detail.PublishDate = utils.StrTimeToTime(detail.PublishDate).Format("2006-01-02") br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = detail } // @Title 路演精华列表 // @Description 获取路演精华列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param PublishStatus query int false "发布状态 ,1未发布,1已发布,传2查询所有" // @Param StartDate query string false "开始时间 ,列如2021-03-06 " // @Param EndDate query string false "结束时间,列如2021-03-06 " // @Param KeyWord query string false "搜索关键词" // @Param ChartPermissionId query string false "行业id" // @Success 200 {object} cygx.CygxResearchSummaryListRep // @router /roadshowEssence/list [get] func (this *RoadshowEssenceController) List() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() AdminUser := this.SysUser if AdminUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" return } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") publishStatus, _ := this.GetInt("PublishStatus") chartPermissionId, _ := this.GetInt("ChartPermissionId") startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") keyWord := this.GetString("KeyWord") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = utils.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} condition += ` AND art.article_type = 'lyjh' ` if startDate != "" { condition += ` AND art.publish_date >= ` + "'" + startDate + " 00:00:00'" } if endDate != "" { condition += ` AND art.publish_date <= ` + "'" + endDate + " 23:59:59'" } if publishStatus == 0 || publishStatus == 1 { condition += ` AND art.publish_status = ` + strconv.Itoa(publishStatus) } if keyWord != "" { condition += ` AND (art.title LIKE '%` + keyWord + `%' ) ` } if chartPermissionId > 0 { condition += ` AND art.chart_permission_ids = ` + strconv.Itoa(chartPermissionId) } total, err := cygx.GetCygxArticleCount(condition, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } condition += ` ORDER BY art.publish_date DESC ` list, err := cygx.GetArticleRoadshowEssenceList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } for k, v := range list { if v.Periods != "" && v.Periods != "0" { list[k].Periods = "第" + v.Periods + "期" } else { list[k].Periods = "" } list[k].PublishDate = utils.StrTimeToTime(v.PublishDate).Format("2006-01-02") } page := paging.GetPaging(currentIndex, pageSize, total) resp := new(cygx.CygxResearchSummaryListRep) resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 路演精华的发布与取消发布 // @Description 路演精华的发布与取消发布接口 // @Param request body cygx.ResearchSummaryId true "type json string" // @Success 200 操作成功 // @router /roadshowEssence/PublishAndCancel [post] func (this *RoadshowEssenceController) PublishAndCancel() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() AdminUser := this.SysUser if AdminUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } var req cygx.ResearchSummaryId err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } articleId := req.ArticleId detail, err := cygx.GetArticleIdInfoByArticleId(articleId) if err != nil { br.Msg = "内容不存在" br.ErrMsg = "操作失败,Err:" + err.Error() return } item := new(cygx.CygxResearchSummaryRep) item.ArticleId = articleId if detail.PublishStatus == 0 { item.PublishStatus = 1 item.AdminId = AdminUser.AdminId item.AdminName = AdminUser.RealName go cygxService.SendWxMsgWithroadshowEssence(articleId) } else { item.AdminId = detail.AdminId item.AdminName = detail.AdminName item.PublishStatus = 0 } if detail.HavePublish == 0 { var pars []interface{} var condition string condition = ` AND article_type = 'lyjh' AND art.have_publish = 1 ` total, err := cygx.GetCygxArticleCount(condition, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } item.Periods = strconv.Itoa(total + 1) } else { item.Periods = detail.Periods } err = cygx.RoadshowEssencePublishAndCancel(item) if err != nil { br.Msg = "操作失败" br.ErrMsg = "操作失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "操作成功" br.IsAddLog = true } // @Title 文章的见范围修改 // @Description 文章的见范围修改接口 // @Param request body cygx.SummaryManageIdRep true "type json string" // @Success 200 操作成功 // @router /roadshowEssence/visibleRange [post] func (this *RoadshowEssenceController) VisibleRange() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() AdminUser := this.SysUser if AdminUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } var req cygx.SummaryManageIdRep err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } articleId := req.ArticleId item := new(cygx.CygxArticle) articleInfo, errInfo := cygx.GetArticleInfoOtherByArticleId(articleId) if articleInfo == nil { br.Msg = "操作失败" br.ErrMsg = "纪要ID错误" return } if errInfo != nil { br.Msg = "操作失败" br.ErrMsg = "操作失败,Err:" + errInfo.Error() return } item.ArticleId = articleId item.Title = articleInfo.Title item.BodyText = articleInfo.BodyText item.Body = articleInfo.Body item.PublishDate = articleInfo.PublishDate item.ExpertBackground = articleInfo.ExpertBackground item.CategoryId = articleInfo.CategoryId if articleInfo.VisibleRange == 0 { item.VisibleRange = 1 item.AdminId = AdminUser.AdminId item.AdminName = AdminUser.RealName go cygxService.SendWxMsgWithroadshowEssence(articleId) } else { item.AdminId = articleInfo.AdminId item.AdminName = articleInfo.AdminName item.PublishStatus = 0 } err = cygx.ArticleVisibleRange(item) if err != nil { br.Msg = "操作失败" br.ErrMsg = "操作失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "操作成功" br.IsAddLog = true }