From 7223f11afbb5c28b5709cb6ae5b5f3d4e89fe0eb Mon Sep 17 00:00:00 2001 From: zhaocy Date: Wed, 8 Jun 2022 10:32:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9C=BA=E5=99=A8=E4=BA=BA?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=BE=93=E5=85=A5=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/robot/friend.go | 33 +++++++++++++++++++++++++++ cmd/robot/login.go | 24 ++++++++----------- cmd/robot/robot.go | 43 +++++++++++++++++++++++------------ cmd/robot/user.go | 40 +++++++++++++++----------------- modules/friend/friend_comp.go | 2 ++ 5 files changed, 91 insertions(+), 51 deletions(-) create mode 100644 cmd/robot/friend.go diff --git a/cmd/robot/friend.go b/cmd/robot/friend.go new file mode 100644 index 000000000..14b28ce76 --- /dev/null +++ b/cmd/robot/friend.go @@ -0,0 +1,33 @@ +package robot + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + "log" +) + +func (r *Robot) handleFriendMsg(msg *pb.UserMessage) { + switch msg.SubType { + case "add": + r.handleFriendAdd(msg) + } +} + +//添加好友 +func (r *Robot) FriendAdd() { + req := &pb.FriendAddReq{} + head := &pb.UserMessage{MainType: "friend", SubType: "add"} + defer traceFunc(head.MainType, head.SubType, r.user.UserData.GetUserId(), req) + err := r.SendToClient(head, req) + if err != nil { + log.Fatal(err) + } +} + +func (r *Robot) handleFriendAdd(msg *pb.UserMessage) { + rsp := &pb.FriendAddRsp{} + if !comm.ProtoDecode(msg, rsp) { + return + } + printReply(msg, rsp) +} diff --git a/cmd/robot/login.go b/cmd/robot/login.go index e6e6988b6..97d7f79e3 100644 --- a/cmd/robot/login.go +++ b/cmd/robot/login.go @@ -2,7 +2,6 @@ package robot import ( "fmt" - "go_dreamfactory/comm" "go_dreamfactory/pb" "go_dreamfactory/utils" "log" @@ -10,7 +9,6 @@ import ( jsoniter "github.com/json-iterator/go" "github.com/nacos-group/nacos-sdk-go/util" - "google.golang.org/protobuf/proto" ) type LoginParam struct { @@ -21,14 +19,14 @@ type LoginParam struct { func (r *Robot) BuildSecStr() string { jsonByte, _ := jsoniter.Marshal(&LoginParam{ - Account: r.Opts.Account, - ServerId: r.Opts.ServerId, + Account: r.opts.Account, + ServerId: r.opts.ServerId, TimeStamp: time.Now().Unix(), }) jsonBase64 := utils.Base64Encode(jsonByte) - log.Printf("client base64:%s", jsonBase64) + // log.Printf("client base64:%s", jsonBase64) clientMd5key := util.Md5(jsonBase64) - log.Printf("client md5:%s", clientMd5key) + // log.Printf("client md5:%s", clientMd5key) return fmt.Sprintf("CE:%s%s", clientMd5key, jsonBase64) } @@ -36,7 +34,7 @@ func (r *Robot) BuildSecStr() string { func (r *Robot) AccountLogin() { //登录 sec := r.BuildSecStr() - log.Printf("client secret key:%s", sec) + // log.Printf("client secret key:%s", sec) loginReg := &pb.UserLoginReq{ Sec: sec, } @@ -45,13 +43,11 @@ func (r *Robot) AccountLogin() { MainType: "user", SubType: "login", } - if comm.ProtoEncode(loginReg, head) { - data, _ := proto.Marshal(head) - err := r.SendToClient(data) - if err != nil { - log.Fatalf("send err:%v", err) - } + defer traceFunc(head.MainType, head.SubType, "0", loginReg) + err := r.SendToClient(head, loginReg) + if err != nil { + log.Fatalf("send err:%v", err) } - log.Printf("%s login ", r.Opts.Account) + log.Printf("account:[%s] login...", r.opts.Account) } diff --git a/cmd/robot/robot.go b/cmd/robot/robot.go index a1977c903..7abb4c52e 100644 --- a/cmd/robot/robot.go +++ b/cmd/robot/robot.go @@ -9,14 +9,15 @@ import ( "log" "net/http" - "github.com/golang/protobuf/proto" "github.com/gorilla/websocket" jsoniter "github.com/json-iterator/go" + "google.golang.org/protobuf/proto" ) type Robot struct { ws *websocket.Conn - Opts *Options + opts *Options + user *pb.Cache_UserData } func NewRobot(opts *Options) *Robot { @@ -26,7 +27,7 @@ func NewRobot(opts *Options) *Robot { } r := &Robot{ ws: ws, - Opts: opts, + opts: opts, } return r @@ -34,9 +35,9 @@ func NewRobot(opts *Options) *Robot { func (r *Robot) Run() { log.Print("Robot running...") - log.Printf("websocket %s \n", r.Opts.WsUrl) + log.Printf("websocket %s \n", r.opts.WsUrl) - if r.Opts.Create { //创建新用户 + if r.opts.Create { //创建新用户 r.AccountRegister() } else { r.AccountLogin() @@ -63,10 +64,11 @@ func (r *Robot) Run() { //模块处理 func (r *Robot) handleMsg(msg *pb.UserMessage) { - log.Printf("route: %s.%s", msg.MainType, msg.SubType) switch msg.MainType { case "user": r.handleUserMsg(msg) + case "friend": + r.handleFriendMsg(msg) default: log.Fatal("module route no exist") } @@ -76,11 +78,16 @@ func (r *Robot) handleMsg(msg *pb.UserMessage) { func (r *Robot) onUserLoaded() { //user r.CreateUser("user671") - + //friend + r.FriendAdd() } -func (r *Robot) SendToClient(data []byte) error { - return r.ws.WriteMessage(websocket.BinaryMessage, data) +func (r *Robot) SendToClient(msg *pb.UserMessage, rsp proto.Message) error { + if comm.ProtoEncode(rsp, msg) { + data, _ := proto.Marshal(msg) + return r.ws.WriteMessage(websocket.BinaryMessage, data) + } + return nil } //注册账号 @@ -88,7 +95,7 @@ func (r *Robot) AccountRegister() { //http regReq := &pb.UserRegisterReq{} jsonByte, _ := json.Marshal(regReq) - req, err := http.NewRequest("POST", r.Opts.RegUrl, bytes.NewReader(jsonByte)) + req, err := http.NewRequest("POST", r.opts.RegUrl, bytes.NewReader(jsonByte)) if err != nil { log.Fatalf("account register err %v", err) } @@ -115,12 +122,18 @@ func (r *Robot) AccountRegister() { MainType: "user", SubType: "login", } - if comm.ProtoEncode(loginReg, head) { - err = r.SendToClient(head.Data) - if err != nil { - log.Fatal(err) - } + err = r.SendToClient(head, loginReg) + if err != nil { + log.Fatal(err) } } } + +func printReply(msg *pb.UserMessage, rsp interface{}) { + log.Printf("rsp [%s.%s] [%d] [%v]", msg.MainType, msg.SubType, msg.Code, rsp) +} + +func traceFunc(module string, funcName string, uid string, funcArgs interface{}) { + log.Printf("req [%s.%s] [%s] [%v]", module, funcName, uid, funcArgs) +} diff --git a/cmd/robot/user.go b/cmd/robot/user.go index 0d9da8e52..e8883c0a5 100644 --- a/cmd/robot/user.go +++ b/cmd/robot/user.go @@ -4,45 +4,36 @@ import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "log" - - "google.golang.org/protobuf/proto" ) func (r *Robot) handleUserMsg(msg *pb.UserMessage) { switch msg.SubType { case "login": - handleLogin(r, msg) + r.handleLogin(msg) case "create": - handleCreateUser(r, msg) + r.handleCreateUser(msg) } } //处理登录响应数据 -func handleLogin(r *Robot, msg *pb.UserMessage) { +func (r *Robot) handleLogin(msg *pb.UserMessage) { rsp := &pb.UserLoginResp{} if !comm.ProtoDecode(msg, rsp) { return } - log.Printf("登录返回: %v", rsp) + printReply(msg, rsp) //是否有登录数据返回 if rsp != nil { + r.user = rsp.Data r.onUserLoaded() } else { r.AccountRegister() //请求Http接口,模拟创建新账号 } } -func handleCreateUser(r *Robot, msg *pb.UserMessage) { - rsp := &pb.UserCreateRsp{} - if !comm.ProtoDecode(msg, rsp) { - return - } - log.Printf("创角返回: %v", rsp) -} - -//创角色 +//创角 func (r *Robot) CreateUser(NickName string) { req := &pb.UserCreateReq{ NickName: NickName, @@ -53,12 +44,17 @@ func (r *Robot) CreateUser(NickName string) { SubType: "create", } - if comm.ProtoEncode(req, head) { - data, _ := proto.Marshal(head) - err := r.SendToClient(data) - if err != nil { - log.Fatal(err) - } + defer traceFunc(head.MainType, head.SubType, r.user.UserData.GetUserId(), req) + err := r.SendToClient(head, req) + if err != nil { + log.Fatal(err) } - +} + +func (r *Robot) handleCreateUser(msg *pb.UserMessage) { + rsp := &pb.UserCreateRsp{} + if !comm.ProtoDecode(msg, rsp) { + return + } + printReply(msg, rsp) } diff --git a/modules/friend/friend_comp.go b/modules/friend/friend_comp.go index b7b51d720..1823a62c7 100644 --- a/modules/friend/friend_comp.go +++ b/modules/friend/friend_comp.go @@ -3,6 +3,7 @@ package friend import ( "context" "go_dreamfactory/comm" + "go_dreamfactory/lego/sys/log" "go_dreamfactory/modules" "go_dreamfactory/pb" ) @@ -18,6 +19,7 @@ func (this *FriendComp) Search(ctx context.Context, session comm.IUserSession, r //添加好友 func (this *FriendComp) Add(ctx context.Context, session comm.IUserSession, req *pb.FriendAddReq) error { + log.Debug("add") return nil }