refactor: rename PURCHASE to PURCHASE_PACKAGE in transaction types

This commit is contained in:
javayhu 2025-07-10 22:52:26 +08:00
parent de1ccca27b
commit 59c7c807db
4 changed files with 25 additions and 34 deletions

View File

@ -46,15 +46,17 @@ import {
} from '@tanstack/react-table';
import {
ArrowUpDownIcon,
BanknoteIcon,
ChevronDownIcon,
ChevronLeftIcon,
ChevronRightIcon,
ChevronsLeftIcon,
ChevronsRightIcon,
ClockIcon,
CoinsIcon,
GemIcon,
GiftIcon,
MinusCircleIcon,
RefreshCwIcon,
HandCoinsIcon,
ShoppingCartIcon,
} from 'lucide-react';
import { useTranslations } from 'next-intl';
@ -156,19 +158,19 @@ export function CreditTransactionsTable({
const getTransactionTypeIcon = (type: string) => {
switch (type) {
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
return <RefreshCwIcon className="h-4 w-4" />;
return <HandCoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return <GiftIcon className="h-4 w-4" />;
case CREDIT_TRANSACTION_TYPE.PURCHASE:
return <ShoppingCartIcon className="h-4 w-4" />;
return <GiftIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return <ShoppingCartIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.USAGE:
return <MinusCircleIcon className="h-4 w-4" />;
return <CoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.EXPIRE:
return <ClockIcon className="h-4 w-4" />;
return <ClockIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
return <RefreshCwIcon className="h-4 w-4" />;
return <BanknoteIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return <GiftIcon className="h-4 w-4" />;
return <GemIcon className="h-5 w-5" />;
default:
return null;
}
@ -177,12 +179,6 @@ export function CreditTransactionsTable({
// Get transaction type badge variant
const getTransactionTypeBadgeVariant = (type: string) => {
switch (type) {
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
case CREDIT_TRANSACTION_TYPE.PURCHASE:
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return 'outline' as const;
case CREDIT_TRANSACTION_TYPE.USAGE:
case CREDIT_TRANSACTION_TYPE.EXPIRE:
return 'destructive' as const;
@ -198,7 +194,7 @@ export function CreditTransactionsTable({
return t('types.MONTHLY_REFRESH');
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return t('types.REGISTER_GIFT');
case CREDIT_TRANSACTION_TYPE.PURCHASE:
case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return t('types.PURCHASE');
case CREDIT_TRANSACTION_TYPE.USAGE:
return t('types.USAGE');

View File

@ -4,7 +4,6 @@ import {
Drawer,
DrawerClose,
DrawerContent,
DrawerDescription,
DrawerFooter,
DrawerHeader,
DrawerTitle,
@ -14,10 +13,12 @@ import { Separator } from '@/components/ui/separator';
import { useIsMobile } from '@/hooks/use-mobile';
import { formatDate } from '@/lib/formatter';
import {
BanknoteIcon,
ClockIcon,
CoinsIcon,
GemIcon,
GiftIcon,
MinusCircleIcon,
RefreshCwIcon,
HandCoinsIcon,
ShoppingCartIcon,
} from 'lucide-react';
import { useTranslations } from 'next-intl';
@ -51,19 +52,19 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
const getTransactionTypeIcon = (type: string) => {
switch (type) {
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
return <RefreshCwIcon className="h-5 w-5" />;
return <HandCoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return <GiftIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.PURCHASE:
case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return <ShoppingCartIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.USAGE:
return <MinusCircleIcon className="h-5 w-5" />;
return <CoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.EXPIRE:
return <ClockIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
return <RefreshCwIcon className="h-5 w-5" />;
return <BanknoteIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return <GiftIcon className="h-5 w-5" />;
return <GemIcon className="h-5 w-5" />;
default:
return null;
}
@ -72,12 +73,6 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
// Get transaction type badge variant
const getTransactionTypeBadgeVariant = (type: string) => {
switch (type) {
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
case CREDIT_TRANSACTION_TYPE.PURCHASE:
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return 'outline' as const;
case CREDIT_TRANSACTION_TYPE.USAGE:
case CREDIT_TRANSACTION_TYPE.EXPIRE:
return 'destructive' as const;
@ -93,7 +88,7 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
return t('types.MONTHLY_REFRESH');
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return t('types.REGISTER_GIFT');
case CREDIT_TRANSACTION_TYPE.PURCHASE:
case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return t('types.PURCHASE');
case CREDIT_TRANSACTION_TYPE.USAGE:
return t('types.USAGE');

View File

@ -4,7 +4,7 @@
export enum CREDIT_TRANSACTION_TYPE {
MONTHLY_REFRESH = 'MONTHLY_REFRESH', // Credits earned by monthly refresh (free users)
REGISTER_GIFT = 'REGISTER_GIFT', // Credits earned by register gift
PURCHASE = 'PURCHASE', // Credits earned by purchase
PURCHASE_PACKAGE = 'PURCHASE_PACKAGE', // Credits earned by purchase package
SUBSCRIPTION_RENEWAL = 'SUBSCRIPTION_RENEWAL', // Credits earned by subscription renewal
LIFETIME_MONTHLY = 'LIFETIME_MONTHLY', // Credits earned by lifetime plan monthly distribution
USAGE = 'USAGE', // Credits spent by usage

View File

@ -827,7 +827,7 @@ export class StripeProvider implements PaymentProvider {
await addCredits({
userId,
amount: Number.parseInt(credits),
type: CREDIT_TRANSACTION_TYPE.PURCHASE,
type: CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE,
description: `+${credits} credits for package ${packageId} ($${amount.toLocaleString()})`,
paymentId: session.id,
expireDays: creditPackage.expireDays,