51 lines
2.1 KiB
Go
51 lines
2.1 KiB
Go
package vipconfig
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
|
|
activityv1 "hyapp.local/api/proto/activity/v1"
|
|
)
|
|
|
|
const vipGrantNoticeTitle = "System Gift"
|
|
|
|
func (h *Handler) createVIPGrantNotice(ctx context.Context, requestID string, appCode string, commandID string, targetUserID int64, level int32, transactionID string) error {
|
|
body := fmt.Sprintf("You received VIP%d.", level)
|
|
eventID := strings.TrimSpace(transactionID)
|
|
if eventID == "" {
|
|
eventID = strings.TrimSpace(commandID)
|
|
}
|
|
return h.createVIPSystemNotice(ctx, requestID, appCode, targetUserID, "vip_grant:"+eventID, "AdminVIPGranted", commandID, body)
|
|
}
|
|
|
|
func (h *Handler) createVIPTrialCardGrantNotice(ctx context.Context, requestID string, appCode string, commandID string, targetUserID int64, level int32, trialCardID string) error {
|
|
body := fmt.Sprintf("You received a VIP%d trial card.", level)
|
|
eventID := strings.TrimSpace(trialCardID)
|
|
if eventID == "" {
|
|
eventID = strings.TrimSpace(commandID)
|
|
}
|
|
return h.createVIPSystemNotice(ctx, requestID, appCode, targetUserID, "vip_trial_card_grant:"+eventID, "AdminVIPTrialCardGranted", commandID, body)
|
|
}
|
|
|
|
func (h *Handler) createVIPSystemNotice(ctx context.Context, requestID string, appCode string, targetUserID int64, producerEventID string, producerEventType string, aggregateID string, body string) error {
|
|
if h.activity == nil {
|
|
// Tests and isolated local handlers may omit integrations; the production constructor always wires activity-service.
|
|
return nil
|
|
}
|
|
_, err := h.activity.CreateInboxMessage(ctx, &activityv1.CreateInboxMessageRequest{
|
|
Meta: &activityv1.RequestMeta{RequestId: strings.TrimSpace(requestID), Caller: "admin-server", AppCode: strings.TrimSpace(appCode)},
|
|
TargetUserId: targetUserID,
|
|
Producer: "admin-server",
|
|
ProducerEventId: strings.TrimSpace(producerEventID),
|
|
ProducerEventType: producerEventType,
|
|
MessageType: "system",
|
|
AggregateType: "vip_grant",
|
|
AggregateId: strings.TrimSpace(aggregateID),
|
|
Title: vipGrantNoticeTitle,
|
|
Summary: body,
|
|
Body: body,
|
|
})
|
|
return err
|
|
}
|