68 lines
2.5 KiB
Go
68 lines
2.5 KiB
Go
package app
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"hyapp/pkg/appcode"
|
|
"hyapp/pkg/usermq"
|
|
inviteactivitydomain "hyapp/services/activity-service/internal/domain/inviteactivity"
|
|
)
|
|
|
|
func inviteActivityValidInviteEventFromUserMessage(body []byte) (inviteactivitydomain.ValidInviteEvent, bool, error) {
|
|
message, err := usermq.DecodeUserOutboxMessage(body)
|
|
if err != nil {
|
|
return inviteactivitydomain.ValidInviteEvent{}, false, err
|
|
}
|
|
if message.EventType != inviteactivitydomain.EventTypeUserInviteBecameValid {
|
|
return inviteactivitydomain.ValidInviteEvent{}, false, nil
|
|
}
|
|
var decoded map[string]any
|
|
if err := json.Unmarshal([]byte(message.PayloadJSON), &decoded); err != nil || decoded == nil {
|
|
decoded = map[string]any{}
|
|
}
|
|
invitedUserID := firstNonZeroInt64(int64FromDecoded(decoded, "invited_user_id"), message.AggregateID)
|
|
inviterUserID := int64FromDecoded(decoded, "inviter_user_id")
|
|
if invitedUserID <= 0 || inviterUserID <= 0 {
|
|
return inviteactivitydomain.ValidInviteEvent{}, false, nil
|
|
}
|
|
return inviteactivitydomain.ValidInviteEvent{
|
|
AppCode: appcode.Normalize(message.AppCode),
|
|
EventID: message.EventID,
|
|
EventType: message.EventType,
|
|
InviterUserID: inviterUserID,
|
|
InvitedUserID: invitedUserID,
|
|
PayloadJSON: message.PayloadJSON,
|
|
OccurredAtMS: message.OccurredAtMS,
|
|
}, true, nil
|
|
}
|
|
|
|
func inviteActivityInviteEventFromUserMessage(body []byte) (inviteactivitydomain.InviteEvent, bool, error) {
|
|
message, err := usermq.DecodeUserOutboxMessage(body)
|
|
if err != nil {
|
|
return inviteactivitydomain.InviteEvent{}, false, err
|
|
}
|
|
if message.EventType != inviteactivitydomain.EventTypeUserInvited {
|
|
return inviteactivitydomain.InviteEvent{}, false, nil
|
|
}
|
|
var decoded map[string]any
|
|
if err := json.Unmarshal([]byte(message.PayloadJSON), &decoded); err != nil || decoded == nil {
|
|
decoded = map[string]any{}
|
|
}
|
|
invitedUserID := firstNonZeroInt64(int64FromDecoded(decoded, "invited_user_id"), message.AggregateID)
|
|
inviterUserID := int64FromDecoded(decoded, "inviter_user_id")
|
|
if invitedUserID <= 0 || inviterUserID <= 0 {
|
|
return inviteactivitydomain.InviteEvent{}, false, nil
|
|
}
|
|
return inviteactivitydomain.InviteEvent{
|
|
AppCode: appcode.Normalize(message.AppCode),
|
|
EventID: message.EventID,
|
|
EventType: message.EventType,
|
|
InviterUserID: inviterUserID,
|
|
InvitedUserID: invitedUserID,
|
|
InviteCode: stringFromDecoded(decoded, "invite_code"),
|
|
Source: stringFromDecoded(decoded, "source"),
|
|
PayloadJSON: message.PayloadJSON,
|
|
OccurredAtMS: message.OccurredAtMS,
|
|
}, true, nil
|
|
}
|