Просмотр исходного кода

更新api-services生成文件

LLL 4 месяцев назад
Родитель
Сommit
8c636f04cf
36 измененных файлов с 2761 добавлено и 123 удалено
  1. 1 0
      Web/src/api-services/api.ts
  2. 58 53
      Web/src/api-services/apis/sys-code-gen-api.ts
  3. 31 7
      Web/src/api-services/apis/sys-file-api.ts
  4. 1026 0
      Web/src/api-services/apis/sys-file-provider-api.ts
  5. 93 0
      Web/src/api-services/apis/sys-sms-api.ts
  6. 6 6
      Web/src/api-services/models/add-dict-type-input.ts
  7. 142 0
      Web/src/api-services/models/add-file-provider-input.ts
  8. 8 0
      Web/src/api-services/models/add-sys-ldap-input.ts
  9. 105 7
      Web/src/api-services/models/add-user-input.ts
  10. 71 0
      Web/src/api-services/models/admin-result-dictionary-string-list-sys-file-provider.ts
  11. 71 0
      Web/src/api-services/models/admin-result-list-sys-file-provider.ts
  12. 69 0
      Web/src/api-services/models/admin-result-sql-sugar-paged-list-sys-file-provider.ts
  13. 69 0
      Web/src/api-services/models/admin-result-sys-file-provider.ts
  14. 38 0
      Web/src/api-services/models/batch-enable-provider-input.ts
  15. 30 0
      Web/src/api-services/models/delete-file-provider-input.ts
  16. 2 3
      Web/src/api-services/models/gender-enum.ts
  17. 11 0
      Web/src/api-services/models/index.ts
  18. 0 16
      Web/src/api-services/models/list-sys-lang-text-input.ts
  19. 9 1
      Web/src/api-services/models/login-output.ts
  20. 108 0
      Web/src/api-services/models/page-file-provider-input.ts
  21. 8 0
      Web/src/api-services/models/role-menu-input.ts
  22. 79 0
      Web/src/api-services/models/sql-sugar-paged-list-sys-file-provider.ts
  23. 206 0
      Web/src/api-services/models/sys-file-provider.ts
  24. 24 0
      Web/src/api-services/models/sys-file-upload-file-body.ts
  25. 1 1
      Web/src/api-services/models/sys-lang-text.ts
  26. 8 0
      Web/src/api-services/models/sys-ldap.ts
  27. 2 0
      Web/src/api-services/models/sys-menu.ts
  28. 99 7
      Web/src/api-services/models/sys-user.ts
  29. 8 0
      Web/src/api-services/models/tenant-menu-input.ts
  30. 1 1
      Web/src/api-services/models/tenant-type-enum.ts
  31. 6 6
      Web/src/api-services/models/update-dict-type-input.ts
  32. 150 0
      Web/src/api-services/models/update-file-provider-input.ts
  33. 1 1
      Web/src/api-services/models/update-menu-input.ts
  34. 8 0
      Web/src/api-services/models/update-sys-ldap-input.ts
  35. 105 7
      Web/src/api-services/models/update-user-input.ts
  36. 107 7
      Web/src/api-services/models/user-output.ts

+ 1 - 0
Web/src/api-services/api.ts

@@ -26,6 +26,7 @@ export * from './apis/sys-dict-type-api';
 export * from './apis/sys-email-api';
 export * from './apis/sys-enum-api';
 export * from './apis/sys-file-api';
+export * from './apis/sys-file-provider-api';
 export * from './apis/sys-job-api';
 export * from './apis/sys-lang-api';
 export * from './apis/sys-lang-text-api';

+ 58 - 53
Web/src/api-services/apis/sys-code-gen-api.ts

@@ -471,25 +471,20 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
         },
         /**
          * 
-         * @summary 获取数据库表(实体)集合 🔖
-         * @param {string} configId 
+         * @summary 同步代码字段(保留历史作用类型) 🔖
+         * @param {UpdateCodeGenInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysCodeGenTableListConfigIdGet: async (configId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            // verify required parameter 'configId' is not null or undefined
-            if (configId === null || configId === undefined) {
-                throw new RequiredError('configId','Required parameter configId was null or undefined when calling apiSysCodeGenTableListConfigIdGet.');
-            }
-            const localVarPath = `/api/sysCodeGen/tableList/{configId}`
-                .replace(`{${"configId"}}`, encodeURIComponent(String(configId)));
+        apiSysCodeGenSyncFieldPost: async (body?: UpdateCodeGenInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysCodeGen/syncField`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
@@ -502,6 +497,8 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
                 localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
             }
 
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
                 query.set(key, localVarQueryParameter[key]);
@@ -512,6 +509,8 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -520,20 +519,25 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
         },
         /**
          * 
-         * @summary 更新代码生成 🔖
-         * @param {UpdateCodeGenInput} [body] 
+         * @summary 获取数据库表(实体)集合 🔖
+         * @param {string} configId 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysCodeGenUpdatePost: async (body?: UpdateCodeGenInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/api/sysCodeGen/update`;
+        apiSysCodeGenTableListConfigIdGet: async (configId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            // verify required parameter 'configId' is not null or undefined
+            if (configId === null || configId === undefined) {
+                throw new RequiredError('configId','Required parameter configId was null or undefined when calling apiSysCodeGenTableListConfigIdGet.');
+            }
+            const localVarPath = `/api/sysCodeGen/tableList/{configId}`
+                .replace(`{${"configId"}}`, encodeURIComponent(String(configId)));
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
@@ -546,8 +550,6 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
                 localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
             }
 
-            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
-
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
                 query.set(key, localVarQueryParameter[key]);
@@ -558,23 +560,21 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
-            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
-            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
                 options: localVarRequestOptions,
             };
         },
-/**
+        /**
          * 
-         * @summary 同步代码字段 🔖
+         * @summary 更新代码生成 🔖
          * @param {UpdateCodeGenInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
-         */ 
-        apiSysCodeFieldGenPost: async (body?: UpdateCodeGenInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/api/sysCodeGen/syncField`;
+         */
+        apiSysCodeGenUpdatePost: async (body?: UpdateCodeGenInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysCodeGen/update`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -613,11 +613,7 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
                 options: localVarRequestOptions,
             };
-        }
-        
-
-
-
+        },
     }
 };
 
