charge.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package income
  2. import (
  3. "context"
  4. "fmt"
  5. model "go-common/app/admin/main/growup/model/income"
  6. "go-common/library/database/sql"
  7. "go-common/library/log"
  8. xtime "go-common/library/time"
  9. )
  10. const (
  11. // select
  12. _avDailyChargeSQL = "SELECT av_id,mid,tag_id,upload_time,inc_charge,date FROM av_daily_charge_%02d WHERE av_id = ? LIMIT 31"
  13. _cmDailyChargeSQL = "SELECT aid,mid,tag_id,upload_time,inc_charge,date FROM column_daily_charge WHERE aid = ?"
  14. _bgmDailyChargeSQL = "SELECT sid,aid,mid,join_at,inc_charge,date FROM bgm_daily_charge WHERE sid = ?"
  15. _upChargeRatioSQL = "SELECT mid, ratio FROM up_charge_ratio LIMIT ?, ?"
  16. _archiveChargeStatisTableSQL = "SELECT avs,money_section,money_tips,charge,category_id,cdate FROM %s WHERE %s LIMIT ?,?"
  17. _archiveTotalChargeSQL = "SELECT total_charge FROM %s WHERE %s LIMIT 1"
  18. )
  19. // GetAvDailyCharge get av_daily_charge by month
  20. func (d *Dao) GetAvDailyCharge(c context.Context, month int, avID int64) (avs []*model.ArchiveCharge, err error) {
  21. if month < 1 || month > 12 {
  22. return nil, fmt.Errorf("error args month(%d)", month)
  23. }
  24. rows, err := d.db.Query(c, fmt.Sprintf(_avDailyChargeSQL, month), avID)
  25. if err != nil {
  26. log.Error("GetAvDailyCharge d.db.Query error(%v)", err)
  27. return
  28. }
  29. defer rows.Close()
  30. for rows.Next() {
  31. list := &model.ArchiveCharge{}
  32. err = rows.Scan(&list.AID, &list.MID, &list.CategoryID, &list.UploadTime, &list.Charge, &list.Date)
  33. if err != nil {
  34. log.Error("GetAvDailyCharge rows scan error(%v)", err)
  35. return
  36. }
  37. avs = append(avs, list)
  38. }
  39. err = rows.Err()
  40. return
  41. }
  42. // GetColumnCharges get column daily charge
  43. func (d *Dao) GetColumnCharges(c context.Context, aid int64) (cms []*model.ArchiveCharge, err error) {
  44. cms = make([]*model.ArchiveCharge, 0)
  45. rows, err := d.db.Query(c, _cmDailyChargeSQL, aid)
  46. if err != nil {
  47. log.Error("GetColumnCharge d.db.Query error(%v)", err)
  48. return
  49. }
  50. defer rows.Close()
  51. for rows.Next() {
  52. var uploadTime int64
  53. cm := &model.ArchiveCharge{}
  54. err = rows.Scan(&cm.AID, &cm.MID, &cm.CategoryID, &uploadTime, &cm.Charge, &cm.Date)
  55. if err != nil {
  56. log.Error("GetColumnCharge rows scan error(%v)", err)
  57. return
  58. }
  59. cm.UploadTime = xtime.Time(uploadTime)
  60. cms = append(cms, cm)
  61. }
  62. err = rows.Err()
  63. return
  64. }
  65. // GetBgmCharges get bgm daily charge
  66. func (d *Dao) GetBgmCharges(c context.Context, aid int64) (bgms []*model.ArchiveCharge, err error) {
  67. bgms = make([]*model.ArchiveCharge, 0)
  68. rows, err := d.db.Query(c, _bgmDailyChargeSQL, aid)
  69. if err != nil {
  70. log.Error("GetBgmCharge d.db.Query error(%v)", err)
  71. return
  72. }
  73. defer rows.Close()
  74. for rows.Next() {
  75. bgm := &model.ArchiveCharge{}
  76. err = rows.Scan(&bgm.AID, &bgm.AvID, &bgm.MID, &bgm.UploadTime, &bgm.Charge, &bgm.Date)
  77. if err != nil {
  78. log.Error("GetBgmCharge rows scan error(%v)", err)
  79. return
  80. }
  81. bgms = append(bgms, bgm)
  82. }
  83. err = rows.Err()
  84. return
  85. }
  86. // GetArchiveChargeStatis get archive charge statis from table and query
  87. func (d *Dao) GetArchiveChargeStatis(c context.Context, table, query string, from, limit int) (archs []*model.ArchiveChargeStatis, err error) {
  88. archs = make([]*model.ArchiveChargeStatis, 0)
  89. if table == "" || query == "" {
  90. return nil, fmt.Errorf("error args table(%s), query(%s)", table, query)
  91. }
  92. rows, err := d.db.Query(c, fmt.Sprintf(_archiveChargeStatisTableSQL, table, query), from, limit)
  93. if err != nil {
  94. log.Error("GetArchiveChargeStatis d.db.Query error(%v)", err)
  95. return
  96. }
  97. defer rows.Close()
  98. for rows.Next() {
  99. list := &model.ArchiveChargeStatis{}
  100. err = rows.Scan(&list.Avs, &list.MoneySection, &list.MoneyTips, &list.Charge, &list.CategroyID, &list.CDate)
  101. if err != nil {
  102. log.Error("GetArchiveChargeStatis rows scan error(%v)", err)
  103. return
  104. }
  105. archs = append(archs, list)
  106. }
  107. err = rows.Err()
  108. return
  109. }
  110. // GetTotalCharge get total charge by table and aid
  111. func (d *Dao) GetTotalCharge(c context.Context, table, query string) (total int64, err error) {
  112. err = d.db.QueryRow(c, fmt.Sprintf(_archiveTotalChargeSQL, table, query)).Scan(&total)
  113. if err == sql.ErrNoRows {
  114. err = nil
  115. }
  116. return
  117. }
  118. // UpRatio get up charge ratio
  119. func (d *Dao) UpRatio(c context.Context, from, limit int64) (ratio map[int64]int64, err error) {
  120. ratio = make(map[int64]int64)
  121. rows, err := d.db.Query(c, _upChargeRatioSQL, from, limit)
  122. if err != nil {
  123. log.Error("d.db.Query error(%v)", err)
  124. return
  125. }
  126. defer rows.Close()
  127. for rows.Next() {
  128. var mid, charge int64
  129. err = rows.Scan(&mid, &charge)
  130. if err != nil {
  131. log.Error("rows scan error(%v)", err)
  132. return
  133. }
  134. ratio[mid] = charge
  135. }
  136. err = rows.Err()
  137. return
  138. }