package report

import (
	"hongze/hongze_open_api/models/tables/rddp/classify"
	"hongze/hongze_open_api/models/tables/rddp/report"
	"hongze/hongze_open_api/utils"
	"time"
)

// PermissionCheckInfo 权限校验完成后的结果
type PermissionCheckInfo struct {
	Name         string       `json:"name" description:"销售名称"`
	Mobile       string       `json:"mobile" description:"手机号"`
	Type         string       `json:"type" description:"校验失败，没有权限，需要让前端处理的类型，枚举值：apply,contact"`
	HzPhone      string       `json:"hz_phone" description:"弘则公司电话"`
	CustomerInfo CustomerInfo `json:"customer_info" description:"客户信息"`
}

// CustomerInfo 客户信息
type CustomerInfo struct {
	CompanyName string `json:"company_name" description:"客户（公司）名称"`
	Name        string `json:"name" description:"联系人名称"`
	Mobile      string `json:"mobile" description:"手机号"`
	Status      string `json:"status" description:"状态"`
	IsSuspend   int    `json:"is_suspend" description:"启用与否字段：1:暂停,0:启用"`
	HasApply    bool   `json:"has_apply" description:"是否有申请过"`
}

// ReportClassifyListResp 分类列表接口
type ReportClassifyListResp struct {
	List []*classify.ClassifyList `description:"列表"  json:"list"`
}

// ReportListResp 报告列表接口
type ReportListResp struct {
	List   []*report.ReportList `description:"列表"  json:"list"`
	Paging *utils.PagingItem    `description:"分页数据" json:"paging"`
}

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]
}

// ReportDetail 报告详情
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:"-"`
	LikeEnabled       int8                     `description:"是否已点赞： 0-未点赞 1-已点赞" json:"-"`
	ReportShowType    int                      `descritpion:"展示形式：1-列表 2-专栏" json:"report_show_type"`
}

// ReportItem 报告详情返回数据
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"`
}

// ReportChapterListItem 报告详情章节返回结构体
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"`
	HttpUrl                string    `json:"http_url"`
}

// ReportChapterDetail 报告章节详情
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"`
	TickerDataParams      string              `json:"ticker_data_param" description:"指标数据参数"`
	LikeNum               int64               `description:"点赞总数" json:"-"`
	LikeEnabled           int8                `description:"是否已点赞： 0-未点赞 1-已点赞" json:"-"`
}

// ReportChapterMenu 报告章节里面的菜单
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"`
	HttpUrl                string `json:"http_url"`
}

// ReportChapterItem 报告章节详情
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"`
}

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]
}

// TickerDataItem 指标数据
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"`
}

// TickerTitleData 指标标题数据
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"`
}

// TickerData 指标数据返回
type TickerData struct {
	List        []TickerDataItem `json:"list"`
	TickerTitle TickerTitleData  `json:"ticker_title"`
}
