Files
36Wisdom/biz/service/parent.go
T
adminandClaude Opus 4.7 0273a81ca7 feat: 家长注册登录与孩子档案接口
注册/登录签发 JWT(bcrypt 校验),孩子档案增改查带归属校验,
列表汇总完美关卡数并派生成长等级。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-13 12:21:38 +08:00

61 lines
1.7 KiB
Go

package service
import (
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"golang.org/x/crypto/bcrypt"
"36wisdom/biz/consts"
"36wisdom/biz/dao"
)
type parent struct{}
var Parent = &parent{}
// Register 家长注册:手机号唯一、bcrypt 落库、签发 token。
func (s *parent) Register(ctx context.Context, phone, password, nickname string) (parentId int64, token string, err error) {
rec, err := dao.Parent.Model().Ctx(ctx).Where("phone", phone).One()
if err != nil {
return 0, "", err
}
if !rec.IsEmpty() {
return 0, "", gerror.Newf("手机号 %s 已注册", phone)
}
hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return 0, "", err
}
parentId, err = dao.Parent.InsertAndReturnId(ctx, g.Map{
"phone": phone,
"password": string(hash),
"nickname": nickname,
"status": consts.StatusEnabled,
})
if err != nil {
return 0, "", err
}
token, err = Auth.GenerateToken(ctx, parentId, consts.RoleParent)
return parentId, token, err
}
// Login 家长登录:校验手机号与密码,签发 token。
func (s *parent) Login(ctx context.Context, phone, password string) (parentId int64, token string, err error) {
rec, err := dao.Parent.Model().Ctx(ctx).Where("phone", phone).One()
if err != nil {
return 0, "", err
}
if rec.IsEmpty() {
return 0, "", gerror.New("手机号或密码错误")
}
if err = bcrypt.CompareHashAndPassword([]byte(rec["password"].String()), []byte(password)); err != nil {
return 0, "", gerror.New("手机号或密码错误")
}
parentId = rec["id"].Int64()
token, err = Auth.GenerateToken(ctx, parentId, consts.RoleParent)
return parentId, token, err
}