187 lines
9.3 KiB
Go
187 lines
9.3 KiB
Go
// Copyright © 2023 OpenIM. All rights reserved.
|
||
//
|
||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
// you may not use this file except in compliance with the License.
|
||
// You may obtain a copy of the License at
|
||
//
|
||
// http://www.apache.org/licenses/LICENSE-2.0
|
||
//
|
||
// Unless required by applicable law or agreed to in writing, software
|
||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
// See the License for the specific language governing permissions and
|
||
// limitations under the License.
|
||
|
||
package apistruct
|
||
|
||
import "git.imall.cloud/openim/protocol/sdkws"
|
||
|
||
type PictureBaseInfo struct {
|
||
UUID string `mapstructure:"uuid"`
|
||
Type string `mapstructure:"type" validate:"required"`
|
||
Size int64 `mapstructure:"size"`
|
||
Width int32 `mapstructure:"width" validate:"required"`
|
||
Height int32 `mapstructure:"height" validate:"required"`
|
||
Url string `mapstructure:"url" validate:"required"`
|
||
}
|
||
|
||
type PictureElem struct {
|
||
SourcePath string `mapstructure:"sourcePath"`
|
||
SourcePicture PictureBaseInfo `mapstructure:"sourcePicture" validate:"required"`
|
||
BigPicture PictureBaseInfo `mapstructure:"bigPicture" validate:"required"`
|
||
SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture" validate:"required"`
|
||
}
|
||
|
||
type SoundElem struct {
|
||
UUID string `mapstructure:"uuid"`
|
||
SoundPath string `mapstructure:"soundPath"`
|
||
SourceURL string `mapstructure:"sourceUrl" validate:"required"`
|
||
DataSize int64 `mapstructure:"dataSize"`
|
||
Duration int64 `mapstructure:"duration" validate:"required,min=1"`
|
||
}
|
||
|
||
type VideoElem struct {
|
||
VideoPath string `mapstructure:"videoPath"`
|
||
VideoUUID string `mapstructure:"videoUUID"`
|
||
VideoURL string `mapstructure:"videoUrl" validate:"required"`
|
||
VideoType string `mapstructure:"videoType" validate:"required"`
|
||
VideoSize int64 `mapstructure:"videoSize" validate:"required"`
|
||
Duration int64 `mapstructure:"duration" validate:"required"`
|
||
SnapshotPath string `mapstructure:"snapshotPath"`
|
||
SnapshotUUID string `mapstructure:"snapshotUUID"`
|
||
SnapshotSize int64 `mapstructure:"snapshotSize"`
|
||
SnapshotURL string `mapstructure:"snapshotUrl" validate:"required"`
|
||
SnapshotWidth int32 `mapstructure:"snapshotWidth" validate:"required"`
|
||
SnapshotHeight int32 `mapstructure:"snapshotHeight" validate:"required"`
|
||
}
|
||
|
||
type FileElem struct {
|
||
FilePath string `mapstructure:"filePath"`
|
||
UUID string `mapstructure:"uuid"`
|
||
SourceURL string `mapstructure:"sourceUrl" validate:"required"`
|
||
FileName string `mapstructure:"fileName" validate:"required"`
|
||
FileSize int64 `mapstructure:"fileSize" validate:"required"`
|
||
}
|
||
type AtElem struct {
|
||
Text string `mapstructure:"text"`
|
||
AtUserList []string `mapstructure:"atUserList" validate:"required,max=1000"`
|
||
AtUsersInfo []*AtInfo `json:"atUsersInfo"`
|
||
QuoteMessage *MsgStruct `json:"quoteMessage"`
|
||
IsAtSelf bool `mapstructure:"isAtSelf"`
|
||
}
|
||
type LocationElem struct {
|
||
Description string `mapstructure:"description"`
|
||
Longitude float64 `mapstructure:"longitude" validate:"required"`
|
||
Latitude float64 `mapstructure:"latitude" validate:"required"`
|
||
}
|
||
|
||
type CustomElem struct {
|
||
Data string `mapstructure:"data" validate:"required"`
|
||
Description string `mapstructure:"description"`
|
||
Extension string `mapstructure:"extension"`
|
||
}
|
||
|
||
type TextElem struct {
|
||
Content string `json:"content" validate:"required"`
|
||
}
|
||
|
||
type MarkdownTextElem struct {
|
||
Content string `mapstructure:"content" validate:"required"`
|
||
}
|
||
|
||
type StreamMsgElem struct {
|
||
Type string `mapstructure:"type" validate:"required"`
|
||
Content string `mapstructure:"content" validate:"required"`
|
||
}
|
||
|
||
type RevokeElem struct {
|
||
RevokeMsgClientID string `mapstructure:"revokeMsgClientID" validate:"required"`
|
||
}
|
||
|
||
type QuoteElem struct {
|
||
Text string `json:"text,omitempty"`
|
||
QuoteMessage *MsgStruct `json:"quoteMessage,omitempty"`
|
||
}
|
||
|
||
type OANotificationElem struct {
|
||
NotificationName string `mapstructure:"notificationName" json:"notificationName" validate:"required"`
|
||
NotificationFaceURL string `mapstructure:"notificationFaceURL" json:"notificationFaceURL"`
|
||
NotificationType int32 `mapstructure:"notificationType" json:"notificationType" validate:"required"`
|
||
Text string `mapstructure:"text" json:"text" validate:"required"`
|
||
Url string `mapstructure:"url" json:"url"`
|
||
MixType int32 `mapstructure:"mixType" json:"mixType" validate:"gte=0,lte=5"`
|
||
PictureElem *PictureElem `mapstructure:"pictureElem" json:"pictureElem"`
|
||
SoundElem *SoundElem `mapstructure:"soundElem" json:"soundElem"`
|
||
VideoElem *VideoElem `mapstructure:"videoElem" json:"videoElem"`
|
||
FileElem *FileElem `mapstructure:"fileElem" json:"fileElem"`
|
||
Ex string `mapstructure:"ex" json:"ex"`
|
||
}
|
||
|
||
type MessageRevoked struct {
|
||
RevokerID string `mapstructure:"revokerID" json:"revokerID" validate:"required"`
|
||
RevokerRole int32 `mapstructure:"revokerRole" json:"revokerRole" validate:"required"`
|
||
ClientMsgID string `mapstructure:"clientMsgID" json:"clientMsgID" validate:"required"`
|
||
RevokerNickname string `mapstructure:"revokerNickname" json:"revokerNickname"`
|
||
SessionType int32 `mapstructure:"sessionType" json:"sessionType" validate:"required"`
|
||
Seq uint32 `mapstructure:"seq" json:"seq" validate:"required"`
|
||
}
|
||
|
||
type MsgStruct struct {
|
||
ClientMsgID string `json:"clientMsgID,omitempty"`
|
||
ServerMsgID string `json:"serverMsgID,omitempty"`
|
||
CreateTime int64 `json:"createTime"`
|
||
SendTime int64 `json:"sendTime"`
|
||
SessionType int32 `json:"sessionType"`
|
||
SendID string `json:"sendID,omitempty"`
|
||
RecvID string `json:"recvID,omitempty"`
|
||
MsgFrom int32 `json:"msgFrom"`
|
||
ContentType int32 `json:"contentType"`
|
||
SenderPlatformID int32 `json:"senderPlatformID"`
|
||
SenderNickname string `json:"senderNickname,omitempty"`
|
||
SenderFaceURL string `json:"senderFaceUrl,omitempty"`
|
||
GroupID string `json:"groupID,omitempty"`
|
||
Content string `json:"content,omitempty"`
|
||
Seq int64 `json:"seq"`
|
||
IsRead bool `json:"isRead"`
|
||
Status int32 `json:"status"`
|
||
IsReact bool `json:"isReact,omitempty"`
|
||
IsExternalExtensions bool `json:"isExternalExtensions,omitempty"`
|
||
OfflinePush *sdkws.OfflinePushInfo `json:"offlinePush,omitempty"`
|
||
AttachedInfo string `json:"attachedInfo,omitempty"`
|
||
Ex string `json:"ex,omitempty"`
|
||
LocalEx string `json:"localEx,omitempty"`
|
||
TextElem *TextElem `json:"textElem,omitempty"`
|
||
PictureElem *PictureElem `json:"pictureElem,omitempty"`
|
||
SoundElem *SoundElem `json:"soundElem,omitempty"`
|
||
VideoElem *VideoElem `json:"videoElem,omitempty"`
|
||
FileElem *FileElem `json:"fileElem,omitempty"`
|
||
AtTextElem *AtElem `json:"atTextElem,omitempty"`
|
||
LocationElem *LocationElem `json:"locationElem,omitempty"`
|
||
CustomElem *CustomElem `json:"customElem,omitempty"`
|
||
QuoteElem *QuoteElem `json:"quoteElem,omitempty"`
|
||
}
|
||
|
||
type AtInfo struct {
|
||
AtUserID string `json:"atUserID,omitempty"`
|
||
GroupNickname string `json:"groupNickname,omitempty"`
|
||
}
|
||
|
||
// RedPacketReceiveInfo 红包领取信息(已领取时返回)
|
||
type RedPacketReceiveInfo struct {
|
||
Amount int64 `json:"amount"` // 领取金额(分)
|
||
ReceiveTime int64 `json:"receiveTime"` // 领取时间戳(毫秒)
|
||
IsLucky bool `json:"isLucky"` // 是否为手气最佳(仅拼手气红包有效)
|
||
}
|
||
|
||
// RedPacketElem 红包消息元素
|
||
type RedPacketElem struct {
|
||
RedPacketID string `json:"redPacketID" validate:"required"` // 红包ID
|
||
RedPacketType int32 `json:"redPacketType" validate:"required"` // 红包类型:1-普通红包,2-拼手气红包
|
||
Blessing string `json:"blessing"` // 祝福语
|
||
IsReceived bool `json:"isReceived"` // 当前用户是否已领取
|
||
ReceiveInfo *RedPacketReceiveInfo `json:"receiveInfo,omitempty"` // 领取信息(已领取时返回,包含金额)
|
||
Status int32 `json:"status"` // 红包状态:0-进行中,1-已领完,2-已过期
|
||
IsExpired bool `json:"isExpired"` // 是否已过期
|
||
IsFinished bool `json:"isFinished"` // 是否已领完
|
||
}
|