-
Notifications
You must be signed in to change notification settings - Fork 0
/
register.go
74 lines (63 loc) · 1.74 KB
/
register.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
package user
import (
"auth-gateway/initializer/db"
"auth-gateway/model"
"auth-gateway/serializer"
)
// RegisterService 管理用户注册服务
type RegisterService struct {
Nickname string `form:"nickname" json:"nickname" binding:"required,min=2,max=30"`
UserName string `form:"user_name" json:"user_name" binding:"required,min=1,max=30"`
Password string `form:"password" json:"password" binding:"required,min=8,max=40"`
PasswordConfirm string `form:"password_confirm" json:"password_confirm" binding:"required,min=8,max=40"`
}
// valid 验证表单
func (service *RegisterService) valid() *serializer.Response {
if service.PasswordConfirm != service.Password {
return &serializer.Response{
Code: 40001,
Msg: "两次输入的密码不相同",
}
}
count := 0
db.DB.Model(&model.User{}).Where("nickname = ?", service.Nickname).Count(&count)
if count > 0 {
return &serializer.Response{
Code: 40001,
Msg: "昵称被占用",
}
}
count = 0
db.DB.Model(&model.User{}).Where("user_name = ?", service.UserName).Count(&count)
if count > 0 {
return &serializer.Response{
Code: 40001,
Msg: "用户名已经注册",
}
}
return nil
}
// Register 用户注册
func (service *RegisterService) Register() *serializer.Response {
user := model.User{
Nickname: service.Nickname,
UserName: service.UserName,
}
// 表单验证
if err := service.valid(); err != nil {
return err
}
// 加密密码
if err := user.SetPassword(service.Password); err != nil {
return serializer.Err(
serializer.CodeEncryptError,
"密码加密失败",
err,
)
}
// 创建用户
if err := db.DB.Create(&user).Error; err != nil {
return serializer.ParamErr("注册失败", err)
}
return serializer.Success(true)
}