feat: 支持分享邀请好友功能

This commit is contained in:
richarjiang
2026-04-19 14:12:25 +08:00
parent b02f38dcc7
commit 9575210b06
34 changed files with 1101 additions and 8 deletions

View File

@@ -59,6 +59,13 @@ export enum FlashSaleOrderStatus {
EXPIRED = 'EXPIRED',
}
// ===== Invite =====
export enum InviteReferralStatus {
REGISTERED = 'REGISTERED',
TRIAL_PURCHASED = 'TRIAL_PURCHASED',
QUALIFIED = 'QUALIFIED',
}
// ===== Subscribe Message =====
export enum SubscriptionMessageScene {
ORDER_PAID = 'ORDER_PAID',

View File

@@ -9,6 +9,7 @@ export {
OrderStatus,
FlashSaleStatus,
FlashSaleOrderStatus,
InviteReferralStatus,
SubscriptionMessageScene,
} from './enums'
@@ -72,6 +73,9 @@ export type {
CreateFlashSaleDto,
UpdateFlashSaleDto,
FlashSalePurchaseResponse,
InviteActivityReferral,
InviteRewardGrantRecord,
InviteActivitySummary,
SubscriptionMessageRequestResult,
SubscriptionMessageRequestItem,
SubscriptionMessageTemplate,

View File

@@ -30,4 +30,9 @@ export type {
UpdateFlashSaleDto,
FlashSalePurchaseResponse,
} from './flash-sale'
export type {
InviteActivityReferral,
InviteRewardGrantRecord,
InviteActivitySummary,
} from './invite'
export { FlashSalePhase } from './flash-sale'

View File

@@ -0,0 +1,36 @@
import { InviteReferralStatus } from '../enums'
export interface InviteActivityReferral {
readonly id: string
readonly inviteeId: string
readonly inviteeNickname: string
readonly inviteeAvatarUrl: string | null
readonly status: InviteReferralStatus
readonly invitedAt: string
readonly trialPurchasedAt: string | null
readonly qualifiedAt: string | null
}
export interface InviteRewardGrantRecord {
readonly id: string
readonly membershipId: string | null
readonly qualifiedReferralCount: number
readonly rewardTimes: number
readonly grantedAt: string
}
export interface InviteActivitySummary {
readonly inviterId: string
readonly canInvite: boolean
readonly sharePath: string
readonly rewardRuleInvitesRequired: number
readonly rewardRuleTimes: number
readonly qualifiedInviteCount: number
readonly rewardedTimes: number
readonly pendingRewardGrantCount: number
readonly pendingInviteCount: number
readonly currentCycleQualifiedCount: number
readonly nextRewardRemainingCount: number
readonly referrals: readonly InviteActivityReferral[]
readonly rewardGrants: readonly InviteRewardGrantRecord[]
}

View File

@@ -26,6 +26,7 @@ export interface OrderWithDetails extends Order {
export interface CreateOrderDto {
readonly cardTypeId: string
readonly inviterId?: string
}
export interface PaymentParams {

View File

@@ -20,6 +20,7 @@ export interface UserProfileResponse {
readonly avatarUrl: string | null
readonly role: UserRole
readonly activeMembershipCount: number
readonly inviteShareEligible: boolean
readonly adminBookingSubscriptionCount: number
readonly subscriptionMessageTemplates: SubscriptionMessageTemplateConfig
readonly createdAt: string