forked from lifei6671/go-git-webhook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmember.go
111 lines (85 loc) · 2.4 KB
/
member.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package models
import (
"time"
"github.com/astaxie/beego/orm"
"github.com/lifei6671/go-git-webhook/modules/passwords"
)
// Member 会员信息.
type Member struct {
MemberId int `orm:"pk;auto;unique;column(member_id)"`
Account string `orm:"size(100);unique;column(account)"`
Password string `orm:"size(1000);column(password)"`
Email string `orm:"size(255);column(email);null;default(null)"`
Phone string `orm:"size(255);column(phone);null;default(null)"`
Avatar string `orm:"size(1000);column(avatar)"`
Role int `orm:"column(role);type(int);default(1)"` //用户角色:0 管理员/1 普通用户
Status int `orm:"column(status);type(int);default(0)"` //用户状态:0 正常/1 禁用
CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add"`
CreateAt int `orm:"type(int);column(create_at)"`
LastLoginTime time.Time `orm:"type(datetime);column(last_login_time);null"`
}
// TableName 获取对应数据库表名.
func (m *Member) TableName() string {
return "members"
}
// TableEngine 获取数据使用的引擎.
func (m *Member) TableEngine() string {
return "INNODB"
}
// NewMember 获取新的用户信息对象.
func NewMember() *Member {
return new(Member)
}
// Find 根据用户ID查找用户.
func (m *Member) Find() (error) {
o := orm.NewOrm()
err := o.Read(m)
if err == orm.ErrNoRows {
return ErrMemberNoExist
}
return nil
}
// Login 用户登录.
func (m *Member) Login(account string,password string) (*Member,error) {
o := orm.NewOrm()
member := &Member{}
err := o.QueryTable(m.TableName()).Filter("account",account).Filter("status",0).One(member);
if err != nil {
return member,ErrMemberNoExist
}
ok,err := passwords.PasswordVerify(member.Password,password) ;
if ok && err == nil {
return member,nil
}
return member,ErrorMemberPasswordError
}
// Add 添加一个用户.
func (member *Member) Add () (error) {
o := orm.NewOrm()
hash ,err := passwords.PasswordHash(member.Password);
if err != nil {
return err
}
member.Password = hash
_,err = o.Insert(member)
if err != nil {
return err
}
return nil
}
// Update 更新用户信息.
func (m *Member) Update(cols... string) (error) {
o := orm.NewOrm()
if _,err := o.Update(m,cols...);err != nil {
return err
}
return nil
}
// Delete 删除一个用户.
func (m *Member) Delete() error {
o := orm.NewOrm()
if _,err := o.Delete(m);err != nil {
return err
}
return nil
}