activity.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package dao
  2. import (
  3. "context"
  4. "fmt"
  5. "go-common/app/job/main/growup/model"
  6. "go-common/library/log"
  7. )
  8. const (
  9. _activitisSQL = "SELECT id,name,signed_start,signed_end,sign_up,sign_up_start,sign_up_end,object,upload_start,upload_end,win_type,require_items,require_value,statistics_start,statistics_end,bonus_type,bonus_time,progress_frequency,update_page,progress_start,progress_end,progress_sync,bonus_query,bonus_query_start,bonus_query_end FROM creative_activity"
  10. _upActivitySQL = "SELECT mid,activity_id,state,success_time FROM up_activity WHERE activity_id = ? AND state > 0 AND is_deleted = 0"
  11. _activityBonuseSQL = "SELECT bonus_money,ranking FROM activity_bonus WHERE activity_id = ?"
  12. _upAvInfoSQL = "SELECT id,av_id,mid,upload_time FROM up_av_info WHERE id > ? ORDER BY id LIMIT ?"
  13. _archiveInfoSQL = "SELECT id,av_id,state,likes,share,play,reply,danmu FROM activity_archive_info WHERE id > ? AND activity_id = ? ORDER BY id LIMIT ?"
  14. _inUpActivitySQL = "INSERT INTO up_activity(mid,nickname,activity_id,aids,aid_num,ranking,bonus,state,success_time) VALUES %s ON DUPLICATE KEY UPDATE aids=VALUES(aids),aid_num=VALUES(aid_num),ranking=VALUES(ranking),bonus=VALUES(bonus),state=VALUES(state)"
  15. _updateUpStateSQL = "UPDATE up_activity SET state = ?, bonus = 0, ranking = 0, aids = '' WHERE activity_id = ? AND state = ?"
  16. )
  17. // GetCActivities get activity by query
  18. func (d *Dao) GetCActivities(c context.Context) (acs []*model.CActivity, err error) {
  19. acs = make([]*model.CActivity, 0)
  20. rows, err := d.db.Query(c, _activitisSQL)
  21. if err != nil {
  22. log.Error("GetCActivities d.db.Query error(%v)", err)
  23. return
  24. }
  25. defer rows.Close()
  26. for rows.Next() {
  27. ac := &model.CActivity{}
  28. err = rows.Scan(&ac.ID, &ac.Name, &ac.SignedStart, &ac.SignedEnd, &ac.SignUp, &ac.SignUpStart, &ac.SignUpEnd, &ac.Object, &ac.UploadStart, &ac.UploadEnd, &ac.WinType, &ac.RequireItems, &ac.RequireValue, &ac.StatisticsStart, &ac.StatisticsEnd, &ac.BonusType, &ac.BonusTime, &ac.ProgressFrequency, &ac.UpdatePage, &ac.ProgressStart, &ac.ProgressEnd, &ac.ProgressSync, &ac.BonusQuery, &ac.BonusQuerStart, &ac.BonusQueryEnd)
  29. if err != nil {
  30. log.Error("GetCActivities row.Scan error(%v)", err)
  31. return
  32. }
  33. acs = append(acs, ac)
  34. }
  35. err = rows.Err()
  36. return
  37. }
  38. // ListUpActivity get up from up_activity
  39. func (d *Dao) ListUpActivity(c context.Context, id int64) (ups []*model.UpActivity, err error) {
  40. ups = make([]*model.UpActivity, 0)
  41. rows, err := d.db.Query(c, _upActivitySQL, id)
  42. if err != nil {
  43. log.Error("ListUpActivity d.db.Query error(%v)", err)
  44. return
  45. }
  46. defer rows.Close()
  47. for rows.Next() {
  48. up := &model.UpActivity{}
  49. err = rows.Scan(&up.MID, &up.ActivityID, &up.State, &up.SuccessTime)
  50. if err != nil {
  51. log.Error("ListUpActivity rows.Scan error(%v)", err)
  52. return
  53. }
  54. ups = append(ups, up)
  55. }
  56. err = rows.Err()
  57. return
  58. }
  59. // GetActivityBonus get activity_bonus by activity_id
  60. func (d *Dao) GetActivityBonus(c context.Context, id int64) (actBonus map[int64]int64, err error) {
  61. actBonus = make(map[int64]int64)
  62. rows, err := d.db.Query(c, _activityBonuseSQL, id)
  63. if err != nil {
  64. log.Error("GetActivityBonus d.db.Query error(%v)", err)
  65. return
  66. }
  67. defer rows.Close()
  68. for rows.Next() {
  69. var rank, money int64
  70. err = rows.Scan(&money, &rank)
  71. if err != nil {
  72. log.Error("GetActivityBonus rows.Scan error(%v)", err)
  73. return
  74. }
  75. actBonus[rank] = money
  76. }
  77. err = rows.Err()
  78. return
  79. }
  80. // GetAvUploadByMID get up_av_info by mid
  81. func (d *Dao) GetAvUploadByMID(c context.Context, id int64, limit int) (avs []*model.AvUpload, err error) {
  82. avs = make([]*model.AvUpload, 0)
  83. rows, err := d.db.Query(c, _upAvInfoSQL, id, limit)
  84. if err != nil {
  85. log.Error("GetAvUploadByMID d.dbQuery error(%v)", err)
  86. return
  87. }
  88. defer rows.Close()
  89. for rows.Next() {
  90. av := &model.AvUpload{}
  91. err = rows.Scan(&av.ID, &av.AvID, &av.MID, &av.UploadTime)
  92. if err != nil {
  93. log.Error("GetAvUploadByMID rows.Scan error(%v)", err)
  94. return
  95. }
  96. avs = append(avs, av)
  97. }
  98. return
  99. }
  100. // GetArchiveInfo get activity archive info
  101. func (d *Dao) GetArchiveInfo(c context.Context, activityID, id int64, limit int) (avs []*model.ArchiveStat, err error) {
  102. avs = make([]*model.ArchiveStat, 0)
  103. rows, err := d.db.Query(c, _archiveInfoSQL, id, activityID, limit)
  104. if err != nil {
  105. log.Error("GetArchiveInfo d.dbQuery error(%v)", err)
  106. return
  107. }
  108. defer rows.Close()
  109. for rows.Next() {
  110. av := &model.ArchiveStat{}
  111. err = rows.Scan(&av.ID, &av.AvID, &av.State, &av.Like, &av.Share, &av.Play, &av.Reply, &av.Dm)
  112. if err != nil {
  113. log.Error("GetArchiveInfo rows.Scan error(%v)", err)
  114. return
  115. }
  116. avs = append(avs, av)
  117. }
  118. return
  119. }
  120. // UpdateUpActivityState update up_activity state
  121. func (d *Dao) UpdateUpActivityState(c context.Context, id int64, oldState, newState int) (count int64, err error) {
  122. res, err := d.db.Exec(c, _updateUpStateSQL, newState, id, oldState)
  123. if err != nil {
  124. log.Error("UpdateUpActivityState tx.Exec error(%v)", err)
  125. return
  126. }
  127. return res.RowsAffected()
  128. }
  129. // InsertUpActivityBatch insert up_activity
  130. func (d *Dao) InsertUpActivityBatch(c context.Context, vals string) (count int64, err error) {
  131. if vals == "" {
  132. return
  133. }
  134. res, err := d.db.Exec(c, fmt.Sprintf(_inUpActivitySQL, vals))
  135. if err != nil {
  136. log.Error("InsertUpActivityBatch d.db.Exec error(%v)", err)
  137. return
  138. }
  139. return res.RowsAffected()
  140. }