feat 微信登录

This commit is contained in:
2026-01-14 10:53:27 +08:00
parent 7aec1c2d4f
commit 3750ff1c34
12 changed files with 235 additions and 25 deletions

View File

@@ -10,10 +10,11 @@ import (
"git.hlsq.asia/mmorpg/service-common/utils"
"git.hlsq.asia/mmorpg/service-user/internal/dao/model"
"git.hlsq.asia/mmorpg/service-user/internal/dao/repository"
"git.hlsq.asia/mmorpg/service-user/internal/wechat"
"gorm.io/gorm"
)
func (s *Server) Login(ctx context.Context, req *grpc_pb.LoginReq) (*grpc_pb.LoginResp, error) {
func (s *Server) PhoneLogin(ctx context.Context, req *grpc_pb.PhoneLoginReq) (*grpc_pb.PhoneLoginResp, error) {
userDao := repository.NewUserDao(ctx, redis.GetCacheClient())
user, err := userDao.FindByPhone(req.Phone)
if err != nil {
@@ -30,7 +31,35 @@ func (s *Server) Login(ctx context.Context, req *grpc_pb.LoginReq) (*grpc_pb.Log
}
}
return &grpc_pb.LoginResp{
return &grpc_pb.PhoneLoginResp{
USN: user.Sn,
Name: user.Name,
}, nil
}
func (s *Server) WxMiniLogin(ctx context.Context, req *grpc_pb.WxMiniLoginReq) (*grpc_pb.WxMiniLoginResp, error) {
session, err := wechat.MiniCode2Session(req.Code)
if err != nil {
return nil, err
}
userDao := repository.NewUserDao(ctx, redis.GetCacheClient())
user, err := userDao.FindByWxUnionIDOrOpenID(session.UnionID, session.OpenID)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
if user, err = userDao.Create(&model.User{
WxUnionID: session.UnionID,
WxMiniOpenID: session.OpenID,
}); err != nil {
return nil, err
}
user.Name = fmt.Sprintf("user_%v", user.Sn)
_ = userDao.Updates(user)
} else {
return nil, err
}
}
return &grpc_pb.WxMiniLoginResp{
USN: user.Sn,
Name: user.Name,
}, nil