cbcustomermodel.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package model
  2. import (
  3. "fmt"
  4. "github.com/zeromicro/go-zero/core/stores/sqlx"
  5. "time"
  6. )
  7. var _ CbCustomerModel = (*customCbCustomerModel)(nil)
  8. type (
  9. // CbCustomerModel is an interface to be customized, add more methods here,
  10. // and implement the added methods in customCbCustomerModel.
  11. CbCustomerModel interface {
  12. cbCustomerModel
  13. GetCustomerByExternalUserid(openKfid, externalUserid string) (d *CbCustomer, err error)
  14. GetCustomerByPage(page, size int) (list []CbCustomer, err error)
  15. GetCustomerByZeroLastMsgTime() (list []CbCustomer, err error)
  16. UpdateCustomerState(openKfid, externalUserid string, state int) (err error)
  17. UpdateCustomerLastMsgTime(openKfid, externalUserid string, t int64) (err error)
  18. }
  19. customCbCustomerModel struct {
  20. *defaultCbCustomerModel
  21. }
  22. )
  23. // NewCbCustomerModel returns a model for the database table.
  24. func NewCbCustomerModel(conn sqlx.SqlConn) CbCustomerModel {
  25. return &customCbCustomerModel{
  26. defaultCbCustomerModel: newCbCustomerModel(conn),
  27. }
  28. }
  29. func (m *customCbCustomerModel) GetCustomerByExternalUserid(openKfid, externalUserid string) (d *CbCustomer, err error) {
  30. query := fmt.Sprintf("select * from %s where `open_kfid` = ? AND `external_userid` = ? limit 1", m.table)
  31. var resp CbCustomer
  32. err = m.conn.QueryRow(&resp, query, openKfid, externalUserid)
  33. d = &resp
  34. return
  35. }
  36. func (m *customCbCustomerModel) UpdateCustomerState(openKfid, externalUserid string, state int) (err error) {
  37. query := fmt.Sprintf("update %s set `service_state` = ? where `open_kfid` = ? AND `external_userid` = ?", m.table)
  38. _, err = m.conn.Exec(query, state, openKfid, externalUserid)
  39. return err
  40. }
  41. func (m *customCbCustomerModel) UpdateCustomerLastMsgTime(openKfid, externalUserid string, t int64) (err error) {
  42. query := fmt.Sprintf("update %s set `last_msg_time` = ? where `open_kfid` = ? AND `external_userid` = ?", m.table)
  43. _, err = m.conn.Exec(query, t, openKfid, externalUserid)
  44. return err
  45. }
  46. func (m *customCbCustomerModel) GetCustomerByPage(page, size int) (list []CbCustomer, err error) {
  47. query := fmt.Sprintf("select * from %s where service_state != 4 OR last_msg_time > ? limit ?,?", m.table)
  48. err = m.conn.QueryRows(&list, query, time.Now().AddDate(0, 0, -2).Unix(), (page-1)*size, size)
  49. return
  50. }
  51. func (m *customCbCustomerModel) GetCustomerByZeroLastMsgTime() (list []CbCustomer, err error) {
  52. query := fmt.Sprintf("select * from %s where last_msg_time = 0 OR last_msg_time IS NULL", m.table)
  53. err = m.conn.QueryRows(&list, query)
  54. return
  55. }