From 7aa49e7e3037b9d6ece09908f0d5f6df9a3f4b7e Mon Sep 17 00:00:00 2001 From: zuohuaijun Date: Wed, 4 Sep 2024 01:57:09 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=8E=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin.NET.Core/Enum/CodeGenTypeEnum.cs | 2 +- Admin.NET/Admin.NET.Core/Job/DbBackupJob.cs | 20 +- .../SeedData/SysMenuSeedData.cs | 8 +- .../Dto/DbBackupOutput.cs} | 12 +- .../SysDbBackupService.cs} | 111 +++---- Web/src/api-services/api.ts | 1 + .../api-services/apis/sys-db-backup-api.ts | 288 ++++++++++++++++++ Web/src/api-services/models/add-user-input.ts | 8 + .../admin-result-list-db-backup-output.ts | 71 +++++ .../api-services/models/code-gen-type-enum.ts | 5 +- .../api-services/models/db-backup-output.ts | 40 +++ Web/src/api-services/models/index.ts | 2 + Web/src/api-services/models/sys-user.ts | 8 + .../api-services/models/update-user-input.ts | 8 + Web/src/api-services/models/user-output.ts | 8 + Web/src/api/system/admin.ts | 24 +- Web/src/views/system/database/dbBackup.vue | 85 ++++++ Web/src/views/system/dbBackup/index.vue | 129 -------- 18 files changed, 598 insertions(+), 232 deletions(-) rename Admin.NET/Admin.NET.Core/Service/{DbBackup/Dto/BackupDto.cs => DataBase/Dto/DbBackupOutput.cs} (84%) rename Admin.NET/Admin.NET.Core/Service/{DbBackup/DbBackupService.cs => DataBase/SysDbBackupService.cs} (68%) create mode 100644 Web/src/api-services/apis/sys-db-backup-api.ts create mode 100644 Web/src/api-services/models/admin-result-list-db-backup-output.ts create mode 100644 Web/src/api-services/models/db-backup-output.ts create mode 100644 Web/src/views/system/database/dbBackup.vue delete mode 100644 Web/src/views/system/dbBackup/index.vue diff --git a/Admin.NET/Admin.NET.Core/Enum/CodeGenTypeEnum.cs b/Admin.NET/Admin.NET.Core/Enum/CodeGenTypeEnum.cs index 969930a6..70029358 100644 --- a/Admin.NET/Admin.NET.Core/Enum/CodeGenTypeEnum.cs +++ b/Admin.NET/Admin.NET.Core/Enum/CodeGenTypeEnum.cs @@ -28,5 +28,5 @@ public enum CodeGenTypeEnum /// 种子数据 /// [Description("种子数据")] - SeedData =3, + SeedData = 3, } \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Job/DbBackupJob.cs b/Admin.NET/Admin.NET.Core/Job/DbBackupJob.cs index 238ee0bc..c8467ccd 100644 --- a/Admin.NET/Admin.NET.Core/Job/DbBackupJob.cs +++ b/Admin.NET/Admin.NET.Core/Job/DbBackupJob.cs @@ -5,16 +5,14 @@ // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Furion.TimeCrontab; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Admin.NET.Core; +/// +/// 每天晚上2点进行数据库备份 +/// [JobDetail("job_DbBackupJob", Description = "备份数据库", GroupName = "default", Concurrent = false)] -[Cron("0 1 * * *", CronStringFormat.Default, TriggerId = "trigger_DbBackupJob", Description = "备份数据库", RunOnStart = false)] +[Cron("0 0 2 * * ? *", CronStringFormat.Default, TriggerId = "trigger_DbBackupJob", Description = "备份数据库", RunOnStart = false)] public class DbBackupJob : IJob { private readonly IServiceScopeFactory _scopeFactory; @@ -26,18 +24,18 @@ public class DbBackupJob : IJob public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { + using var serviceScope = _scopeFactory.CreateScope(); + var dbBackupService = serviceScope.ServiceProvider.GetRequiredService(); + string msg = $"【{DateTime.Now}】开始备份数据库"; var originColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(msg); Console.ForegroundColor = originColor; - using var serviceScope = _scopeFactory.CreateScope(); - var dbBackupService = serviceScope.ServiceProvider.GetRequiredService(); - - //清理7天前的备份文件 + // 清理7天前的备份文件 dbBackupService.DeleteExpiredDbFile(7); - //开始备份 + // 开始备份 await dbBackupService.Backup(); msg = $"【{DateTime.Now}】数据库备份完成"; diff --git a/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs b/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs index ded857ee..be643807 100644 --- a/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs +++ b/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs @@ -175,10 +175,10 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData new SysMenu{ Id=1310000000445, Pid=1310000000441, Title="获取支付订单详情(微信接口)", Permission="sysWechatPay/payInfoFromWechat", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, new SysMenu{ Id=1310000000446, Pid=1310000000441, Title="退款申请", Permission="sysWechatPay/refundDomestic", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, - new SysMenu{ Id=1310000000447, Pid=1310000000301, Title="数据库备份", Path="/platform/dbBackup", Name="dbBackup", Component="/system/dbBackup/index", Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=240 }, - new SysMenu{ Id=1310000000448, Pid=1310000000447, Title="查询", Permission="dbBackup/page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, - new SysMenu{ Id=1310000000449, Pid=1310000000447, Title="删除", Permission="dbBackup/delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, - new SysMenu{ Id=1310000000450, Pid=1310000000447, Title="增加", Permission="dbBackup/add", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, + new SysMenu{ Id=1310000000451, Pid=1310000000301, Title="数据库备份", Path="/platform/dbBackup", Name="dbBackup", Component="/system/database/dbBackup", Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=240 }, + new SysMenu{ Id=1310000000452, Pid=1310000000451, Title="查询", Permission="dbBackup/page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, + new SysMenu{ Id=1310000000453, Pid=1310000000451, Title="删除", Permission="dbBackup/delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, + new SysMenu{ Id=1310000000454, Pid=1310000000451, Title="增加", Permission="dbBackup/add", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, new SysMenu{ Id=1310000000501, Pid=0, Title="日志管理", Path="/log", Name="log", Component="Layout", Icon="ele-DocumentCopy", Type=MenuTypeEnum.Dir, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=12000 }, new SysMenu{ Id=1310000000511, Pid=1310000000501, Title="访问日志", Path="/log/logvis", Name="sysLogVis", Component="/system/log/logvis/index", Icon="ele-Document", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, diff --git a/Admin.NET/Admin.NET.Core/Service/DbBackup/Dto/BackupDto.cs b/Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbBackupOutput.cs similarity index 84% rename from Admin.NET/Admin.NET.Core/Service/DbBackup/Dto/BackupDto.cs rename to Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbBackupOutput.cs index 892e9d8b..7dd4ca78 100644 --- a/Admin.NET/Admin.NET.Core/Service/DbBackup/Dto/BackupDto.cs +++ b/Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbBackupOutput.cs @@ -4,17 +4,13 @@ // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - namespace Admin.NET.Core.Service; -public class BackupDto +public class DbBackupOutput { - public long Size { get; set; } public string FileName { get; set; } + public DateTime CreateTime { get; set; } + + public long Size { get; set; } } \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Service/DbBackup/DbBackupService.cs b/Admin.NET/Admin.NET.Core/Service/DataBase/SysDbBackupService.cs similarity index 68% rename from Admin.NET/Admin.NET.Core/Service/DbBackup/DbBackupService.cs rename to Admin.NET/Admin.NET.Core/Service/DataBase/SysDbBackupService.cs index f89a8092..dbbb097e 100644 --- a/Admin.NET/Admin.NET.Core/Service/DbBackup/DbBackupService.cs +++ b/Admin.NET/Admin.NET.Core/Service/DataBase/SysDbBackupService.cs @@ -4,31 +4,58 @@ // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - namespace Admin.NET.Core.Service; -public class DbBackupService : IDynamicApiController, ITransient +/// +/// 系统数据库备份服务 🧩 +/// +[ApiDescriptionSettings(Order = 255)] +public class SysDbBackupService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _sysUserRep; private readonly string backupDir; - public DbBackupService(SqlSugarRepository sysUserRep) + public SysDbBackupService(SqlSugarRepository sysUserRep) { _sysUserRep = sysUserRep; backupDir = Path.Combine(App.WebHostEnvironment.WebRootPath, "DbBackup"); } /// - /// 备份数据库 + /// 获取备份列表 🔖 /// /// - [HttpPost] - [ApiDescriptionSettings(Name = "Add")] + [DisplayName("获取备份列表")] + public List GetList() + { + try + { + var fileList = Directory.GetFiles(backupDir); + + var dbBackupList = new List(); + foreach (var item in fileList) + { + var info = new FileInfo(item); + dbBackupList.Add(new DbBackupOutput + { + FileName = info.Name, + Size = info.Length, + CreateTime = info.CreationTime + }); + } + return dbBackupList; + } + catch + { + return null; + } + } + + /// + /// 备份数据库 🔖 + /// + /// + [ApiDescriptionSettings(Name = "Add"), HttpPost] [DisplayName("备份数据库")] public async Task AddBackup() { @@ -36,10 +63,22 @@ public class DbBackupService : IDynamicApiController, ITransient } /// - /// 备份数据库 用于job调用 + /// 删除备份 🔖 + /// + /// + [ApiDescriptionSettings(Name = "Delete"), HttpPost] + [DisplayName("删除备份")] + public void DeleteBackup([FromQuery] string fileName) + { + var path = Path.Combine(backupDir, fileName); + File.Delete(path); + } + + /// + /// 备份数据库 /// /// - [ApiDescriptionSettings(false)] + [NonAction] public async Task Backup() { await Task.Run(() => @@ -48,9 +87,10 @@ public class DbBackupService : IDynamicApiController, ITransient foreach (var option in options.ConnectionConfigs) { var configId = option.ConfigId == null || string.IsNullOrWhiteSpace(option.ConfigId.ToString()) - ? SqlSugarConst.MainConfigId - : option.ConfigId.ToString(); - if (option?.DbType == SqlSugar.DbType.MySql) //备份mysql 其他数据库自行扩展 + ? SqlSugarConst.MainConfigId : option.ConfigId.ToString(); + + // 备份mysql 其他数据库自行扩展 + if (option?.DbType == SqlSugar.DbType.MySql) { var path = Path.Combine(backupDir, $"{configId}-{DateTime.Now:yyyyMMddHHmmss}.sql"); _sysUserRep.Context.DbMaintenance.BackupDataBase(_sysUserRep.Context.Ado.Connection.Database, path); @@ -63,7 +103,7 @@ public class DbBackupService : IDynamicApiController, ITransient /// 删除过期备份文件 /// /// 过期天数 - [ApiDescriptionSettings(false)] + [NonAction] public void DeleteExpiredDbFile(int day = 7) { var list = Directory.GetFiles(backupDir); @@ -83,41 +123,4 @@ public class DbBackupService : IDynamicApiController, ITransient } } } - - /// - /// 获取备份列表 - /// - /// - [HttpPost] - [ApiDescriptionSettings(Name = "Page")] - [DisplayName("获取备份列表")] - public List GetBackupList() - { - var list = Directory.GetFiles(backupDir); - var result = new List(); - foreach (var item in list) - { - var info = new FileInfo(item); - result.Add(new BackupDto - { - FileName = info.Name, - Size = info.Length, - CreateTime = info.CreationTime - }); - } - return result; - } - - /// - /// 删除备份 - /// - /// - [HttpPost] - [ApiDescriptionSettings(Name = "Delete")] - [DisplayName("删除备份")] - public void DeleteBackup([FromQuery] string fileName) - { - var path = Path.Combine(backupDir, fileName); - File.Delete(path); - } } \ No newline at end of file diff --git a/Web/src/api-services/api.ts b/Web/src/api-services/api.ts index ef032857..921b7ef8 100644 --- a/Web/src/api-services/api.ts +++ b/Web/src/api-services/api.ts @@ -21,6 +21,7 @@ export * from './apis/sys-common-api'; export * from './apis/sys-config-api'; export * from './apis/sys-const-api'; export * from './apis/sys-database-api'; +export * from './apis/sys-db-backup-api'; export * from './apis/sys-dict-data-api'; export * from './apis/sys-dict-type-api'; export * from './apis/sys-email-api'; diff --git a/Web/src/api-services/apis/sys-db-backup-api.ts b/Web/src/api-services/apis/sys-db-backup-api.ts new file mode 100644 index 00000000..4440d31e --- /dev/null +++ b/Web/src/api-services/apis/sys-db-backup-api.ts @@ -0,0 +1,288 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * 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 { AdminResultListDbBackupOutput } from '../models'; +/** + * SysDbBackupApi - axios parameter creator + * @export + */ +export const SysDbBackupApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary 备份数据库 🔖 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysDbBackupAddPost: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysDbBackup/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; + } + + 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 {string} [fileName] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysDbBackupDeletePost: async (fileName?: string, options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysDbBackup/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; + } + + if (fileName !== undefined) { + localVarQueryParameter['fileName'] = fileName; + } + + 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} + */ + apiSysDbBackupListGet: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysDbBackup/list`; + // 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, + }; + }, + } +}; + +/** + * SysDbBackupApi - functional programming interface + * @export + */ +export const SysDbBackupApiFp = function(configuration?: Configuration) { + return { + /** + * + * @summary 备份数据库 🔖 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysDbBackupAddPost(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysDbBackupApiAxiosParamCreator(configuration).apiSysDbBackupAddPost(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} [fileName] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysDbBackupDeletePost(fileName?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysDbBackupApiAxiosParamCreator(configuration).apiSysDbBackupDeletePost(fileName, 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 apiSysDbBackupListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysDbBackupApiAxiosParamCreator(configuration).apiSysDbBackupListGet(options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, + } +}; + +/** + * SysDbBackupApi - factory interface + * @export + */ +export const SysDbBackupApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + return { + /** + * + * @summary 备份数据库 🔖 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysDbBackupAddPost(options?: AxiosRequestConfig): Promise> { + return SysDbBackupApiFp(configuration).apiSysDbBackupAddPost(options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 删除备份 🔖 + * @param {string} [fileName] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysDbBackupDeletePost(fileName?: string, options?: AxiosRequestConfig): Promise> { + return SysDbBackupApiFp(configuration).apiSysDbBackupDeletePost(fileName, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 获取备份列表 🔖 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysDbBackupListGet(options?: AxiosRequestConfig): Promise> { + return SysDbBackupApiFp(configuration).apiSysDbBackupListGet(options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * SysDbBackupApi - object-oriented interface + * @export + * @class SysDbBackupApi + * @extends {BaseAPI} + */ +export class SysDbBackupApi extends BaseAPI { + /** + * + * @summary 备份数据库 🔖 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysDbBackupApi + */ + public async apiSysDbBackupAddPost(options?: AxiosRequestConfig) : Promise> { + return SysDbBackupApiFp(this.configuration).apiSysDbBackupAddPost(options).then((request) => request(this.axios, this.basePath)); + } + /** + * + * @summary 删除备份 🔖 + * @param {string} [fileName] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysDbBackupApi + */ + public async apiSysDbBackupDeletePost(fileName?: string, options?: AxiosRequestConfig) : Promise> { + return SysDbBackupApiFp(this.configuration).apiSysDbBackupDeletePost(fileName, options).then((request) => request(this.axios, this.basePath)); + } + /** + * + * @summary 获取备份列表 🔖 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysDbBackupApi + */ + public async apiSysDbBackupListGet(options?: AxiosRequestConfig) : Promise> { + return SysDbBackupApiFp(this.configuration).apiSysDbBackupListGet(options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/Web/src/api-services/models/add-user-input.ts b/Web/src/api-services/models/add-user-input.ts index e41c975c..c7d462c0 100644 --- a/Web/src/api-services/models/add-user-input.ts +++ b/Web/src/api-services/models/add-user-input.ts @@ -399,6 +399,14 @@ export interface AddUserInput { */ signature?: string | null; + /** + * Token版本号 + * + * @type {number} + * @memberof AddUserInput + */ + tokenVersion?: number; + /** * 最新密码修改时间 * diff --git a/Web/src/api-services/models/admin-result-list-db-backup-output.ts b/Web/src/api-services/models/admin-result-list-db-backup-output.ts new file mode 100644 index 00000000..997821ee --- /dev/null +++ b/Web/src/api-services/models/admin-result-list-db-backup-output.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * 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 { DbBackupOutput } from './db-backup-output'; + /** + * 全局返回结果 + * + * @export + * @interface AdminResultListDbBackupOutput + */ +export interface AdminResultListDbBackupOutput { + + /** + * 状态码 + * + * @type {number} + * @memberof AdminResultListDbBackupOutput + */ + code?: number; + + /** + * 类型success、warning、error + * + * @type {string} + * @memberof AdminResultListDbBackupOutput + */ + type?: string | null; + + /** + * 错误信息 + * + * @type {string} + * @memberof AdminResultListDbBackupOutput + */ + message?: string | null; + + /** + * 数据 + * + * @type {Array} + * @memberof AdminResultListDbBackupOutput + */ + result?: Array | null; + + /** + * 附加数据 + * + * @type {any} + * @memberof AdminResultListDbBackupOutput + */ + extras?: any | null; + + /** + * 时间 + * + * @type {Date} + * @memberof AdminResultListDbBackupOutput + */ + time?: Date; +} diff --git a/Web/src/api-services/models/code-gen-type-enum.ts b/Web/src/api-services/models/code-gen-type-enum.ts index 832a9371..ece64cad 100644 --- a/Web/src/api-services/models/code-gen-type-enum.ts +++ b/Web/src/api-services/models/code-gen-type-enum.ts @@ -13,12 +13,13 @@ */ /** - * 代码生成类型枚举
 前端 Frontend = 1
 后端 Backend = 2
