user_read_record.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package models
  2. import (
  3. "eta/eta_mini_crm/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "strings"
  7. "time"
  8. )
  9. // UserReadRecord 用户阅读统计表
  10. type UserReadRecord struct {
  11. Id int `orm:"column(id);pk"`
  12. UserId int `description:"用户ID"`
  13. ReportId int `description:"报告ID"`
  14. ReportTitle string `description:"报告标题"`
  15. ClassifyIdFirst int `description:"一级分类ID"`
  16. ClassifyNameFirst string `description:"一级分类名称"`
  17. ClassifyIdSecond int `description:"二级分类ID"`
  18. ClassifyNameSecond string `description:"二级分类名称"`
  19. ClassifyIdThird int `description:"三级分类ID"`
  20. ClassifyNameThird string `description:"三级分类名称"`
  21. StartTimestamp int `description:"阅读开始时间戳"`
  22. EndTimestamp int `description:"阅读结束时间戳"`
  23. ReportSource int `description:"报告来源:1-研报中心;2-文档管理库"`
  24. CreateTime time.Time `description:"创建时间"`
  25. }
  26. func (m *UserReadRecord) TableName() string {
  27. return "user_read_record"
  28. }
  29. type UserReadRecordCols struct {
  30. PrimaryId string
  31. UserId string
  32. ReportId string
  33. ReportTitle string
  34. ClassifyIdFirst string
  35. ClassifyNameFirst string
  36. ClassifyIdSecond string
  37. ClassifyNameSecond string
  38. ClassifyIdThird string
  39. ClassifyNameThird string
  40. StartTimestamp string
  41. EndTimestamp string
  42. ReportSource string
  43. CreateTime string
  44. }
  45. func (m *UserReadRecord) Cols() UserReadRecordCols {
  46. return UserReadRecordCols{
  47. PrimaryId: "id",
  48. UserId: "user_id",
  49. ReportId: "report_id",
  50. ReportTitle: "report_title",
  51. ClassifyIdFirst: "classify_id_first",
  52. ClassifyNameFirst: "classify_name_first",
  53. ClassifyIdSecond: "classify_id_second",
  54. ClassifyNameSecond: "classify_name_second",
  55. ClassifyIdThird: "classify_id_third",
  56. ClassifyNameThird: "classify_name_third",
  57. StartTimestamp: "start_timestamp",
  58. EndTimestamp: "end_timestamp",
  59. ReportSource: "report_source",
  60. CreateTime: "create_time",
  61. }
  62. }
  63. func (m *UserReadRecord) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  64. o := orm.NewOrm()
  65. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  66. err = o.Raw(sql, pars).QueryRow(&count)
  67. return
  68. }
  69. func (m *UserReadRecord) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*UserReadRecord, err error) {
  70. o := orm.NewOrm()
  71. fields := strings.Join(fieldArr, ",")
  72. if len(fieldArr) == 0 {
  73. fields = `*`
  74. }
  75. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  76. if orderRule != "" {
  77. order = ` ORDER BY ` + orderRule
  78. }
  79. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  80. _, err = o.Raw(sql, pars).QueryRows(&items)
  81. return
  82. }
  83. func (m *UserReadRecord) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*UserReadRecord, err error) {
  84. o := orm.NewOrm()
  85. fields := strings.Join(fieldArr, ",")
  86. if len(fieldArr) == 0 {
  87. fields = `*`
  88. }
  89. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  90. if orderRule != "" {
  91. order = ` ORDER BY ` + orderRule
  92. }
  93. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  94. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  95. return
  96. }
  97. type UserReadRecordItem struct {
  98. UserId int `description:"用户ID"`
  99. ReportId int `description:"报告ID"`
  100. ReportTitle string `description:"报告标题"`
  101. ClassifyNameFirst string `description:"一级分类名称"`
  102. ClassifyNameSecond string `description:"二级分类名称"`
  103. ClassifyNameThird string `description:"三级分类名称"`
  104. ReadDuration string `description:"阅读时长"`
  105. ReportSource int `description:"报告来源:1-研报中心;2-文档管理库"`
  106. CreateTime string `description:"创建时间"`
  107. }
  108. func (m *UserReadRecord) Format2Item() (item *UserReadRecordItem) {
  109. item = new(UserReadRecordItem)
  110. item.UserId = m.UserId
  111. item.ReportId = m.ReportId
  112. item.ReportTitle = m.ReportTitle
  113. item.ClassifyNameFirst = m.ClassifyNameFirst
  114. item.ClassifyNameSecond = m.ClassifyNameSecond
  115. item.ClassifyNameThird = m.ClassifyNameThird
  116. if m.StartTimestamp > 0 && m.EndTimestamp > 0 {
  117. item.ReadDuration = utils.SecondsToHMS(int64(m.EndTimestamp - m.StartTimestamp))
  118. }
  119. item.ReportSource = m.ReportSource
  120. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, m.CreateTime)
  121. return
  122. }