generated from pkg/go-template
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"google.golang.org/grpc/keepalive"
|
||||
"log"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"git.icechen.cn/monorepo/backend/pkg/proto/zeus/lark"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/reflection"
|
||||
)
|
||||
|
||||
func RpcServer() {
|
||||
lis, err := net.Listen("tcp", ":3000")
|
||||
if err != nil {
|
||||
log.Fatalf("failed to listen: %v", err)
|
||||
}
|
||||
|
||||
s := grpc.NewServer(grpc.KeepaliveParams(keepalive.ServerParameters{
|
||||
MaxConnectionIdle: 5 * time.Minute,
|
||||
}))
|
||||
lark.RegisterUserServer(s, &UserServer{})
|
||||
|
||||
reflection.Register(s)
|
||||
|
||||
fmt.Println("lark server run in :3000")
|
||||
if err := s.Serve(lis); err != nil {
|
||||
log.Fatalf("failed to serve: %v", err)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
lark2 "git.icechen.cn/monorepo/backend/app/zeus/service/lark/internal/lark"
|
||||
"git.icechen.cn/monorepo/backend/app/zeus/service/lark/internal/model"
|
||||
"git.icechen.cn/monorepo/backend/pkg/proto/zeus/lark"
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
type UserServer struct{}
|
||||
|
||||
func (s UserServer) Login(ctx context.Context, in *lark.LoginRequest) (*lark.LoginResponse, error) {
|
||||
userInfo, err := lark2.Client().Auth(in.Code)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// userInfo to db
|
||||
user := model.UserInfo{}
|
||||
err = copier.Copy(&user, userInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = model.CreateUser(&user)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// gen token
|
||||
token, err := model.CreateToken(user.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// return token
|
||||
resp := &lark.LoginResponse{
|
||||
Token: token,
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (s UserServer) Info(ctx context.Context, in *lark.InfoRequest) (*lark.InfoResponse, error) {
|
||||
// token to user info
|
||||
_ = in.Token
|
||||
info, err := getUserByToken(in.Token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp := new(lark.InfoResponse)
|
||||
err = copier.Copy(resp, info)
|
||||
return resp, err
|
||||
}
|
||||
|
||||
func getUserByToken(token string) (model.UserInfo, error) {
|
||||
userToken, err := model.GetToken(token)
|
||||
if err != nil {
|
||||
return model.UserInfo{}, err
|
||||
}
|
||||
|
||||
return model.GetUserByID(userToken.UserInfoID)
|
||||
}
|
||||
Reference in New Issue
Block a user