user_view_statistics.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package models
  2. import (
  3. "github.com/rdlucklib/rdluck_tools/orm"
  4. "time"
  5. )
  6. // UserViewStatistics 用户报告报告阅读数量统计表
  7. type UserViewStatistics struct {
  8. Id int `orm:"column(id)" description:"自增Id"`
  9. Mobile string `description:"手机号"`
  10. Email string `description:"手机号"`
  11. RealName string `description:"联系人名称"`
  12. CompanyName string `description:"客户名称"`
  13. ViewNum int `description:"阅读总数"`
  14. LastViewTime time.Time `description:"最近一次阅读时间"`
  15. Date time.Time `description:"阅读日期"`
  16. CreateTime time.Time `description:"添加时间"`
  17. }
  18. // AddMultiUserViewStatistics 添加用户报告报告阅读数量统计记录
  19. func AddMultiUserViewStatistics(list []*UserViewStatistics) (err error) {
  20. if len(list) <= 0 {
  21. return
  22. }
  23. o := orm.NewOrm()
  24. _, err = o.InsertMulti(len(list), list)
  25. return
  26. }
  27. // UpdateLastViewTimeByMobile 根据手机号修改最近阅读时间
  28. func UpdateLastViewTimeByMobile(mobile, date string, lastViewTime time.Time) (err error) {
  29. o := orm.NewOrm()
  30. sql := `update user_view_statistics set last_view_time =? WHERE mobile=? and date = ?`
  31. _, err = o.Raw(sql, lastViewTime, mobile, date).Exec()
  32. return
  33. }
  34. // UpdateLastViewTimeByEmail 根据邮箱修改最近阅读时间
  35. func UpdateLastViewTimeByEmail(mobile, date string, lastViewTime time.Time) (err error) {
  36. o := orm.NewOrm()
  37. sql := `update user_view_statistics set last_view_time =? WHERE mobile=? and date = ?`
  38. _, err = o.Raw(sql, lastViewTime, mobile, date).Exec()
  39. return
  40. }
  41. // GetUserViewStatisticsCount 获取某天的用户报告报告阅读数量统计记录数量
  42. func GetUserViewStatisticsCount(dayStr string) (count int, err error) {
  43. o := orm.NewOrm()
  44. sql := `SELECT count(1) count FROM user_view_statistics WHERE date = ?`
  45. err = o.Raw(sql, dayStr).QueryRow(&count)
  46. return
  47. }
  48. // GetUserViewStatisticsGroup 获取某天的用户报告报告阅读数量统计记录数量
  49. func GetUserViewStatisticsGroup() (list []*UserViewStatistics, err error) {
  50. o := orm.NewOrm()
  51. sql := `SELECT * FROM user_view_statistics where last_view_time is null group by date order by date asc`
  52. _, err = o.Raw(sql).QueryRows(&list)
  53. return
  54. }
  55. // DeleteUserViewStatisticsCount 获取某天的用户报告报告阅读数量统计记录数量
  56. func DeleteUserViewStatisticsCount(dayStr string) (err error) {
  57. o := orm.NewOrm()
  58. //产品权限
  59. sql := `delete from user_view_statistics WHERE date = ?`
  60. _, err = o.Raw(sql, dayStr).Exec()
  61. return
  62. }
  63. // UserViewMobileTotalSlice 根据用户手机号字符串获取用户的浏览数
  64. type UserViewMobileTotalSlice struct {
  65. Mobile string `description:"用户手机号"`
  66. CompanyName string `description:"客户名称"`
  67. RealName string `description:"用户名称"`
  68. Total int `description:"总阅读数"`
  69. ViewTime time.Time `description:"阅读时间"`
  70. }
  71. // UserViewEmailTotalSlice 根据用户邮箱字符串获取用户的浏览数
  72. type UserViewEmailTotalSlice struct {
  73. Email string `description:"用户邮箱"`
  74. CompanyName string `description:"客户名称"`
  75. RealName string `description:"用户名称"`
  76. Total int `description:"总阅读数"`
  77. ViewTime time.Time `description:"阅读时间"`
  78. }
  79. func GetCountUserViewHistoryByMobiles(date string) (items []*UserViewMobileTotalSlice, err error) {
  80. o := orm.NewOrm()
  81. sql := `SELECT count(1) total,mobile,company_name,real_name,max(created_time) view_time FROM user_view_history WHERE created_time >= ? and created_time <= ? and mobile != "" group by mobile`
  82. _, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
  83. return
  84. }
  85. func GetCountUserViewHistoryByEmails(date string) (items []*UserViewEmailTotalSlice, err error) {
  86. o := orm.NewOrm()
  87. sql := `SELECT count(1) total,email,company_name,real_name,max(created_time) view_time FROM user_view_history WHERE created_time >= ? and created_time <= ? and email != "" group by email`
  88. _, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
  89. return
  90. //return items2,err
  91. }
  92. func GetReportViewMaxTimeByMobiles(date string) (items []*UserViewMobileTotalSlice, err error) {
  93. o := orm.NewOrm()
  94. o.Using("rddp")
  95. rddpSql := `SELECT mobile,company_name,real_name,COUNT(1) AS total,max(create_time) view_time FROM report_view_record WHERE create_time >= ? and create_time <= ? and mobile != "" group by mobile`
  96. _, err = o.Raw(rddpSql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
  97. return
  98. }
  99. func GetReportViewMaxTimeByEmails(date string) (items []*UserViewEmailTotalSlice, err error) {
  100. o := orm.NewOrm()
  101. o.Using("rddp")
  102. rddpSql := `SELECT email,company_name,real_name,COUNT(1) AS total,max(create_time) view_time FROM report_view_record WHERE create_time >= ? and create_time <= ? and email != "" group by email`
  103. _, err = o.Raw(rddpSql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
  104. return
  105. }
  106. // GetAdvisoryCountUserViewHistoryByMobiles 每日资讯
  107. func GetAdvisoryCountUserViewHistoryByMobiles(date string) (items []*UserViewMobileTotalSlice, err error) {
  108. o := orm.NewOrm()
  109. sql := `SELECT count(1) total,mobile,company_name,real_name,max(create_time) view_time FROM advisory_user_chart_article_record WHERE create_time >= ? and create_time <= ? and mobile != "" group by mobile`
  110. _, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
  111. return
  112. }
  113. // GetAdvisoryCountUserViewHistoryByEmails 每日资讯
  114. func GetAdvisoryCountUserViewHistoryByEmails(date string) (items []*UserViewEmailTotalSlice, err error) {
  115. o := orm.NewOrm()
  116. sql := `SELECT count(1) total,email,company_name,real_name as created_time,max(create_time) view_time FROM advisory_user_chart_article_record WHERE create_time >= ? and create_time <= ? and email != "" group by email`
  117. _, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
  118. return
  119. //return items2,err
  120. }
  121. func GetMaxUserViewHistoryByMobiles() (items []*UserViewMobileTotalSlice, err error) {
  122. o := orm.NewOrm()
  123. sql := `SELECT count(1) total,mobile,company_name,real_name,max(created_time) view_time FROM user_view_history WHERE created_time <= "2022-02-15 00:00:00" and mobile != "" group by mobile`
  124. _, err = o.Raw(sql).QueryRows(&items)
  125. return
  126. }
  127. func GetMaxReportViewMaxTimeByMobiles() (items []*UserViewMobileTotalSlice, err error) {
  128. o := orm.NewOrm()
  129. o.Using("rddp")
  130. rddpSql := `SELECT mobile,company_name,real_name,COUNT(1) AS total,max(create_time) view_time FROM report_view_record WHERE create_time <= "2022-02-15 00:00:00" and mobile != "" group by mobile`
  131. _, err = o.Raw(rddpSql).QueryRows(&items)
  132. return
  133. }
  134. // GetAdvisoryCountUserViewHistoryByMobiles 每日资讯
  135. func GetMaxAdvisoryCountUserViewHistoryByMobiles() (items []*UserViewMobileTotalSlice, err error) {
  136. o := orm.NewOrm()
  137. sql := `SELECT count(1) total,mobile,company_name,real_name,max(create_time) view_time FROM advisory_user_chart_article_record WHERE create_time <= "2022-02-15 00:00:00" and mobile != "" group by mobile`
  138. _, err = o.Raw(sql).QueryRows(&items)
  139. return
  140. }