123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package models
- import (
- "time"
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- )
- // EnglishReportEmailPV 英文研报-邮箱pv
- type EnglishReportEmailPV struct {
- Id int `orm:"column(id);pk;auto"`
- ReportId int `description:"英文报告ID"`
- EmailId int `description:"邮箱ID"`
- ReportType int `description:"类型:0英文研报,1英文线上路演"`
- CreateTime time.Time `description:"创建时间"`
- }
- func (item *EnglishReportEmailPV) TableName() string {
- return "english_report_email_pv"
- }
- func (item *EnglishReportEmailPV) Create() (err error) {
- o := orm.NewOrmUsingDB("rddp")
- _, err = o.Insert(item)
- return
- }
- // EnglishReportEmailPvPageListResp 分页列表响应体
- type EnglishReportEmailPvPageListResp struct {
- List []*EnglishReportEmailPvResp
- Paging *paging.PagingItem `description:"分页数据"`
- }
- type EnglishReportEmailUvPageListResp struct {
- List []*EnglishReportEmailUvResp
- Paging *paging.PagingItem `description:"分页数据"`
- }
- // EnglishReportEmailPvResp 邮箱响应体
- type EnglishReportEmailPvResp struct {
- Name string `description:"客户名称"`
- Email string `description:"邮箱地址"`
- ClickNum int `description:"点击量"`
- RecentClickTime string `description:"最近一次点击时间"`
- }
- type EnglishReportEmailUvResp struct {
- Name string `description:"客户名称"`
- Email string `description:"邮箱地址"`
- RecentClickTime string `description:"最近一次点击时间"`
- }
- // GetEnglishReportEmailPageList 获取邮箱pv列表-分页
- func GetEnglishReportEmailPvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailPvResp, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT
- b.name,
- b.email,
- COUNT(a.id) AS click_num,
- MAX(a.create_time) AS recent_click_time
- FROM
- english_report_email_pv AS a
- JOIN english_report_email AS b ON a.email_id = b.id
- WHERE 1 = 1 `
- if condition != `` {
- sql += condition
- }
- sql += ` GROUP BY a.email_id `
- totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
- if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
- return
- }
- sql += ` ORDER BY recent_click_time DESC LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // GetEnglishReportEmailUvPageList 获取邮箱uv列表-分页
- func GetEnglishReportEmailUvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailUvResp, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT
- b.name,
- b.email,
- MAX(a.create_time) AS recent_click_time
- FROM
- english_report_email_pv AS a
- JOIN english_report_email AS b ON a.email_id = b.id
- WHERE 1 = 1 `
- if condition != `` {
- sql += condition
- }
- sql += ` GROUP BY a.email_id `
- totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
- if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
- return
- }
- sql += ` ORDER BY recent_click_time DESC LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // EnglishEmailViewPageListResp 邮箱/联系人阅读分页列表响应体
- type EnglishEmailViewPageListResp struct {
- List []*EnglishEmailViewResp
- Paging *paging.PagingItem `description:"分页数据"`
- }
- // EnglishEmailViewResp 邮箱/联系人阅读数据响应体
- type EnglishEmailViewResp struct {
- ReportId int `description:"英文研报ID"`
- ClickType int `description:"类型:0英文研报,1英文线上路演"`
- ReportTitle string `description:"报告标题"`
- ReportType string `description:"报告类型"`
- ViewTotal int `description:"点击量"`
- LastViewTime string `description:"最近一次点击时间"`
- }
- // todo GetEnglishEmailPageList 获取英文邮箱/联系人阅读列表-分页
- func GetEnglishEmailViewPageList(condition string, pars []interface{}, orderRule string, startSize, pageSize int) (total int, list []*EnglishEmailViewResp, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT
- report_id,
- report_type as click_type,
- COUNT(1) AS view_total,
- MAX(create_time) AS last_view_time
- FROM
- english_report_email_pv
- WHERE
- 1 = 1 `
- if condition != `` {
- sql += condition
- }
- sql += ` GROUP BY report_id, report_type`
- totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
- if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
- return
- }
- if orderRule != `` {
- sql += orderRule
- }
- sql += ` LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
|