package controllers import ( "github.com/rdlucklib/rdluck_tools/paging" "hongze/hongze_cygx/models" "hongze/hongze_cygx/utils" "strconv" "strings" "time" ) //报告榜单 type ReportBillboardController struct { BaseAuthController } // @Title 报告榜单table栏 // @Description 报告榜单table栏 // @Success 200 {object} models.ReportBillboardTableListResp // @router /table/list [get] func (this *ReportBillboardController) CompanyTableList() { 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 } ListPermission := []*models.ChartPermission{{PermissionName: utils.YI_YAO_NAME, ChartPermissionId: utils.YI_YAO_ID}, {PermissionName: utils.XIAO_FEI_NAME, ChartPermissionId: utils.XIAO_FEI_ID}, {PermissionName: utils.KE_JI_NAME, ChartPermissionId: utils.KE_JI_ID}, {PermissionName: utils.ZHI_ZAO_NAME, ChartPermissionId: utils.ZHI_ZAO_ID}} ListAllPermission := []*models.ChartPermission{{PermissionName: utils.YI_YAO_NAME, ChartPermissionId: utils.YI_YAO_ID}, {PermissionName: utils.XIAO_FEI_NAME, ChartPermissionId: utils.XIAO_FEI_ID}, {PermissionName: utils.KE_JI_NAME, ChartPermissionId: utils.KE_JI_ID}, {PermissionName: utils.ZHI_ZAO_NAME, ChartPermissionId: utils.ZHI_ZAO_ID}, {PermissionName: utils.CE_LUE_NAME, ChartPermissionId: utils.CE_LUE_ID}} List := []*models.ReportBillboardTableResp{{Name: "产业关注榜", Source: 1, List: ListPermission}, {Name: "阅读飙升榜", Source: 2, List: ListAllPermission}, {Name: "报告收藏榜", Source: 3, List: ListAllPermission}} resp := new(models.ReportBillboardTableListResp) resp.List = List br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 产业关注榜 // @Description 获取产业关注榜接口 // @Param ChartPermissionId query int true "分类ID" // @Success 200 {object} models.IndustrialManagementList // @router /industry/fllowList [get] func (this *ReportBillboardController) FllowList() { 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") var startSize int if pageSize <= 0 { pageSize = utils.PageSize15 } if currentIndex <= 0 { currentIndex = 1 } chartPermissionId, _ := this.GetInt("ChartPermissionId") if chartPermissionId < 1 { br.Msg = "请输入行业ID" return } var condition string var pars []interface{} var orderSrt string var industrialManagementIds string condition += ` AND man.chart_permission_id = ? ` pars = append(pars, chartPermissionId) orderSrt = " man.user_fllow_num DESC " // 排序方式 list, err := models.GetIndustrialManagementFllowBillboard(pars, condition, orderSrt, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetIndustrialManagementFllowBillboard Err:" + err.Error() return } fllowList, err := models.GetUserFllowIndustrialList(uid) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetUserFllowIndustrialList Err:" + err.Error() return } fllowMap := make(map[int]int) if len(fllowList) > 0 { for _, v := range fllowList { fllowMap[v.IndustrialManagementId] = uid } } for k, v := range list { if fllowMap[v.IndustrialManagementId] > 0 { list[k].IsFollow = 1 } industrialManagementIds += strconv.Itoa(v.IndustrialManagementId) + "," } industrialManagementIds = strings.TrimRight(industrialManagementIds, ",") silceindustrialManagementIds := strings.Split(industrialManagementIds, ",") //获取关联的标的 pars = make([]interface{}, 0) industrialIdList := make([]string, 0) for _, v := range silceindustrialManagementIds { industrialIdList = append(industrialIdList, v) } condition = `AND s.industrial_management_id IN ( ` + utils.GetOrmInReplace(len(silceindustrialManagementIds)) + ` ) ` pars = append(pars, industrialIdList) subjectList, err := models.GetSubjectList(pars, condition) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetSubjectList Err:" + err.Error() return } subjectMap := make(map[int][]*models.IndustrialSubject) if len(fllowList) > 0 { for _, v := range subjectList { item := new(models.IndustrialSubject) item.SubjectName = v.SubjectName item.IndustrialManagementId = v.IndustrialManagementId subjectMap[v.IndustrialManagementId] = append(subjectMap[v.IndustrialManagementId], item) } } for k, v := range list { list[k].IndustrialSubjectList = subjectMap[v.IndustrialManagementId] } page := paging.GetPaging(currentIndex, pageSize, len(list)) resp := new(models.IndustrialManagementList) resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 阅读飙升榜/报告收藏榜 // @Description 获取阅读飙升榜/报告收藏榜接口 // @Param ChartPermissionId query int true "分类ID" // @Param Source query int true "来源 2:阅读飙升 ,3:报告收藏" // @Success 200 {object} models.ArticleReportBillboardLIstResp // @router /industry/readList [get] func (this *ReportBillboardController) ReadList() { 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 } chartPermissionId, _ := this.GetInt("ChartPermissionId") source, _ := this.GetInt("Source") var list []*models.ArticleReportBillboardResp if chartPermissionId < 1 { br.Msg = "请输入行业ID" return } var err error var condition string var pars []interface{} condition += ` AND m.chart_permission_id = ? ` pars = append(pars, chartPermissionId) if source == 2 { //阅读飙升榜 var conditionPv string var articleTopIds string conditionPv = condition dateTime := time.Now().AddDate(0, 0, -15).Format(utils.FormatDate) conditionPv += ` AND l.create_time > ? AND l.create_time < ? ` pars = append(pars, dateTime, time.Now().Format(utils.FormatDate)) listTop, err := models.GetCygxArticleHistoryAllTop(pars, conditionPv) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetCygxArticleHistoryAllTop Err:" + err.Error() return } for _, v := range listTop { articleTopIds += strconv.Itoa(v.ArticleId) + "," item := new(models.ArticleReportBillboardResp) item.ArticleId = v.ArticleId list = append(list, item) } articleTopIds = strings.TrimRight(articleTopIds, ",") //获取文章关联的产业 pars = make([]interface{}, 0) articleIdList := make([]string, 0) silcearticleIds := strings.Split(articleTopIds, ",") for _, v := range silcearticleIds { articleIdList = append(articleIdList, v) } condition = ` AND a.article_id IN ( ` + utils.GetOrmInReplace(len(silcearticleIds)) + ` ) ` pars = append(pars, articleIdList) condition += ` AND m.chart_permission_id = ? ` pars = append(pars, chartPermissionId) listPv, err := models.GetReportPvBillboardList(pars, condition) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetReportPvBillboardList Err:" + err.Error() return } //按照查询出来的顺序赋值 mapPv := make(map[int]*models.ArticleReportBillboardResp) for _, v := range listPv { mapPv[v.ArticleId] = v } for k, v := range list { list[k] = mapPv[v.ArticleId] } } else { //获取报告收藏 condition += `GROUP BY a.article_id ORDER BY a.user_collection_num DESC, ac.id DESC, a.publish_date DESC LIMIT 15 ` list, err = models.GetReportCollectionBillboardList(pars, condition) } if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetSubjectList Err:" + err.Error() return } var articleIds string for _, v := range list { articleIds += strconv.Itoa(v.ArticleId) + "," } articleIds = strings.TrimRight(articleIds, ",") silcearticleIds := strings.Split(articleIds, ",") //获取文章关联的产业 pars = make([]interface{}, 0) articleIdList := make([]string, 0) for _, v := range silcearticleIds { articleIdList = append(articleIdList, v) } condition = ` AND mg.article_id IN ( ` + utils.GetOrmInReplace(len(silcearticleIds)) + ` ) ` pars = append(pars, articleIdList) industrialList, err := models.GetIndustrialListByarticleId(pars, condition) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetSubjectList Err:" + err.Error() return } industrialMap := make(map[int][]*models.IndustrialManagementIdInt) if len(industrialList) > 0 { for _, v := range industrialList { item := new(models.IndustrialManagementIdInt) item.ArticleId = v.ArticleId item.IndustrialManagementId = v.IndustrialManagementId item.IndustryName = v.IndustryName industrialMap[v.ArticleId] = append(industrialMap[v.ArticleId], item) } } for k, v := range list { if len(industrialMap[v.ArticleId]) > 0 { list[k].List = industrialMap[v.ArticleId] } else { list[k].List = make([]*models.IndustrialManagementIdInt, 0) } } resp := new(models.ArticleReportBillboardLIstResp) resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }