package response

import (
	"time"
)

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"`
}

type ReportChapterListItem struct {
	ReportChapterId        int       `json:"report_chapter_id"`
	ReportId               int       `json:"report_id"`
	Title                  string    `json:"title"`
	TypeId                 int       `json:"type_id"`
	TypeName               string    `json:"type_name"`
	Trend                  string    `json:"trend"`
	ReportChapterTypeKey   string    `json:"report_chapter_type_key"`
	ReportChapterTypeThumb string    `json:"report_chapter_type_thumb"`
	ReportChapterTypeName  string    `json:"report_chapter_type_name"`
	Sort                   int       `json:"sort"`
	PublishTime            time.Time `json:"publish_time"`
	IsClose                int       `gorm:"column:is_close;type:tinyint(1);default:0" json:"is_close"` //音频品种是否关闭
	VideoUrl               string    `json:"video_url" description:"音频文件URL"`
	VideoName              string    `json:"video_name" description:"音频文件名称"`
	VideoPlaySeconds       string    `json:"video_play_seconds" description:"音频播放时长"`
	VideoSize              string    `json:"video_size" description:"音频文件大小,单位M"`
}

type ReportItem struct {
	ReportId           int       `json:"report_id"`
	ClassifyNameFirst  string    `description:"一级分类名称" json:"classify_name_first"`
	ClassifyNameSecond string    `description:"二级分类名称" json:"classify_name_second"`
	Title              string    `description:"标题" json:"title"`
	Abstract           string    `description:"摘要" json:"abstract"`
	Author             string    `description:"作者" json:"author"`
	Frequency          string    `description:"频度" json:"frequency"`
	PublishTime        time.Time `description:"发布时间" json:"publish_time"`
	Stage              int       `description:"期数" json:"stage"`
	Content            string    `description:"内容" json:"content"`
	VideoUrl           string    `description:"音频文件URL" json:"video_url"`
	VideoName          string    `description:"音频文件名称" json:"video_name"`
	VideoSize          string    `description:"音频文件大小,单位M" json:"video_size"`
	VideoPlaySeconds   string    `description:"音频播放时长" json:"video_play_seconds"`
	VideoImg           string    `description:"音频播放条的图片" json:"video_img"`
	ContentSub         string    `description:"内容前两个章节" json:"content_sub"`
	BannerUrl          string    `description:"详情页banner" json:"banner_url"`
	ShareBgImg         string    `description:"分享背景图" json:"share_bg_img"`
}

type ReportChapterItem struct {
	ReportChapterId       int       `json:"report_chapter_id"`
	ReportId              int       `json:"report_id"`
	Title                 string    `json:"title"`
	Abstract              string    `json:"abstract"`
	TypeId                int       `json:"type_id"`
	TypeName              string    `json:"type_name"`
	Trend                 string    `json:"trend"`
	ReportChapterTypeName string    `json:"report_chapter_type_name"`
	PublishTime           time.Time `json:"publish_time"`
	Content               string    `description:"内容" json:"content"`
	ContentSub            string    `description:"内容前两个章节" json:"content_sub"`
	VideoUrl              string    `json:"video_url"`          //音频文件URL
	VideoName             string    `json:"video_name"`         //音频文件名称
	VideoPlaySeconds      string    `json:"video_play_seconds"` //音频播放时长
	VideoSize             string    `json:"video_size"`
	VideoImg              string    `description:"音频播放条的图片" json:"video_img"`
	Author                string    `description:"作者" json:"author"`
	Stage                 int       `description:"期数" json:"stage"`
	ClassifyIdFirst       int       `description:"一级分类id" json:"classify_id_first"`
	ClassifyNameFirst     string    `description:"一级分类名称" json:"classify_name_first"`
	ShareBgImg            string    `description:"分享背景图" json:"share_bg_img"`
}

type ReportChapterDetail struct {
	ReportChapterItem     *ReportChapterItem   `json:"report_chapter_item"`
	PermissionCheck       *PermissionCheckInfo `json:"permission_check"`
	ReportChapterMenuList []*ReportChapterMenu `json:"report_chapter_menu_list"`
	AuthOk                bool                 `json:"auth_ok"`
	LikeNum               int64                `description:"点赞总数" json:"like_num"`
	LikeEnabled           int8                 `description:"是否已点赞: 0-未点赞 1-已点赞" json:"like_enabled"`
	CollectionId          int                  `description:"收藏ID: 大于0则表示已收藏" json:"collection_id"`
}

type ReportChapterMenu struct {
	ReportChapterId        int    `json:"report_chapter_id"`
	ReportId               int    `json:"report_id"`
	ReportChapterTypeName  string `json:"report_chapter_type_name"`
	ReportChapterTypeThumb string `json:"report_chapter_type_thumb"`
	PcSelectedThumb        string `json:"pc_selected_thumb"`
	PcUnselectedThumb      string `json:"pc_unselected_thumb"`
	Sort                   int    `json:"sort"`
}

type ReportListItem 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"`
	PublishTime        time.Time        `description:"发布时间" json:"publish_time"`
	Stage              int              `description:"期数" json:"stage"`
	VideoList          []*VideoListItem `json:"video_list"`
	AuthOk             bool             `json:"auth_ok"`
	TitleInfo          string           `json:"title_info"`
}

