push.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package dao
  2. import (
  3. "context"
  4. xsql "database/sql"
  5. "fmt"
  6. "go-common/app/admin/main/vip/model"
  7. "go-common/library/database/sql"
  8. "github.com/pkg/errors"
  9. )
  10. // GetPushData get push data by id
  11. func (d *Dao) GetPushData(c context.Context, id int64) (r *model.VipPushData, err error) {
  12. row := d.db.QueryRow(c, _selPushDataByIDSQL, id)
  13. r = new(model.VipPushData)
  14. if err = row.Scan(&r.ID, &r.DisableType, &r.GroupName, &r.Title, &r.Content, &r.PushTotalCount, &r.PushedCount, &r.ProgressStatus, &r.Status, &r.Platform, &r.LinkType, &r.LinkURL, &r.ErrorCode, &r.ExpiredDayStart, &r.ExpiredDayEnd, &r.EffectStartDate, &r.EffectEndDate, &r.PushStartTime, &r.PushEndTime, &r.Operator); err != nil {
  15. if err == sql.ErrNoRows {
  16. r = nil
  17. err = nil
  18. return
  19. }
  20. err = errors.WithStack(err)
  21. d.errProm.Incr("scan_error")
  22. }
  23. return
  24. }
  25. // AddPushData add push data
  26. func (d *Dao) AddPushData(c context.Context, r *model.VipPushData) (id int64, err error) {
  27. var result xsql.Result
  28. if result, err = d.db.Exec(c, _addPushDataSQL, r.GroupName, r.Title, r.Content, r.PushTotalCount, r.PushedCount, r.ProgressStatus, r.Status, r.Platform, r.LinkType, r.LinkURL, r.ExpiredDayStart, r.ExpiredDayEnd, r.EffectStartDate, r.EffectEndDate, r.PushStartTime, r.PushEndTime, r.Operator); err != nil {
  29. err = errors.WithStack(err)
  30. return
  31. }
  32. if id, err = result.LastInsertId(); err != nil {
  33. err = errors.WithStack(err)
  34. }
  35. return
  36. }
  37. // UpdatePushData update push data
  38. func (d *Dao) UpdatePushData(c context.Context, r *model.VipPushData) (eff int64, err error) {
  39. var result xsql.Result
  40. if result, err = d.db.Exec(c, _updatePushDataSQL, r.GroupName, r.Title, r.Content, r.PushTotalCount, r.ProgressStatus, r.Platform, r.LinkType, r.LinkURL, r.ExpiredDayStart, r.ExpiredDayEnd, r.EffectStartDate, r.EffectEndDate, r.PushStartTime, r.PushEndTime, r.Operator, r.ID); err != nil {
  41. err = errors.WithStack(err)
  42. return
  43. }
  44. if eff, err = result.RowsAffected(); err != nil {
  45. err = errors.WithStack(err)
  46. }
  47. return
  48. }
  49. // PushDataCount sel push data count
  50. func (d *Dao) PushDataCount(c context.Context, arg *model.ArgPushData) (count int64, err error) {
  51. row := d.db.QueryRow(c, _selPushDataCountSQL+d.convertPushDataSQL(arg))
  52. if err = row.Scan(&count); err != nil {
  53. err = errors.WithStack(err)
  54. }
  55. return
  56. }
  57. // PushDatas sel push datas
  58. func (d *Dao) PushDatas(c context.Context, arg *model.ArgPushData) (res []*model.VipPushData, err error) {
  59. var rows *sql.Rows
  60. sql := _selPushDataSQL + d.convertPushDataSQL(arg)
  61. if arg.PN == 0 {
  62. arg.PN = 1
  63. }
  64. if arg.PS == 0 || arg.PS > 100 {
  65. arg.PS = _defps
  66. }
  67. sql += fmt.Sprintf(" ORDER BY id DESC LIMIT %v,%v", (arg.PN-1)*arg.PS, arg.PS)
  68. if rows, err = d.db.Query(c, sql); err != nil {
  69. err = errors.WithStack(err)
  70. return
  71. }
  72. defer rows.Close()
  73. for rows.Next() {
  74. r := new(model.VipPushData)
  75. if err = rows.Scan(&r.ID, &r.DisableType, &r.GroupName, &r.Title, &r.Content, &r.PushTotalCount, &r.PushedCount, &r.ProgressStatus, &r.Status, &r.Platform, &r.LinkType, &r.LinkURL, &r.ErrorCode, &r.ExpiredDayStart, &r.ExpiredDayEnd, &r.EffectStartDate, &r.EffectEndDate, &r.PushStartTime, &r.PushEndTime, &r.Operator); err != nil {
  76. err = errors.WithStack(err)
  77. }
  78. res = append(res, r)
  79. }
  80. err = rows.Err()
  81. return
  82. }
  83. func (d *Dao) convertPushDataSQL(arg *model.ArgPushData) string {
  84. sql := " "
  85. if arg.ProgressStatus != 0 {
  86. sql += fmt.Sprintf(" AND progress_status=%v", arg.ProgressStatus)
  87. }
  88. if arg.Status != 0 {
  89. sql += fmt.Sprintf(" AND status=%v", arg.Status)
  90. }
  91. return sql
  92. }
  93. // DelPushData .
  94. func (d *Dao) DelPushData(c context.Context, id int64) (err error) {
  95. if _, err = d.db.Exec(c, _delPushDataSQL, id); err != nil {
  96. err = errors.WithStack(err)
  97. return
  98. }
  99. return
  100. }
  101. // DisablePushData .
  102. func (d *Dao) DisablePushData(c context.Context, res *model.VipPushData) (err error) {
  103. if _, err = d.db.Exec(c, _disablePushDataSQL, res.ProgressStatus, res.PushTotalCount, res.EffectEndDate, res.ID); err != nil {
  104. err = errors.WithStack(err)
  105. return
  106. }
  107. return
  108. }