package controllers import ( "encoding/json" "fmt" "hongze/hongze_cygx/models" "hongze/hongze_cygx/services" "hongze/hongze_cygx/utils" "rdluck_tools/paging" "strconv" "strings" "time" ) //报告 type ReportController struct { BaseAuthController } type ReportCommonController struct { BaseCommonController } // @Title 行业报告分类列表接口 // @Description 获取行业报告分类列表接口 // @Param ChartPermissionId query int true "分类ID" // @Success 200 {object} models.IndustrialManagementList // @router /home/tradeList [get] func (this *ReportController) TradeList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId ChartPermissionId, _ := this.GetInt("ChartPermissionId") if ChartPermissionId < 1 { br.Msg = "请输入分类ID" return } list, err := models.GetTradeAll(ChartPermissionId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } for k, v := range list { list[k].UpdateTime = utils.TimeRemoveHms(v.UpdateTime) count, err := models.CheckThisCategoryNewArticleIsRead(uid, v.CategoryId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取帖子总数失败,Err:" + err.Error() return } if count == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.UpdateTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.UpdateTime)) { list[k].IsRed = true } } resp := new(models.TradeReportMappingResp) resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 产业报告分类列表接口 // @Description 获取产业报告分类列表接口 // @Param ChartPermissionId query int true "分类ID" // @Param IsNewLabel query string true "是否属于新标签,1是,0否" // @Param IsDeepLabel query string true "是否属于深标签,1是,0否" // @Param KeyWord query string true "搜索关键词" // @Param OrderColumn query int true "排序字段 ,NewTime 最近更新 ,Recommend弘则推荐" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} models.IndustrialManagementList // @router /home/industryList [get] func (this *ReportController) IndustryList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId fmt.Println(uid) ChartPermissionId, _ := this.GetInt("ChartPermissionId") orderColumn := this.GetString("OrderColumn") isNewLabel := this.GetString("IsNewLabel") isDeepLabel := this.GetString("IsDeepLabel") keyWord := this.GetString("KeyWord") pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var orderSrt string var condition string var startSize int resp := new(models.IndustrialManagementList) if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) if isNewLabel == "1" { condition += ` AND is_new_label = ` + isNewLabel } if isDeepLabel == "1" { condition += ` AND is_deep_label = ` + isDeepLabel } if keyWord != "" { keyWordArr, err := services.GetIndustryMapNameSliceV2(keyWord) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } var conditionkeyWord string conditionkeyWord += ` subject_names LIKE '%` + keyWord + `%'` keyWordArr = services.RemoveDuplicatesAndEmpty(keyWordArr) keyWordLen := len(keyWordArr) if keyWordLen <= 0 { keyWordArr = append(keyWordArr, keyWord) keyWordLen = len(keyWordArr) } for _, v := range keyWordArr { conditionkeyWord += ` OR subject_names LIKE '%` + v + `%'` } industrialManagementIds, err := models.GetIndustrialManagementIdsBykeyWord(conditionkeyWord) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取客户信息失败,Err:" + err.Error() return } if industrialManagementIds == "" { br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } condition += ` AND man.industrial_management_id IN (` + industrialManagementIds + `)` } var sqlChartPermissionId string if ChartPermissionId > 0 { sqlChartPermissionId += ` AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + ` ) ` condition += ` AND man.chart_permission_id IN (` + strconv.Itoa(ChartPermissionId) + `)` } //var total int var list []*models.IndustrialManagement //totalTopList, errTop := models.GetIndustrialManagemenCountTop(sqlChartPermissionId, uid, condition) //totalTop := len(totalTopList) //if errTop != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取品种信息失败,Err:" + errTop.Error() // return //} //totalNoTopList, errNoTop := models.GetIndustrialManagemenCountNoTop(sqlChartPermissionId, uid, condition) //totalNoTop := len(totalNoTopList) //if errNoTop != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取品种信息失败,Err:" + errNoTop.Error() // return //} total, err := models.GetIndustrialManagementAllCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取数量失败,Err:" + err.Error() return } page := paging.GetPaging(currentIndex, pageSize, total) if orderColumn == "" { orderColumn = "NewTime" } if orderColumn == "NewTime" { orderSrt = "update_time DESC" } else { orderSrt = "man.recommended_index DESC,update_time DESC" } //全部都是置顶 //if totalTop >= currentIndex*pageSize { // listTop, err := models.GetIndustrialManagementTopAll(uid, condition, startSize, pageSize) // for k, _ := range listTop { // listTop[k].IsTop = true // } // if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取品种信息失败,Err:" + err.Error() // return // } // list = listTop //} else if totalTop < (currentIndex-1)*pageSize { //全部都是不置顶 // listNoTop, err := models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize-totalTop, pageSize) // if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取品种信息失败,Err:" + err.Error() // return // } // list = listNoTop //} else { //部分置顶,部分不置顶 // listTop, err := models.GetIndustrialManagementTopAll(uid, condition, startSize, pageSize) // if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取品种信息失败,Err:" + err.Error() // return // } // for k, _ := range listTop { // listTop[k].IsTop = true // } // listNoTop, err := models.GetIndustrialManagementAll(uid, condition, orderSrt, 0, pageSize-len(listTop)) // if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取品种信息失败,Err:" + err.Error() // return // } // list = append(listTop, listNoTop...) //} if ChartPermissionId == 0 { ChartPermissionId = 20 } detailHot3, err := models.GetIndustrialManagementHot3(ChartPermissionId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } list, err = models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } for k, v := range list { //var analystStr string //analystList, err := models.GetIndustrialAnalystAll(v.IndustrialManagementId) //if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取品种信息失败,Err:" + err.Error() // return //} industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } list[k].IndustrialSubjectList = industrialSubjectList //if len(analystList) > 0 { // for _, v2 := range analystList { // analystStr += v2.AnalystName + "/" // } // analystStr = strings.TrimRight(analystStr, "/") //} //list[k].Analyst = analystStr list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime) newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate) recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId) return } if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(newArtinfo.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(newArtinfo.PublishDate)) { list[k].IsRed = true } if v.ArticleReadNum >= detailHot3.ArticleReadNum { list[k].IsHot = true } } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 产业下所关联的文章分类列表 // @Description 产业下所关联的文章分类列表接口 // @Param IndustrialManagementId query int true "产业ID" // @Success 200 {object} models.IndustrialToArticleCategoryListRep // @router /toArticleCategoryList [get] func (this *ReportController) ArticleCategoryList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId industrialManagementId, _ := this.GetInt("IndustrialManagementId") if industrialManagementId < 1 { br.Msg = "请输入分类ID" return } list, err := models.IndustrialToArticleCategory(industrialManagementId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } for k, v := range list { recordCount, err := models.IndustrialUserRecordArticleCount(uid, industrialManagementId, v.CategoryId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error() return } Newdetail, err := models.GetNewIndustrialUserRecordArticle(industrialManagementId, v.CategoryId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(Newdetail.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(Newdetail.PublishDate)) { list[k].IsRed = true } } detail, err := models.GetIndustrialManagementDetail(industrialManagementId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } resp := new(models.IndustrialToArticleCategoryListRep) resp.List = list resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime) resp.IndustryName = detail.IndustryName resp.IndustrialManagementId = industrialManagementId br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 产业文章列表接口 // @Description 获取产业文章列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param CategoryId query int true "分类ID" // @Param IndustrialManagementId query int true "产业ID" // @Success 200 {object} models.TacticsListResp // @router /industry/ArticleList [get] func (this *ReportController) List() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") categoryId, _ := this.GetInt("CategoryId") industrialManagementId, _ := this.GetInt("IndustrialManagementId") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var pars []interface{} var total int resp := new(models.TacticsListResp) page := paging.GetPaging(currentIndex, pageSize, total) if categoryId < 1 { br.Msg = "请输入分类ID" return } if industrialManagementId < 1 { br.Msg = "请输入产业ID" return } total, err := models.GetReportIndustrialCount(categoryId, industrialManagementId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取帖子总数失败,Err:" + err.Error() return } page = paging.GetPaging(currentIndex, pageSize, total) list, err := models.GetReportIndustrialList(pars, categoryId, industrialManagementId, uid, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取帖子数据失败,Err:" + err.Error() return } lenList := len(list) for i := 0; i < lenList; i++ { item := list[i] list[i].Body, _ = services.GetReportContentTextSub(item.Body) //list[i].Abstract = html.UnescapeString(item.Abstract) list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract) } for k, v := range list { if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) { list[k].IsRed = true } } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 置顶/取消置顶 // @Description 置顶 // @Param request body models.CygxIndustryTopRep true "type json string" // @Success 200 // @router /top [post] func (this *ReportController) ArticleCollect() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId var req models.CygxIndustryTopRep err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } industrialManagementId := req.IndustrialManagementId countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if countIndustrial == 0 { br.Msg = "产业不存在!" br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId) return } count, err := models.GetCygxIndustryTop(uid, industrialManagementId) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } resp := new(models.ArticleCollectResp) if count <= 0 { item := new(models.CygxIndustryTop) item.IndustrialManagementId = req.IndustrialManagementId item.UserId = uid item.CreateTime = time.Now() _, err = models.AddCygxIndustryTop(item) if err != nil { br.Msg = "置顶失败" br.ErrMsg = "置顶失败,Err:" + err.Error() return } br.Msg = "置顶成功" resp.Status = 1 } else { err = models.RemoveCygxIndustryTop(uid, industrialManagementId) if err != nil { br.Msg = "取消置顶失败" br.ErrMsg = "取消置顶失败,Err:" + err.Error() return } br.Msg = "已取消置顶" resp.Status = 2 } br.Ret = 200 br.Success = true br.Data = resp } // @Title 关注/取消关注产业 // @Description 关注/取消关注 接口 // @Param request body models.CygxIndustryFllowRep true "type json string" // @Success 200 // @router /fllow [post] func (this *ReportController) Fllow() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId var req models.CygxIndustryFllowRep err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } industrialManagementId := req.IndustrialManagementId var condition string countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if countIndustrial == 0 { br.Msg = "产业不存在!" br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId) return } count, err := models.GetCountCygxIndustryFllow(uid, industrialManagementId, condition) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } resp := new(models.CygxIndustryFllowResp) countUser, err := models.GetCountCygxIndustryFllowByUid(uid) if countUser == 0 { resp.GoFollow = true } if count == 0 { item := new(models.CygxIndustryFllow) item.IndustrialManagementId = industrialManagementId item.UserId = uid item.Email = user.Email item.Mobile = user.Mobile item.CompanyId = user.CompanyId item.CompanyName = user.CompanyName item.Type = 1 item.CreateTime = time.Now() item.ModifyTime = time.Now() _, err = models.AddCygxIndustryFllow(item) if err != nil { br.Msg = "操作失败" br.ErrMsg = "操作失败,Err:" + err.Error() return } resp.Status = 1 } else { var doType int condition = ` AND type = 1` count, err = models.GetCountCygxIndustryFllow(uid, industrialManagementId, condition) if err != nil { br.Msg = "操作失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if count == 1 { resp.Status = 2 doType = 2 } else { resp.Status = 1 doType = 1 } err = models.RemoveCygxIndustryFllow(uid, industrialManagementId, doType) if err != nil { br.Msg = "操作失败" br.ErrMsg = "取消关注失败,Err:" + err.Error() return } } br.Msg = "操作成功" br.Ret = 200 br.Success = true br.Data = resp } // @Title 产业报告分类关联作者列表接口 // @Description 获取产业报告分类关联作者列表接口 // @Param ChartPermissionId query int true "分类ID" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} models.CygxArticleDepartmentList // @router /industryListByDepartment [get] func (this *ReportController) IndustryListByDepartment() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") chartPermissionId, _ := this.GetInt("ChartPermissionId") var startSize int var condition string condition = ` AND a.is_report = 1 AND a.publish_status=1 AND m.chart_permission_id =` + strconv.Itoa(chartPermissionId) if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) total, err := models.GetArticleDepartmentCount(condition) page := paging.GetPaging(currentIndex, pageSize, total) resp := new(models.CygxArticleDepartmentList) userType, _, err := services.GetUserType(user.CompanyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } if userType == 1 { resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } resp.HaveResearch = true //获取作者信息,并排序 list, err := models.GetCygxArticleDepartmentList(startSize, pageSize, condition, uid) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } for k, v := range list { artList, err := models.GetArticleByDepartmentId(v.DepartmentId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取文章信息失败,Err:" + err.Error() return } for k2, v2 := range artList { subjectNames, err := models.GetSubjectNames(v2.ArticleId) if err != nil { br.Msg = "获取失败" + strconv.Itoa(v2.ArticleId) br.ErrMsg = "获取失败,Err:" + err.Error() return } var subjectNamesNew string if len(subjectNames) > 0 { slice := strings.Split(subjectNames, "/") for k3, v3 := range slice { if k3 < 4 { subjectNamesNew += v3 + "/" } } } industryName, err := models.GetIndustrialNames(v2.ArticleId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" + strconv.Itoa(v2.ArticleId) br.ErrMsg = "获取失败,Err:" + err.Error() return } subjectNamesNew = strings.TrimRight(subjectNamesNew, "/") artList[k2].SubjectName = subjectNamesNew artList[k2].DepartmentId = v.DepartmentId if subjectNamesNew == "" { artList[k2].IndustryName = industryName } else { artList[k2].IndustryName = industryName + "-" + subjectNamesNew } if artList[k2].IsReport == "1" { artList[k2].IndustryName = "【观点】" + artList[k2].IndustryName } else { artList[k2].IndustryName = "【纪要】" + artList[k2].IndustryName } } list[k].List = artList if v.FollowNum > 0 { list[k].IsMyFollow = true } } listnNew, err := models.GetIndustrialSubjectByDepartmentNew() if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } if len(listnNew) > 0 { for _, v := range listnNew { total, err := models.GetIndustrialManagementSubjectCount(v.IndustrialManagementId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取关联标的总数失败,Err:" + err.Error() return } Management := new(models.IndustrialManagementIdInt) if total == 0 { Management.IndustryName = v.IndustryName } else { listSub, err := models.GetIndustrialManagementSubjectList(v.IndustrialManagementId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取关联标的列表失败,Err:" + err.Error() return } var subjectNamesNew string for _, v1 := range listSub { subjectNamesNew += v1.SubjectName + "/" } subjectNamesNew = strings.TrimRight(subjectNamesNew, "/") Management.IndustryName = subjectNamesNew } //if v.SubjectNames != "" { // var subjectNamesNew string // slice := strings.Split(v.SubjectNames, ",") // for k1, v1 := range slice { // if k1 < 4 && k1 < len(slice)-1 { // subjectNamesNew += v1 + "/" // } // } // subjectNamesNew = strings.TrimRight(subjectNamesNew, "/") // Management.IndustryName = subjectNamesNew //} else { // Management.IndustryName = v.IndustryName //} Management.IndustrialManagementId = v.IndustrialManagementId resp.ListnNew = append(resp.ListnNew, Management) } } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 关注作者/取消关注作者 // @Description 关注作者/取消关注作者 接口 // @Param request body models.CygxArticleDepartmentId true "type json string" // @Success 200 // @router /fllowDepartment [post] func (this *ReportController) FllowDepartment() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId var req models.CygxArticleDepartmentId err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } departmentId := req.DepartmentId var condition string countDepartment, err := models.GetDepartmentCount(departmentId) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if countDepartment == 0 { br.Msg = "作者不存在!" br.ErrMsg = "作者ID不存在:" + strconv.Itoa(departmentId) return } countUser, err := models.GetArticleDepartmentFollowByUid(uid) count, err := models.GetArticleDepartmentFollow(uid, departmentId, condition) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } resp := new(models.CygxArticleDepartmentFollowResp) if countUser == 0 { resp.GoFollow = true } if count == 0 { item := new(models.CygxArticleDepartmentFollow) item.DepartmentId = departmentId item.UserId = uid item.Email = user.Email item.Mobile = user.Mobile item.CompanyId = user.CompanyId item.CompanyName = user.CompanyName item.Type = 1 item.CreateTime = time.Now() item.ModifyTime = time.Now() _, err = models.AddArticleDepartmentFollow(item) if err != nil { br.Msg = "操作失败" br.ErrMsg = "操作失败,Err:" + err.Error() return } resp.Status = 1 } else { var doType int condition = ` AND type = 1` count, err = models.GetArticleDepartmentFollow(uid, departmentId, condition) if err != nil { br.Msg = "操作失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if count == 1 { resp.Status = 2 doType = 2 } else { resp.Status = 1 doType = 1 } err = models.RemoveArticleDepartmentFollow(uid, departmentId, doType) if err != nil { br.Msg = "操作失败" br.ErrMsg = "取消关注失败,Err:" + err.Error() return } } br.Msg = "操作成功" br.Ret = 200 br.Success = true br.Data = resp } // @Title 研选文章列表接口 // @Description 获取研选文章列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ArticleId query int true "文章id" // @Param DepartmentId query int true "作者ID" // @Param IndustrialManagementId query int true "产业ID" // @Success 200 {object} models.ReportArticleWhichIndustrialRepList // @router /industry/reportList [get] func (this *ReportController) ReportList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } uid := user.UserId pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") departmentId, _ := this.GetInt("DepartmentId") industrialManagementId, _ := this.GetInt("IndustrialManagementId") articleId, _ := this.GetInt("ArticleId") var condition string var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var pars []interface{} var total int resp := new(models.ReportArticleWhichIndustrialRepList) page := paging.GetPaging(currentIndex, pageSize, total) userType, _, err := services.GetUserType(user.CompanyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } if userType == 1 { resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } resp.HaveResearch = true if departmentId > 0 { condition += ` AND art.department_id = ` + strconv.Itoa(departmentId) detail, err := models.GetArticleDepartmentDateilById(departmentId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } resp.NickName = detail.NickName } if industrialManagementId > 0 { condition += ` AND m.industrial_management_id = ` + strconv.Itoa(industrialManagementId) } if articleId > 0 { detail, err := models.GetArticleDetailById(articleId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } condition += ` AND art.subject_ids = '` + detail.SubjectIds + `'` } total, err = models.GetWhichDepartmentCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取帖子总数失败,Err:" + err.Error() return } page = paging.GetPaging(currentIndex, pageSize, total) condition += ` GROUP BY art.article_id ORDER BY art.publish_date DESC` list, err := models.IndustrialToArticleWhichDepartment(condition, pars, uid, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } for k, v := range list { if v.Readnum == 0 { list[k].IsRed = true } list[k].IsResearch = true subjectNames, err := models.GetSubjectNames(v.ArticleId) if err != nil { br.Msg = "获取失败" + strconv.Itoa(v.ArticleId) br.ErrMsg = "获取失败,Err:" + err.Error() return } var subjectNamesNew string if len(subjectNames) > 0 { slice := strings.Split(subjectNames, "/") for k3, v3 := range slice { if k3 < 4 { subjectNamesNew += v3 + "/" } } } industryName, err := models.GetIndustrialNames(v.ArticleId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" + strconv.Itoa(v.ArticleId) br.ErrMsg = "获取失败,Err:" + err.Error() return } subjectNamesNew = strings.TrimRight(subjectNamesNew, "/") list[k].SubjectName = subjectNamesNew list[k].IndustryName = industryName + "-" + subjectNamesNew resp.IndustryName = industryName } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }