Sfoglia il codice sorgente

添加 GroupTask 和 GroupTaskItem 实体,定义任务和任务项的状态及属性,增强任务管理功能。

wuyi 3 settimane fa
parent
commit
944cddebfe

+ 40 - 0
src/entities/group-task-item.entity.ts

@@ -0,0 +1,40 @@
+import { Column, CreateDateColumn, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
+
+export enum GroupTaskItemStatus {
+  PENDING = 'pending',
+  SUCCESS = 'success',
+  FAILED = 'failed'
+}
+
+export class GroupTaskItem {
+  @PrimaryGeneratedColumn()
+  id: number
+
+  @Column()
+  groupTaskId: number
+
+  @Column()
+  target: string
+
+  @Column({
+    type: 'enum',
+    enum: GroupTaskItemStatus,
+    default: GroupTaskItemStatus.PENDING
+  })
+  status: GroupTaskItemStatus
+
+  @Column({ type: 'bigint', nullable: true })
+  senderId: string | null
+
+  @Column({ type: 'text', nullable: true })
+  errorMsg: string | null
+
+  @Column({ type: 'datetime', precision: 6, default: null })
+  invitedAt: Date
+
+  @CreateDateColumn()
+  createdAt: Date
+
+  @UpdateDateColumn()
+  updatedAt: Date
+}

+ 65 - 0
src/entities/group-task.entity.ts

@@ -0,0 +1,65 @@
+import { Entity, Column, CreateDateColumn, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
+
+export enum GroupTaskStatus {
+  PENDING = 'pending',
+  SENDING = 'sending',
+  QUEUING = 'queuing',
+  PAUSED = 'paused',
+  CANCELED = 'canceled',
+  COMPLETED = 'completed'
+}
+
+@Entity()
+export class GroupTask {
+  @PrimaryGeneratedColumn()
+  id: number
+
+  @Column()
+  name: string
+
+  @Column()
+  userId: number
+
+  @Column({ default: 0 })
+  total: number
+
+  @Column({ default: 0 })
+  invited: number
+
+  @Column({ default: 0 })
+  successCount: number
+
+  @Column({
+    type: 'enum',
+    enum: GroupTaskStatus,
+    default: GroupTaskStatus.PENDING
+  })
+  status: GroupTaskStatus
+
+  @Column({ default: false })
+  cancelRequested: boolean
+
+  @Column({ nullable: false })
+  inviteLink: string
+
+  @Column({ default: 5 })
+  inviteLimit: number
+
+  @Column({ default: 5 })
+  inviteInterval: number
+
+  @Column({ default: 5 })
+  concurrentCount: number
+
+  @Column({ default: false })
+  delFlag: boolean
+
+  @Column({ type: 'datetime', precision: 6, default: null })
+  startedAt: Date
+
+  @CreateDateColumn()
+  createdAt: Date
+
+  @UpdateDateColumn()
+  updatedAt: Date
+}

+ 12 - 0
src/entities/sender.entity.ts

@@ -15,6 +15,18 @@ export class Sender {
   @Column({ type: 'text', nullable: true })
   sessionStr: string | null
 
+  @Column({ nullable: true })
+  name: string
+
+  @Column({ nullable: true })
+  username: string
+
+  @Column({ nullable: true })
+  areaCode: string
+
+  @Column({ nullable: true })
+  phone: string
+
   @Column({ default: 0 })
   usageCount: number