top_arc.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package dao
  2. import (
  3. "context"
  4. "database/sql"
  5. "fmt"
  6. "go-common/app/interface/main/space/model"
  7. "go-common/library/log"
  8. )
  9. const (
  10. _topArcFmt = "spc_ta_%d"
  11. _topArcSQL = `SELECT aid,recommend_reason FROM member_top%d WHERE mid = ? LIMIT 1`
  12. _topArcAddSQL = `INSERT INTO member_top%d(mid,aid,recommend_reason) VALUES (?,?,?) ON DUPLICATE KEY UPDATE aid = ?,recommend_reason = ?`
  13. _topArcDelSQL = `DELETE FROM member_top%d WHERE mid = ?`
  14. )
  15. func topArcHit(mid int64) int64 {
  16. return mid % 10
  17. }
  18. func topArcKey(mid int64) string {
  19. return fmt.Sprintf(_topArcFmt, mid)
  20. }
  21. // RawTopArc get top aid from db.
  22. func (d *Dao) RawTopArc(c context.Context, mid int64) (res *model.AidReason, err error) {
  23. var row = d.db.QueryRow(c, fmt.Sprintf(_topArcSQL, topArcHit(mid)), mid)
  24. res = new(model.AidReason)
  25. if err = row.Scan(&res.Aid, &res.Reason); err != nil {
  26. if err == sql.ErrNoRows {
  27. err = nil
  28. res = nil
  29. } else {
  30. log.Error("RawTopArc row.Scan() error(%v)", err)
  31. }
  32. }
  33. return
  34. }
  35. // AddTopArc add top archive.
  36. func (d *Dao) AddTopArc(c context.Context, mid, aid int64, reason string) (err error) {
  37. if _, err = d.db.Exec(c, fmt.Sprintf(_topArcAddSQL, topArcHit(mid)), mid, aid, reason, aid, reason); err != nil {
  38. log.Error("AddTopArc error d.db.Exec(%d,%d,%s) error(%v)", mid, aid, reason, err)
  39. }
  40. return
  41. }
  42. // DelTopArc delete top archive.
  43. func (d *Dao) DelTopArc(c context.Context, mid int64) (err error) {
  44. if _, err = d.db.Exec(c, fmt.Sprintf(_topArcDelSQL, topArcHit(mid)), mid); err != nil {
  45. log.Error("DelTopArc error d.db.Exec(%d) error(%v)", mid, err)
  46. }
  47. return
  48. }