Files
bw-mini-app-server/src/entities/user-credit.entity.ts
imeepos 14f4c450b5 feat: 完善多平台适配器架构和微信小程序集成功能
- 新增字节跳动和微信平台适配器实现
- 完善平台适配器基础架构和接口定义
- 添加平台用户管理和数据同步功能
- 实现完整的平台模块和控制器
- 更新所有实体类支持多平台数据结构
- 优化模板系统支持平台特定功能
2025-09-04 17:12:03 +08:00

106 lines
3.2 KiB
TypeScript

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;
}