feat: v3.4.12 ticket iteration

Refund rollback, winery T+3, multi withdraw, mini-user store detail, dev plan batch edit and WeCom dispatch, support ticket edit/attachments/batch status, package imageUrl.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-04 23:53:31 +08:00
parent 71f508e02b
commit 4372018c09
34 changed files with 1032 additions and 86 deletions
@@ -1,4 +1,4 @@
import { IsIn, IsNotEmpty, IsOptional, IsString, MaxLength } from 'class-validator';
import { ArrayMinSize, IsArray, IsBoolean, IsIn, IsNotEmpty, IsOptional, IsString, MaxLength, ValidateIf, ValidateNested } from 'class-validator';
import { Type } from 'class-transformer';
import { IsInt, Min } from 'class-validator';
@@ -41,6 +41,58 @@ export class CreateSupportTicketDto {
@IsString()
@MaxLength(512)
remark?: string;
@IsOptional()
@IsArray()
@IsString({ each: true })
attachmentUrls?: string[];
}
export class UpdateSupportTicketDto {
@IsOptional()
@IsIn(['BUG', 'SUGGESTION', 'OTHER'])
ticketType?: string;
@IsOptional()
@IsString()
@IsNotEmpty()
@MaxLength(128)
title?: string;
@IsOptional()
@IsString()
content?: string;
@IsOptional()
@IsString()
@MaxLength(512)
remark?: string;
@IsOptional()
@IsArray()
@IsString({ each: true })
attachmentUrls?: string[];
}
export class BatchUpdateSupportTicketStatusDto {
@IsArray()
@ArrayMinSize(1)
@IsString({ each: true })
ticketIds!: string[];
@IsIn(['PENDING_REVIEW', 'REJECTED', 'DEVELOPING', 'TESTING', 'PASSED'])
status!: string;
@ValidateIf((o: BatchUpdateSupportTicketStatusDto) => o.status === 'REJECTED')
@IsString()
@IsNotEmpty()
@MaxLength(512)
rejectReason?: string;
@IsOptional()
@IsString()
@MaxLength(512)
note?: string;
}
export class RejectSupportTicketDto {