Jelajahi Sumber

fix:章节报告的显示方式:拼接、目录

Roc 5 bulan lalu
induk
melakukan
23f5988326
3 mengubah file dengan 66 tambahan dan 40 penghapusan
  1. 11 9
      models/response/report.go
  2. 32 31
      models/tables/rddp/classify/classify.go
  3. 23 0
      services/report/report.go

+ 11 - 9
models/response/report.go

@@ -5,15 +5,16 @@ import (
 )
 
 type ReportDetail struct {
-	ReportInfo        *ReportItem              `json:"report_info"`
-	ReportChapterList []*ReportChapterListItem `json:"report_chapter_list"`
-	PermissionCheck   *PermissionCheckInfo     `json:"permission_check"`
-	AuthOk            bool                     `json:"auth_ok"`
-	LikeNum           int64                    `description:"点赞总数" json:"like_num"`
-	LikeEnabled       int8                     `description:"是否已点赞: 0-未点赞 1-已点赞" json:"like_enabled"`
-	ReportShowType    int                      `descritpion:"展示形式:1-列表 2-专栏" json:"report_show_type"`
-	CollectionId      int                      `description:"收藏ID: 大于0则表示已收藏" json:"collection_id"`
-	RoadVideoId       int                      `json:"road_video_id" description:"绑定的路演视频ID"`
+	ReportInfo           *ReportItem              `json:"report_info"`
+	ReportChapterList    []*ReportChapterListItem `json:"report_chapter_list"`
+	PermissionCheck      *PermissionCheckInfo     `json:"permission_check"`
+	AuthOk               bool                     `json:"auth_ok"`
+	LikeNum              int64                    `description:"点赞总数" json:"like_num"`
+	LikeEnabled          int8                     `description:"是否已点赞: 0-未点赞 1-已点赞" json:"like_enabled"`
+	ReportShowType       int                      `description:"展示形式:1-列表 2-专栏" json:"report_show_type"`
+	CollectionId         int                      `description:"收藏ID: 大于0则表示已收藏" json:"collection_id"`
+	RoadVideoId          int                      `json:"road_video_id" description:"绑定的路演视频ID"`
+	ReportDetailShowType int                      `description:"报告详情的展示类型:1-拼接;2:目录" json:"report_detail_show_type"`
 }
 
 type ReportChapterListItem struct {
@@ -29,6 +30,7 @@ type ReportChapterListItem struct {
 	Sort                   int       `json:"sort"`
 	PublishTime            time.Time `json:"publish_time"`
 	IsClose                int       `gorm:"column:is_close;type:tinyint(1);default:0" json:"is_close"` //音频品种是否关闭
+	Content                string    `description:"内容" json:"content"`
 	VideoUrl               string    `json:"video_url" description:"音频文件URL"`
 	VideoName              string    `json:"video_name" description:"音频文件名称"`
 	VideoPlaySeconds       string    `json:"video_play_seconds" description:"音频播放时长"`

+ 32 - 31
models/tables/rddp/classify/classify.go

@@ -3,37 +3,38 @@ package classify
 import "time"
 
 type Classify struct {
-	Id                int       `gorm:"column:id" db:"id" json:"id" form:"id"`
-	ClassifyName      string    `gorm:"column:classify_name" db:"classify_name" json:"classify_name" form:"classify_name"` //分类名称
-	Sort              int8      `gorm:"column:sort" db:"sort" json:"sort" form:"sort"`                                     //排序
-	ParentId          int       `gorm:"column:parent_id" db:"parent_id" json:"parent_id" form:"parent_id"`                 //父级分类id
-	CreateTime        time.Time `gorm:"column:create_time" db:"create_time" json:"create_time" form:"create_time"`
-	ModifyTime        time.Time `gorm:"column:modify_time" db:"modify_time" json:"modify_time" form:"modify_time"`
-	Abstract          string    `gorm:"column:abstract" db:"abstract" json:"abstract" form:"abstract"`                             //栏目简介
-	Descript          string    `gorm:"column:descript" db:"descript" json:"descript" form:"descript"`                             //分享描述
-	ReportAuthor      string    `gorm:"column:report_author" db:"report_author" json:"report_author" form:"report_author"`         //栏目作者
-	AuthorDescript    string    `gorm:"column:author_descript" db:"author_descript" json:"author_descript" form:"author_descript"` //作者简介
-	ReportImgUrl      string    `gorm:"column:report_img_url" db:"report_img_url" json:"report_img_url" form:"report_img_url"`     //报告配图
-	HeadImgUrl        string    `gorm:"column:head_img_url" db:"head_img_url" json:"head_img_url" form:"head_img_url"`             //头部banner
-	AvatarImgUrl      string    `gorm:"column:avatar_img_url" db:"avatar_img_url" json:"avatar_img_url" form:"avatar_img_url"`     //头像
-	ColumnImgUrl      string    `gorm:"column:column_img_url" db:"column_img_url" json:"column_img_url" form:"column_img_url"`     //栏目配图
-	IsHomeColumn      int8      `gorm:"column:is_home_column" db:"is_home_column" json:"is_home_column" form:"is_home_column"`     //1:首页专栏
-	HomeImgUrl        string    `gorm:"column:home_img_url" db:"home_img_url" json:"home_img_url" form:"home_img_url"`             //首页配图
-	ClassifyLabel     string    `gorm:"column:classify_label" db:"classify_label" json:"classify_label" form:"classify_label"`
-	ShowType          uint8     `gorm:"column:show_type" db:"show_type" json:"show_type" form:"show_type"`                                     //展示类型:1-列表 2-专栏
-	HasTeleconference uint8     `gorm:"column:has_teleconference" db:"has_teleconference" json:"has_teleconference" form:"has_teleconference"` //是否有电话会 0-否 1-是
-	VipTitle          string    `gorm:"column:vip_title" db:"vip_title" json:"vip_title" form:"vip_title"`                                     //研究员头衔
-	YbIconUrl         string    `gorm:"column:yb_icon_url" db:"yb_icon_url" json:"yb_icon_url" form:"yb_icon_url"`                             //研报3.0已购页面icon图片地址
-	YbBgUrl           string    `gorm:"column:yb_bg_url" db:"yb_bg_url" json:"yb_bg_url" form:"yb_bg_url"`                                     //研报3.0已购详情背景图地址
-	IsShow            int8      `gorm:"column:is_show" db:"is_show" json:"is_show" form:"is_show"`                                             //是否展示报告:1,展示该分类下的报告,0隐藏分类下的报告
-	YbFiccIcon        string    `gorm:"column:yb_ficc_icon" db:"yb_ficc_icon" json:"yb_ficc_icon" form:"yb_ficc_icon"`                         //研报小程序端ficc页码图标
-	YbFiccPcIcon      string    `gorm:"column:yb_ficc_pc_icon" db:"yb_ficc_pc_icon" json:"yb_ficc_pc_icon" form:"yb_ficc_pc_icon"`             //研报 pc端ficc页码图标
-	YbFiccSort        int       `gorm:"column:yb_ficc_sort" db:"yb_ficc_sort" json:"yb_ficc_sort" form:"yb_ficc_sort"`                         //研报小程序端ficc页面排序
-	YbListImg         string    `gorm:"column:yb_list_img" db:"yb_list_img" json:"yb_list_img" form:"yb_list_img"`                             //研报小程序端报告列表封面图
-	YbShareBgImg      string    `gorm:"column:yb_share_bg_img;" db:"yb_share_bg_img" json:"yb_share_bg_img" form:"yb_share_bg_img"`
-	YbRightBanner     string    `gorm:"column:yb_right_banner;" db:"yb_right_banner" json:"yb_right_banner" form:"yb_right_banner"` // 研报小程序-报告分享背景图
-	Level             int       `gorm:"column:level" db:"level" json:"level" form:"level"`                                          // 层级
-	HasChild          int       `gorm:"column:has_child" db:"has_child" json:"has_child" form:"has_child"`                          //是否有子级别,0:下面没有子分类,1:下面有子分类;默认:0
+	Id                   int       `gorm:"column:id" db:"id" json:"id" form:"id"`
+	ClassifyName         string    `gorm:"column:classify_name" db:"classify_name" json:"classify_name" form:"classify_name"` //分类名称
+	Sort                 int8      `gorm:"column:sort" db:"sort" json:"sort" form:"sort"`                                     //排序
+	ParentId             int       `gorm:"column:parent_id" db:"parent_id" json:"parent_id" form:"parent_id"`                 //父级分类id
+	CreateTime           time.Time `gorm:"column:create_time" db:"create_time" json:"create_time" form:"create_time"`
+	ModifyTime           time.Time `gorm:"column:modify_time" db:"modify_time" json:"modify_time" form:"modify_time"`
+	Abstract             string    `gorm:"column:abstract" db:"abstract" json:"abstract" form:"abstract"`                             //栏目简介
+	Descript             string    `gorm:"column:descript" db:"descript" json:"descript" form:"descript"`                             //分享描述
+	ReportAuthor         string    `gorm:"column:report_author" db:"report_author" json:"report_author" form:"report_author"`         //栏目作者
+	AuthorDescript       string    `gorm:"column:author_descript" db:"author_descript" json:"author_descript" form:"author_descript"` //作者简介
+	ReportImgUrl         string    `gorm:"column:report_img_url" db:"report_img_url" json:"report_img_url" form:"report_img_url"`     //报告配图
+	HeadImgUrl           string    `gorm:"column:head_img_url" db:"head_img_url" json:"head_img_url" form:"head_img_url"`             //头部banner
+	AvatarImgUrl         string    `gorm:"column:avatar_img_url" db:"avatar_img_url" json:"avatar_img_url" form:"avatar_img_url"`     //头像
+	ColumnImgUrl         string    `gorm:"column:column_img_url" db:"column_img_url" json:"column_img_url" form:"column_img_url"`     //栏目配图
+	IsHomeColumn         int8      `gorm:"column:is_home_column" db:"is_home_column" json:"is_home_column" form:"is_home_column"`     //1:首页专栏
+	HomeImgUrl           string    `gorm:"column:home_img_url" db:"home_img_url" json:"home_img_url" form:"home_img_url"`             //首页配图
+	ClassifyLabel        string    `gorm:"column:classify_label" db:"classify_label" json:"classify_label" form:"classify_label"`
+	ShowType             uint8     `gorm:"column:show_type" db:"show_type" json:"show_type" form:"show_type"`                                     //展示类型:1-列表 2-专栏
+	HasTeleconference    uint8     `gorm:"column:has_teleconference" db:"has_teleconference" json:"has_teleconference" form:"has_teleconference"` //是否有电话会 0-否 1-是
+	VipTitle             string    `gorm:"column:vip_title" db:"vip_title" json:"vip_title" form:"vip_title"`                                     //研究员头衔
+	YbIconUrl            string    `gorm:"column:yb_icon_url" db:"yb_icon_url" json:"yb_icon_url" form:"yb_icon_url"`                             //研报3.0已购页面icon图片地址
+	YbBgUrl              string    `gorm:"column:yb_bg_url" db:"yb_bg_url" json:"yb_bg_url" form:"yb_bg_url"`                                     //研报3.0已购详情背景图地址
+	IsShow               int8      `gorm:"column:is_show" db:"is_show" json:"is_show" form:"is_show"`                                             //是否展示报告:1,展示该分类下的报告,0隐藏分类下的报告
+	YbFiccIcon           string    `gorm:"column:yb_ficc_icon" db:"yb_ficc_icon" json:"yb_ficc_icon" form:"yb_ficc_icon"`                         //研报小程序端ficc页码图标
+	YbFiccPcIcon         string    `gorm:"column:yb_ficc_pc_icon" db:"yb_ficc_pc_icon" json:"yb_ficc_pc_icon" form:"yb_ficc_pc_icon"`             //研报 pc端ficc页码图标
+	YbFiccSort           int       `gorm:"column:yb_ficc_sort" db:"yb_ficc_sort" json:"yb_ficc_sort" form:"yb_ficc_sort"`                         //研报小程序端ficc页面排序
+	YbListImg            string    `gorm:"column:yb_list_img" db:"yb_list_img" json:"yb_list_img" form:"yb_list_img"`                             //研报小程序端报告列表封面图
+	YbShareBgImg         string    `gorm:"column:yb_share_bg_img;" db:"yb_share_bg_img" json:"yb_share_bg_img" form:"yb_share_bg_img"`
+	YbRightBanner        string    `gorm:"column:yb_right_banner;" db:"yb_right_banner" json:"yb_right_banner" form:"yb_right_banner"`                                // 研报小程序-报告分享背景图
+	Level                int       `gorm:"column:level" db:"level" json:"level" form:"level"`                                                                         // 层级
+	HasChild             int       `gorm:"column:has_child" db:"has_child" json:"has_child" form:"has_child"`                                                         //是否有子级别,0:下面没有子分类,1:下面有子分类;默认:0
+	ReportDetailShowType uint8     `gorm:"column:report_detail_show_type" db:"report_detail_show_type" json:"report_detail_show_type" form:"report_detail_show_type"` // 报告详情的展示类型:1-拼接;2:目录
 }
 
 func (c *Classify) TableName() string {

+ 23 - 0
services/report/report.go

@@ -398,6 +398,9 @@ func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail respons
 		err = errors.New("报告未发布")
 		return
 	}
+	// 获取最小分类
+	minClassifyId, _, err := GetMinClassify(reportInfo)
+
 	// 判断报告是否属于专栏报告
 	firstClassify, e := classify.GetByClassifyId(reportInfo.ClassifyIdFirst)
 	if e != nil {
@@ -405,6 +408,18 @@ func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail respons
 		return
 	}
 
+	// 最小分类
+	var minClassify *classify.Classify
+	if reportInfo.ClassifyIdFirst == minClassifyId {
+		minClassify = firstClassify
+	} else {
+		minClassify, e = classify.GetByClassifyId(minClassifyId)
+		if e != nil {
+			err = errors.New("报告最小层级分类有误")
+			return
+		}
+	}
+
 	//判断权限
 
 	var authOk bool
@@ -600,6 +615,14 @@ func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail respons
 	reportDetail.LikeNum = likeNum
 	reportDetail.LikeEnabled = likeEnabled
 	reportDetail.ReportShowType = int(firstClassify.ShowType)
+	reportDetail.ReportDetailShowType = int(minClassify.ReportDetailShowType)
+
+	// 如果分类配置是列表展示,那么就移除content内容
+	if minClassify.ReportDetailShowType == 2 {
+		for _, v := range reportTypeList {
+			v.Content = ``
+		}
+	}
 
 	// 收藏
 	collectionId, e := collection.GetUserCollectByItem(int(userinfo.UserID), collection.CollectionTypeReport, reportId, 0)