171 lines
4.6 KiB
Go
171 lines
4.6 KiB
Go
// Package message defines the App message tab inbox domain owned by activity-service.
|
||
package message
|
||
|
||
const (
|
||
// SectionUser is sourced from Tencent IM SDK and never persisted by this service.
|
||
SectionUser = "user"
|
||
// SectionSystem stores account, wallet, room and application notifications.
|
||
SectionSystem = "system"
|
||
// SectionActivity stores activity, reward and operational campaign notifications.
|
||
SectionActivity = "activity"
|
||
|
||
SourceTencentIMSDK = "tencent_im_sdk"
|
||
SourceBackend = "backend"
|
||
|
||
StatusVisible = "visible"
|
||
StatusRecalled = "recalled"
|
||
StatusHidden = "hidden"
|
||
StatusExpired = "expired"
|
||
|
||
FanoutStatusPending = "pending"
|
||
FanoutStatusRunning = "running"
|
||
FanoutStatusRetrying = "retrying"
|
||
FanoutStatusFailed = "failed"
|
||
FanoutStatusComplete = "completed"
|
||
|
||
TargetScopeSingleUser = "single_user"
|
||
TargetScopeUserIDs = "user_ids"
|
||
TargetScopeRegion = "region"
|
||
TargetScopeCountry = "country"
|
||
TargetScopeAllActiveUsers = "all_active_users"
|
||
TargetScopeAllRegistered = "all_registered_users"
|
||
)
|
||
|
||
// TabSection is the message tab summary returned to App clients.
|
||
type TabSection struct {
|
||
Section string
|
||
Title string
|
||
UnreadCount int64
|
||
Source string
|
||
}
|
||
|
||
// InboxMessage is the user-visible snapshot stored in user_inbox_messages.
|
||
type InboxMessage struct {
|
||
AppCode string
|
||
MessageID string
|
||
UserID int64
|
||
MessageType string
|
||
Producer string
|
||
ProducerEventID string
|
||
ProducerEventType string
|
||
AggregateType string
|
||
AggregateID string
|
||
TemplateID string
|
||
TemplateVersion string
|
||
Title string
|
||
Summary string
|
||
Body string
|
||
IconURL string
|
||
ImageURL string
|
||
// ImageURLs 是一张通知卡片内的有序图片列表;ImageURL 保留首图兼容旧客户端。
|
||
ImageURLs []string
|
||
ActionType string
|
||
ActionParam string
|
||
Priority int32
|
||
Status string
|
||
ReadAtMS int64
|
||
DeletedAtMS int64
|
||
SentAtMS int64
|
||
ExpireAtMS int64
|
||
MetadataJSON string
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// Read reports whether the user has marked the message as read.
|
||
func (m InboxMessage) Read() bool {
|
||
return m.ReadAtMS > 0
|
||
}
|
||
|
||
// MessageTemplate is an active server-owned content template snapshot source.
|
||
type MessageTemplate struct {
|
||
AppCode string
|
||
TemplateID string
|
||
TemplateVersion string
|
||
MessageType string
|
||
Locale string
|
||
Title string
|
||
Summary string
|
||
Body string
|
||
IconURL string
|
||
ImageURL string
|
||
ActionType string
|
||
ActionParam string
|
||
Status string
|
||
CreatedBy string
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// ListQuery is the stable cursor query for system/activity inbox lists.
|
||
type ListQuery struct {
|
||
UserID int64
|
||
Section string
|
||
Limit int
|
||
CursorSentAtMS int64
|
||
CursorMessageID string
|
||
NowMS int64
|
||
}
|
||
|
||
// CreateInput carries a validated single-user inbox creation command.
|
||
type CreateInput struct {
|
||
TargetUserID int64
|
||
Producer string
|
||
ProducerEventID string
|
||
ProducerEventType string
|
||
MessageType string
|
||
AggregateType string
|
||
AggregateID string
|
||
TemplateID string
|
||
TemplateVersion string
|
||
Title string
|
||
Summary string
|
||
Body string
|
||
IconURL string
|
||
ImageURL string
|
||
// ImageURLs 会由 service 写入受控 metadata 快照,MySQL 继续使用现有 JSON 列持久化。
|
||
ImageURLs []string
|
||
ActionType string
|
||
ActionParam string
|
||
Priority int32
|
||
SentAtMS int64
|
||
ExpireAtMS int64
|
||
MetadataJSON string
|
||
}
|
||
|
||
// FanoutJob stores a background fanout command without executing user selection in the request path.
|
||
type FanoutJob struct {
|
||
AppCode string
|
||
JobID string
|
||
CommandID string
|
||
MessageType string
|
||
TargetScope string
|
||
TargetFilterJSON string
|
||
TemplateSnapshotJSON string
|
||
Status string
|
||
AttemptCount int32
|
||
CursorUserID int64
|
||
TotalCount int64
|
||
SuccessCount int64
|
||
FailureCount int64
|
||
BatchSize int32
|
||
NextRunAtMS int64
|
||
LockedBy string
|
||
LockedUntilMS int64
|
||
ErrorMessage string
|
||
CreatedBy string
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// CreateFanoutInput is the validated admin or producer command for fanout job creation.
|
||
type CreateFanoutInput struct {
|
||
CommandID string
|
||
MessageType string
|
||
TargetScope string
|
||
TargetFilterJSON string
|
||
TemplateSnapshotJSON string
|
||
BatchSize int32
|
||
CreatedBy string
|
||
}
|