MemberToken.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package models
  2. import (
  3. "github.com/astaxie/beego/orm"
  4. "github.com/lifei6671/mindoc/conf"
  5. "time"
  6. )
  7. type MemberToken struct {
  8. TokenId int `orm:"column(token_id);pk;auto;unique" json:"token_id"`
  9. MemberId int `orm:"column(member_id);type(int)" json:"member_id"`
  10. Token string `orm:"column(token);size(150);index" json:"token"`
  11. Email string `orm:"column(email);size(255)" json:"email"`
  12. IsValid bool `orm:"column(is_valid)" json:"is_valid"`
  13. ValidTime time.Time `orm:"column(valid_time);null" json:"valid_time"`
  14. SendTime time.Time `orm:"column(send_time);auto_now_add;type(datetime)" json:"send_time"`
  15. }
  16. // TableName 获取对应数据库表名.
  17. func (m *MemberToken) TableName() string {
  18. return "member_token"
  19. }
  20. // TableEngine 获取数据使用的引擎.
  21. func (m *MemberToken) TableEngine() string {
  22. return "INNODB"
  23. }
  24. func (m *MemberToken) TableNameWithPrefix() string {
  25. return conf.GetDatabasePrefix() + m.TableName()
  26. }
  27. func NewMemberToken() *MemberToken {
  28. return &MemberToken{}
  29. }
  30. func (m *MemberToken) InsertOrUpdate() (*MemberToken, error) {
  31. o := orm.NewOrm()
  32. if m.TokenId > 0 {
  33. _, err := o.Update(m)
  34. return m, err
  35. }
  36. _, err := o.Insert(m)
  37. return m, err
  38. }
  39. func (m *MemberToken) FindByFieldFirst(field string, value interface{}) (*MemberToken, error) {
  40. o := orm.NewOrm()
  41. err := o.QueryTable(m.TableNameWithPrefix()).Filter(field, value).OrderBy("-token_id").One(m)
  42. return m, err
  43. }
  44. func (m *MemberToken) FindSendCount(mail string, start_time time.Time, end_time time.Time) (int, error) {
  45. o := orm.NewOrm()
  46. c, err := o.QueryTable(m.TableNameWithPrefix()).Filter("send_time__gte", start_time.Format("2006-01-02 15:04:05")).Filter("send_time__lte", end_time.Format("2006-01-02 15:04:05")).Count()
  47. if err != nil {
  48. return 0, err
  49. }
  50. return int(c), nil
  51. }