概要
实现用户注册功能
新建error.go文件
$ touch ~/book/user/api/internal/logic/error.go
填充如下代码
package logic
import (
"book/shared"
)
var (
errorDuplicateUsername = shared.NewDefaultError("用户名已经注册")
errorDuplicateMobile = shared.NewDefaultError("手机号已经被占用")
)填充注册逻辑代码
$ vi ~/book/user/api/internal/logic/registerlogic.go
增加注册逻辑
向Register方法中填充注册逻辑
// 为了简单,这里只做一下简单的逻辑校验
_, err := l.svcCtx.UserModel.FindOneByName(req.Username)
if err == nil {
return errorDuplicateUsername
}
_, err = l.svcCtx.UserModel.FindOneByMobile(req.Mobile)
if err == nil {
return errorDuplicateMobile
}
_, err = l.svcCtx.UserModel.Insert(model.User{
Name: req.Username,
Password: req.Password,
Mobile: req.Mobile,
Gender: "男",
Nickname: "admin",
})
return err访问注册协议
$ curl -i -X POST \
http://127.0.0.1:8888/user/register \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"username":"admin",
"password":"666666",
"mobile":"19988888888"
}'得到响应码为200则代表注册成功

shared中文件代码
新建baseerror.go
$ touch ~/book/shared/baseerror.go
填充如下代码
package shared
const (
defaultCode = 1001
)
type (
CodeError struct {
Code int `json:"code"`
Msg string `json:"msg"`
}
)
func NewCodeError(code int, msg string) error {
return &CodeError{Code: code, Msg: msg}
}
func NewDefaultError(msg string) error {
return NewCodeError(defaultCode, msg)
}
func (e *CodeError) Error() string {
return e.Msg
}
