浏览代码

fix: FICC一级分类

hsun 3 年之前
父节点
当前提交
e1fcf9dcb4
共有 3 个文件被更改,包括 59 次插入69 次删除
  1. 40 40
      models/response/classify.go
  2. 4 4
      models/tables/rddp/classify/query.go
  3. 15 25
      services/report/classify.go

+ 40 - 40
models/response/classify.go

@@ -5,63 +5,63 @@ import (
 )
 
 type ClassifyListItem struct {
-	ClassifyIdSecond                     int     `json:"classify_id_second"`
-	ClassifyNameSecond     	string  `json:"classify_name_second"`
-	ParentId		 		int     `json:"parent_id"`
-	ReportAuthor     		string  `json:"report_author"`
-	AuthorDescript   		string  `json:"author_descript"`
-	HomeImgUrl       		string	`json:"home_img_url"`
-	Stage                   int    `description:"期数" json:"stage"`
-	ProductName				string  `json:"product_name"`
+	ClassifyIdSecond   int    `json:"classify_id_second"`
+	ClassifyNameSecond string `json:"classify_name_second"`
+	ParentId           int    `json:"parent_id"`
+	ReportAuthor       string `json:"report_author"`
+	AuthorDescript     string `json:"author_descript"`
+	HomeImgUrl         string `json:"home_img_url"`
+	Stage              int    `description:"期数" json:"stage"`
+	ProductName        string `json:"product_name"`
 }
 
 type ClassifyDetail struct {
 	ClassifyListItem
-	AvatarImgUrl     string     `json:"avatar_img_url"`
-	Abstract         string		`json:"abstract"`
-	Descript         string     `json:"descript"`
-	PermissionCheck     *PermissionCheckInfo    `json:"permission_check"`
-	AuthOk              bool `json:"auth_ok"`
-	VipTitle           string       `json:"vip_title"'`
+	AvatarImgUrl    string               `json:"avatar_img_url"`
+	Abstract        string               `json:"abstract"`
+	Descript        string               `json:"descript"`
+	PermissionCheck *PermissionCheckInfo `json:"permission_check"`
+	AuthOk          bool                 `json:"auth_ok"`
+	VipTitle        string               `json:"vip_title"'`
 }
 
 type ClassReportListItem struct {
-	ReportId                 int    `description:"报告Id" json:"report_id"`
-	ClassifyIdFirst    int    `description:"一级分类id" json:"classify_id_first"`
-	ClassifyNameFirst  string `description:"一级分类名称" json:"classify_name_first"`
-	ClassifyIdSecond   int    `description:"二级分类id" json:"classify_id_second"`
-	ClassifyNameSecond string `description:"二级分类名称" json:"classify_name_second"`
-	Title              string `description:"标题" json:"title"`
-	Abstract           string `description:"摘要" json:"abstract"`
-	Author             string `description:"作者" json:"author"`
-	ReportImgUrl             string `description:"作者头像" json:"report_img_url"`
+	ReportId           int       `description:"报告Id" json:"report_id"`
+	ClassifyIdFirst    int       `description:"一级分类id" json:"classify_id_first"`
+	ClassifyNameFirst  string    `description:"一级分类名称" json:"classify_name_first"`
+	ClassifyIdSecond   int       `description:"二级分类id" json:"classify_id_second"`
+	ClassifyNameSecond string    `description:"二级分类名称" json:"classify_name_second"`
+	Title              string    `description:"标题" json:"title"`
+	Abstract           string    `description:"摘要" json:"abstract"`
+	Author             string    `description:"作者" json:"author"`
+	ReportImgUrl       string    `description:"作者头像" json:"report_img_url"`
 	PublishTime        time.Time `description:"发布时间" json:"publish_time"`
-	Stage              int    `description:"期数" json:"stage"`
-	VideoUrl           string `description:"音频文件URL" json:"video_url"`
-	VideoName           string    `json:"video_name"`               //音频文件名称
-	VideoPlaySeconds    string    `json:"video_play_seconds"`      //音频播放时长
+	Stage              int       `description:"期数" json:"stage"`
+	VideoUrl           string    `description:"音频文件URL" json:"video_url"`
+	VideoName          string    `json:"video_name"`         //音频文件名称
+	VideoPlaySeconds   string    `json:"video_play_seconds"` //音频播放时长
 }
 type ClassReportList struct {
-	List    []*ClassReportListItem   	`json:"list"`
-	PermissionCheck     *PermissionCheckInfo    `json:"permission_check"`
-	AuthOk              bool `json:"auth_ok"`
-	Paging         *PagingItem `json:"paging"`
+	List            []*ClassReportListItem `json:"list"`
+	PermissionCheck *PermissionCheckInfo   `json:"permission_check"`
+	AuthOk          bool                   `json:"auth_ok"`
+	Paging          *PagingItem            `json:"paging"`
 }
 
 type ClassifySimpleListItem struct {
-	ClassifyIdSecond        int     `json:"classify_id_second"`
-	ClassifyNameSecond     	string  `json:"classify_name_second"`
-	ClassifySecondNameSimple     	string  `json:"classify_second_simple"`
+	ClassifyIdSecond         int    `json:"classify_id_second"`
+	ClassifyNameSecond       string `json:"classify_name_second"`
+	ClassifySecondNameSimple string `json:"classify_second_simple"`
 }
 
 type ClassifyFirstListItem struct {
 	ClassifyIdFirst    int    `description:"一级分类id" json:"classify_id_first"`
-	ClassifyIdSecond   int     `json:"classify_id_second"`
+	ClassifyIdSecond   int    `json:"classify_id_second"`
 	ClassifyNameFirst  string `description:"一级分类名称" json:"classify_name_first"`
-	ClassifyNameSecond     	string  `json:"classify_name_second"`
-	IconImgUrl         string	`json:"icon_img_url"`
-	Sort                 int    `json:"sort"`
-	RedirectType        int     `description:"跳转页面类型:1,专栏列表,2报告列表,3专栏详情" json:"redirect_type"`
+	ClassifyNameSecond string `json:"classify_name_second"`
+	IconImgUrl         string `json:"icon_img_url"`
+	Sort               int    `json:"sort"`
+	RedirectType       int    `description:"跳转页面类型:1,专栏列表,2报告列表,3专栏详情" json:"redirect_type"`
 }
 
 type ClassifyFirstList []*ClassifyFirstListItem
