package controllers import ( "encoding/json" "fmt" "hongze/hongze_cygx/models" "hongze/hongze_cygx/services" "hongze/hongze_cygx/utils" "rdluck_tools/paging" "strconv" "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 = totalTop + totalNoTop 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" } fmt.Println(orderSrt) //全部都是置顶 //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...) //} 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 } } 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 fmt.Println(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) 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.GoFllow = true 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 fmt.Println(uid) pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") chartPermissionId, _ := this.GetInt("ChartPermissionId") var startSize int var condition string condition = ` 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) //获取作者信息,并排序 list, err := models.GetCygxArticleDepartmentList(startSize, pageSize, condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } for k, v := range list { list[k].List, err = models.GetIndustrialSubjectByDepartment(v.DepartmentId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } } resp := new(models.CygxArticleDepartmentList) resp.ListnNew, err = models.GetIndustrialSubjectByDepartmentNew(chartPermissionId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }