Files

63 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

2026-04-25 16:36:34 +08:00
/**
*
* 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;