Files
rent/apps/server/src/entities/mkt-cashback.entity.ts
T
2026-04-24 18:17:21 +08:00

75 lines
2.2 KiB
TypeScript

import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, Index, ManyToOne, JoinColumn } from 'typeorm';
import { User } from './user.entity';
import { Order } from './order.entity';
import { MktActivity } from './mkt-activity.entity';
export type CashbackStatus = 'pending' | 'settled' | 'cancelled';
@Entity('mkt_cashbacks')
export class MktCashback {
@PrimaryGeneratedColumn({ type: 'bigint', unsigned: true })
id: number;
@Index()
@Column({ name: 'activity_id', type: 'bigint', unsigned: true, comment: '活动ID' })
activityId: number;
@Index()
@Column({ name: 'inviter_id', type: 'bigint', unsigned: true, comment: '邀请人用户ID' })
inviterId: number;
@Index()
@Column({ name: 'invitee_id', type: 'bigint', unsigned: true, comment: '被邀请人用户ID' })
inviteeId: number;
@Index()
@Column({ name: 'order_id', type: 'bigint', unsigned: true, comment: '关联订单ID' })
orderId: number;
@Column({ name: 'order_no', length: 32, comment: '订单号' })
orderNo: string;
@Column({ name: 'order_amount', type: 'decimal', precision: 10, scale: 2, unsigned: true, comment: '订单金额' })
orderAmount: number;
@Column({ name: 'order_index', type: 'tinyint', unsigned: true, comment: '被邀请人第几单(1/2)' })
orderIndex: number;
@Column({ type: 'decimal', precision: 5, scale: 4, unsigned: true, comment: '返现比例' })
rate: number;
@Column({ type: 'decimal', precision: 10, scale: 2, unsigned: true, comment: '返现金额' })
amount: number;
@Index()
@Column({
type: 'enum',
enum: ['pending', 'settled', 'cancelled'],
default: 'pending',
comment: '状态',
})
status: CashbackStatus;
@Column({ name: 'settled_at', type: 'datetime', nullable: true, comment: '到账时间' })
settledAt: Date;
@ManyToOne(() => MktActivity)
@JoinColumn({ name: 'activity_id' })
activity: MktActivity;
@ManyToOne(() => User)
@JoinColumn({ name: 'inviter_id' })
inviter: User;
@ManyToOne(() => User)
@JoinColumn({ name: 'invitee_id' })
invitee: User;
@ManyToOne(() => Order)
@JoinColumn({ name: 'order_id' })
order: Order;
@CreateDateColumn({ name: 'created_at', comment: '创建时间' })
createdAt: Date;
}