user_info.go 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package dao
  2. import (
  3. "context"
  4. "database/sql"
  5. "go-common/app/service/main/tv/internal/model"
  6. xsql "go-common/library/database/sql"
  7. "go-common/library/log"
  8. "github.com/pkg/errors"
  9. )
  10. const (
  11. _getUserInfoByMid = "SELECT `id`, `mid`, `ver`, `vip_type`, `pay_type`, `pay_channel_id`, `status`, `overdue_time`, `recent_pay_time`, `ctime`, `mtime` FROM `tv_user_info` WHERE `mid`=?"
  12. _insertUserInfo = "INSERT INTO tv_user_info (`mid`, `ver`, `vip_type`, `pay_type`, `pay_channel_id`, `status`, `overdue_time`, `recent_pay_time`) VALUES (?,?,?,?,?,?,?,?)"
  13. _updateUserInfo = "UPDATE tv_user_info SET `status` = ?, `vip_type` = ?, `overdue_time`=?, `recent_pay_time`=?, `ver` = `ver` + 1 WHERE `mid` = ? AND `ver` = ?"
  14. _updateUserStatus = "UPDATE tv_user_info SET `status` = ?, `ver` = `ver` + 1 WHERE `mid` = ? AND `ver` = ?"
  15. _updateUserPayType = "UPDATE tv_user_info SET `pay_type` = ?, `ver` = `ver` + 1 WHERE `mid` = ? AND `ver` = ?"
  16. )
  17. // UserInfoByMid quires one row from tv_user_info.
  18. func (d *Dao) RawUserInfoByMid(c context.Context, mid int64) (ui *model.UserInfo, err error) {
  19. row := d.db.QueryRow(c, _getUserInfoByMid, mid)
  20. ui = &model.UserInfo{}
  21. err = row.Scan(&ui.ID, &ui.Mid, &ui.Ver, &ui.VipType, &ui.PayType, &ui.PayChannelId, &ui.Status, &ui.OverdueTime, &ui.RecentPayTime, &ui.Ctime, &ui.Mtime)
  22. if err == sql.ErrNoRows {
  23. return nil, nil
  24. }
  25. if err != nil {
  26. log.Error("rows.Scan(%s) error(%v)", _getUserInfoByMid, err)
  27. err = errors.WithStack(err)
  28. return nil, err
  29. }
  30. return ui, nil
  31. }
  32. // TxInsertUserInfo insert one row into tv_user_info.
  33. func (d *Dao) TxInsertUserInfo(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (id int64, err error) {
  34. var (
  35. res sql.Result
  36. )
  37. if res, err = tx.Exec(_insertUserInfo, ui.Mid, ui.Ver, ui.VipType, ui.PayType, ui.PayChannelId, ui.Status, ui.OverdueTime, ui.RecentPayTime); err != nil {
  38. log.Error("tx.Exec(%s) error(%v)", _insertUserInfo, err)
  39. err = errors.WithStack(err)
  40. return
  41. }
  42. if id, err = res.LastInsertId(); err != nil {
  43. err = errors.WithStack(err)
  44. return
  45. }
  46. return
  47. }
  48. // TxUpdateUserInfo updates user info.
  49. func (d *Dao) TxUpdateUserInfo(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (err error) {
  50. if _, err = tx.Exec(_updateUserInfo, ui.Status, ui.VipType, ui.OverdueTime, ui.RecentPayTime, ui.Mid, ui.Ver); err != nil {
  51. log.Error("tx.Exec(%s) error(%v)", _updateUserInfo, err)
  52. err = errors.WithStack(err)
  53. return
  54. }
  55. return
  56. }
  57. // TxUpdateUserInfo updates vip status of user.
  58. func (d *Dao) TxUpdateUserStatus(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (err error) {
  59. if _, err = tx.Exec(_updateUserStatus, ui.Status, ui.Mid, ui.Ver); err != nil {
  60. log.Error("tx.Exec(%s) error(%v)", _updateUserStatus, err)
  61. err = errors.WithStack(err)
  62. return
  63. }
  64. return
  65. }
  66. // TxUpdateUserPayType updates pay type of user.
  67. func (d *Dao) TxUpdateUserPayType(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (err error) {
  68. if _, err = tx.Exec(_updateUserPayType, ui.PayType, ui.Mid, ui.Ver); err != nil {
  69. log.Error("tx.Exec(%s) error(%v)", _updateUserPayType, err)
  70. err = errors.WithStack(err)
  71. return
  72. }
  73. return
  74. }