feat: 支持关卡配置分享

This commit is contained in:
richarjiang
2026-04-06 17:32:20 +08:00
parent 9ab78555cb
commit 3a1b4d22bf
15 changed files with 418 additions and 3 deletions

View File

@@ -0,0 +1,46 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
Index,
ManyToOne,
OneToMany,
JoinColumn,
} from 'typeorm';
import { User } from '../../auth/entities/user.entity';
import { ShareParticipant } from './share-participant.entity';
@Entity('share_configs')
export class ShareConfig {
@PrimaryGeneratedColumn('uuid')
id: string;
@Index('idx_share_code', { unique: true })
@Column({ type: 'varchar', length: 8, name: 'share_code' })
shareCode: string;
@Column({ type: 'varchar', length: 100 })
title: string;
@Column({ type: 'varchar', length: 191, name: 'sharer_id' })
sharerId: string;
@ManyToOne(() => User)
@JoinColumn({ name: 'sharer_id' })
sharer: User;
/** 有序 JSON 数组,存储 6 个关卡 ID */
@Column({ type: 'json', name: 'level_ids' })
levelIds: string[];
@OneToMany(() => ShareParticipant, (p) => p.shareConfig)
participants: ShareParticipant[];
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt: Date;
}

View File

@@ -0,0 +1,37 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
ManyToOne,
JoinColumn,
Index,
Unique,
} from 'typeorm';
import { User } from '../../auth/entities/user.entity';
import { ShareConfig } from './share-config.entity';
@Entity('share_participants')
@Unique('uq_share_participant', ['shareConfigId', 'participantId'])
export class ShareParticipant {
@PrimaryGeneratedColumn('uuid')
id: string;
@Index('idx_share_config_id')
@Column({ type: 'varchar', length: 191, name: 'share_config_id' })
shareConfigId: string;
@ManyToOne(() => ShareConfig, (sc) => sc.participants)
@JoinColumn({ name: 'share_config_id' })
shareConfig: ShareConfig;
@Column({ type: 'varchar', length: 191, name: 'participant_id' })
participantId: string;
@ManyToOne(() => User)
@JoinColumn({ name: 'participant_id' })
participant: User;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
}