english_report_email_pv.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package models
  2. import (
  3. "eta_gn/eta_api/global"
  4. "time"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. )
  7. // EnglishReportEmailPV 英文研报-邮箱pv
  8. type EnglishReportEmailPV struct {
  9. Id int `gorm:"column:id;primary_key:true;auto_increment:true" description:"日志ID"`
  10. ReportId int `gorm:"column:report_id" description:"英文报告ID"`
  11. EmailId int `gorm:"column:email_id" description:"邮箱ID"`
  12. ReportType int `gorm:"column:report_type" description:"类型:0英文研报,1英文线上路演"`
  13. CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
  14. }
  15. func (item *EnglishReportEmailPV) TableName() string {
  16. return "english_report_email_pv"
  17. }
  18. func (item *EnglishReportEmailPV) Create() (err error) {
  19. //o := orm.NewOrmUsingDB("rddp")
  20. //_, err = o.Insert(item)
  21. err = global.DmSQL["rddp"].Create(item).Error
  22. return
  23. }
  24. // EnglishReportEmailPvPageListResp 分页列表响应体
  25. type EnglishReportEmailPvPageListResp struct {
  26. List []*EnglishReportEmailPvResp
  27. Paging *paging.PagingItem `description:"分页数据"`
  28. }
  29. type EnglishReportEmailUvPageListResp struct {
  30. List []*EnglishReportEmailUvResp
  31. Paging *paging.PagingItem `description:"分页数据"`
  32. }
  33. // EnglishReportEmailPvResp 邮箱响应体
  34. type EnglishReportEmailPvResp struct {
  35. Name string `description:"客户名称"`
  36. Email string `description:"邮箱地址"`
  37. ClickNum int `description:"点击量"`
  38. RecentClickTime string `description:"最近一次点击时间"`
  39. }
  40. type EnglishReportEmailUvResp struct {
  41. Name string `description:"客户名称"`
  42. Email string `description:"邮箱地址"`
  43. RecentClickTime string `description:"最近一次点击时间"`
  44. }
  45. // GetEnglishReportEmailPageList 获取邮箱pv列表-分页
  46. func GetEnglishReportEmailPvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailPvResp, err error) {
  47. //o := orm.NewOrmUsingDB("rddp")
  48. sql := `SELECT
  49. b.name,
  50. b.email,
  51. COUNT(a.id) AS click_num,
  52. MAX(a.create_time) AS recent_click_time
  53. FROM
  54. english_report_email_pv AS a
  55. JOIN english_report_email AS b ON a.email_id = b.id
  56. WHERE 1 = 1 `
  57. if condition != `` {
  58. sql += condition
  59. }
  60. sql += ` GROUP BY a.email_id `
  61. totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
  62. //if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
  63. if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
  64. return
  65. }
  66. sql += ` ORDER BY recent_click_time DESC LIMIT ?,?`
  67. pars = append(pars, startSize)
  68. pars = append(pars, pageSize)
  69. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
  70. //_, err = o.Raw(sql, pars...).QueryRows(&list)
  71. return
  72. }
  73. // GetEnglishReportEmailUvPageList 获取邮箱uv列表-分页
  74. func GetEnglishReportEmailUvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailUvResp, err error) {
  75. //o := orm.NewOrmUsingDB("rddp")
  76. sql := `SELECT
  77. b.name,
  78. b.email,
  79. MAX(a.create_time) AS recent_click_time
  80. FROM
  81. english_report_email_pv AS a
  82. JOIN english_report_email AS b ON a.email_id = b.id
  83. WHERE 1 = 1 `
  84. if condition != `` {
  85. sql += condition
  86. }
  87. sql += ` GROUP BY a.email_id `
  88. totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
  89. //if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
  90. if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
  91. return
  92. }
  93. sql += ` ORDER BY recent_click_time DESC LIMIT ?,?`
  94. pars = append(pars, startSize)
  95. pars = append(pars, pageSize)
  96. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
  97. //_, err = o.Raw(sql, pars...).QueryRows(&list)
  98. return
  99. }
  100. // EnglishEmailViewPageListResp 邮箱/联系人阅读分页列表响应体
  101. type EnglishEmailViewPageListResp struct {
  102. List []*EnglishEmailViewResp
  103. Paging *paging.PagingItem `description:"分页数据"`
  104. }
  105. // EnglishEmailViewResp 邮箱/联系人阅读数据响应体
  106. type EnglishEmailViewResp struct {
  107. ReportId int `description:"英文研报ID"`
  108. ClickType int `description:"类型:0英文研报,1英文线上路演"`
  109. ReportTitle string `description:"报告标题"`
  110. ReportType string `description:"报告类型"`
  111. ViewTotal int `description:"点击量"`
  112. LastViewTime string `description:"最近一次点击时间"`
  113. }
  114. // todo GetEnglishEmailPageList 获取英文邮箱/联系人阅读列表-分页
  115. func GetEnglishEmailViewPageList(condition string, pars []interface{}, orderRule string, startSize, pageSize int) (total int, list []*EnglishEmailViewResp, err error) {
  116. //o := orm.NewOrmUsingDB("rddp")
  117. sql := `SELECT
  118. report_id,
  119. report_type as click_type,
  120. COUNT(1) AS view_total,
  121. MAX(create_time) AS last_view_time
  122. FROM
  123. english_report_email_pv
  124. WHERE
  125. 1 = 1 `
  126. if condition != `` {
  127. sql += condition
  128. }
  129. sql += ` GROUP BY report_id, report_type`
  130. totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
  131. //if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
  132. if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
  133. return
  134. }
  135. if orderRule != `` {
  136. sql += orderRule
  137. }
  138. sql += ` LIMIT ?,?`
  139. pars = append(pars, startSize)
  140. pars = append(pars, pageSize)
  141. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
  142. //_, err = o.Raw(sql, pars...).QueryRows(&list)
  143. return
  144. }