user_read_record.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package models
  2. import (
  3. "eta/eta_mini_crm/utils"
  4. "fmt"
  5. "time"
  6. "github.com/beego/beego/v2/client/orm"
  7. )
  8. type UserReadRecord struct {
  9. UserReadRecordId int `orm:"pk" description:"id"`
  10. UserId int `description:"用户id"`
  11. ReportId int `description:"报告id"`
  12. ReportTitle string `description:"报告标题"`
  13. // ChartPermissionId1 string `description:"一级品种id"`
  14. // ChartPermissionId2 string `description:"二级品种id"`
  15. ChartPermissionName string `description:"二级品种名称"`
  16. ClassifyId1 int `description:"一级级分类id"`
  17. ClassifyName1 string `description:"一级分类名称"`
  18. ClassifyId2 int `description:"二级分类id"`
  19. ClassifyName2 string `description:"二级分类名称"`
  20. ClassifyId3 int `description:"三级分类id"`
  21. ClassifyName3 string `description:"三级分类名称"`
  22. Timestamp int `description:"阅读开始时间戳"`
  23. EndTimestamp int `description:"阅读结束时间戳"`
  24. CreateTime time.Time `description:"创建时间"`
  25. CreateDate string `description:"创建日期"`
  26. StayTime string `description:"停留时间"`
  27. StayTimestamp string `description:"停留时间戳"`
  28. ReportType int `description:"报告类型:1-普通研报;2-pdf研报"`
  29. }
  30. type ReadCntStaitc struct {
  31. CreateDate string
  32. Count int
  33. }
  34. type PermissionCntStaitc struct {
  35. ChartPermissionId int
  36. PermissionName string
  37. Count int
  38. Percent float64
  39. }
  40. func GetUserReadRecordByUserId(firstClassifyIds, secondClassifyIds, thirdClassifyIds []int, userId int, condition string, pars []interface{}, startSize, pageSize int) (items []*UserReadRecord, err error) {
  41. o := orm.NewOrm()
  42. sql := `SELECT DISTINCT ur.user_read_record_id, ur.report_id, ur.report_title, ur.chart_permission_name, ur.classify_name2,
  43. ur.create_time, ur.stay_time, ur.classify_id2, ur.classify_id3, ur.classify_name3, ur.classify_id1, ur.classify_name1
  44. FROM user_read_record AS ur
  45. LEFT JOIN user_read_permission2 AS urp2
  46. ON ur.user_read_record_id = urp2.user_read_record_id
  47. WHERE user_id = ? `
  48. if condition != "" {
  49. sql += condition
  50. }
  51. if len(firstClassifyIds) != 0 || len(secondClassifyIds) != 0 || len(thirdClassifyIds) != 0 {
  52. sql += ` AND (1=2 `
  53. if len(firstClassifyIds) > 0 {
  54. sql += fmt.Sprintf(" OR ur.classify_id1 IN (%s) ", utils.GetOrmReplaceHolder(len(firstClassifyIds)))
  55. }
  56. if len(secondClassifyIds) > 0 {
  57. sql += fmt.Sprintf(" OR ur.classify_id2 IN (%s) ", utils.GetOrmReplaceHolder(len(secondClassifyIds)))
  58. }
  59. if len(thirdClassifyIds) > 0 {
  60. sql += fmt.Sprintf(" OR ur.classify_id3 IN (%s) ", utils.GetOrmReplaceHolder(len(thirdClassifyIds)))
  61. }
  62. sql += ` ) `
  63. }
  64. sql += ` ORDER BY create_time DESC LIMIT ?, ?`
  65. _, err = o.Raw(sql, userId, pars, firstClassifyIds, secondClassifyIds, thirdClassifyIds, startSize, pageSize).QueryRows(&items)
  66. return
  67. }
  68. func GetUserReadRecordCountByUserId(firstClassifyIds, secondClassifyIds, thirdClassifyIds []int, userId int, condition string, pars []interface{}) (count int, err error) {
  69. o := orm.NewOrm()
  70. sql := `SELECT COUNT(DISTINCT ur.user_read_record_id) AS count
  71. FROM user_read_record AS ur
  72. LEFT JOIN user_read_permission2 AS urp2
  73. ON ur.user_read_record_id = urp2.user_read_record_id
  74. WHERE user_id = ? `
  75. if condition != "" {
  76. sql += condition
  77. }
  78. if len(firstClassifyIds) != 0 || len(secondClassifyIds) != 0 || len(thirdClassifyIds) != 0 {
  79. sql += ` AND (1=2 `
  80. if len(firstClassifyIds) > 0 {
  81. sql += fmt.Sprintf(" OR ur.classify_id1 IN (%s) ", utils.GetOrmReplaceHolder(len(firstClassifyIds)))
  82. }
  83. if len(secondClassifyIds) > 0 {
  84. sql += fmt.Sprintf(" OR ur.classify_id2 IN (%s) ", utils.GetOrmReplaceHolder(len(secondClassifyIds)))
  85. }
  86. if len(thirdClassifyIds) > 0 {
  87. sql += fmt.Sprintf(" OR ur.classify_id3 IN (%s) ", utils.GetOrmReplaceHolder(len(thirdClassifyIds)))
  88. }
  89. sql += ` ) `
  90. }
  91. err = o.Raw(sql, userId, pars, firstClassifyIds, secondClassifyIds, thirdClassifyIds).QueryRow(&count)
  92. return
  93. }
  94. func GetStaticReadCnt(condition string, pars []interface{}, startDate, endDate string) (items []*ReadCntStaitc, err error) {
  95. o := orm.NewOrm()
  96. sql := `SELECT create_date, COUNT(*) AS count
  97. FROM user_read_record AS ur
  98. LEFT JOIN user_read_permission2 AS urp
  99. ON ur.user_read_record_id = urp.user_read_record_id
  100. WHERE 1=1 `
  101. if condition != "" {
  102. sql += condition
  103. }
  104. sql += ` AND (ur.create_date BETWEEN ? AND ?) GROUP BY ur.create_date`
  105. _, err = o.Raw(sql, pars, startDate, endDate).QueryRows(&items)
  106. return
  107. }
  108. func GetStaticPermissionCnt(condition string, pars []interface{}) (items []*PermissionCntStaitc, err error) {
  109. o := orm.NewOrm()
  110. sql := `SELECT urp.chart_permission_id, urp.permission_name,COUNT(*) AS count
  111. FROM user_read_permission1 AS urp
  112. LEFT JOIN user_read_record AS ur
  113. ON urp.user_read_record_id = ur.user_read_record_id
  114. WHERE 1=1 `
  115. if condition != "" {
  116. sql += condition
  117. }
  118. sql += ` GROUP BY urp.chart_permission_id`
  119. _, err = o.Raw(sql, pars).QueryRows(&items)
  120. return
  121. }