You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
package user
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"errors"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
ErrInvalidPassword = errors.New("密码不正确")
|
|
|
|
|
ErrPasswordTooShort = errors.New("密码长度不能小于6位")
|
|
|
|
|
ErrInvalidPhone = errors.New("手机号格式不正确")
|
|
|
|
|
ErrInvalidVerifyCode = errors.New("验证码不正确")
|
|
|
|
|
ErrVerifyCodeExpired = errors.New("验证码已过期")
|
|
|
|
|
ErrPhoneNotMatch = errors.New("手机号与用户不匹配")
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
VerifyCodeKeyPrefix = "sms:verify:code:" // Redis中验证码的key前缀
|
|
|
|
|
VerifyCodeExpiration = 5 * time.Minute // 验证码有效期5分钟
|
|
|
|
|
MinPasswordLength = 6 // 密码最小长度
|
|
|
|
|
SaltLength = 16 // 盐值长度
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// User 用户聚合根
|
|
|
|
|
type User struct {
|
|
|
|
|
Id uint64 `xorm:"pk autoincr 'id'" `
|
|
|
|
|
Username string `xorm:"varchar(50) notnull unique 'username'"`
|
|
|
|
|
Phone string `xorm:"varchar(60) unique 'phone'" `
|
|
|
|
|
// 密码相关
|
|
|
|
|
Password string `xorm:"varchar(60) notnull 'password'" ` // 使用 bcrypt 加密存储,长度60
|
|
|
|
|
Salt string `xorm:"varchar(32) notnull 'salt'" ` // 密码加密盐值
|
|
|
|
|
// 状态相关
|
|
|
|
|
Status int8 `xorm:"tinyint(1) default 1 'status'" `
|
|
|
|
|
// 登录相关
|
|
|
|
|
LastLoginTime *time.Time `xorm:"datetime 'last_login_time'" `
|
|
|
|
|
LastLoginIp string `xorm:"varchar(50) 'last_login_ip'"`
|
|
|
|
|
GiftCount int8 //赠送次数
|
|
|
|
|
// 时间相关
|
|
|
|
|
CreatedAt time.Time `xorm:"datetime created 'created_at'" `
|
|
|
|
|
UpdatedAt time.Time `xorm:"datetime updated 'updated_at'"`
|
|
|
|
|
DeletedAt time.Time `xorm:"datetime deleted 'deleted_at'" `
|
|
|
|
|
}
|