WorkWeixinAccount.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Package models .
  2. package models
  3. import (
  4. "errors"
  5. "time"
  6. "github.com/beego/beego/v2/client/orm"
  7. "github.com/beego/beego/v2/core/logs"
  8. "github.com/mindoc-org/mindoc/conf"
  9. )
  10. type WorkWeixinAccount struct {
  11. MemberId int `orm:"column(member_id);type(int);default(-1);index" json:"member_id"`
  12. UserDbId int `orm:"pk;auto;unique;column(user_db_id)" json:"user_db_id"`
  13. WorkWeixin_UserId string `orm:"size(100);unique;column(workweixin_user_id)" json:"workweixin_user_id"`
  14. // WorkWeixin_Name string `orm:"size(255);column(workweixin_name)" json:"workweixin_name"`
  15. // WorkWeixin_Phone string `orm:"size(25);column(workweixin_phone)" json:"workweixin_phone"`
  16. // WorkWeixin_Email string `orm:"size(255);column(workweixin_email)" json:"workweixin_email"`
  17. // WorkWeixin_Status int `orm:"type(int);column(status)" json:"status"`
  18. // WorkWeixin_Avatar string `orm:"size(1024);column(avatar)" json:"avatar"`
  19. CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add" json:"create_time"`
  20. CreateAt int `orm:"type(int);column(create_at)" json:"create_at"`
  21. LastLoginTime time.Time `orm:"type(datetime);column(last_login_time);null" json:"last_login_time"`
  22. }
  23. // TableName 获取对应数据库表名.
  24. func (m *WorkWeixinAccount) TableName() string {
  25. return "workweixin_accounts"
  26. }
  27. // TableEngine 获取数据使用的引擎.
  28. func (m *WorkWeixinAccount) TableEngine() string {
  29. return "INNODB"
  30. }
  31. func (m *WorkWeixinAccount) TableNameWithPrefix() string {
  32. return conf.GetDatabasePrefix() + m.TableName()
  33. }
  34. func NewWorkWeixinAccount() *WorkWeixinAccount {
  35. return &WorkWeixinAccount{}
  36. }
  37. func (a *WorkWeixinAccount) ExistedMember(workweixin_user_id string) (*Member, error) {
  38. o := orm.NewOrm()
  39. account := NewWorkWeixinAccount()
  40. member := NewMember()
  41. err := o.QueryTable(a.TableNameWithPrefix()).Filter("workweixin_user_id", workweixin_user_id).One(account)
  42. if err == nil {
  43. if member, err = member.Find(account.MemberId); err == nil {
  44. return member, nil
  45. } else {
  46. return member, err
  47. }
  48. } else {
  49. return member, err
  50. }
  51. }
  52. // Add 添加一个用户.
  53. func (a *WorkWeixinAccount) AddBind(o orm.Ormer) error {
  54. if c, err := o.QueryTable(a.TableNameWithPrefix()).Filter("member_id", a.MemberId).Count(); err == nil && c > 0 {
  55. return errors.New("已绑定,不可重复绑定")
  56. }
  57. _, err := o.Insert(a)
  58. if err != nil {
  59. logs.Error("保存用户数据到数据时失败 =>", err)
  60. return errors.New("用户信息绑定失败, 数据库错误")
  61. }
  62. return nil
  63. }