2026-07-22 18:36:49 +08:00

171 lines
4.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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
}