130 lines
3.3 KiB
Go
130 lines
3.3 KiB
Go
package service
|
|
|
|
import (
|
|
"go_dreamfactory/cmd/v2/lib/common"
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/modules/user"
|
|
"go_dreamfactory/pb"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
var (
|
|
ptt PttService
|
|
)
|
|
|
|
type PttService interface {
|
|
Login(sid int32, account string) (code pb.ErrorCode, rsp *pb.UserLoginResp)
|
|
CreateRole(nickName string) (code pb.ErrorCode, rsp *pb.UserCreateResp)
|
|
GetUser() *UserInfo
|
|
SetUser(dbUser *pb.DBUser, dbUserExpand *pb.DBUserExpand)
|
|
SendToClient(mainType, subType string, rsp proto.Message) error
|
|
}
|
|
|
|
type PttServiceImpl struct {
|
|
connService ConnService
|
|
user *UserInfo
|
|
}
|
|
|
|
type UserInfo struct {
|
|
DbUser *pb.DBUser
|
|
DbUserExpand *pb.DBUserExpand
|
|
}
|
|
|
|
func NewPttService(connService ConnService) PttService {
|
|
ptt = &PttServiceImpl{
|
|
connService: connService,
|
|
}
|
|
return ptt
|
|
}
|
|
|
|
func GetPttService() PttService {
|
|
return ptt
|
|
}
|
|
|
|
func (p *PttServiceImpl) GetUser() *UserInfo {
|
|
return p.user
|
|
}
|
|
|
|
func (p *PttServiceImpl) SetUser(dbUser *pb.DBUser, dbUserExpand *pb.DBUserExpand) {
|
|
p.user = &UserInfo{DbUser: dbUser, DbUserExpand: dbUserExpand}
|
|
}
|
|
|
|
func (p *PttServiceImpl) SendToClient(mainType, subType string, rsp proto.Message) (err error) {
|
|
msg := &pb.UserMessage{MainType: mainType, SubType: subType}
|
|
msg.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid)
|
|
if err = p.connService.SendMsg(msg, rsp); err != nil {
|
|
logrus.WithField("err", err).Error(err)
|
|
}
|
|
return
|
|
}
|
|
|
|
// Login
|
|
func (p *PttServiceImpl) Login(sid int32, account string) (code pb.ErrorCode, rsp *pb.UserLoginResp) {
|
|
head := &pb.UserMessage{MainType: string(comm.ModuleUser), SubType: user.UserSubTypeLogin}
|
|
head.Sec = common.BuildSecStr(sid, account)
|
|
if err := p.connService.SendMsg(head, &pb.UserLoginReq{
|
|
Account: account,
|
|
Sid: sid,
|
|
}); err != nil {
|
|
code = pb.ErrorCode_SystemError
|
|
logrus.WithField("err", err).Error("Login")
|
|
return
|
|
}
|
|
|
|
//respone
|
|
for {
|
|
if cd, msg := p.connService.ReceiveMsg(); cd != pb.ErrorCode_Success {
|
|
code = cd
|
|
break
|
|
} else {
|
|
//suc
|
|
rsp = &pb.UserLoginResp{}
|
|
if msg.MainType == string(comm.ModuleUser) && msg.SubType == user.UserSubTypeLogin {
|
|
if !comm.ProtoUnmarshal(msg, rsp) {
|
|
code = pb.ErrorCode_PbError
|
|
return
|
|
}
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// create role
|
|
func (p *PttServiceImpl) CreateRole(nickName string) (code pb.ErrorCode, rsp *pb.UserCreateResp) {
|
|
head := &pb.UserMessage{MainType: string(comm.ModuleUser), SubType: user.UserSubTypeCreate}
|
|
head.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid)
|
|
if err := p.connService.SendMsg(head, &pb.UserCreateReq{
|
|
NickName: nickName,
|
|
}); err != nil {
|
|
code = pb.ErrorCode_SystemError
|
|
logrus.WithField("err", err).Error("CreateRole")
|
|
return
|
|
}
|
|
|
|
//response
|
|
// for {
|
|
// if cd, msg := p.connService.ReceiveMsg(); cd != pb.ErrorCode_Success {
|
|
// code = cd
|
|
// break
|
|
// } else {
|
|
// rsp = &pb.UserCreateResp{}
|
|
// if msg.MainType == string(comm.ModuleUser) && msg.SubType == user.UserSubTypeCreate {
|
|
// if !comm.ProtoUnmarshal(msg, rsp) {
|
|
// code = pb.ErrorCode_PbError
|
|
// return
|
|
// }
|
|
// logrus.
|
|
// WithFields(logrus.Fields{"nickname": nickName}).
|
|
// WithFields(logrus.Fields{"rsp": rsp.IsSucc}).
|
|
// Debug("response create role")
|
|
// break
|
|
// }
|
|
// }
|
|
// }
|
|
return
|
|
}
|