fix: 修复创建分享接口报错

This commit is contained in:
richarjiang
2026-05-09 16:25:36 +08:00
parent 9185df3567
commit 8443f8844d
8 changed files with 182 additions and 123 deletions

View File

@@ -7,22 +7,38 @@ import {
Index,
Unique,
} from 'typeorm';
import { ShareParticipant } from './share-participant.entity';
import { ShareConfig } from './share-config.entity';
import { Level } from '../../wechat-game/entities/level.entity';
/**
* 分享挑战内的单关进度。
*
* (share_config_id, participant_id, level_id) 三元组保证:
* 同一用户在不同分享挑战中对同一关的记录互不干扰。
*
* participant_id 直接存储 wx_users.id用户 UUID不再引用 share_participants。
*/
@Entity('share_level_progress')
@Unique('uq_participant_level', ['participantId', 'levelId'])
@Unique('uq_share_participant_level', [
'shareConfigId',
'participantId',
'levelId',
])
export class ShareLevelProgress {
@PrimaryGeneratedColumn('uuid')
id!: string;
@Index('idx_slp_participant_id')
@Column({ type: 'char', length: 36, name: 'participant_id' })
participantId!: string;
@Index('idx_slp_share_config_id')
@Column({ type: 'varchar', length: 191, name: 'share_config_id' })
shareConfigId!: string;
@ManyToOne(() => ShareParticipant)
@JoinColumn({ name: 'participant_id' })
participant!: ShareParticipant;
@ManyToOne(() => ShareConfig)
@JoinColumn({ name: 'share_config_id' })
shareConfig!: ShareConfig;
@Index('idx_slp_participant_id')
@Column({ type: 'varchar', length: 191, name: 'participant_id' })
participantId!: string;
@Index('idx_slp_level_id')
@Column({ type: 'char', length: 191, name: 'level_id' })

View File

@@ -1,33 +1,34 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
PrimaryColumn,
CreateDateColumn,
ManyToOne,
JoinColumn,
Index,
Unique,
} from 'typeorm';
import { User } from '../../auth/entities/user.entity';
import { ShareConfig } from './share-config.entity';
/**
* 分享挑战参与者关联表。
*
* 该表为纯关联表,没有独立主键 id
* - 主键由 (share_config_id, participant_id) 组成
* - participant_id 直接存储 wx_users.id用户 UUID
*/
@Entity('share_participants')
@Unique('uq_share_participant', ['shareConfigId', 'participantId'])
export class ShareParticipant {
@PrimaryGeneratedColumn('uuid')
id!: string;
@PrimaryColumn({ type: 'varchar', length: 191, name: 'share_config_id' })
@Index('idx_share_config_id')
@Column({ type: 'varchar', length: 191, name: 'share_config_id' })
shareConfigId!: string;
@PrimaryColumn({ type: 'varchar', length: 191, name: 'participant_id' })
participantId!: 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;