All checks were successful
Auth & User Management Service CI / build-services (app/douyin_ecpm_calculation_service/Dockerfile, douyin_ecpm_calculation_service, douyin_ecpm_calculation_service) (push) Successful in 36s
Auth & User Management Service CI / build-services (app/ranking_management/Dockerfile, ranking_management, ranking_management) (push) Successful in 41s
Auth & User Management Service CI / build-services (app/auth_service/Dockerfile, auth_service, auth_service) (push) Successful in 41s
Auth & User Management Service CI / build-services (app/user_management/Dockerfile, user_manager, user_management) (push) Successful in 38s
Auth & User Management Service CI / start-services (push) Successful in 5s
更新用户id为Sonyflake 添加gitea actions(ci/cd) 配置文件读取方式改为从ETCD读取 修改go module名称与gitea一致
66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
package logic
|
||
|
||
import (
|
||
"context"
|
||
"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/auth_service/auth_service"
|
||
"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/auth_service/internal/svc"
|
||
"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/user_management/user_management"
|
||
|
||
"github.com/zeromicro/go-zero/core/logx"
|
||
)
|
||
|
||
type Code2SessionLogic struct {
|
||
ctx context.Context
|
||
svcCtx *svc.ServiceContext
|
||
logx.Logger
|
||
}
|
||
|
||
func NewCode2SessionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Code2SessionLogic {
|
||
return &Code2SessionLogic{
|
||
ctx: ctx,
|
||
svcCtx: svcCtx,
|
||
Logger: logx.WithContext(ctx),
|
||
}
|
||
}
|
||
|
||
func (l *Code2SessionLogic) Code2Session(in *auth_service.Code2SessionRequest) (*auth_service.Code2SessionResponse, error) {
|
||
//获取cli,调用抖音或者微信api
|
||
cli, err := l.svcCtx.Cli.Get(in.AppId)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
res, err := cli.Code2Session(l.ctx, in.Code, in.AnonymousCode)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
//获取appId
|
||
ac := l.svcCtx.Query.AppAccount
|
||
acModel, err := ac.WithContext(l.ctx).Where(ac.AppID.Eq(in.AppId)).First()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
//获取用户id
|
||
au := l.svcCtx.Query.AppUser
|
||
auModel, err := au.WithContext(l.ctx).Where(au.AppAccountID.Eq(acModel.ID), au.Openid.Eq(res.OpenID)).FirstOrCreate()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
//如果没有用户id,则创建一个空用户
|
||
if auModel.UserID == nil {
|
||
userId, err := l.svcCtx.UserManagerClient.CreateEmptyUser(l.ctx, &user_management.Empty{})
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
auModel.UserID = &userId.UserId
|
||
}
|
||
|
||
return &auth_service.Code2SessionResponse{
|
||
OpenId: res.OpenID,
|
||
UnionId: res.UnionID,
|
||
UserId: *auModel.UserID,
|
||
}, nil
|
||
}
|