Selaa lähdekoodia

二维码分页优化

wuyi 4 viikkoa sitten
vanhempi
commit
42d193bfb2
3 muutettua tiedostoa jossa 35 lisäystä ja 5 poistoa
  1. 10 2
      src/controllers/qr-code.controller.ts
  2. 16 1
      src/dto/qr-code.dto.ts
  3. 9 2
      src/services/qr-code.service.ts

+ 10 - 2
src/controllers/qr-code.controller.ts

@@ -42,9 +42,17 @@ export class QrCodeController {
    */
   async list(request: FastifyRequest<{ Querystring: QueryQrCodeDto }>, reply: FastifyReply) {
     try {
-      const { qrType, isActivated, startDate, endDate, page, pageSize } = request.query
+      const { qrCode, qrType, isActivated, startDate, endDate, page, pageSize } = request.query
 
-      const result = await this.qrCodeService.queryQrCodes(qrType, isActivated, startDate, endDate, page, pageSize)
+      const result = await this.qrCodeService.queryQrCodes(
+        qrCode,
+        qrType,
+        isActivated,
+        startDate,
+        endDate,
+        page,
+        pageSize
+      )
 
       return reply.send(result)
     } catch (error) {

+ 16 - 1
src/dto/qr-code.dto.ts

@@ -1,4 +1,15 @@
-import { IsString, IsEnum, IsOptional, IsNumber, IsBoolean, IsDateString, Min, Matches, MinLength, MaxLength } from 'class-validator'
+import {
+  IsString,
+  IsEnum,
+  IsOptional,
+  IsNumber,
+  IsBoolean,
+  IsDateString,
+  Min,
+  Matches,
+  MinLength,
+  MaxLength
+} from 'class-validator'
 import { QrType } from '../entities/qr-code.entity'
 
 export class GenerateQrCodeDto {
@@ -12,6 +23,10 @@ export class GenerateQrCodeDto {
 }
 
 export class QueryQrCodeDto {
+  @IsOptional()
+  @IsString()
+  qrCode?: string
+
   @IsOptional()
   @IsEnum(QrType)
   qrType?: QrType

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

@@ -210,8 +210,9 @@ export class QrCodeService {
    * 查询二维码列表
    */
   async queryQrCodes(
+    qrCode?: string,
     qrType?: QrType,
-    isActivated?: boolean,
+    isActivated?: boolean | string,
     startDate?: string,
     endDate?: string,
     page: number = 0,
@@ -219,12 +220,18 @@ export class QrCodeService {
   ): Promise<PaginationResponse<QrCode>> {
     const queryBuilder = this.qrCodeRepository.createQueryBuilder('qrCode')
 
+    if (qrCode) {
+      queryBuilder.andWhere('qrCode.qrCode = :qrCode', { qrCode })
+    }
+
     if (qrType) {
       queryBuilder.andWhere('qrCode.qrType = :qrType', { qrType })
     }
 
     if (isActivated !== undefined) {
-      queryBuilder.andWhere('qrCode.isActivated = :isActivated', { isActivated })
+      const isActivatedBool =
+        typeof isActivated === 'string' ? isActivated === 'true' || isActivated === '1' : Boolean(isActivated)
+      queryBuilder.andWhere('qrCode.isActivated = :isActivated', { isActivated: isActivatedBool })
     }
 
     if (startDate && endDate) {