刘光辉
5 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import type { DmsApiResult, DmsPermissionResource } from './permission';
import type { DmsWatermarkParameters } from './watermarkParameters';
 
import { v4 as uuidv4 } from 'uuid';
 
import { defHttp } from '#/api/request';
 
import { watermarkParameters } from './watermarkParameters';
 
export type DmsPersonalFolderType = 'BORROW' | 'DOWNLOAD' | 'FAVORITE';
 
export interface DmsPersonalFolder {
  code: DmsPersonalFolderType;
  name: string;
}
 
export interface DmsPersonalFolderFile extends DmsPermissionResource {
  validTo?: string;
}
 
export interface DmsFileDownloadTicket {
  accessTicket: string;
  expiresAt: string;
  fileName: string;
  fileVersionId: string;
  mimeType?: string;
  sizeBytes?: number;
}
 
export interface DmsDownloadDecision {
  allowed: boolean;
  resourceId: string;
}
 
export interface DmsPersonalFolderAddResult {
  addedCount: number;
  requestedCount: number;
}
 
const prefix = '/api/dms/personal-folders';
const silentErrorOptions = { errorMessageMode: 'none' as const };
 
export function getPersonalFolders() {
  return defHttp.get<DmsApiResult<DmsPersonalFolder[]>>({ url: prefix }, silentErrorOptions);
}
 
export function getPersonalFolderFiles(folderType: DmsPersonalFolderType, params: { keyword?: string; pageSize?: number }) {
  return defHttp.get<DmsApiResult<DmsPersonalFolderFile[]>>({ url: `${prefix}/${folderType}/files`, params }, silentErrorOptions);
}
 
export function evaluatePersonalFolderDownloads(fileVersionIds: string[]) {
  return defHttp.post<DmsApiResult<DmsDownloadDecision[]>>(
    {
      url: '/api/dms/permission-decisions/batch-evaluate',
      data: {
        requests: fileVersionIds.map((resourceId) => ({ actionCode: 'DOWNLOAD', resourceId, resourceType: 'FILE_VERSION', workflowDownloadOnly: true })),
      },
    },
    silentErrorOptions,
  );
}
 
export function addFavoriteFile(data: { documentId: string; fileVersionId: string; operationId: string }) {
  return defHttp.post<DmsApiResult<DmsPersonalFolderAddResult>>({ url: `${prefix}/favorite/files`, data }, silentErrorOptions);
}
 
export function createDmsFileDownloadTicket(fileVersionId: string, options?: DmsWatermarkParameters) {
  return defHttp.post<DmsApiResult<DmsFileDownloadTicket>>(
    {
      url: '/api/dms/file-download-tickets',
      data: {
        ...watermarkParameters(options),
        operationId: uuidv4(),
        workflowDownloadOnly: true,
        resourceId: fileVersionId,
        resourceType: 'FILE_VERSION',
      },
    },
    silentErrorOptions,
  );
}
 
export function downloadDmsFile(fileVersionId: string, accessTicket: string, format?: 'pdf') {
  return defHttp.get<Blob>(
    {
      url: `/api/file/Dms/Download/${fileVersionId}`,
      params: { ticket: accessTicket, ...(format ? { format } : {}) },
      responseType: 'blob',
      ...(format === 'pdf' ? { timeout: 300_000 } : {}),
    },
    { errorMessageMode: 'none', isTransformResponse: false },
  );
}