import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, } from 'typeorm'; import { UserEntity } from './user.entity'; import { PlatformType } from './platform-user.entity'; /** * 积分变动类型枚举 * 定义用户积分账户的不同变动操作类型 */ export enum CreditType { REWARD = 'reward', // 奖励获得 - 用户通过完成任务获得积分 CONSUME = 'consume', // 消费扣除 - 用户使用功能消耗积分 PURCHASE = 'purchase', // 购买获得 - 用户付费购买积分 REFUND = 'refund', // 退款返还 - 服务异常或用户申请退款 } /** * 积分来源枚举 * 标识积分变动的具体业务来源 * 用于积分流水分析和运营统计 */ export enum CreditSource { AD_WATCH = 'ad_watch', // 看广告 - 用户观看激励广告获得积分 SUBSCRIPTION = 'subscription', // 订阅赠送 - 订阅会员获得的积分奖励 AI_GENERATION = 'ai_generation', // AI生成消费 - 使用AI功能消耗积分 MANUAL = 'manual', // 手动调整 - 管理员手动调整用户积分 } /** * 用户积分记录实体类 * 记录用户积分账户的所有变动明细 * 提供完整的积分流水追踪和余额管理 * 支持多平台积分系统和业务关联 */ @Entity('user_credits') export class UserCreditEntity { /** 主键 - 积分记录的唯一标识符 */ @PrimaryGeneratedColumn('uuid') id: string; /** 用户ID - 关联到用户实体 */ @Column() userId: string; /** 平台类型 - 标识积分变动发生的平台,支持多平台积分管理 */ @Column({ type: 'enum', enum: PlatformType, }) platform: PlatformType; /** 变动类型 - 积分的操作类型(奖励、消费、购买、退款) */ @Column({ type: 'enum', enum: CreditType, }) type: CreditType; /** 积分来源 - 标识积分变动的具体业务来源,用于数据分析和运营决策 */ @Column({ type: 'enum', enum: CreditSource, }) source: CreditSource; /** 变动金额 - 积分变动数量,正数为增加,负数为扣除 */ @Column({ type: 'integer' }) amount: number; /** 操作后余额 - 本次操作完成后的用户积分余额,用于余额校验和历史查询 */ @Column({ type: 'integer' }) balance: number; /** 变动描述 - 积分变动的文字说明,便于用户理解和客服处理 */ @Column({ length: 200, nullable: true }) description: string; /** 关联业务ID - 关联的业务记录ID(如广告观看ID、模板执行ID、订单ID等) */ @Column({ length: 100, nullable: true }) referenceId: string; /** 扩展元数据 - 存储积分操作的附加信息,如优惠规则、活动信息等 */ @Column({ type: 'json', nullable: true }) metadata: any; /** 创建时间 - 积分变动记录的创建时间戳 */ @CreateDateColumn() createdAt: Date; /** 更新时间 - 记录最后修改时间,用于数据审计 */ @UpdateDateColumn() updatedAt: Date; /** 用户关系 - 与用户实体的多对一关系,级联删除 */ @ManyToOne(() => UserEntity, (user) => user.credits, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'userId' }) user: UserEntity; }