Преглед на файлове

添加二维码激活时间和最后扫描时间字段,更新相关服务以支持时间记录的管理。

wuyi преди 3 седмици
родител
ревизия
0f777853c7
променени са 3 файла, в които са добавени 26 реда и са изтрити 2 реда
  1. 6 0
      src/entities/qr-code.entity.ts
  2. 18 2
      src/services/qr-code.service.ts
  3. 2 0
      src/services/scan-record.service.ts

+ 6 - 0
src/entities/qr-code.entity.ts

@@ -46,6 +46,12 @@ export class QrCode {
   @Column({ default: 0 })
   scanCount: number
 
+  @Column({ type: 'datetime', nullable: true })
+  activatedAt: Date
+
+  @Column({ type: 'datetime', nullable: true })
+  lastScanAt: Date
+
   @CreateDateColumn()
   createdAt: Date
 

+ 18 - 2
src/services/qr-code.service.ts

@@ -185,7 +185,13 @@ export class QrCodeService {
       id: entity.id,
       qrCode: entity.qrCode,
       qrType: entity.qrType,
-      ...(isAdmin && { scanCount: entity.scanCount, createdAt: entity.createdAt, updatedAt: entity.updatedAt }),
+      ...(isAdmin && {
+        scanCount: entity.scanCount,
+        createdAt: entity.createdAt,
+        updatedAt: entity.updatedAt,
+        activatedAt: entity.activatedAt,
+        lastScanAt: entity.lastScanAt
+      }),
       isActivated: entity.isActivated,
       isVisible,
       info
@@ -199,11 +205,21 @@ export class QrCodeService {
     await this.qrCodeRepository.increment({ id: qrCodeId }, 'scanCount', 1)
   }
 
+  /**
+   * 更新最后扫描时间
+   */
+  async updateLastScanAt(qrCodeId: number): Promise<void> {
+    await this.qrCodeRepository.update(qrCodeId, { lastScanAt: new Date() })
+  }
+
   /**
    * 激活二维码
    */
   async activateQrCode(qrCodeId: number): Promise<void> {
-    await this.qrCodeRepository.update(qrCodeId, { isActivated: true })
+    await this.qrCodeRepository.update(qrCodeId, {
+      isActivated: true,
+      activatedAt: new Date()
+    })
   }
 
   /**

+ 2 - 0
src/services/scan-record.service.ts

@@ -50,6 +50,8 @@ export class ScanRecordService {
 
     // 增加扫描次数
     await this.qrCodeService.incrementScanCount(qrCodeEntity.id)
+    // 更新最后扫描时间
+    await this.qrCodeService.updateLastScanAt(qrCodeEntity.id)
 
     return result
   }