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                      `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"`
	RaiReportUrl         string                   `description:"权益报告查看地址" json:"rai_report_url"`
}

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"` //音频品种是否关闭
	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:"音频播放时长"`
	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"`
	HasChapter         int       `description:"是否有章节" json:"has_chapter"`
	ReportLayout       int8      `description:"报告布局，1：常规布局，2：智能布局。默认：1" json:"report_layout"`
	HeadImg            string    `description:"报告头图地址" json:"head_img"`
	EndImg             string    `description:"报告尾图地址" json:"end_img"`
	CanvasColor        string    `description:"画布颜色" json:"canvas_color"`
	HeadStyle          string    `description:"版头样式" json:"head_style"`
	EndStyle           string    `description:"版尾样式" json:"end_style"`
	RaiReportId        int       `description:"权益报告ID" json:"rai_report_id"`
}

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"`
	ReportLayout          int8      `description:"报告布局，1：常规布局，2：智能布局。默认：1" json:"report_layout"`
	HeadImg               string    `description:"报告头图地址" json:"head_img"`
	EndImg                string    `description:"报告尾图地址" json:"end_img"`
	CanvasColor           string    `description:"画布颜色" json:"canvas_color"`
	HeadStyle             string    `description:"版头样式" json:"head_style"`
	EndStyle              string    `description:"版尾样式" json:"end_style"`
	ReportVideoUrl        string    `description:"报告音频" json:"report_video_url"`
}

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"`
	ClassifyIdThird      int              `description:"三级分类id" json:"classify_id_third"`
	ClassifyNameThird    string           `description:"三级分类名称" json:"classify_name_third"`
	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"`
	HasChapter           int              `description:"是否有章节" json:"has_chapter"`
	VideoUrl             string           `description:"报告音频" 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           `json:"video_img"` // 音频播放条前面展示的图片
	ReportDetailShowType int              `description:"报告详情的展示类型：1-拼接；2:目录" json:"report_detail_show_type"`
	RaiReportId          int              `description:"权益报告ID" json:"rai_report_id"`
}

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"`
	ClassifyId           int       `description:"最小分类id" json:"classify_id"`
	ClassifyName         string    `description:"最小分类名称" json:"classify_name"`
	ReportDetailShowType int       `description:"报告详情的展示类型：1-拼接；2:目录" json:"report_detail_show_type"`
	RaiReportId          int       `description:"权益报告ID" json:"rai_report_id"`
}

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:"期数"`
	ClassifyId         int    `description:"最小分类id"`
	ClassifyName       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"`
}
