This commit is contained in:
2026-04-25 16:36:34 +08:00
commit db90e7579b
1876 changed files with 189777 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
/**
* 邀请模型
* TypeGoose 定义,符合 Tailchat 插件标准模式
*/
import { db } from 'tailchat-server-sdk';
const { getModelForClass, prop, modelOptions, TimeStamps, index } = db;
@modelOptions({ options: { customName: 'p_saleschat_invite' } })
@index({ code: 1 }, { unique: true })
@index({ salesId: 1 })
@index({ expiresAt: 1 })
@index({ status: 1 })
export class Invite extends TimeStamps implements db.Base {
_id: db.Types.ObjectId;
id: string;
/** 邀请码 */
@prop({ required: true, unique: true })
code: string;
/** 销售 ID关联用户 */
@prop({ required: true, ref: 'User' })
salesId: db.Types.ObjectId;
/** 群组 ID关联群组 */
@prop({ required: true, ref: 'Group' })
groupId: db.Types.ObjectId;
/** 邀请链接 */
@prop()
link?: string;
/** 二维码 URL */
@prop()
qrCodeUrl?: string;
/** 过期时间 */
@prop()
expiresAt?: Date;
/** 点击次数 */
@prop({ default: 0 })
clickCount: number;
/** 扫码次数 */
@prop({ default: 0 })
scanCount: number;
/** 加入次数 */
@prop({ default: 0 })
joinCount: number;
/** 状态active / inactive */
@prop({ default: 'active' })
status: 'active' | 'inactive';
}
export type InviteDocument = db.DocumentType<Invite>;
const model = getModelForClass(Invite);
export type InviteModel = typeof model;
export default model;