+ * 代码生成类型枚举
 前端 Frontend = 1
 后端 Backend = 2
 种子数据 SeedData = 3
* @export * @enum {string} */ export enum CodeGenTypeEnum { NUMBER_1 = 1, - NUMBER_2 = 2 + NUMBER_2 = 2, + NUMBER_3 = 3 } diff --git a/Web/src/api-services/models/db-backup-output.ts b/Web/src/api-services/models/db-backup-output.ts new file mode 100644 index 00000000..8ff2acef --- /dev/null +++ b/Web/src/api-services/models/db-backup-output.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * 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 DbBackupOutput + */ +export interface DbBackupOutput { + + /** + * @type {string} + * @memberof DbBackupOutput + */ + fileName?: string | null; + + /** + * @type {Date} + * @memberof DbBackupOutput + */ + createTime?: Date; + + /** + * @type {number} + * @memberof DbBackupOutput + */ + size?: number; +} diff --git a/Web/src/api-services/models/index.ts b/Web/src/api-services/models/index.ts index d8d502c6..c67c1b2c 100644 --- a/Web/src/api-services/models/index.ts +++ b/Web/src/api-services/models/index.ts @@ -36,6 +36,7 @@ export * from './admin-result-list-code-gen-config'; export * from './admin-result-list-column-ouput'; export * from './admin-result-list-const-output'; export * from './admin-result-list-database-output'; +export * from './admin-result-list-db-backup-output'; export * from './admin-result-list-db-column-output'; export * from './admin-result-list-db-table-info'; export * from './admin-result-list-enum-entity'; @@ -149,6 +150,7 @@ export * from './data-table'; export * from './database-output'; export * from './date-time-format-info'; export * from './day-of-week'; +export * from './db-backup-output'; export * from './db-column-input'; export * from './db-column-output'; export * from './db-object-type'; diff --git a/Web/src/api-services/models/sys-user.ts b/Web/src/api-services/models/sys-user.ts index 2c1f0ee6..4abe2d6a 100644 --- a/Web/src/api-services/models/sys-user.ts +++ b/Web/src/api-services/models/sys-user.ts @@ -414,6 +414,14 @@ export interface SysUser { */ signature?: string | null; + /** + * Token版本号 + * + * @type {number} + * @memberof SysUser + */ + tokenVersion?: number; + /** * 最新密码修改时间 * diff --git a/Web/src/api-services/models/update-user-input.ts b/Web/src/api-services/models/update-user-input.ts index bca5c7c5..c16ed302 100644 --- a/Web/src/api-services/models/update-user-input.ts +++ b/Web/src/api-services/models/update-user-input.ts @@ -399,6 +399,14 @@ export interface UpdateUserInput { */ signature?: string | null; + /** + * Token版本号 + * + * @type {number} + * @memberof UpdateUserInput + */ + tokenVersion?: number; + /** * 最新密码修改时间 * diff --git a/Web/src/api-services/models/user-output.ts b/Web/src/api-services/models/user-output.ts index 9eec4666..383a7837 100644 --- a/Web/src/api-services/models/user-output.ts +++ b/Web/src/api-services/models/user-output.ts @@ -414,6 +414,14 @@ export interface UserOutput { */ signature?: string | null; + /** + * Token版本号 + * + * @type {number} + * @memberof UserOutput + */ + tokenVersion?: number; + /** * 最新密码修改时间 * diff --git a/Web/src/api/system/admin.ts b/Web/src/api/system/admin.ts index 79855a3a..9a32346c 100644 --- a/Web/src/api/system/admin.ts +++ b/Web/src/api/system/admin.ts @@ -16,26 +16,4 @@ export const getAllDictList = () => request({ url: `${Api.AllDictList}`, method: 'get', - }); - -// 获取所有备份文件 -export const getBackupList = () => - request({ - url: `/api/dbBackup/page`, - method: 'post', - }); - -// 新增备份文件 -export const addBackup = () => - request({ - url: `/api/dbBackup/add`, - method: 'post', - }); - -// 删除备份文件 -export const deleteBackup = (fileName: String) => - request({ - url: `/api/dbBackup/delete`, - method: 'post', - params: { fileName }, - }); + }); \ No newline at end of file diff --git a/Web/src/views/system/database/dbBackup.vue b/Web/src/views/system/database/dbBackup.vue new file mode 100644 index 00000000..905c2f28 --- /dev/null +++ b/Web/src/views/system/database/dbBackup.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/Web/src/views/system/dbBackup/index.vue b/Web/src/views/system/dbBackup/index.vue deleted file mode 100644 index 5b44a05f..00000000 --- a/Web/src/views/system/dbBackup/index.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - -