package controllers import ( "github.com/rdlucklib/rdluck_tools/paging" "hongze/hongze_clpt/models" "hongze/hongze_clpt/services" "hongze/hongze_clpt/utils" "strconv" "strings" ) type HomeController struct { BaseAuthController } type BaseHomeController struct { BaseCommonController } type MobileHomeController struct { BaseAuthMobileController } // @Title 首页列表接口 // @Description 首页列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ChartPermissionId query int true "品类id,最新传0" // @Param CtagId query int true "图表子类ID" // @Param ListType query int true "列表类型,1最新,2 纪要 ,3图表 默认1" // @Success 200 {object} models.HomeArtAndChartListResp // @router /list [get] func (this *MobileHomeController) List() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") chartPermissionId, _ := this.GetInt("ChartPermissionId") ctagId, _ := this.GetInt("CtagId") listType, _ := this.GetInt("ListType") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } if listType <= 0 { listType = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} var total, chartTotal int resp := new(models.HomeArtAndChartListResp) page := paging.GetPaging(currentIndex, pageSize, total) var chartList []*models.HomeChartListResp var err error if listType == 1 { if currentIndex <= 2 { listCtagId := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} var chartIds string for _, v := range listCtagId { chartListTwo, err := models.GetChartList(`AND ctag_id = `+strconv.Itoa(v), pars, 0, 2) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } for _, vChart := range chartListTwo { chartIds += strconv.Itoa(vChart.ChartId) + "," } } chartIds = strings.TrimRight(chartIds, ",") condition += ` AND chart_id IN (` + chartIds + `) ` chartList, err = models.GetChartList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } } } else if listType == 3 { if chartPermissionId > 0 { condition += ` AND a.ptag_id =? ` pars = append(pars, chartPermissionId) } if ctagId > 0 { condition += ` AND a.ctag_id =? ` pars = append(pars, ctagId) } chartList, err = models.GetChartList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } chartTotal, err = models.GetChartCount(condition, pars) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子总数失败,Err:" + err.Error() return } } for k, v := range chartList { if v.PtagName != "" { chartList[k].CtagNamePc = v.PtagName } if v.CtagName != "" { chartList[k].CtagNamePc += "," + v.CtagName } if v.PtagNameTwo != "" { chartList[k].CtagNamePc += "," + v.PtagNameTwo } if v.CtagNameTwo != "" { chartList[k].CtagNamePc += "," + v.CtagNameTwo } chartList[k].IsNeedJump = true chartList[k].Source = 2 if v.PtagName != "" { labelItem := new(models.LabelList) labelItem.PtagName = v.PtagName labelItem.CtagName = v.CtagName chartList[k].LabelList = append(chartList[k].LabelList, labelItem) } if v.PtagNameTwo != "" { labelItemTwo := new(models.LabelList) labelItemTwo.PtagName = v.PtagNameTwo labelItemTwo.CtagName = v.CtagNameTwo chartList[k].LabelList = append(chartList[k].LabelList, labelItemTwo) } if len(chartList[k].LabelList) == 0 { chartList[k].LabelList = make([]*models.LabelList, 0) } } if len(chartList) == 0 { chartList = make([]*models.HomeChartListResp, 0) } resp.ChartList = chartList if listType != 3 { userType, _, err := services.GetUserType(user.CompanyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } condition = ` AND is_summary = 1 ` if chartPermissionId > 0 { categoryId, err := models.GetCategoryIdHome(chartPermissionId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error() return } categoryinfo, err := models.GetChartPermissionById(chartPermissionId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if userType == 1 && strings.Contains(categoryinfo.PermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) { resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } page = paging.GetPaging(currentIndex, pageSize, total) if categoryId != "" { condition += ` AND category_id IN(` + categoryId + `)` //condition += ` OR ( category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%' AND publish_status = 1 AND is_summary = 1 )` } else { condition += ` AND category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'` } } //永续客户无法查看研选分类的内容 if userType == 1 { condition += ` AND category_name NOT LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'` } total, err = models.GetHomeCount(condition, pars) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子总数失败,Err:" + err.Error() return } listPublic, err := models.GetHomeListPublic(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子数据失败,Err:" + err.Error() return } listPublic, err = services.HandleArticleCategoryImg(listPublic, user) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取报告封面图片失败, Err:" + err.Error() return } var articleIds []int for _, v := range listPublic { articleIds = append(articleIds, v.ArticleId) } articleMapPv := services.GetArticleHistoryByArticleId(articleIds) //文章Pv articleCollectMap, _ := services.GetCygxArticleCollectMap(user.UserId) //用户收藏的文章 articleCollectNumMap, _ := services.GetCygxArticleCollectNumMapByArtcileIds(articleIds) //文章收藏的数量 var list []*models.HomeArticle if len(listPublic) == 0 { list = make([]*models.HomeArticle, 0) } else { for _, v := range listPublic { list = append(list, &models.HomeArticle{ ArticleId: v.ArticleId, Title: v.Title, Annotation: v.Annotation, Abstract: v.Abstract, ImgUrlPc: v.ImgUrlPc, PublishDate: v.PublishDate, IsResearch: v.IsResearch, Pv: articleMapPv[v.ArticleId], IsCollect: articleCollectMap[v.ArticleId], CollectNum: articleCollectNumMap[v.ArticleId], }) } } resp.List = list } if chartTotal > total { total = chartTotal } page = paging.GetPaging(currentIndex, pageSize, total) resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 首页列表接口 // @Description 首页列表接口 // @Param TagIds query string true "标签选择" // @Param ChartPermissionId query int false "行业id" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} models.HomeArtAndChartListResp // @router /new [get] func (this *MobileHomeController) NewList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } //uid := user.UserId pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") tagIds := this.GetString("TagIds") chartPermissionId, _ := this.GetInt("ChartPermissionId") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var conditionInit string var pars []interface{} var total int var err error resp := new(models.HomeResourceDataListNewResp) if tagIds != "" { conditionTagIdsInit, err := services.GetConditionInitByTagIds(tagIds, chartPermissionId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取活动权限数据失败,GetConditionInitByTagIds Err:" + err.Error() return } conditionInit += conditionTagIdsInit } //行业筛选 if chartPermissionId > 0 { conditionInit += " AND chart_permission_id = " + strconv.Itoa(chartPermissionId) condition += " AND chart_permission_id = " + strconv.Itoa(chartPermissionId) } //if tagIds == "" && chartPermissionId == 0 { // //查询近一个月的数据 // conditionInit += " AND publish_date > '" + time.Now().AddDate(0, 0, -30).Format(utils.FormatDateTime) + "'" //} //return //conditionInit += ` AND source IN ('newchart')` //if user.CompanyId <= 1 { // condition += " AND source IN ('roadshow','article','activity') " // startSize = 0 // pageSize = utils.PageSize5 //} else { condition += ` AND is_hide = 0 AND source NOT IN ('activity','activityspecial','newchart','industrialsourceHz','industrialsourceYx') AND IF ( source IN('activityvoice','activityvideo') , chart_permission_id != 31 ,1=1 ) ` + conditionInit //conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "1,2,3", "", 0, 0, "", 0, 1) conditionActivity, err := services.ActivityConditioninitSql(user, " AND art.active_state IN (1,2) ", 0) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error() return } conditionActivity += ` AND art.publish_status = 1 ` var conditionOrder string conditionOrder = ` ORDER BY art.activity_time DESC , art.active_state ASC ` conditionActivity += conditionOrder actPageSize := 200 if tagIds != "" { actPageSize = 2000 } listActivity, err := models.GetActivityListHomeNew(conditionActivity, 0, actPageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取可见活动数据失败,Err:" + err.Error() return } var activityIds []int for _, v := range listActivity { activityIds = append(activityIds, v.ActivityId) } lenActivityIds := len(activityIds) listActivitySpecial, _, err := services.GetActivitySpecialList(user, 1, 200, "", "", "") if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取专项调研可见权限失败失败,Err:" + err.Error() return } var activityspecialIds []int for _, v := range listActivitySpecial { activityspecialIds = append(activityspecialIds, v.ActivityId) } lenActivityspecialIds := len(activityspecialIds) //if lenActivityIds > 0 && tagIds == "" { if lenActivityIds > 0 { condition += ` OR ( source = 'activity' AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) ` + conditionInit + ` ) ` pars = append(pars, activityIds) } if lenActivityspecialIds > 0 && user.CompanyId > 1 { condition += ` OR ( source = 'activityspecial' AND source_id IN (` + utils.GetOrmInReplace(lenActivityspecialIds) + `) ` + conditionInit + ` ) ` pars = append(pars, activityspecialIds) } //} //return total, err = models.GetResourceDataCount(condition, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据总数失败,Err:" + err.Error() return } //return //if user.CompanyId <= 1 { // total = utils.PageSize5 //} //fmt.Println(condition) page := paging.GetPaging(currentIndex, pageSize, total) //Source string `description:"资源类型 报告 :article 、图表 :newchart、微路演 :roadshow、活动 :activity、活动视频:activityvideo、活动音频:activityvoice、专项调研活动:activityspecial"` list, err := services.GetResourceDataList(condition, pars, startSize, pageSize, user) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据列表失败,Err:" + err.Error() return } if len(list) == 0 { list = make([]*models.CygxResourceDataNewResp, 0) } page = paging.GetPaging(currentIndex, pageSize, total) resp.Paging = page resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }