RoleAction.go 1.19 KB
package actions

import (
	"context"
	"errors"
	"google.golang.org/grpc/metadata"
	"google.golang.org/protobuf/types/known/emptypb"
	"pro2d/conf"
	"pro2d/models"
	"pro2d/protos/pb"
	"pro2d/utils"
)

func (s *GameServer) HeartBeatHandler(ctx context.Context, empty *emptypb.Empty) (*pb.HeartRsp, error) {
	utils.Sugar.Debugf("HeartBeatHandler被调用!!!")
	//获取元数据信息
	_,ok := metadata.FromIncomingContext(ctx)
	if !ok {
		return nil,errors.New("未传输token")
	}

	return &pb.HeartRsp{
		Code: 0,
	}, nil
}

func (s *GameServer) CreateRoleHandler(ctx context.Context, in  *pb.LoginReq) (*pb.RoleRsp, error) {
	uid := ctx.Value("uid").(string)
	ok, role := models.RoleExistByUid(uid)
	if !ok {
		role = models.NewRole(conf.SnowFlack.NextVal())
		role.Role.Device = in.Device
		role.Role.Uid = uid
		role.Create()
	}
	return &pb.RoleRsp{
		Code: 0,
		Role: role.Role,
	}, nil
}

func (s *GameServer) LoginHandler(ctx context.Context, in *pb.LoginReq) (*pb.RoleRsp, error) {
	uid := ctx.Value("uid").(string)
	ok, role := models.RoleExistByUid(uid)
	if !ok {
		return &pb.RoleRsp{
			Code: 1,
		}, nil
	}
	return &pb.RoleRsp{
		Code: 0,
		Role: role.Role,
		Hero: models.GetHeros(role.Heros),
	}, nil
}