package models

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

// BannerViewHistory banner访问历史
type BannerViewHistory struct {
	ViewHistoryID   uint64    `orm:"column(view_history_id);pk"` // id
	UserID          uint64    // 用户id
	Mobile          string    // 手机号
	Email           string    // 邮箱
	RealName        string    // 用户实际名称
	CompanyName     string    // 公司名称
	CreatedTime     time.Time // 创建时间
	LastUpdatedTime time.Time
	FirstSource     int // 一级来源 1小程序移动 2小程序pc 3研报官网
	SecondSource    int // 二级来源 1首页 2研报详情页
	BannerUrl       string
}

func GetBannerHistoryList() (items []*BannerHistoryListRespItem, err error) {
	sql := ` SELECT *,COUNT(*) AS pv,MAX(last_updated_time) AS last_updated_time  FROM banner_view_history 
WHERE 1=1 GROUP BY   
banner_url,
  first_source,
  second_source `
	o := orm.NewOrm()
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

type SourcePv struct {
	FirstSource     int
	SecondSource    int
	Pv              int
	LastUpdatedTime string
}

type BannerHistoryListRespItem struct {
	ViewHistoryID   uint64 `orm:"column(view_history_id);pk"` // id
	UserID          uint64 // 用户id
	Mobile          string // 手机号
	Email           string // 邮箱
	RealName        string // 用户实际名称
	CompanyName     string // 公司名称
	CreatedTime     string // 创建时间
	LastUpdatedTime string
	FirstSource     int // 一级来源 1小程序移动 2小程序pc 3研报官网
	SecondSource    int // 二级来源 1首页 2研报详情页
	BannerUrl       string
	Pv              int
	SourceList      []*SourcePv
	StartDate       string
	EndDate         string
	Remark          string
}

type BannerHistoryListResp struct {
	List []*BannerHistoryListRespItem
}

func GetBannerUrlList() (items []*BannerHistoryListRespItem, err error) {
	sql := ` SELECT *,COUNT(*) AS pv FROM banner_view_history WHERE 1=1 GROUP BY banner_url `
	o := orm.NewOrm()
	_, err = o.Raw(sql).QueryRows(&items)
	return
}
