用户修改头像、昵称、绑定手机号、获取用户详细信息

This commit is contained in:
chy
2025-06-06 15:48:05 +08:00
parent 01b898163a
commit e40f9987db
12 changed files with 280 additions and 19 deletions

View File

@ -2,6 +2,8 @@ package internal
import (
"context"
"fmt"
"github.com/gogf/gf/v2/frame/g"
"server/internal/consts"
"server/internal/dao"
"server/internal/model"
@ -115,21 +117,83 @@ func (s *sUser) Info(ctx context.Context, in *model.UserInfoIn) (out *model.User
return nil, ecode.Fail.Sub("查找用户失败")
}
out = &model.UserInfoOut{
Id: user.Id,
Id: user.Id,
WxOpenId: user.WxOpenId,
Username: user.Username,
Nickname: user.Nickname,
Avatar: user.Avatar,
Email: user.Email,
PhoneNumber: user.PhoneNumber,
WxPopenId: user.WxPopenId,
QQPopenId: user.QqPopenId,
RoleId: user.RoleId,
}
return
return out, nil
}
func (s *sUser) Code(ctx context.Context, in *model.UserCodeIn) (out *model.UserCodeOut, err error) {
return
func (s *sUser) Code(ctx context.Context, in *model.GetPhoneCodeIn) (out *model.GetPhoneCodeOut, err error) {
// TODO 短信平台获取验证码
code := "9999"
// 存入 redis
err = g.Redis().SetEX(ctx, fmt.Sprintf(consts.UserBindPhoneKey, in.Id), code, consts.UserCodeExpire)
if err != nil {
return nil, ecode.Fail.Sub("设置验证码失败")
}
return &model.GetPhoneCodeOut{
Success: true,
}, nil
}
func (s *sUser) Update(ctx context.Context, in *model.UserUpdateIn) (out *model.UpdateOut, err error) {
return
exist, err := dao.Users.Ctx(ctx).Where(do.Users{Id: in.Id}).Exist()
if err != nil {
return nil, ecode.Fail.Sub("该用户不存在")
}
if !exist {
return nil, ecode.Params.Sub("用户不存在")
}
_, err = dao.Users.Ctx(ctx).Where(do.Users{Id: in.Id}).Update(do.Users{
Nickname: in.Nickname,
Avatar: in.Avatar,
})
if err != nil {
return nil, ecode.Fail.Sub("更新用户信息失败")
}
return &model.UpdateOut{
Success: true,
}, nil
}
func (s *sUser) BindPhone(ctx context.Context, in *model.UserBindPhoneIn) (out *model.UpdateOut, err error) {
func (s *sUser) BindPhone(ctx context.Context, in *model.UserBindPhoneIn) (out *model.UserBindPhoneOut, err error) {
// 绑定手机号,需要验证入参和缓存中的验证码时候相同
return
value, err := g.Redis().Get(ctx, fmt.Sprintf(consts.UserBindPhoneKey, in.Id))
if err != nil {
return nil, ecode.Fail.Sub("获取失败")
}
if value.IsEmpty() {
return nil, ecode.Fail.Sub("验证码已过期")
}
if value.String() != in.PhoneCode {
return nil, ecode.Fail.Sub("验证码错误")
}
_, err = dao.Users.Ctx(ctx).Where(do.Users{Id: in.Id}).Update(do.Users{
PhoneNumber: in.Phone,
})
if err != nil {
return nil, ecode.Fail.Sub("绑定手机号失败")
}
return &model.UserBindPhoneOut{
Success: true,
}, nil
}
func (s *sUser) List(ctx context.Context, in *model.UserListIn) (out *model.UserListOut, err error) {