@@ -754,13 +750,13 @@ export const SysCodeGenApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 获取数据库表(实体)集合 🔖
-         * @param {string} configId 
+         * @summary 同步代码字段(保留历史作用类型) 🔖
+         * @param {UpdateCodeGenInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysCodeGenTableListConfigIdGet(configId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListTableOutput>>> {
-            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenTableListConfigIdGet(configId, options);
+        async apiSysCodeGenSyncFieldPost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenSyncFieldPost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -768,13 +764,13 @@ export const SysCodeGenApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 更新代码生成 🔖
-         * @param {UpdateCodeGenInput} [body] 
+         * @summary 获取数据库表(实体)集合 🔖
+         * @param {string} configId 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysCodeGenUpdatePost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenUpdatePost(body, options);
+        async apiSysCodeGenTableListConfigIdGet(configId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListTableOutput>>> {
+            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenTableListConfigIdGet(configId, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -782,13 +778,13 @@ export const SysCodeGenApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 同步代码字段 🔖
-         * param {UpdateCodeGenInput} [body] 
+         * @summary 更新代码生成 🔖
+         * @param {UpdateCodeGenInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysCodeFieldGenPost(body?: UpdateCodeGenInput,options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListTableOutput>>> {
-            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeFieldGenPost(body, options);
+        async apiSysCodeGenUpdatePost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenUpdatePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -892,6 +888,16 @@ export const SysCodeGenApiFactory = function (configuration?: Configuration, bas
         async apiSysCodeGenRunLocalPost(body?: SysCodeGen, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> {
             return SysCodeGenApiFp(configuration).apiSysCodeGenRunLocalPost(body, options).then((request) => request(axios, basePath));
         },
+        /**
+         * 
+         * @summary 同步代码字段(保留历史作用类型) 🔖
+         * @param {UpdateCodeGenInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysCodeGenSyncFieldPost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysCodeGenApiFp(configuration).apiSysCodeGenSyncFieldPost(body, options).then((request) => request(axios, basePath));
+        },
         /**
          * 
          * @summary 获取数据库表(实体)集合 🔖
@@ -1022,36 +1028,35 @@ export class SysCodeGenApi extends BaseAPI {
     }
     /**
      * 
-     * @summary 获取数据库表(实体)集合 🔖
-     * @param {string} configId 
+     * @summary 同步代码字段(保留历史作用类型) 🔖
+     * @param {UpdateCodeGenInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysCodeGenApi
      */
-    public async apiSysCodeGenTableListConfigIdGet(configId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListTableOutput>> {
-        return SysCodeGenApiFp(this.configuration).apiSysCodeGenTableListConfigIdGet(configId, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysCodeGenSyncFieldPost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysCodeGenApiFp(this.configuration).apiSysCodeGenSyncFieldPost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
-     * @summary 更新代码生成 🔖
-     * @param {UpdateCodeGenInput} [body] 
+     * @summary 获取数据库表(实体)集合 🔖
+     * @param {string} configId 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysCodeGenApi
      */
-    public async apiSysCodeGenUpdatePost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysCodeGenApiFp(this.configuration).apiSysCodeGenUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysCodeGenTableListConfigIdGet(configId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListTableOutput>> {
+        return SysCodeGenApiFp(this.configuration).apiSysCodeGenTableListConfigIdGet(configId, options).then((request) => request(this.axios, this.basePath));
     }
-
     /**
      * 
-     * @summary 同步代码字段 🔖
+     * @summary 更新代码生成 🔖
      * @param {UpdateCodeGenInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysCodeGenApi
      */
-    public async  apiSysCodeFieldGenPost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListTableOutput>> {
-        return SysCodeGenApiFp(this.configuration).apiSysCodeFieldGenPost(body, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysCodeGenUpdatePost(body?: UpdateCodeGenInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysCodeGenApiFp(this.configuration).apiSysCodeGenUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
     }
 }

+ 31 - 7
Web/src/api-services/apis/sys-file-api.ts

@@ -568,10 +568,13 @@ export const SysFileApiAxiosParamCreator = function (configuration?: Configurati
          * @param {string} [fileType] 
          * @param {boolean} [isPublic] 
          * @param {string} [allowSuffix] 
+         * @param {string} [bucketName] 
+         * @param {number} [providerId] 
+         * @param {number} [dataId] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysFileUploadFilePostForm: async (file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysFileUploadFilePostForm: async (file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, bucketName?: string, providerId?: number, dataId?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysFile/uploadFile`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -610,6 +613,18 @@ export const SysFileApiAxiosParamCreator = function (configuration?: Configurati
                 localVarFormParams.append('AllowSuffix', allowSuffix as any);
             }
 
+            if (bucketName !== undefined) { 
+                localVarFormParams.append('BucketName', bucketName as any);
+            }
+
+            if (providerId !== undefined) { 
+                localVarFormParams.append('ProviderId', providerId as any);
+            }
+
+            if (dataId !== undefined) { 
+                localVarFormParams.append('DataId', dataId as any);
+            }
+
             localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -902,11 +917,14 @@ export const SysFileApiFp = function(configuration?: Configuration) {
          * @param {string} [fileType] 
          * @param {boolean} [isPublic] 
          * @param {string} [allowSuffix] 
+         * @param {string} [bucketName] 
+         * @param {number} [providerId] 
+         * @param {number} [dataId] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysFile>>> {
-            const localVarAxiosArgs = await SysFileApiAxiosParamCreator(configuration).apiSysFileUploadFilePostForm(file, fileType, isPublic, allowSuffix, options);
+        async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, bucketName?: string, providerId?: number, dataId?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysFile>>> {
+            const localVarAxiosArgs = await SysFileApiAxiosParamCreator(configuration).apiSysFileUploadFilePostForm(file, fileType, isPublic, allowSuffix, bucketName, providerId, dataId, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -1065,11 +1083,14 @@ export const SysFileApiFactory = function (configuration?: Configuration, basePa
          * @param {string} [fileType] 
          * @param {boolean} [isPublic] 
          * @param {string} [allowSuffix] 
+         * @param {string} [bucketName] 
+         * @param {number} [providerId] 
+         * @param {number} [dataId] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysFile>> {
-            return SysFileApiFp(configuration).apiSysFileUploadFilePostForm(file, fileType, isPublic, allowSuffix, options).then((request) => request(axios, basePath));
+        async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, bucketName?: string, providerId?: number, dataId?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysFile>> {
+            return SysFileApiFp(configuration).apiSysFileUploadFilePostForm(file, fileType, isPublic, allowSuffix, bucketName, providerId, dataId, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -1228,12 +1249,15 @@ export class SysFileApi extends BaseAPI {
      * @param {string} [fileType] 
      * @param {boolean} [isPublic] 
      * @param {string} [allowSuffix] 
+     * @param {string} [bucketName] 
+     * @param {number} [providerId] 
+     * @param {number} [dataId] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysFileApi
      */
-    public async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysFile>> {
-        return SysFileApiFp(this.configuration).apiSysFileUploadFilePostForm(file, fileType, isPublic, allowSuffix, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, isPublic?: boolean, allowSuffix?: string, bucketName?: string, providerId?: number, dataId?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysFile>> {
+        return SysFileApiFp(this.configuration).apiSysFileUploadFilePostForm(file, fileType, isPublic, allowSuffix, bucketName, providerId, dataId, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 1026 - 0
Web/src/api-services/apis/sys-file-provider-api.ts

@@ -0,0 +1,1026 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
+import { Configuration } from '../configuration';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
+import { AddFileProviderInput } from '../models';
+import { AdminResultDictionaryStringListSysFileProvider } from '../models';
+import { AdminResultListString } from '../models';
+import { AdminResultListSysFileProvider } from '../models';
+import { AdminResultObject } from '../models';
+import { AdminResultSqlSugarPagedListSysFileProvider } from '../models';
+import { AdminResultSysFileProvider } from '../models';
+import { BatchEnableProviderInput } from '../models';
+import { DeleteFileProviderInput } from '../models';
+import { PageFileProviderInput } from '../models';
+import { UpdateFileProviderInput } from '../models';
+/**
+ * SysFileProviderApi - axios parameter creator
+ * @export
+ */
+export const SysFileProviderApiAxiosParamCreator = function (configuration?: Configuration) {
+    return {
+        /**
+         * 
+         * @summary 添加存储提供者 🔖
+         * @param {AddFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderAddPost: async (body?: AddFileProviderInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/add`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取所有可用的存储桶列表 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderAvailableBucketsGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/availableBuckets`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 批量启用/禁用存储提供者 🔖
+         * @param {BatchEnableProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderBatchEnablePost: async (body?: BatchEnableProviderInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/batchEnable`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储桶和提供者的映射关系 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderBucketProviderMappingGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/bucketProviderMapping`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 清除存储提供者缓存 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderCacheDelete: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/cache`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 删除存储提供者 🔖
+         * @param {DeleteFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderDeletePost: async (body?: DeleteFileProviderInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/delete`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 根据存储桶名称获取存储提供者 🔖
+         * @param {string} bucketName 存储桶名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderProviderByBucketNameBucketNameGet: async (bucketName: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            // verify required parameter 'bucketName' is not null or undefined
+            if (bucketName === null || bucketName === undefined) {
+                throw new RequiredError('bucketName','Required parameter bucketName was null or undefined when calling apiSysFileProviderProviderByBucketNameBucketNameGet.');
+            }
+            const localVarPath = `/api/sysFileProvider/providerByBucketName/{bucketName}`
+                .replace(`{${"bucketName"}}`, encodeURIComponent(String(bucketName)));
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者详情 🔖
+         * @param {number} id 主键Id
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderProviderGet: async (id: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            // verify required parameter 'id' is not null or undefined
+            if (id === null || id === undefined) {
+                throw new RequiredError('id','Required parameter id was null or undefined when calling apiSysFileProviderProviderGet.');
+            }
+            const localVarPath = `/api/sysFileProvider/provider`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            if (id !== undefined) {
+                localVarQueryParameter['Id'] = id;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者列表 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderProviderListGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/providerList`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者分页列表 🔖
+         * @param {PageFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderProviderPageGet: async (body?: PageFileProviderInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/providerPage`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者统计信息 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderProviderStatisticsGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/providerStatistics`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 更新存储提供者 🔖
+         * @param {UpdateFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysFileProviderUpdatePost: async (body?: UpdateFileProviderInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysFileProvider/update`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+    }
+};
+
+/**
+ * SysFileProviderApi - functional programming interface
+ * @export
+ */
+export const SysFileProviderApiFp = function(configuration?: Configuration) {
+    return {
+        /**
+         * 
+         * @summary 添加存储提供者 🔖
+         * @param {AddFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderAddPost(body?: AddFileProviderInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderAddPost(body, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取所有可用的存储桶列表 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderAvailableBucketsGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListString>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderAvailableBucketsGet(options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 批量启用/禁用存储提供者 🔖
+         * @param {BatchEnableProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderBatchEnablePost(body?: BatchEnableProviderInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderBatchEnablePost(body, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储桶和提供者的映射关系 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderBucketProviderMappingGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultDictionaryStringListSysFileProvider>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderBucketProviderMappingGet(options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 清除存储提供者缓存 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderCacheDelete(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderCacheDelete(options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 删除存储提供者 🔖
+         * @param {DeleteFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderDeletePost(body?: DeleteFileProviderInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderDeletePost(body, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 根据存储桶名称获取存储提供者 🔖
+         * @param {string} bucketName 存储桶名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderByBucketNameBucketNameGet(bucketName: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysFileProvider>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderProviderByBucketNameBucketNameGet(bucketName, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者详情 🔖
+         * @param {number} id 主键Id
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderGet(id: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysFileProvider>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderProviderGet(id, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者列表 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListSysFileProvider>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderProviderListGet(options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者分页列表 🔖
+         * @param {PageFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderPageGet(body?: PageFileProviderInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFileProvider>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderProviderPageGet(body, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取存储提供者统计信息 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderStatisticsGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultObject>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderProviderStatisticsGet(options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 更新存储提供者 🔖
+         * @param {UpdateFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderUpdatePost(body?: UpdateFileProviderInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysFileProviderApiAxiosParamCreator(configuration).apiSysFileProviderUpdatePost(body, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+    }
+};
+
+/**
+ * SysFileProviderApi - factory interface
+ * @export
+ */
+export const SysFileProviderApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+    return {
+        /**
+         * 
+         * @summary 添加存储提供者 🔖
+         * @param {AddFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderAddPost(body?: AddFileProviderInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderAddPost(body, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取所有可用的存储桶列表 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderAvailableBucketsGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListString>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderAvailableBucketsGet(options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 批量启用/禁用存储提供者 🔖
+         * @param {BatchEnableProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderBatchEnablePost(body?: BatchEnableProviderInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderBatchEnablePost(body, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取存储桶和提供者的映射关系 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderBucketProviderMappingGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultDictionaryStringListSysFileProvider>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderBucketProviderMappingGet(options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 清除存储提供者缓存 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderCacheDelete(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderCacheDelete(options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 删除存储提供者 🔖
+         * @param {DeleteFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderDeletePost(body?: DeleteFileProviderInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderDeletePost(body, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 根据存储桶名称获取存储提供者 🔖
+         * @param {string} bucketName 存储桶名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderByBucketNameBucketNameGet(bucketName: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysFileProvider>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderProviderByBucketNameBucketNameGet(bucketName, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取存储提供者详情 🔖
+         * @param {number} id 主键Id
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderGet(id: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysFileProvider>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderProviderGet(id, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取存储提供者列表 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderListGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListSysFileProvider>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderProviderListGet(options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取存储提供者分页列表 🔖
+         * @param {PageFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderPageGet(body?: PageFileProviderInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFileProvider>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderProviderPageGet(body, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取存储提供者统计信息 🔖
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderProviderStatisticsGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderProviderStatisticsGet(options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 更新存储提供者 🔖
+         * @param {UpdateFileProviderInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysFileProviderUpdatePost(body?: UpdateFileProviderInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysFileProviderApiFp(configuration).apiSysFileProviderUpdatePost(body, options).then((request) => request(axios, basePath));
+        },
+    };
+};
+
+/**
+ * SysFileProviderApi - object-oriented interface
+ * @export
+ * @class SysFileProviderApi
+ * @extends {BaseAPI}
+ */
+export class SysFileProviderApi extends BaseAPI {
+    /**
+     * 
+     * @summary 添加存储提供者 🔖
+     * @param {AddFileProviderInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderAddPost(body?: AddFileProviderInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderAddPost(body, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取所有可用的存储桶列表 🔖
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderAvailableBucketsGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListString>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderAvailableBucketsGet(options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 批量启用/禁用存储提供者 🔖
+     * @param {BatchEnableProviderInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderBatchEnablePost(body?: BatchEnableProviderInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderBatchEnablePost(body, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取存储桶和提供者的映射关系 🔖
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderBucketProviderMappingGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultDictionaryStringListSysFileProvider>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderBucketProviderMappingGet(options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 清除存储提供者缓存 🔖
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderCacheDelete(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderCacheDelete(options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 删除存储提供者 🔖
+     * @param {DeleteFileProviderInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderDeletePost(body?: DeleteFileProviderInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderDeletePost(body, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 根据存储桶名称获取存储提供者 🔖
+     * @param {string} bucketName 存储桶名称
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderProviderByBucketNameBucketNameGet(bucketName: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysFileProvider>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderProviderByBucketNameBucketNameGet(bucketName, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取存储提供者详情 🔖
+     * @param {number} id 主键Id
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderProviderGet(id: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysFileProvider>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderProviderGet(id, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取存储提供者列表 🔖
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderProviderListGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListSysFileProvider>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderProviderListGet(options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取存储提供者分页列表 🔖
+     * @param {PageFileProviderInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderProviderPageGet(body?: PageFileProviderInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFileProvider>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderProviderPageGet(body, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取存储提供者统计信息 🔖
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderProviderStatisticsGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderProviderStatisticsGet(options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 更新存储提供者 🔖
+     * @param {UpdateFileProviderInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysFileProviderApi
+     */
+    public async apiSysFileProviderUpdatePost(body?: UpdateFileProviderInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysFileProviderApiFp(this.configuration).apiSysFileProviderUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
+    }
+}

+ 93 - 0
Web/src/api-services/apis/sys-sms-api.ts

@@ -144,6 +144,61 @@ export const SysSmsApiAxiosParamCreator = function (configuration?: Configuratio
                 options: localVarRequestOptions,
             };
         },
+        /**
+         * 
+         * @summary 自定义短信接口发送短信 📨
+         * @param {string} phoneNumber 手机号
+         * @param {string} templateId 短信模板id
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost: async (phoneNumber: string, templateId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            // verify required parameter 'phoneNumber' is not null or undefined
+            if (phoneNumber === null || phoneNumber === undefined) {
+                throw new RequiredError('phoneNumber','Required parameter phoneNumber was null or undefined when calling apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost.');
+            }
+            // verify required parameter 'templateId' is not null or undefined
+            if (templateId === null || templateId === undefined) {
+                throw new RequiredError('templateId','Required parameter templateId was null or undefined when calling apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost.');
+            }
+            const localVarPath = `/api/sysSms/customSendSms/{phoneNumber}/{templateId}`
+                .replace(`{${"phoneNumber"}}`, encodeURIComponent(String(phoneNumber)))
+                .replace(`{${"templateId"}}`, encodeURIComponent(String(templateId)));
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+            // http bearer authentication required
+            if (configuration && configuration.accessToken) {
+                const accessToken = typeof configuration.accessToken === 'function'
+                    ? await configuration.accessToken()
+                    : await configuration.accessToken;
+                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
         /**
          * 
          * @summary 发送短信 📨
@@ -342,6 +397,21 @@ export const SysSmsApiFp = function(configuration?: Configuration) {
                 return axios.request(axiosRequestArgs);
             };
         },
+        /**
+         * 
+         * @summary 自定义短信接口发送短信 📨
+         * @param {string} phoneNumber 手机号
+         * @param {string} templateId 短信模板id
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost(phoneNumber: string, templateId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysSmsApiAxiosParamCreator(configuration).apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost(phoneNumber, templateId, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
         /**
          * 
          * @summary 发送短信 📨
@@ -418,6 +488,17 @@ export const SysSmsApiFactory = function (configuration?: Configuration, basePat
         async apiSysSmsAliyunSendSmsTemplatePhoneNumberTemplateIdPost(body: any, phoneNumber: string, templateId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
             return SysSmsApiFp(configuration).apiSysSmsAliyunSendSmsTemplatePhoneNumberTemplateIdPost(body, phoneNumber, templateId, options).then((request) => request(axios, basePath));
         },
+        /**
+         * 
+         * @summary 自定义短信接口发送短信 📨
+         * @param {string} phoneNumber 手机号
+         * @param {string} templateId 短信模板id
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost(phoneNumber: string, templateId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysSmsApiFp(configuration).apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost(phoneNumber, templateId, options).then((request) => request(axios, basePath));
+        },
         /**
          * 
          * @summary 发送短信 📨
@@ -485,6 +566,18 @@ export class SysSmsApi extends BaseAPI {
     public async apiSysSmsAliyunSendSmsTemplatePhoneNumberTemplateIdPost(body: any, phoneNumber: string, templateId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
         return SysSmsApiFp(this.configuration).apiSysSmsAliyunSendSmsTemplatePhoneNumberTemplateIdPost(body, phoneNumber, templateId, options).then((request) => request(this.axios, this.basePath));
     }
+    /**
+     * 
+     * @summary 自定义短信接口发送短信 📨
+     * @param {string} phoneNumber 手机号
+     * @param {string} templateId 短信模板id
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysSmsApi
+     */
+    public async apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost(phoneNumber: string, templateId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysSmsApiFp(this.configuration).apiSysSmsCustomSendSmsPhoneNumberTemplateIdPost(phoneNumber, templateId, options).then((request) => request(this.axios, this.basePath));
+    }
     /**
      * 
      * @summary 发送短信 📨

+ 6 - 6
Web/src/api-services/models/add-dict-type-input.ts

@@ -117,12 +117,6 @@ export interface AddDictTypeInput {
      */
     status?: StatusEnum;
 
-    /**
-     * @type {YesNoEnum}
-     * @memberof AddDictTypeInput
-     */
-    isTenant?: YesNoEnum;
-
     /**
      * 字典值集合
      *
@@ -131,6 +125,12 @@ export interface AddDictTypeInput {
      */
     children?: Array<SysDictData> | null;
 
+    /**
+     * @type {YesNoEnum}
+     * @memberof AddDictTypeInput
+     */
+    isTenant?: YesNoEnum;
+
     /**
      * @type {YesNoEnum}
      * @memberof AddDictTypeInput

+ 142 - 0
Web/src/api-services/models/add-file-provider-input.ts

@@ -0,0 +1,142 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+ /**
+ * 增加文件存储提供者输入参数
+ *
+ * @export
+ * @interface AddFileProviderInput
+ */
+export interface AddFileProviderInput {
+
+    /**
+     * 存储提供者
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    provider: string;
+
+    /**
+     * 存储桶名称
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    bucketName: string;
+
+    /**
+     * 访问密钥ID(所有云服务商统一使用此字段)
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    accessKey?: string | null;
+
+    /**
+     * 密钥
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    secretKey?: string | null;
+
+    /**
+     * 地域
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    region?: string | null;
+
+    /**
+     * 端点地址
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    endpoint?: string | null;
+
+    /**
+     * 是否启用HTTPS
+     *
+     * @type {boolean}
+     * @memberof AddFileProviderInput
+     */
+    isEnableHttps?: boolean | null;
+
+    /**
+     * 是否启用缓存
+     *
+     * @type {boolean}
+     * @memberof AddFileProviderInput
+     */
+    isEnableCache?: boolean | null;
+
+    /**
+     * 是否启用
+     *
+     * @type {boolean}
+     * @memberof AddFileProviderInput
+     */
+    isEnable?: boolean | null;
+
+    /**
+     * 是否默认提供者
+     *
+     * @type {boolean}
+     * @memberof AddFileProviderInput
+     */
+    isDefault?: boolean | null;
+
+    /**
+     * 自定义域名
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    sinceDomain?: string | null;
+
+    /**
+     * 排序号
+     *
+     * @type {number}
+     * @memberof AddFileProviderInput
+     */
+    orderNo?: number | null;
+
+    /**
+     * 备注
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    remark?: string | null;
+
+    /**
+     * 支持的业务类型(JSON格式)
+     *
+     * @type {string}
+     * @memberof AddFileProviderInput
+     */
+    businessTypes?: string | null;
+
+    /**
+     * 优先级
+     *
+     * @type {number}
+     * @memberof AddFileProviderInput
+     */
+    priority?: number;
+}

+ 8 - 0
Web/src/api-services/models/add-sys-ldap-input.ts

@@ -85,6 +85,14 @@ export interface AddSysLdapInput {
      */
     isDelete?: boolean;
 
+    /**
+     * 软删除时间
+     *
+     * @type {Date}
+     * @memberof AddSysLdapInput
+     */
+    deleteTime?: Date | null;
+
     /**
      * 租户Id
      *

+ 105 - 7
Web/src/api-services/models/add-user-input.ts

@@ -11,6 +11,7 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
+
 import { AccountTypeEnum } from './account-type-enum';
 import { CardTypeEnum } from './card-type-enum';
 import { CultureLevelEnum } from './culture-level-enum';
@@ -18,332 +19,429 @@ import { GenderEnum } from './gender-enum';
 import { StatusEnum } from './status-enum';
 import { SysOrg } from './sys-org';
 import { SysUserExtOrg } from './sys-user-ext-org';
-/**
+ /**
  * 增加用户输入参数
+ *
  * @export
  * @interface AddUserInput
  */
 export interface AddUserInput {
+
     /**
      * 雪花Id
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     id?: number;
+
     /**
      * 创建时间
+     *
      * @type {Date}
      * @memberof AddUserInput
      */
     createTime?: Date;
+
     /**
      * 更新时间
+     *
      * @type {Date}
      * @memberof AddUserInput
      */
     updateTime?: Date | null;
+
     /**
      * 创建者Id
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     createUserId?: number | null;
+
     /**
      * 创建者姓名
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     createUserName?: string | null;
+
     /**
      * 修改者Id
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     updateUserId?: number | null;
+
     /**
      * 修改者姓名
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     updateUserName?: string | null;
+
     /**
      * 机构Id
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     orgId?: number;
+
     /**
      * 租户Id
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     tenantId?: number | null;
+
     /**
      * 昵称
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     nickName?: string | null;
+
     /**
      * 头像
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     avatar?: string | null;
+
     /**
-     * 
      * @type {GenderEnum}
      * @memberof AddUserInput
      */
     sex?: GenderEnum;
+
     /**
      * 年龄
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     age?: number;
+
     /**
      * 出生日期
+     *
      * @type {Date}
      * @memberof AddUserInput
      */
     birthday?: Date | null;
+
     /**
      * 民族
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     nation?: string | null;
+
     /**
      * 手机号码
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     phone?: string | null;
+
     /**
-     * 
      * @type {CardTypeEnum}
      * @memberof AddUserInput
      */
     cardType?: CardTypeEnum;
+
     /**
      * 身份证号
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     idCardNum?: string | null;
+
     /**
      * 邮箱
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     email?: string | null;
+
     /**
      * 地址
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     address?: string | null;
+
     /**
-     * 
      * @type {CultureLevelEnum}
      * @memberof AddUserInput
      */
     cultureLevel?: CultureLevelEnum;
+
     /**
      * 政治面貌
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     politicalOutlook?: string | null;
+
     /**
      * 毕业院校
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     college?: string | null;
+
     /**
      * 办公电话
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     officePhone?: string | null;
+
     /**
      * 紧急联系人
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     emergencyContact?: string | null;
+
     /**
      * 紧急联系人电话
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     emergencyPhone?: string | null;
+
     /**
      * 紧急联系人地址
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     emergencyAddress?: string | null;
+
     /**
      * 个人简介
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     introduction?: string | null;
+
     /**
      * 排序
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     orderNo?: number;
+
     /**
-     * 
      * @type {StatusEnum}
      * @memberof AddUserInput
      */
     status?: StatusEnum;
+
     /**
      * 备注
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     remark?: string | null;
+
     /**
-     * 
      * @type {AccountTypeEnum}
      * @memberof AddUserInput
      */
     accountType?: AccountTypeEnum;
+
     /**
-     * 
      * @type {SysOrg}
      * @memberof AddUserInput
      */
     sysOrg?: SysOrg;
+
     /**
      * 直属主管Id
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     managerUserId?: number | null;
+
     /**
      * 职位Id
+     *
      * @type {number}
      * @memberof AddUserInput
      */
     posId?: number;
+
     /**
      * 工号
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     jobNum?: string | null;
+
     /**
      * 职级
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     posLevel?: string | null;
+
     /**
      * 职称
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     posTitle?: string | null;
+
     /**
      * 擅长领域
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     expertise?: string | null;
+
     /**
      * 办公区域
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     officeZone?: string | null;
+
     /**
      * 办公室
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     office?: string | null;
+
     /**
      * 入职日期
+     *
      * @type {Date}
      * @memberof AddUserInput
      */
     joinDate?: Date | null;
+
     /**
      * 最新登录Ip
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     lastLoginIp?: string | null;
+
     /**
      * 最新登录地点
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     lastLoginAddress?: string | null;
+
     /**
      * 最新登录时间
+     *
      * @type {Date}
      * @memberof AddUserInput
      */
     lastLoginTime?: Date | null;
+
     /**
      * 最新登录设备
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     lastLoginDevice?: string | null;
+
     /**
      * 电子签名
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     signature?: string | null;
+
     /**
      * 语言代码(如 zh-CN)
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     langCode?: string | null;
+
     /**
      * 个性化首页地址
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     homepage?: string | null;
+
     /**
      * 账号
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     account: string;
+
     /**
      * 真实姓名
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     realName: string;
+
     /**
      * 域用户
+     *
      * @type {string}
      * @memberof AddUserInput
      */
     domainAccount?: string | null;
+
     /**
      * 角色集合
+     *
      * @type {Array<number>}
      * @memberof AddUserInput
      */
     roleIdList?: Array<number> | null;
+
     /**
      * 扩展机构集合
+     *
      * @type {Array<SysUserExtOrg>}
      * @memberof AddUserInput
      */

+ 71 - 0
Web/src/api-services/models/admin-result-dictionary-string-list-sys-file-provider.ts

@@ -0,0 +1,71 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import { SysFileProvider } from './sys-file-provider';
+ /**
+ * 全局返回结果
+ *
+ * @export
+ * @interface AdminResultDictionaryStringListSysFileProvider
+ */
+export interface AdminResultDictionaryStringListSysFileProvider {
+
+    /**
+     * 状态码
+     *
+     * @type {number}
+     * @memberof AdminResultDictionaryStringListSysFileProvider
+     */
+    code?: number;
+
+    /**
+     * 类型success、warning、error
+     *
+     * @type {string}
+     * @memberof AdminResultDictionaryStringListSysFileProvider
+     */
+    type?: string | null;
+
+    /**
+     * 错误信息
+     *
+     * @type {string}
+     * @memberof AdminResultDictionaryStringListSysFileProvider
+     */
+    message?: string | null;
+
+    /**
+     * 数据
+     *
+     * @type {{ [key: string]: Array<SysFileProvider>; }}
+     * @memberof AdminResultDictionaryStringListSysFileProvider
+     */
+    result?: { [key: string]: Array<SysFileProvider>; } | null;
+
+    /**
+     * 附加数据
+     *
+     * @type {any}
+     * @memberof AdminResultDictionaryStringListSysFileProvider
+     */
+    extras?: any | null;
+
+    /**
+     * 时间
+     *
+     * @type {Date}
+     * @memberof AdminResultDictionaryStringListSysFileProvider
+     */
+    time?: Date;
+}

+ 71 - 0
Web/src/api-services/models/admin-result-list-sys-file-provider.ts

@@ -0,0 +1,71 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import { SysFileProvider } from './sys-file-provider';
+ /**
+ * 全局返回结果
+ *
+ * @export
+ * @interface AdminResultListSysFileProvider
+ */
+export interface AdminResultListSysFileProvider {
+
+    /**
+     * 状态码
+     *
+     * @type {number}
+     * @memberof AdminResultListSysFileProvider
+     */
+    code?: number;
+
+    /**
+     * 类型success、warning、error
+     *
+     * @type {string}
+     * @memberof AdminResultListSysFileProvider
+     */
+    type?: string | null;
+
+    /**
+     * 错误信息
+     *
+     * @type {string}
+     * @memberof AdminResultListSysFileProvider
+     */
+    message?: string | null;
+
+    /**
+     * 数据
+     *
+     * @type {Array<SysFileProvider>}
+     * @memberof AdminResultListSysFileProvider
+     */
+    result?: Array<SysFileProvider> | null;
+
+    /**
+     * 附加数据
+     *
+     * @type {any}
+     * @memberof AdminResultListSysFileProvider
+     */
+    extras?: any | null;
+
+    /**
+     * 时间
+     *
+     * @type {Date}
+     * @memberof AdminResultListSysFileProvider
+     */
+    time?: Date;
+}

+ 69 - 0
Web/src/api-services/models/admin-result-sql-sugar-paged-list-sys-file-provider.ts

@@ -0,0 +1,69 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import { SqlSugarPagedListSysFileProvider } from './sql-sugar-paged-list-sys-file-provider';
+ /**
+ * 全局返回结果
+ *
+ * @export
+ * @interface AdminResultSqlSugarPagedListSysFileProvider
+ */
+export interface AdminResultSqlSugarPagedListSysFileProvider {
+
+    /**
+     * 状态码
+     *
+     * @type {number}
+     * @memberof AdminResultSqlSugarPagedListSysFileProvider
+     */
+    code?: number;
+
+    /**
+     * 类型success、warning、error
+     *
+     * @type {string}
+     * @memberof AdminResultSqlSugarPagedListSysFileProvider
+     */
+    type?: string | null;
+
+    /**
+     * 错误信息
+     *
+     * @type {string}
+     * @memberof AdminResultSqlSugarPagedListSysFileProvider
+     */
+    message?: string | null;
+
+    /**
+     * @type {SqlSugarPagedListSysFileProvider}
+     * @memberof AdminResultSqlSugarPagedListSysFileProvider
+     */
+    result?: SqlSugarPagedListSysFileProvider;
+
+    /**
+     * 附加数据
+     *
+     * @type {any}
+     * @memberof AdminResultSqlSugarPagedListSysFileProvider
+     */
+    extras?: any | null;
+
+    /**
+     * 时间
+     *
+     * @type {Date}
+     * @memberof AdminResultSqlSugarPagedListSysFileProvider
+     */
+    time?: Date;
+}

+ 69 - 0
Web/src/api-services/models/admin-result-sys-file-provider.ts

@@ -0,0 +1,69 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import { SysFileProvider } from './sys-file-provider';
+ /**
+ * 全局返回结果
+ *
+ * @export
+ * @interface AdminResultSysFileProvider
+ */
+export interface AdminResultSysFileProvider {
+
+    /**
+     * 状态码
+     *
+     * @type {number}
+     * @memberof AdminResultSysFileProvider
+     */
+    code?: number;
+
+    /**
+     * 类型success、warning、error
+     *
+     * @type {string}
+     * @memberof AdminResultSysFileProvider
+     */
+    type?: string | null;
+
+    /**
+     * 错误信息
+     *
+     * @type {string}
+     * @memberof AdminResultSysFileProvider
+     */
+    message?: string | null;
+
+    /**
+     * @type {SysFileProvider}
+     * @memberof AdminResultSysFileProvider
+     */
+    result?: SysFileProvider;
+
+    /**
+     * 附加数据
+     *
+     * @type {any}
+     * @memberof AdminResultSysFileProvider
+     */
+    extras?: any | null;
+
+    /**
+     * 时间
+     *
+     * @type {Date}
+     * @memberof AdminResultSysFileProvider
+     */
+    time?: Date;
+}

+ 38 - 0
Web/src/api-services/models/batch-enable-provider-input.ts

@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+ /**
+ * 批量启用/禁用存储提供者输入参数
+ *
+ * @export
+ * @interface BatchEnableProviderInput
+ */
+export interface BatchEnableProviderInput {
+
+    /**
+     * 存储提供者ID列表
+     *
+     * @type {Array<number>}
+     * @memberof BatchEnableProviderInput
+     */
+    ids: Array<number>;
+
+    /**
+     * 是否启用
+     *
+     * @type {boolean}
+     * @memberof BatchEnableProviderInput
+     */
+    isEnable?: boolean;
+}

+ 30 - 0
Web/src/api-services/models/delete-file-provider-input.ts

@@ -0,0 +1,30 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+ /**
+ * 删除文件存储提供者输入参数
+ *
+ * @export
+ * @interface DeleteFileProviderInput
+ */
+export interface DeleteFileProviderInput {
+
+    /**
+     * 主键Id
+     *
+     * @type {number}
+     * @memberof DeleteFileProviderInput
+     */
+    id: number;
+}

+ 2 - 3
Web/src/api-services/models/gender-enum.ts

@@ -13,14 +13,13 @@
  */
 
 /**
- * 性别枚举(GB/T 2261.1-2003)<br />&nbsp;未知的性别 Unknown = 0<br />&nbsp;男性 Male = 1<br />&nbsp;女性 Female = 2<br />&nbsp;未说明的性别 Unspecified = 9<br />
+ * 性别枚举(GB/T 2261.1-2003)<br />&nbsp;未知 Unknown = 0<br />&nbsp;男性 Male = 1<br />&nbsp;女性 Female = 2<br />
  * @export
  * @enum {string}
  */
 export enum GenderEnum {
     NUMBER_0 = 0,
     NUMBER_1 = 1,
-    NUMBER_2 = 2,
-    NUMBER_9 = 9
+    NUMBER_2 = 2
 }
 

+ 11 - 0
Web/src/api-services/models/index.ts

@@ -3,6 +3,7 @@ export * from './add-code-gen-input';
 export * from './add-config-input';
 export * from './add-dict-data-input';
 export * from './add-dict-type-input';
+export * from './add-file-provider-input';
 export * from './add-job-detail-input';
 export * from './add-job-trigger-input';
 export * from './add-menu-input';
@@ -26,6 +27,7 @@ export * from './add-user-reg-way-input';
 export * from './admin-result-boolean';
 export * from './admin-result-data-set';
 export * from './admin-result-data-table';
+export * from './admin-result-dictionary-string-list-sys-file-provider';
 export * from './admin-result-dictionary-string-string';
 export * from './admin-result-generate-qrimage-output';
 export * from './admin-result-iaction-result';
@@ -53,6 +55,7 @@ export * from './admin-result-list-sys-config';
 export * from './admin-result-list-sys-dict-data';
 export * from './admin-result-list-sys-dict-type';
 export * from './admin-result-list-sys-file';
+export * from './admin-result-list-sys-file-provider';
 export * from './admin-result-list-sys-job-cluster';
 export * from './admin-result-list-sys-job-trigger';
 export * from './admin-result-list-sys-lang-text-output';
@@ -82,6 +85,7 @@ export * from './admin-result-sql-sugar-paged-list-sys-config';
 export * from './admin-result-sql-sugar-paged-list-sys-dict-data';
 export * from './admin-result-sql-sugar-paged-list-sys-dict-type';
 export * from './admin-result-sql-sugar-paged-list-sys-file';
+export * from './admin-result-sql-sugar-paged-list-sys-file-provider';
 export * from './admin-result-sql-sugar-paged-list-sys-job-trigger-record';
 export * from './admin-result-sql-sugar-paged-list-sys-lang-output';
 export * from './admin-result-sql-sugar-paged-list-sys-lang-text-output';
@@ -110,6 +114,7 @@ export * from './admin-result-sys-config';
 export * from './admin-result-sys-dict-data';
 export * from './admin-result-sys-dict-type';
 export * from './admin-result-sys-file';
+export * from './admin-result-sys-file-provider';
 export * from './admin-result-sys-lang';
 export * from './admin-result-sys-lang-text';
 export * from './admin-result-sys-ldap';
@@ -137,6 +142,7 @@ export * from './backup-output';
 export * from './base-id-input';
 export * from './base-proc-input';
 export * from './batch-config-input';
+export * from './batch-enable-provider-input';
 export * from './calendar';
 export * from './calendar-algorithm-type';
 export * from './calendar-week-rule';
@@ -180,6 +186,7 @@ export * from './delete-db-column-input';
 export * from './delete-db-table-input';
 export * from './delete-dict-data-input';
 export * from './delete-dict-type-input';
+export * from './delete-file-provider-input';
 export * from './delete-job-detail-input';
 export * from './delete-job-trigger-input';
 export * from './delete-menu-input';
@@ -281,6 +288,7 @@ export * from './page-dict-data-input';
 export * from './page-dict-type-input';
 export * from './page-ex-log-input';
 export * from './page-file-input';
+export * from './page-file-provider-input';
 export * from './page-job-detail-input';
 export * from './page-job-trigger-record-input';
 export * from './page-log-input';
@@ -333,6 +341,7 @@ export * from './sql-sugar-paged-list-sys-config';
 export * from './sql-sugar-paged-list-sys-dict-data';
 export * from './sql-sugar-paged-list-sys-dict-type';
 export * from './sql-sugar-paged-list-sys-file';
+export * from './sql-sugar-paged-list-sys-file-provider';
 export * from './sql-sugar-paged-list-sys-job-trigger-record';
 export * from './sql-sugar-paged-list-sys-lang-output';
 export * from './sql-sugar-paged-list-sys-lang-text-output';
@@ -365,6 +374,7 @@ export * from './sys-config';
 export * from './sys-dict-data';
 export * from './sys-dict-type';
 export * from './sys-file';
+export * from './sys-file-provider';
 export * from './sys-file-upload-avatar-body';
 export * from './sys-file-upload-file-body';
 export * from './sys-file-upload-files-body';
@@ -426,6 +436,7 @@ export * from './update-db-column-input';
 export * from './update-db-table-input';
 export * from './update-dict-data-input';
 export * from './update-dict-type-input';
+export * from './update-file-provider-input';
 export * from './update-job-detail-input';
 export * from './update-job-trigger-input';
 export * from './update-menu-input';

+ 0 - 16
Web/src/api-services/models/list-sys-lang-text-input.ts

@@ -51,20 +51,4 @@ export interface ListSysLangTextInput {
      * @memberof ListSysLangTextInput
      */
     langCode?: string | null;
-
-    /**
-     * 当前页码
-     *
-     * @type {number}
-     * @memberof PageNoticeInput
-     */
-    page?: number;
-
-    /**
-     * 页码容量
-     *
-     * @type {number}
-     * @memberof PageNoticeInput
-     */
-    pageSize?: number;
 }

+ 9 - 1
Web/src/api-services/models/login-output.ts

@@ -11,26 +11,34 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
-/**
+
+ /**
  * 用户登录结果
+ *
  * @export
  * @interface LoginOutput
  */
 export interface LoginOutput {
+
     /**
      * 令牌Token
+     *
      * @type {string}
      * @memberof LoginOutput
      */
     accessToken?: string | null;
+
     /**
      * 刷新Token
+     *
      * @type {string}
      * @memberof LoginOutput
      */
     refreshToken?: string | null;
+
     /**
      * 个性化首页
+     *
      * @type {string}
      * @memberof LoginOutput
      */

+ 108 - 0
Web/src/api-services/models/page-file-provider-input.ts

@@ -0,0 +1,108 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import { Filter } from './filter';
+import { Search } from './search';
+ /**
+ * 文件存储提供者分页查询输入参数
+ *
+ * @export
+ * @interface PageFileProviderInput
+ */
+export interface PageFileProviderInput {
+
+    /**
+     * @type {Search}
+     * @memberof PageFileProviderInput
+     */
+    search?: Search;
+
+    /**
+     * 模糊查询关键字
+     *
+     * @type {string}
+     * @memberof PageFileProviderInput
+     */
+    keyword?: string | null;
+
+    /**
+     * @type {Filter}
+     * @memberof PageFileProviderInput
+     */
+    filter?: Filter;
+
+    /**
+     * 当前页码
+     *
+     * @type {number}
+     * @memberof PageFileProviderInput
+     */
+    page?: number;
+
+    /**
+     * 页码容量
+     *
+     * @type {number}
+     * @memberof PageFileProviderInput
+     */
+    pageSize?: number;
+
+    /**
+     * 排序字段
+     *
+     * @type {string}
+     * @memberof PageFileProviderInput
+     */
+    field?: string | null;
+
+    /**
+     * 排序方向
+     *
+     * @type {string}
+     * @memberof PageFileProviderInput
+     */
+    order?: string | null;
+
+    /**
+     * 降序排序
+     *
+     * @type {string}
+     * @memberof PageFileProviderInput
+     */
+    descStr?: string | null;
+
+    /**
+     * 存储提供者
+     *
+     * @type {string}
+     * @memberof PageFileProviderInput
+     */
+    provider?: string | null;
+
+    /**
+     * 存储桶名称
+     *
+     * @type {string}
+     * @memberof PageFileProviderInput
+     */
+    bucketName?: string | null;
+
+    /**
+     * 是否启用
+     *
+     * @type {boolean}
+     * @memberof PageFileProviderInput
+     */
+    isEnable?: boolean | null;
+}

+ 8 - 0
Web/src/api-services/models/role-menu-input.ts

@@ -28,6 +28,14 @@ export interface RoleMenuInput {
      */
     id: number;
 
+    /**
+     * 同步角色Id集合
+     *
+     * @type {Array<number>}
+     * @memberof RoleMenuInput
+     */
+    roleIdList?: Array<number> | null;
+
     /**
      * 菜单Id集合
      *

+ 79 - 0
Web/src/api-services/models/sql-sugar-paged-list-sys-file-provider.ts

@@ -0,0 +1,79 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import { SysFileProvider } from './sys-file-provider';
+ /**
+ * 分页泛型集合
+ *
+ * @export
+ * @interface SqlSugarPagedListSysFileProvider
+ */
+export interface SqlSugarPagedListSysFileProvider {
+
+    /**
+     * 页码
+     *
+     * @type {number}
+     * @memberof SqlSugarPagedListSysFileProvider
+     */
+    page?: number;
+
+    /**
+     * 页容量
+     *
+     * @type {number}
+     * @memberof SqlSugarPagedListSysFileProvider
+     */
+    pageSize?: number;
+
+    /**
+     * 总条数
+     *
+     * @type {number}
+     * @memberof SqlSugarPagedListSysFileProvider
+     */
+    total?: number;
+
+    /**
+     * 总页数
+     *
+     * @type {number}
+     * @memberof SqlSugarPagedListSysFileProvider
+     */
+    totalPages?: number;
+
+    /**
+     * 当前页集合
+     *
+     * @type {Array<SysFileProvider>}
+     * @memberof SqlSugarPagedListSysFileProvider
+     */
+    items?: Array<SysFileProvider> | null;
+
+    /**
+     * 是否有上一页
+     *
+     * @type {boolean}
+     * @memberof SqlSugarPagedListSysFileProvider
+     */
+    hasPrevPage?: boolean;
+
+    /**
+     * 是否有下一页
+     *
+     * @type {boolean}
+     * @memberof SqlSugarPagedListSysFileProvider
+     */
+    hasNextPage?: boolean;
+}

+ 206 - 0
Web/src/api-services/models/sys-file-provider.ts

@@ -0,0 +1,206 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+ /**
+ * 系统文件存储提供者表
+ *
+ * @export
+ * @interface SysFileProvider
+ */
+export interface SysFileProvider {
+
+    /**
+     * 雪花Id
+     *
+     * @type {number}
+     * @memberof SysFileProvider
+     */
+    id?: number;
+
+    /**
+     * 创建时间
+     *
+     * @type {Date}
+     * @memberof SysFileProvider
+     */
+    createTime?: Date;
+
+    /**
+     * 更新时间
+     *
+     * @type {Date}
+     * @memberof SysFileProvider
+     */
+    updateTime?: Date | null;
+
+    /**
+     * 创建者Id
+     *
+     * @type {number}
+     * @memberof SysFileProvider
+     */
+    createUserId?: number | null;
+
+    /**
+     * 创建者姓名
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    createUserName?: string | null;
+
+    /**
+     * 修改者Id
+     *
+     * @type {number}
+     * @memberof SysFileProvider
+     */
+    updateUserId?: number | null;
+
+    /**
+     * 修改者姓名
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    updateUserName?: string | null;
+
+    /**
+     * 租户Id
+     *
+     * @type {number}
+     * @memberof SysFileProvider
+     */
+    tenantId?: number | null;
+
+    /**
+     * 存储提供者(Minio, QCloud,Aliyun 等等)
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    provider: string;
+
+    /**
+     * 存储桶名称
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    bucketName: string;
+
+    /**
+     * 访问密钥 (填入 阿里云(Aliyun)/Minio:的 AccessKey,腾讯云(QCloud): 的 SecretId)
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    accessKey?: string | null;
+
+    /**
+     * 密钥
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    secretKey?: string | null;
+
+    /**
+     * 地域
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    region?: string | null;
+
+    /**
+     * 端点地址(填入 阿里云(Aliyun)/Minio:的 endpoint/Api address,腾讯云(QCloud): 的 AppId)
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    endpoint?: string | null;
+
+    /**
+     * 是否启用HTTPS
+     *
+     * @type {boolean}
+     * @memberof SysFileProvider
+     */
+    isEnableHttps?: boolean | null;
+
+    /**
+     * 是否启用缓存
+     *
+     * @type {boolean}
+     * @memberof SysFileProvider
+     */
+    isEnableCache?: boolean | null;
+
+    /**
+     * 是否启用
+     *
+     * @type {boolean}
+     * @memberof SysFileProvider
+     */
+    isEnable?: boolean | null;
+
+    /**
+     * 是否默认提供者
+     *
+     * @type {boolean}
+     * @memberof SysFileProvider
+     */
+    isDefault?: boolean | null;
+
+    /**
+     * 自定义域名
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    sinceDomain?: string | null;
+
+    /**
+     * 排序号
+     *
+     * @type {number}
+     * @memberof SysFileProvider
+     */
+    orderNo?: number | null;
+
+    /**
+     * 备注
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    remark?: string | null;
+
+    /**
+     * 获取显示名称
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    displayName?: string | null;
+
+    /**
+     * 获取配置键名
+     *
+     * @type {string}
+     * @memberof SysFileProvider
+     */
+    configKey?: string | null;
+}

+ 24 - 0
Web/src/api-services/models/sys-file-upload-file-body.ts

@@ -51,4 +51,28 @@ export interface SysFileUploadFileBody {
      * @memberof SysFileUploadFileBody
      */
     allowSuffix?: string;
+
+    /**
+     * 指定存储桶名称
+     *
+     * @type {string}
+     * @memberof SysFileUploadFileBody
+     */
+    bucketName?: string;
+
+    /**
+     * 指定存储提供者ID
+     *
+     * @type {number}
+     * @memberof SysFileUploadFileBody
+     */
+    providerId?: number;
+
+    /**
+     * 业务数据Id
+     *
+     * @type {number}
+     * @memberof SysFileUploadFileBody
+     */
+    dataId?: number;
 }

+ 1 - 1
Web/src/api-services/models/sys-lang-text.ts

@@ -85,7 +85,7 @@ export interface SysLangText {
     entityName?: string | null;
 
     /**
-     * 语言代码(如 zh-CN)
+     * 所属实体ID
      *
      * @type {number}
      * @memberof SysLangText

+ 8 - 0
Web/src/api-services/models/sys-ldap.ts

@@ -85,6 +85,14 @@ export interface SysLdap {
      */
     isDelete?: boolean;
 
+    /**
+     * 软删除时间
+     *
+     * @type {Date}
+     * @memberof SysLdap
+     */
+    deleteTime?: Date | null;
+
     /**
      * 租户Id
      *

+ 2 - 0
Web/src/api-services/models/sys-menu.ts

@@ -14,6 +14,7 @@
 
 import { MenuTypeEnum } from './menu-type-enum';
 import { StatusEnum } from './status-enum';
+import { SysMenu } from './sys-menu';
  /**
  * 系统菜单表
  *
@@ -21,6 +22,7 @@ import { StatusEnum } from './status-enum';
  * @interface SysMenu
  */
 export interface SysMenu {
+
     /**
      * 雪花Id
      *

+ 99 - 7
Web/src/api-services/models/sys-user.ts

@@ -11,320 +11,412 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
+
 import { AccountTypeEnum } from './account-type-enum';
 import { CardTypeEnum } from './card-type-enum';
 import { CultureLevelEnum } from './culture-level-enum';
 import { GenderEnum } from './gender-enum';
 import { StatusEnum } from './status-enum';
 import { SysOrg } from './sys-org';
-/**
+ /**
  * 系统用户表
+ *
  * @export
  * @interface SysUser
  */
 export interface SysUser {
+
     /**
      * 雪花Id
+     *
      * @type {number}
      * @memberof SysUser
      */
     id?: number;
+
     /**
      * 创建时间
+     *
      * @type {Date}
      * @memberof SysUser
      */
     createTime?: Date;
+
     /**
      * 更新时间
+     *
      * @type {Date}
      * @memberof SysUser
      */
     updateTime?: Date | null;
+
     /**
      * 创建者Id
+     *
      * @type {number}
      * @memberof SysUser
      */
     createUserId?: number | null;
+
     /**
      * 创建者姓名
+     *
      * @type {string}
      * @memberof SysUser
      */
     createUserName?: string | null;
+
     /**
      * 修改者Id
+     *
      * @type {number}
      * @memberof SysUser
      */
     updateUserId?: number | null;
+
     /**
      * 修改者姓名
+     *
      * @type {string}
      * @memberof SysUser
      */
     updateUserName?: string | null;
+
     /**
      * 机构Id
+     *
      * @type {number}
      * @memberof SysUser
      */
     orgId?: number;
+
     /**
      * 租户Id
+     *
      * @type {number}
      * @memberof SysUser
      */
     tenantId?: number | null;
+
     /**
      * 账号
+     *
      * @type {string}
      * @memberof SysUser
      */
     account: string;
+
     /**
      * 真实姓名
+     *
      * @type {string}
      * @memberof SysUser
      */
     realName?: string | null;
+
     /**
      * 昵称
+     *
      * @type {string}
      * @memberof SysUser
      */
     nickName?: string | null;
+
     /**
      * 头像
+     *
      * @type {string}
      * @memberof SysUser
      */
     avatar?: string | null;
+
     /**
-     * 
      * @type {GenderEnum}
      * @memberof SysUser
      */
     sex?: GenderEnum;
+
     /**
      * 年龄
+     *
      * @type {number}
      * @memberof SysUser
      */
     age?: number;
+
     /**
      * 出生日期
+     *
      * @type {Date}
      * @memberof SysUser
      */
     birthday?: Date | null;
+
     /**
      * 民族
+     *
      * @type {string}
      * @memberof SysUser
      */
     nation?: string | null;
+
     /**
      * 手机号码
+     *
      * @type {string}
      * @memberof SysUser
      */
     phone?: string | null;
+
     /**
-     * 
      * @type {CardTypeEnum}
      * @memberof SysUser
      */
     cardType?: CardTypeEnum;
+
     /**
      * 身份证号
+     *
      * @type {string}
      * @memberof SysUser
      */
     idCardNum?: string | null;
+
     /**
      * 邮箱
+     *
      * @type {string}
      * @memberof SysUser
      */
     email?: string | null;
+
     /**
      * 地址
+     *
      * @type {string}
      * @memberof SysUser
      */
     address?: string | null;
+
     /**
-     * 
      * @type {CultureLevelEnum}
      * @memberof SysUser
      */
     cultureLevel?: CultureLevelEnum;
+
     /**
      * 政治面貌
+     *
      * @type {string}
      * @memberof SysUser
      */
     politicalOutlook?: string | null;
+
     /**
      * 毕业院校
+     *
      * @type {string}
      * @memberof SysUser
      */
     college?: string | null;
+
     /**
      * 办公电话
+     *
      * @type {string}
      * @memberof SysUser
      */
     officePhone?: string | null;
+
     /**
      * 紧急联系人
+     *
      * @type {string}
      * @memberof SysUser
      */
     emergencyContact?: string | null;
+
     /**
      * 紧急联系人电话
+     *
      * @type {string}
      * @memberof SysUser
      */
     emergencyPhone?: string | null;
+
     /**
      * 紧急联系人地址
+     *
      * @type {string}
      * @memberof SysUser
      */
     emergencyAddress?: string | null;
+
     /**
      * 个人简介
+     *
      * @type {string}
      * @memberof SysUser
      */
     introduction?: string | null;
+
     /**
      * 排序
+     *
      * @type {number}
      * @memberof SysUser
      */
     orderNo?: number;
+
     /**
-     * 
      * @type {StatusEnum}
      * @memberof SysUser
      */
     status?: StatusEnum;
+
     /**
      * 备注
+     *
      * @type {string}
      * @memberof SysUser
      */
     remark?: string | null;
+
     /**
-     * 
      * @type {AccountTypeEnum}
      * @memberof SysUser
      */
     accountType?: AccountTypeEnum;
+
     /**
-     * 
      * @type {SysOrg}
      * @memberof SysUser
      */
     sysOrg?: SysOrg;
+
     /**
      * 直属主管Id
+     *
      * @type {number}
      * @memberof SysUser
      */
     managerUserId?: number | null;
+
     /**
      * 职位Id
+     *
      * @type {number}
      * @memberof SysUser
      */
     posId?: number;
+
     /**
      * 工号
+     *
      * @type {string}
      * @memberof SysUser
      */
     jobNum?: string | null;
+
     /**
      * 职级
+     *
      * @type {string}
      * @memberof SysUser
      */
     posLevel?: string | null;
+
     /**
      * 职称
+     *
      * @type {string}
      * @memberof SysUser
      */
     posTitle?: string | null;
+
     /**
      * 擅长领域
+     *
      * @type {string}
      * @memberof SysUser
      */
     expertise?: string | null;
+
     /**
      * 办公区域
+     *
      * @type {string}
      * @memberof SysUser
      */
     officeZone?: string | null;
+
     /**
      * 办公室
+     *
      * @type {string}
      * @memberof SysUser
      */
     office?: string | null;
+
     /**
      * 入职日期
+     *
      * @type {Date}
      * @memberof SysUser
      */
     joinDate?: Date | null;
+
     /**
      * 最新登录Ip
+     *
      * @type {string}
      * @memberof SysUser
      */
     lastLoginIp?: string | null;
+
     /**
      * 最新登录地点
+     *
      * @type {string}
      * @memberof SysUser
      */
     lastLoginAddress?: string | null;
+
     /**
      * 最新登录时间
+     *
      * @type {Date}
      * @memberof SysUser
      */
     lastLoginTime?: Date | null;
+
     /**
      * 最新登录设备
+     *
      * @type {string}
      * @memberof SysUser
      */
     lastLoginDevice?: string | null;
+
     /**
      * 电子签名
+     *
      * @type {string}
      * @memberof SysUser
      */
     signature?: string | null;
+
     /**
      * 语言代码(如 zh-CN)
+     *
      * @type {string}
      * @memberof SysUser
      */
     langCode?: string | null;
+
     /**
      * 个性化首页地址
+     *
      * @type {string}
      * @memberof SysUser
      */

+ 8 - 0
Web/src/api-services/models/tenant-menu-input.ts

@@ -28,6 +28,14 @@ export interface TenantMenuInput {
      */
     id: number;
 
+    /**
+     * 同步租户Id集合
+     *
+     * @type {Array<number>}
+     * @memberof TenantMenuInput
+     */
+    tenantIdList?: Array<number> | null;
+
     /**
      * 菜单Id集合
      *

+ 1 - 1
Web/src/api-services/models/tenant-type-enum.ts

@@ -13,7 +13,7 @@
  */
 
 /**
- * 租户类型枚举<br />&nbsp;Id隔离 Id = 0<br />&nbsp;库隔离 Db = 1<br />
+ * 租户类型枚举<br />&nbsp;ID隔离 Id = 0<br />&nbsp;库隔离 Db = 1<br />
  * @export
  * @enum {string}
  */

+ 6 - 6
Web/src/api-services/models/update-dict-type-input.ts

@@ -117,12 +117,6 @@ export interface UpdateDictTypeInput {
      */
     status?: StatusEnum;
 
-    /**
-     * @type {YesNoEnum}
-     * @memberof UpdateDictTypeInput
-     */
-    isTenant?: YesNoEnum;
-
     /**
      * 字典值集合
      *
@@ -131,6 +125,12 @@ export interface UpdateDictTypeInput {
      */
     children?: Array<SysDictData> | null;
 
+    /**
+     * @type {YesNoEnum}
+     * @memberof UpdateDictTypeInput
+     */
+    isTenant?: YesNoEnum;
+
     /**
      * @type {YesNoEnum}
      * @memberof UpdateDictTypeInput

+ 150 - 0
Web/src/api-services/models/update-file-provider-input.ts

@@ -0,0 +1,150 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+ /**
+ * 更新文件存储提供者输入参数
+ *
+ * @export
+ * @interface UpdateFileProviderInput
+ */
+export interface UpdateFileProviderInput {
+
+    /**
+     * 存储提供者
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    provider: string;
+
+    /**
+     * 存储桶名称
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    bucketName: string;
+
+    /**
+     * 访问密钥ID(所有云服务商统一使用此字段)
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    accessKey?: string | null;
+
+    /**
+     * 密钥
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    secretKey?: string | null;
+
+    /**
+     * 地域
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    region?: string | null;
+
+    /**
+     * 端点地址
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    endpoint?: string | null;
+
+    /**
+     * 是否启用HTTPS
+     *
+     * @type {boolean}
+     * @memberof UpdateFileProviderInput
+     */
+    isEnableHttps?: boolean | null;
+
+    /**
+     * 是否启用缓存
+     *
+     * @type {boolean}
+     * @memberof UpdateFileProviderInput
+     */
+    isEnableCache?: boolean | null;
+
+    /**
+     * 是否启用
+     *
+     * @type {boolean}
+     * @memberof UpdateFileProviderInput
+     */
+    isEnable?: boolean | null;
+
+    /**
+     * 是否默认提供者
+     *
+     * @type {boolean}
+     * @memberof UpdateFileProviderInput
+     */
+    isDefault?: boolean | null;
+
+    /**
+     * 自定义域名
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    sinceDomain?: string | null;
+
+    /**
+     * 排序号
+     *
+     * @type {number}
+     * @memberof UpdateFileProviderInput
+     */
+    orderNo?: number | null;
+
+    /**
+     * 备注
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    remark?: string | null;
+
+    /**
+     * 支持的业务类型(JSON格式)
+     *
+     * @type {string}
+     * @memberof UpdateFileProviderInput
+     */
+    businessTypes?: string | null;
+
+    /**
+     * 优先级
+     *
+     * @type {number}
+     * @memberof UpdateFileProviderInput
+     */
+    priority?: number;
+
+    /**
+     * 主键Id
+     *
+     * @type {number}
+     * @memberof UpdateFileProviderInput
+     */
+    id: number;
+}

+ 1 - 1
Web/src/api-services/models/update-menu-input.ts

@@ -139,7 +139,7 @@ export interface UpdateMenuInput {
      * @type {string}
      * @memberof UpdateMenuInput
      */
-    icon?: string;
+    icon?: string | null;
 
     /**
      * 是否内嵌

+ 8 - 0
Web/src/api-services/models/update-sys-ldap-input.ts

@@ -85,6 +85,14 @@ export interface UpdateSysLdapInput {
      */
     isDelete?: boolean;
 
+    /**
+     * 软删除时间
+     *
+     * @type {Date}
+     * @memberof UpdateSysLdapInput
+     */
+    deleteTime?: Date | null;
+
     /**
      * 租户Id
      *

+ 105 - 7
Web/src/api-services/models/update-user-input.ts

@@ -11,6 +11,7 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
+
 import { AccountTypeEnum } from './account-type-enum';
 import { CardTypeEnum } from './card-type-enum';
 import { CultureLevelEnum } from './culture-level-enum';
@@ -18,332 +19,429 @@ import { GenderEnum } from './gender-enum';
 import { StatusEnum } from './status-enum';
 import { SysOrg } from './sys-org';
 import { SysUserExtOrg } from './sys-user-ext-org';
-/**
+ /**
  * 更新用户输入参数
+ *
  * @export
  * @interface UpdateUserInput
  */
 export interface UpdateUserInput {
+
     /**
      * 雪花Id
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     id?: number;
+
     /**
      * 创建时间
+     *
      * @type {Date}
      * @memberof UpdateUserInput
      */
     createTime?: Date;
+
     /**
      * 更新时间
+     *
      * @type {Date}
      * @memberof UpdateUserInput
      */
     updateTime?: Date | null;
+
     /**
      * 创建者Id
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     createUserId?: number | null;
+
     /**
      * 创建者姓名
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     createUserName?: string | null;
+
     /**
      * 修改者Id
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     updateUserId?: number | null;
+
     /**
      * 修改者姓名
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     updateUserName?: string | null;
+
     /**
      * 机构Id
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     orgId?: number;
+
     /**
      * 租户Id
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     tenantId?: number | null;
+
     /**
      * 昵称
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     nickName?: string | null;
+
     /**
      * 头像
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     avatar?: string | null;
+
     /**
-     * 
      * @type {GenderEnum}
      * @memberof UpdateUserInput
      */
     sex?: GenderEnum;
+
     /**
      * 年龄
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     age?: number;
+
     /**
      * 出生日期
+     *
      * @type {Date}
      * @memberof UpdateUserInput
      */
     birthday?: Date | null;
+
     /**
      * 民族
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     nation?: string | null;
+
     /**
      * 手机号码
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     phone?: string | null;
+
     /**
-     * 
      * @type {CardTypeEnum}
      * @memberof UpdateUserInput
      */
     cardType?: CardTypeEnum;
+
     /**
      * 身份证号
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     idCardNum?: string | null;
+
     /**
      * 邮箱
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     email?: string | null;
+
     /**
      * 地址
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     address?: string | null;
+
     /**
-     * 
      * @type {CultureLevelEnum}
      * @memberof UpdateUserInput
      */
     cultureLevel?: CultureLevelEnum;
+
     /**
      * 政治面貌
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     politicalOutlook?: string | null;
+
     /**
      * 毕业院校
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     college?: string | null;
+
     /**
      * 办公电话
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     officePhone?: string | null;
+
     /**
      * 紧急联系人
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     emergencyContact?: string | null;
+
     /**
      * 紧急联系人电话
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     emergencyPhone?: string | null;
+
     /**
      * 紧急联系人地址
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     emergencyAddress?: string | null;
+
     /**
      * 个人简介
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     introduction?: string | null;
+
     /**
      * 排序
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     orderNo?: number;
+
     /**
-     * 
      * @type {StatusEnum}
      * @memberof UpdateUserInput
      */
     status?: StatusEnum;
+
     /**
      * 备注
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     remark?: string | null;
+
     /**
-     * 
      * @type {AccountTypeEnum}
      * @memberof UpdateUserInput
      */
     accountType?: AccountTypeEnum;
+
     /**
-     * 
      * @type {SysOrg}
      * @memberof UpdateUserInput
      */
     sysOrg?: SysOrg;
+
     /**
      * 直属主管Id
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     managerUserId?: number | null;
+
     /**
      * 职位Id
+     *
      * @type {number}
      * @memberof UpdateUserInput
      */
     posId?: number;
+
     /**
      * 工号
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     jobNum?: string | null;
+
     /**
      * 职级
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     posLevel?: string | null;
+
     /**
      * 职称
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     posTitle?: string | null;
+
     /**
      * 擅长领域
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     expertise?: string | null;
+
     /**
      * 办公区域
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     officeZone?: string | null;
+
     /**
      * 办公室
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     office?: string | null;
+
     /**
      * 入职日期
+     *
      * @type {Date}
      * @memberof UpdateUserInput
      */
     joinDate?: Date | null;
+
     /**
      * 最新登录Ip
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     lastLoginIp?: string | null;
+
     /**
      * 最新登录地点
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     lastLoginAddress?: string | null;
+
     /**
      * 最新登录时间
+     *
      * @type {Date}
      * @memberof UpdateUserInput
      */
     lastLoginTime?: Date | null;
+
     /**
      * 最新登录设备
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     lastLoginDevice?: string | null;
+
     /**
      * 电子签名
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     signature?: string | null;
+
     /**
      * 语言代码(如 zh-CN)
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     langCode?: string | null;
+
     /**
      * 个性化首页地址
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     homepage?: string | null;
+
     /**
      * 账号
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     account: string;
+
     /**
      * 真实姓名
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     realName: string;
+
     /**
      * 域用户
+     *
      * @type {string}
      * @memberof UpdateUserInput
      */
     domainAccount?: string | null;
+
     /**
      * 角色集合
+     *
      * @type {Array<number>}
      * @memberof UpdateUserInput
      */
     roleIdList?: Array<number> | null;
+
     /**
      * 扩展机构集合
+     *
      * @type {Array<SysUserExtOrg>}
      * @memberof UpdateUserInput
      */

+ 107 - 7
Web/src/api-services/models/user-output.ts

@@ -11,344 +11,444 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
+
 import { AccountTypeEnum } from './account-type-enum';
 import { CardTypeEnum } from './card-type-enum';
 import { CultureLevelEnum } from './culture-level-enum';
 import { GenderEnum } from './gender-enum';
 import { StatusEnum } from './status-enum';
 import { SysOrg } from './sys-org';
-/**
+ /**
  * 
+ *
  * @export
  * @interface UserOutput
  */
 export interface UserOutput {
+
     /**
      * 雪花Id
+     *
      * @type {number}
      * @memberof UserOutput
      */
     id?: number;
+
     /**
      * 创建时间
+     *
      * @type {Date}
      * @memberof UserOutput
      */
     createTime?: Date;
+
     /**
      * 更新时间
+     *
      * @type {Date}
      * @memberof UserOutput
      */
     updateTime?: Date | null;
+
     /**
      * 创建者Id
+     *
      * @type {number}
      * @memberof UserOutput
      */
     createUserId?: number | null;
+
     /**
      * 创建者姓名
+     *
      * @type {string}
      * @memberof UserOutput
      */
     createUserName?: string | null;
+
     /**
      * 修改者Id
+     *
      * @type {number}
      * @memberof UserOutput
      */
     updateUserId?: number | null;
+
     /**
      * 修改者姓名
+     *
      * @type {string}
      * @memberof UserOutput
      */
     updateUserName?: string | null;
+
     /**
      * 机构Id
+     *
      * @type {number}
      * @memberof UserOutput
      */
     orgId?: number;
+
     /**
      * 租户Id
+     *
      * @type {number}
      * @memberof UserOutput
      */
     tenantId?: number | null;
+
     /**
      * 账号
+     *
      * @type {string}
      * @memberof UserOutput
      */
     account: string;
+
     /**
      * 真实姓名
+     *
      * @type {string}
      * @memberof UserOutput
      */
     realName?: string | null;
+
     /**
      * 昵称
+     *
      * @type {string}
      * @memberof UserOutput
      */
     nickName?: string | null;
+
     /**
      * 头像
+     *
      * @type {string}
      * @memberof UserOutput
      */
     avatar?: string | null;
+
     /**
-     * 
      * @type {GenderEnum}
      * @memberof UserOutput
      */
     sex?: GenderEnum;
+
     /**
      * 年龄
+     *
      * @type {number}
      * @memberof UserOutput
      */
     age?: number;
+
     /**
      * 出生日期
+     *
      * @type {Date}
      * @memberof UserOutput
      */
     birthday?: Date | null;
+
     /**
      * 民族
+     *
      * @type {string}
      * @memberof UserOutput
      */
     nation?: string | null;
+
     /**
      * 手机号码
+     *
      * @type {string}
      * @memberof UserOutput
      */
     phone?: string | null;
+
     /**
-     * 
      * @type {CardTypeEnum}
      * @memberof UserOutput
      */
     cardType?: CardTypeEnum;
+
     /**
      * 身份证号
+     *
      * @type {string}
      * @memberof UserOutput
      */
     idCardNum?: string | null;
+
     /**
      * 邮箱
+     *
      * @type {string}
      * @memberof UserOutput
      */
     email?: string | null;
+
     /**
      * 地址
+     *
      * @type {string}
      * @memberof UserOutput
      */
     address?: string | null;
+
     /**
-     * 
      * @type {CultureLevelEnum}
      * @memberof UserOutput
      */
     cultureLevel?: CultureLevelEnum;
+
     /**
      * 政治面貌
+     *
      * @type {string}
      * @memberof UserOutput
      */
     politicalOutlook?: string | null;
+
     /**
      * 毕业院校
+     *
      * @type {string}
      * @memberof UserOutput
      */
     college?: string | null;
+
     /**
      * 办公电话
+     *
      * @type {string}
      * @memberof UserOutput
      */
     officePhone?: string | null;
+
     /**
      * 紧急联系人
+     *
      * @type {string}
      * @memberof UserOutput
      */
     emergencyContact?: string | null;
+
     /**
      * 紧急联系人电话
+     *
      * @type {string}
      * @memberof UserOutput
      */
     emergencyPhone?: string | null;
+
     /**
      * 紧急联系人地址
+     *
      * @type {string}
      * @memberof UserOutput
      */
     emergencyAddress?: string | null;
+
     /**
      * 个人简介
+     *
      * @type {string}
      * @memberof UserOutput
      */
     introduction?: string | null;
+
     /**
      * 排序
+     *
      * @type {number}
      * @memberof UserOutput
      */
     orderNo?: number;
+
     /**
-     * 
      * @type {StatusEnum}
      * @memberof UserOutput
      */
     status?: StatusEnum;
+
     /**
      * 备注
+     *
      * @type {string}
      * @memberof UserOutput
      */
     remark?: string | null;
+
     /**
-     * 
      * @type {AccountTypeEnum}
      * @memberof UserOutput
      */
     accountType?: AccountTypeEnum;
+
     /**
-     * 
      * @type {SysOrg}
      * @memberof UserOutput
      */
     sysOrg?: SysOrg;
+
     /**
      * 直属主管Id
+     *
      * @type {number}
      * @memberof UserOutput
      */
     managerUserId?: number | null;
+
     /**
      * 职位Id
+     *
      * @type {number}
      * @memberof UserOutput
      */
     posId?: number;
+
     /**
      * 工号
+     *
      * @type {string}
      * @memberof UserOutput
      */
     jobNum?: string | null;
+
     /**
      * 职级
+     *
      * @type {string}
      * @memberof UserOutput
      */
     posLevel?: string | null;
+
     /**
      * 职称
+     *
      * @type {string}
      * @memberof UserOutput
      */
     posTitle?: string | null;
+
     /**
      * 擅长领域
+     *
      * @type {string}
      * @memberof UserOutput
      */
     expertise?: string | null;
+
     /**
      * 办公区域
+     *
      * @type {string}
      * @memberof UserOutput
      */
     officeZone?: string | null;
+
     /**
      * 办公室
+     *
      * @type {string}
      * @memberof UserOutput
      */
     office?: string | null;
+
     /**
      * 入职日期
+     *
      * @type {Date}
      * @memberof UserOutput
      */
     joinDate?: Date | null;
+
     /**
      * 最新登录Ip
+     *
      * @type {string}
      * @memberof UserOutput
      */
     lastLoginIp?: string | null;
+
     /**
      * 最新登录地点
+     *
      * @type {string}
      * @memberof UserOutput
      */
     lastLoginAddress?: string | null;
+
     /**
      * 最新登录时间
+     *
      * @type {Date}
      * @memberof UserOutput
      */
     lastLoginTime?: Date | null;
+
     /**
      * 最新登录设备
+     *
      * @type {string}
      * @memberof UserOutput
      */
     lastLoginDevice?: string | null;
+
     /**
      * 电子签名
+     *
      * @type {string}
      * @memberof UserOutput
      */
     signature?: string | null;
+
     /**
      * 语言代码(如 zh-CN)
+     *
      * @type {string}
      * @memberof UserOutput
      */
     langCode?: string | null;
+
     /**
      * 个性化首页地址
+     *
      * @type {string}
      * @memberof UserOutput
      */
     homepage?: string | null;
+
     /**
      * 机构名称
+     *
      * @type {string}
      * @memberof UserOutput
      */
     orgName?: string | null;
+
     /**
      * 职位名称
+     *
      * @type {string}
      * @memberof UserOutput
      */
     posName?: string | null;
+
     /**
      * 角色名称
+     *
      * @type {string}
      * @memberof UserOutput
      */
     roleName?: string | null;
+
     /**
      * 域用户
+     *
      * @type {string}
      * @memberof UserOutput
      */