package cygx

import (
	"github.com/beego/beego/v2/client/orm"
	"github.com/rdlucklib/rdluck_tools/paging"
	"time"
)

type CygxYanxuanSpecial struct {
	Id          int       `orm:"column(id);pk"`
	UserId      int       // 用户ID
	CreateTime  time.Time // 创建时间
	ModifyTime  time.Time // 修改时间
	PublishTime time.Time // 提审过审或驳回时间
	Content     string    // 内容
	Tags        string    // 标签
	Status      int       // 1:未发布，2:审核中 3:已发布 4:驳回
	ImgUrl      string    // 图片链接
	DocUrl      string    // 文档链接
	Reason      string    // 理由
	Title       string    // 标题
	Type        string    // 类型1:笔记，2:观点
}

type CygxYanxuanSpeciaResplItem struct {
	Id                int    `orm:"column(id);pk"`
	UserId            int    // 用户ID
	CreateTime        string // 创建时间
	ModifyTime        string // 修改时间
	PublishTime       string // 提审过审或驳回时间
	Content           string // 内容
	Tags              string // 标签
	Status            int    // 1:未发布，2:审核中 3:已发布 4:驳回
	ImgUrl            string // 图片链接
	DocUrl            string // 文档链接
	SpecialName       string // 专栏名称
	Introduction      string // 介绍
	Label             string // 标签
	NickName          string // 昵称
	RealName          string // 姓名
	Mobile            string // 手机号
	HeadImg           string // 头像
	BgImg             string // 背景图
	Reason            string // 理由
	Title             string // 标题
	CompanyTags       string
	IndustryTags      string
	Type              int // 类型1:笔记，2:观点
	ContentHasImg     int //正文是否包含图片 1包含 0不包含
	Docs              []Doc
	Pv                string `description:"Pv"`
	Uv                string `description:"Uv"`
	ArticleCollectNum int    // 文章收藏数量
	AdminName         string // 审核人员姓名
	SpecialAuthorId   int    //cygx_yanxuan_special_author 表主键ID 作者专栏ID
}

type Doc struct {
	DocName   string
	DocSuffix string
	DocUrl    string
	DocIcon   string
}

type GetCygxYanxuanSpeciaResplItemResp struct {
	Paging *paging.PagingItem `description:"分页数据"`
	List   []*CygxYanxuanSpeciaResplItem
}

// 获取数量
func GetGetYanxuanSpecialCount(condition string, pars []interface{}) (count int, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_yanxuan_special as a 
				JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id  WHERE 1= 1  `
	if condition != "" {
		sqlCount += condition
	}
	err = o.Raw(sqlCount, pars).QueryRow(&count)
	return
}

func GetYanxuanSpecialList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxYanxuanSpeciaResplItem, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := ``
	sql = `SELECT a.*,b.bg_img,b.head_img,b.introduction,b.label,b.mobile,b.nick_name,b.real_name,b.special_name
FROM cygx_yanxuan_special AS a
JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id 
 WHERE 1=1 `
	if condition != "" {
		sql += condition
	}
	sql += ` LIMIT ?,? `
	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
	return
}

func GetYanxuanSpecialListByCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxYanxuanSpeciaResplItem, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := ``
	sql = `SELECT a.*
FROM cygx_yanxuan_special AS a
 WHERE 1=1 `
	if condition != "" {
		sql += condition
	}
	sql += ` LIMIT ?,? `
	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
	return
}

type EnableCygxYanxuanSpecialReq struct {
	Id     int    // 文章id
	Status int    // 1通过2驳回
	Reason string //理由
}

func EnableYanxuanSpecial(id, status int, reason, adminName string) (err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := ``
	sql = `UPDATE cygx_yanxuan_special SET status=?,reason=?,admin_name = ? , publish_time=NOW() WHERE id = ? `
	_, err = o.Raw(sql, status, reason, adminName, id).Exec()
	return
}

type CygxYanxuanSpecialItem struct {
	Id            int    `orm:"column(id);pk"`
	UserId        int    // 用户ID
	CreateTime    string // 创建时间
	ModifyTime    string // 修改时间
	PublishTime   string // 提审过审或驳回时间
	Content       string // 内容
	Tags          string // 标签
	Status        int    // 1:未发布，2:审核中 3:已发布 4:驳回
	ImgUrl        string // 图片链接
	DocUrl        string // 文档链接
	SpecialName   string // 专栏名称
	Introduction  string // 介绍
	Label         string // 标签
	NickName      string // 昵称
	RealName      string // 姓名
	Mobile        string // 手机号
	HeadImg       string // 头像
	BgImg         string // 背景图
	Reason        string // 理由
	Title         string // 标题
	Type          int    // 类型1:笔记，2:观点
	CollectNum    int
	MyCollectNum  int
	IsCollect     int
	CompanyTags   string
	IndustryTags  string
	ContentHasImg int //正文是否包含图片 1包含 0不包含
	Docs          []Doc
}

func GetYanxuanSpecialFollowUserById(specialId int) (items []int, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := ``
	sql = `SELECT b.user_id
FROM cygx_yanxuan_special AS a
JOIN cygx_yanxuan_special_follow AS b ON a.user_id = b.follow_user_id
 WHERE a.id=? `
	_, err = o.Raw(sql, specialId).QueryRows(&items)
	return
}

func GetYanxuanSpecialItemById(specialId int) (item *CygxYanxuanSpecialItem, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := ``
	sql = `SELECT a.*,b.bg_img,b.head_img,b.introduction,b.label,b.mobile,
b.nick_name,b.real_name,b.special_name
FROM cygx_yanxuan_special AS a
JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id 
 WHERE a.id=? `
	err = o.Raw(sql, specialId).QueryRow(&item)
	return
}

// 获取数量
func GetCygxYanxuanSpecialCount(condition string, pars []interface{}) (count int, err error) {
	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_yanxuan_special WHERE 1= 1  `
	if condition != "" {
		sqlCount += condition
	}
	o := orm.NewOrmUsingDB("hz_cygx")
	err = o.Raw(sqlCount, pars).QueryRow(&count)
	return
}

type CygxYanxuanSpecialShowButton struct {
	IsShowYanXuanSpecial bool // 研选专栏文章管理按钮是否展示
	IsShowSpecialAuthor  bool // 作者管理的按钮是否展示
}

func GetYanxuanSpecialBySpecialId(specialId int) (item *CygxYanxuanSpecialItem, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := ``
	sql = `SELECT a.* FROM cygx_yanxuan_special AS a WHERE a.id=? `
	err = o.Raw(sql, specialId).QueryRow(&item)
	return
}

func GetYanxuanSpecialListBycondition(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxYanxuanSpecial, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT a.* FROM cygx_yanxuan_special AS a WHERE 1=1 `
	if condition != "" {
		sql += condition
	}
	if startSize+pageSize > 0 {
		sql += ` LIMIT ?,? `
		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
	} else {
		_, err = o.Raw(sql, pars).QueryRows(&items)
	}
	return
}
