cbcustomermodel.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. UpdateCustomerState(openKfid, externalUserid string, state int) (err error)
  16. UpdateCustomerLastMsgTime(openKfid, externalUserid string, t int64) (err error)
  17. }
  18. customCbCustomerModel struct {
  19. *defaultCbCustomerModel
  20. }
  21. )
  22. // NewCbCustomerModel returns a model for the database table.
  23. func NewCbCustomerModel(conn sqlx.SqlConn) CbCustomerModel {
  24. return &customCbCustomerModel{
  25. defaultCbCustomerModel: newCbCustomerModel(conn),
  26. }
  27. }
  28. func (m *customCbCustomerModel) GetCustomerByExternalUserid(openKfid, externalUserid string) (d *CbCustomer, err error) {
  29. query := fmt.Sprintf("select * from %s where `open_kfid` = ? AND `external_userid` = ? limit 1", m.table)
  30. var resp CbCustomer
  31. err = m.conn.QueryRow(&resp, query, openKfid, externalUserid)
  32. d = &resp
  33. return
  34. }
  35. func (m *customCbCustomerModel) UpdateCustomerState(openKfid, externalUserid string, state int) (err error) {
  36. query := fmt.Sprintf("update %s set `service_state` = ? where `open_kfid` = ? AND `external_userid` = ?", m.table)
  37. _, err = m.conn.Exec(query, state, openKfid, externalUserid)
  38. return err
  39. }
  40. func (m *customCbCustomerModel) UpdateCustomerLastMsgTime(openKfid, externalUserid string, t int64) (err error) {
  41. query := fmt.Sprintf("update %s set `last_msg_time` = ? where `open_kfid` = ? AND `external_userid` = ?", m.table)
  42. _, err = m.conn.Exec(query, t, openKfid, externalUserid)
  43. return err
  44. }
  45. func (m *customCbCustomerModel) GetCustomerByPage(page, size int) (list []CbCustomer, err error) {
  46. query := fmt.Sprintf("select * from %s where service_state != 4 OR last_msg_time > ? limit ?,?", m.table)
  47. err = m.conn.QueryRows(&list, query, time.Now().AddDate(0, 0, -2).Unix(), (page-1)*size, size)
  48. return
  49. }