package util import ( "encoding/json" "gim/pkg/logger" "gim/pkg/pb" jsoniter "github.com/json-iterator/go" "google.golang.org/protobuf/proto" "go.uber.org/zap" ) func JsonMarshal(v interface{}) string { bytes, err := json.Marshal(v) if err != nil { logger.Logger.Error("json序列化:", zap.Error(err)) } return Bytes2str(bytes) } func FormatMessage(messageType pb.MessageType, messageContent []byte) string { if messageType == pb.MessageType_MT_UNKNOWN { logger.Logger.Error("error message type") return "error message type" } var ( msg proto.Message err error ) switch messageType { case pb.MessageType_MT_TEXT: msg = &pb.Text{} err = proto.Unmarshal(messageContent, msg) case pb.MessageType_MT_FACE: msg = &pb.Text{} err = proto.Unmarshal(messageContent, msg) case pb.MessageType_MT_VOICE: msg = &pb.Text{} err = proto.Unmarshal(messageContent, msg) case pb.MessageType_MT_IMAGE: msg = &pb.Text{} err = proto.Unmarshal(messageContent, msg) case pb.MessageType_MT_FILE: msg = &pb.Text{} err = proto.Unmarshal(messageContent, msg) case pb.MessageType_MT_LOCATION: msg = &pb.Text{} err = proto.Unmarshal(messageContent, msg) case pb.MessageType_MT_COMMAND: msgCmd := &pb.Command{ Code: 0, Data: nil, } err = proto.Unmarshal(messageContent, msgCmd) if msgCmd.Code == int32(pb.PushCode_PC_ADD_FRIEND) { msg = &pb.AddFriendPush{} err = proto.Unmarshal(messageContent, msg) } case pb.MessageType_MT_CUSTOM: msg = &pb.Text{} err = proto.Unmarshal(messageContent, msg) } if err != nil { logger.Sugar.Error(err) return "" } bytes, err := jsoniter.Marshal(msg) if err != nil { logger.Sugar.Error(err) return "" } return Bytes2str(bytes) }