@@ -76,4 +76,4 @@ func (c ClassifyFirstList) Less(i, j int) bool {
 
 func (c ClassifyFirstList) Swap(i, j int) {
 	c[i], c[j] = c[j], c[i]
-}
+}

+ 4 - 4
models/tables/rddp/classify/query.go

@@ -37,7 +37,7 @@ func GetSecondIdsByClassifyNames(names []string) (ids []int, err error) {
 // GetParentList 查询所有一级分类
 func GetParentList() (list []*Classify, err error) {
 	err = global.MYSQL["rddp"].Model(Classify{}).
-		Select("id, classify_name").
+		Select("id, classify_name, show_type").
 		Where("parent_id = 0 and classify_name != '权益研报' AND is_show = 1").
 		Order("sort asc, id asc").Scan(&list).Error
 	if err == utils.ErrNoRow {
@@ -94,9 +94,9 @@ func GetOtherIdsByClassifyNames(names []string) (ids []int, err error) {
 }
 
 
-// GetFirstByPid 根据一级分类查找二级分类
-func GetFirstByPid(pid int) (item *Classify, err error) {
-	err = global.MYSQL["rddp"].Model(Classify{}).Where("parent_id = ? AND is_show = 1 ", pid).First(&item).Error
+// GetChildByPid 根据一级分类查找二级分类
+func GetChildByPid(pid int) (list []*Classify, err error) {
+	err = global.MYSQL["rddp"].Model(Classify{}).Where("parent_id = ? AND is_show = 1 ", pid).Scan(&list).Error
 	if err == utils.ErrNoRow {
 		err = nil
 	}

+ 15 - 25
services/report/classify.go

@@ -315,17 +315,8 @@ func GetClassifyFirstList(user user.UserInfo) (list response.ClassifyFirstList,
 		err = errors.New("分类不存在")
 		return
 	}
-	classifyMap := make(map[string]bool)
-	// TODO 确认正式环境名称是否一致
-	classifyMap["需求报告"] = true
-	classifyMap["宏观报告"] = true
-	classifyMap["日度点评"] = true
-	classifyMap["数据点评"] = true
-	classifyMap["行业调研"] = true
-	classifyMap["碳市场价格周报"] = true
-	classifyMap["海外视角"] = true
-	classifyMap["百家谈"] = true
 
+	// 当前版本一级分类固定
 	classifyIconMap := map[string]string{
 		"晨报": utils.ALIYUN_YBIMG_HOST + "ficc_icon_day_128.png",
 		"周报": utils.ALIYUN_YBIMG_HOST + "ficc_icon_week_128.png",
@@ -369,21 +360,20 @@ func GetClassifyFirstList(user user.UserInfo) (list response.ClassifyFirstList,
 		temp.ClassifyNameFirst = item.ClassifyName
 		temp.IconImgUrl = classifyIconMap[item.ClassifyName]
 		temp.Sort = classifySortMap[item.ClassifyName]
-		if _, ok := classifyMap[item.ClassifyName]; ok {
-			if item.ClassifyName == "需求报告" || item.ClassifyName == "宏观报告" {
-				classifySecond, tErr := classify.GetFirstByPid(item.Id)
-				if tErr == nil && classifySecond.ClassifyName == item.ClassifyName {
-					temp.ClassifyIdSecond = classifySecond.Id
-					temp.ClassifyNameSecond = classifySecond.ClassifyName
-					temp.RedirectType = 3
-				}else{
-					continue
-				}
-			}else{
-				temp.RedirectType = 1
-			}
-		}else{
-			temp.RedirectType = 2
+		if temp.Sort == 0 {
+			continue
+		}
+		// ShowType展示类型:1-列表 2-专栏; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情
+		temp.RedirectType = 2
+		if item.ShowType == 2 {
+			temp.RedirectType = 1
+		}
+		classifyChild, _ := classify.GetChildByPid(item.Id)
+		if classifyChild != nil && len(classifyChild) == 1 {
+			// 存在二级分类且仅有一个时直接跳转专栏详情
+			temp.ClassifyIdSecond = classifyChild[0].Id
+			temp.ClassifyNameSecond = classifyChild[0].ClassifyName
+			temp.RedirectType = 3
 		}
 		list = append(list, temp)
 	}