type VideoListItem struct {
	VideoUrl         string `description:"音频文件URL" json:"video_url"`
	Sort             int    `description:"音频内容排序" json:"sort"`
	VideoName        string `json:"video_name"`         //音频文件名称
	VideoPlaySeconds string `json:"video_play_seconds"` //音频播放时长
	VideoImg         string `json:"video_img"`          // 音频播放条前面展示的图片
}

type ReportList struct {
	Paging *PagingItem       `json:"paging"`
	List   []*ReportListItem `json:"list"`
}

type ReportCollectListItem struct {
	ReportId            int       `description:"报告Id" json:"report_id"`
	ReportChapterId     int       `json:"report_chapter_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"`
	ReportChapterTypeId int       `json:"report_chapter_type_id"`
	PublishTime         time.Time `description:"发布时间" json:"publish_time"`
	Title               string    `description:"标题" json:"title"`
	ContentSub          string    `description:"内容前两个章节" json:"content_sub"`
}

type ReportCollectList struct {
	Date    string                   `json:"date"`
	SubList []*ReportCollectListItem `json:"sub_list"`
}

type ReportCollectResp struct {
	Paging *PagingItem          `json:"paging"`
	List   []*ReportCollectList `json:"list"`
}

type ReportSearchResp struct {
	Paging *PagingItem              `json:"paging"`
	List   []*ReportCollectListItem `json:"list"`
}

type EsReportItem struct {
	Author             string `description:"作者"`
	BodyContent        string `description:"内容"`
	Categories         string `description:"品种名称"`
	ClassifyIdFirst    int    `description:"一级分类id"`
	ClassifyNameFirst  string `description:"一级分类名称"`
	ClassifyIdSecond   int    `description:"二级分类id"`
	ClassifyNameSecond string `description:"二级分类名称"`
	PublishState       int    `description:"1:未发布,2:已发布"`
	PublishTime        string `description:"发布时间"`
	ReportChapterId    int    `description:"报告章节Id"`
	ReportId           int    `description:"报告Id"`
	Title              string `description:"标题"`
	Abstract           string `description:"摘要"`
	StageStr           string `description:"期数"`
}

type TickerDataItem struct {
	Date           string  `json:"date"`
	Ticker         string  `json:"ticker"`
	BaseColumnName string  `json:"base_column_name"`
	TickerValue    float64 `json:"ticker_value"`
	LastValue      float64 `json:"last_value"`
	DdValue        float64 `json:"dd_value"`
	WwValue        float64 `json:"ww_value"`
	MmValue        float64 `json:"mm_value"`
}
type TickerTitleData struct {
	TickerTitle           string `json:"ticker_title"`
	ReportChapterTypeId   int    `json:"report_chapter_type_id"`
	ReportChapterTypeName string `json:"report_chapter_type_name"`
	DataTableImage        string `json:"data_table_image"`
}
type TickerData struct {
	List        []*TickerDataItem `json:"list"`
	TickerTitle *TickerTitleData  `json:"ticker_title"`
}

type ReportCollectListResp []*ReportCollectList

func (p ReportCollectListResp) Len() int {
	return len(p)
}

func (p ReportCollectListResp) Less(i, j int) bool {
	return p[i].Date > p[j].Date
}

func (p ReportCollectListResp) Swap(i, j int) {
	p[i], p[j] = p[j], p[i]
}

type ReportChapterList []*ReportChapterListItem

func (r ReportChapterList) Len() int {
	return len(r)
}

func (r ReportChapterList) Less(i, j int) bool {
	return r[i].Sort < r[j].Sort
}

func (r ReportChapterList) Swap(i, j int) {
	r[i], r[j] = r[j], r[i]
}

type ReportChapterMenuList []*ReportChapterMenu

func (rc ReportChapterMenuList) Len() int {
	return len(rc)
}

func (rc ReportChapterMenuList) Less(i, j int) bool {
	return rc[i].Sort < rc[j].Sort
}

func (rc ReportChapterMenuList) Swap(i, j int) {
	rc[i], rc[j] = rc[j], rc[i]
}

type ReportVarietyResp struct {
	Paging *PagingItem          `json:"paging"`
	List   []*VarietyReportItem `json:"list"`
}

type VarietyReportItem struct {
	ReportId           int       `json:"report_id"`
	ClassifyNameFirst  string    `description:"一级分类名称" json:"classify_name_first"`
	ClassifyNameSecond string    `description:"二级分类名称" json:"classify_name_second"`
	Title              string    `description:"标题" json:"title"`
	Abstract           string    `description:"摘要" json:"abstract"`
	Author             string    `description:"作者" json:"author"`
	Frequency          string    `description:"频度" json:"frequency"`
	PublishTime        time.Time `description:"发布时间" json:"publish_time"`
	Stage              int       `description:"期数" json:"stage"`
	Content            string    `description:"内容" json:"content"`
	VideoUrl           string    `description:"音频文件URL" json:"video_url"`
	VideoName          string    `description:"音频文件名称" json:"video_name"`
	VideoSize          string    `description:"音频文件大小,单位M" json:"video_size"`
	VideoPlaySeconds   string    `description:"音频播放时长" json:"video_play_seconds"`
	VideoImg           string    `description:"音频播放条的图片" json:"video_img"`
	ContentSub         string    `description:"内容前两个章节" json:"content_sub"`
	BannerUrl          string    `description:"详情页banner" json:"banner_url"`
	ShareBgImg         string    `description:"分享背景图" json:"share_bg_img"`
	AuthOk             bool      `json:"auth_ok"`
}