feat: service-lark update
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-01-12 00:40:37 +08:00
parent 6dab1ffda3
commit c048909a9d
13 changed files with 420 additions and 88 deletions
@@ -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)
}