go_dreamfactory/cmd/v2/service/pttService.go
2022-08-25 19:22:51 +08:00

98 lines
2.4 KiB
Go

package service
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/modules/user"
"go_dreamfactory/pb"
"time"
"github.com/sirupsen/logrus"
"google.golang.org/protobuf/proto"
)
var (
ptt PttService
)
type PttService interface {
Login(sid, account string) (code pb.ErrorCode)
CreateRole(nickName string) (code pb.ErrorCode)
GetUser() *UserInfo
SetUser(dbUser *pb.DBUser, dbUserExpand *pb.DBUserExpand)
SendToClient(mainType, subType string, rsp proto.Message) error
}
type PttServiceImpl struct {
connService ConnService
user *UserInfo
obs observer.Observer
}
type UserInfo struct {
DbUser *pb.DBUser
DbUserExpand *pb.DBUserExpand
}
func NewPttService(connService ConnService, obs observer.Observer) PttService {
ptt = &PttServiceImpl{
connService: connService,
obs: obs,
}
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)
now := time.Now()
if err = p.connService.SendMsg(msg, rsp); err != nil {
logrus.WithField("err", err).Error(err)
return err
}
p.obs.Notify(observer.EVENT_RST, now)
return
}
// Login
func (p *PttServiceImpl) Login(sid, account string) (code pb.ErrorCode) {
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
}
return
}
// create role
func (p *PttServiceImpl) CreateRole(nickName string) (code pb.ErrorCode) {
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
}
return
}