Merge pull request 'main' (#1) from Admin.NET/Admin.NET.Pro:main into main

Reviewed-on: http://101.43.53.74:3000/362270511/Admin.NET.Pro/pulls/1
This commit is contained in:
362270511 2024-07-13 11:10:35 +08:00
commit 00ce696538
65 changed files with 2121 additions and 556 deletions

View File

@ -18,9 +18,9 @@
<PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" /> <PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" /> <PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
<PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.14.6" /> <PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.14.6" />
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.4.4" /> <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.4.5" />
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.4.4" /> <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.4.5" />
<PackageReference Include="Furion.Pure" Version="4.9.4.4" /> <PackageReference Include="Furion.Pure" Version="4.9.4.5" />
<PackageReference Include="IPTools.China" Version="1.6.0" /> <PackageReference Include="IPTools.China" Version="1.6.0" />
<PackageReference Include="IPTools.International" Version="1.6.0" /> <PackageReference Include="IPTools.International" Version="1.6.0" />
<PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1" /> <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1" />
@ -34,10 +34,10 @@
<PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.2" /> <PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.2" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.3.0" /> <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.3.0" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.6.0" /> <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.6.0" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.160" /> <PackageReference Include="SqlSugarCore" Version="5.1.4.162" />
<PackageReference Include="SSH.NET" Version="2024.1.0" /> <PackageReference Include="SSH.NET" Version="2024.1.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.3" /> <PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.3" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1044" /> <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1046" />
<PackageReference Include="UAParser" Version="3.1.47" /> <PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" /> <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup> </ItemGroup>
@ -45,7 +45,7 @@
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
<PackageReference Include="AspNet.Security.OAuth.Gitee" Version="6.0.15" /> <PackageReference Include="AspNet.Security.OAuth.Gitee" Version="6.0.15" />
<PackageReference Include="AspNet.Security.OAuth.Weixin" Version="6.0.15" /> <PackageReference Include="AspNet.Security.OAuth.Weixin" Version="6.0.15" />
<PackageReference Include="Lazy.Captcha.Core" Version="2.0.6" /> <PackageReference Include="Lazy.Captcha.Core" Version="2.0.8" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.31" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.31" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="6.0.31" /> <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="6.0.31" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="6.0.31" /> <PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="6.0.31" />

View File

@ -100,4 +100,9 @@ public class CacheConst
/// 系统字典缓存 /// 系统字典缓存
/// </summary> /// </summary>
public const string KeyDict = "sys_dict:"; public const string KeyDict = "sys_dict:";
/// <summary>
/// Excel临时文件缓存
/// </summary>
public const string KeyExcelTemp = "sys_excel_temp:";
} }

View File

@ -70,7 +70,7 @@ public class EnumToDictJob : IJob
}); });
try try
{ {
db.Ado.BeginTran(); db.BeginTran();
if (uSysDictType.Count > 0) if (uSysDictType.Count > 0)
await db.Updateable(uSysDictType).ExecuteCommandAsync(stoppingToken); await db.Updateable(uSysDictType).ExecuteCommandAsync(stoppingToken);
@ -78,11 +78,11 @@ public class EnumToDictJob : IJob
if (uSysDictData.Count > 0) if (uSysDictData.Count > 0)
await db.Updateable(uSysDictData).ExecuteCommandAsync(stoppingToken); await db.Updateable(uSysDictData).ExecuteCommandAsync(stoppingToken);
db.Ado.CommitTran(); db.CommitTran();
} }
catch (Exception error) catch (Exception error)
{ {
db.Ado.RollbackTran(); db.RollbackTran();
Log.Error($"{context.Trigger.Description}更新枚举转换字典入库错误:" + _jsonSerializer.Serialize(error)); Log.Error($"{context.Trigger.Description}更新枚举转换字典入库错误:" + _jsonSerializer.Serialize(error));
throw new Exception($"{context.Trigger.Description}更新枚举转换字典入库错误"); throw new Exception($"{context.Trigger.Description}更新枚举转换字典入库错误");
} }
@ -123,7 +123,7 @@ public class EnumToDictJob : IJob
}); });
try try
{ {
db.Ado.BeginTran(); db.BeginTran();
if (iDictType.Count > 0) if (iDictType.Count > 0)
await db.Insertable(iDictType).ExecuteCommandAsync(stoppingToken); await db.Insertable(iDictType).ExecuteCommandAsync(stoppingToken);
@ -131,11 +131,11 @@ public class EnumToDictJob : IJob
if (iDictData.Count > 0) if (iDictData.Count > 0)
await db.Insertable(iDictData).ExecuteCommandAsync(stoppingToken); await db.Insertable(iDictData).ExecuteCommandAsync(stoppingToken);
db.Ado.CommitTran(); db.CommitTran();
} }
catch (Exception error) catch (Exception error)
{ {
db.Ado.RollbackTran(); db.RollbackTran();
Log.Error($"{context.Trigger.Description}新增枚举转换字典入库错误:" + _jsonSerializer.Serialize(error)); Log.Error($"{context.Trigger.Description}新增枚举转换字典入库错误:" + _jsonSerializer.Serialize(error));
throw new Exception($"{context.Trigger.Description}新增枚举转换字典入库错误"); throw new Exception($"{context.Trigger.Description}新增枚举转换字典入库错误");
} }

View File

@ -19,33 +19,34 @@ public class SysBaseApiSeedData : ISqlSugarEntitySeedData<SysBaseApi>
{ {
return new[] return new[]
{ {
new SysBaseApi { Id = 1300000000001, Route = "sysAuth/login" }, new SysBaseApi { Id = 1300000000010, Route = "sysAuth/login" },
new SysBaseApi { Id = 1300000000002, Route = "sysAuth/unLockScreen" }, new SysBaseApi { Id = 1300000000020, Route = "sysAuth/unLockScreen" },
new SysBaseApi { Id = 1300000000003, Route = "sysAuth/userInfo" }, new SysBaseApi { Id = 1300000000030, Route = "sysAuth/userInfo" },
new SysBaseApi { Id = 1300000000004, Route = "sysAuth/refreshToken" }, new SysBaseApi { Id = 1300000000040, Route = "sysAuth/refreshToken" },
new SysBaseApi { Id = 1300000000005, Route = "sysAuth/loginConfig" }, new SysBaseApi { Id = 1300000000050, Route = "sysAuth/loginConfig" },
new SysBaseApi { Id = 1300000000006, Route = "sysAuth/watermarkConfig" }, new SysBaseApi { Id = 1300000000060, Route = "sysAuth/watermarkConfig" },
new SysBaseApi { Id = 1300000000007, Route = "sysAuth/captcha" }, new SysBaseApi { Id = 1300000000070, Route = "sysAuth/captcha" },
new SysBaseApi { Id = 1300000000008, Route = "sysMenu/loginMenuTree" }, new SysBaseApi { Id = 1300000000080, Route = "sysAuth/logout" },
new SysBaseApi { Id = 1300000000009, Route = "sysOAuth/signIn" }, new SysBaseApi { Id = 1300000000090, Route = "sysMenu/loginMenuTree" },
new SysBaseApi { Id = 1300000000010, Route = "sysOAuth/signInCallback" }, new SysBaseApi { Id = 1300000000100, Route = "sysOAuth/signIn" },
new SysBaseApi { Id = 1300000000011, Route = "sysOnlineUser/page" }, new SysBaseApi { Id = 1300000000110, Route = "sysOAuth/signInCallback" },
new SysBaseApi { Id = 1300000000012, Route = "sysOrg/list" }, new SysBaseApi { Id = 1300000000120, Route = "sysOnlineUser/page" },
new SysBaseApi { Id = 1300000000013, Route = "sysPos/list" }, new SysBaseApi { Id = 1300000000130, Route = "sysOrg/list" },
new SysBaseApi { Id = 1300000000014, Route = "sysRole/page" }, new SysBaseApi { Id = 1300000000140, Route = "sysPos/list" },
new SysBaseApi { Id = 1300000000015, Route = "sysRole/list" }, new SysBaseApi { Id = 1300000000150, Route = "sysRole/page" },
new SysBaseApi { Id = 1300000000016, Route = "sysFile/uploadAvatar" }, new SysBaseApi { Id = 1300000000160, Route = "sysRole/list" },
new SysBaseApi { Id = 1300000000017, Route = "sysFile/uploadSignature" }, new SysBaseApi { Id = 1300000000170, Route = "sysFile/uploadAvatar" },
new SysBaseApi { Id = 1300000000018, Route = "sysUser/baseInfo" }, new SysBaseApi { Id = 1300000000180, Route = "sysFile/uploadSignature" },
new SysBaseApi { Id = 1300000000019, Route = "sysUser/changePwd" }, new SysBaseApi { Id = 1300000000190, Route = "sysUser/baseInfo" },
new SysBaseApi { Id = 1300000000020, Route = "sysNotice/page" }, new SysBaseApi { Id = 1300000000200, Route = "sysUser/changePwd" },
new SysBaseApi { Id = 1300000000021, Route = "sysNotice/add" }, new SysBaseApi { Id = 1300000000210, Route = "sysNotice/page" },
new SysBaseApi { Id = 1300000000022, Route = "sysNotice/update" }, new SysBaseApi { Id = 1300000000220, Route = "sysNotice/add" },
new SysBaseApi { Id = 1300000000023, Route = "sysNotice/delete" }, new SysBaseApi { Id = 1300000000230, Route = "sysNotice/update" },
new SysBaseApi { Id = 1300000000024, Route = "sysNotice/public" }, new SysBaseApi { Id = 1300000000240, Route = "sysNotice/delete" },
new SysBaseApi { Id = 1300000000025, Route = "sysNotice/setRead" }, new SysBaseApi { Id = 1300000000250, Route = "sysNotice/public" },
new SysBaseApi { Id = 1300000000026, Route = "sysNotice/pageReceived" }, new SysBaseApi { Id = 1300000000260, Route = "sysNotice/setRead" },
new SysBaseApi { Id = 1300000000027, Route = "sysNotice/unReadList" }, new SysBaseApi { Id = 1300000000270, Route = "sysNotice/pageReceived" },
new SysBaseApi { Id = 1300000000280, Route = "sysNotice/unReadList" },
}; };
} }
} }

View File

@ -9,7 +9,7 @@ namespace Admin.NET.Core.Service;
/// <summary> /// <summary>
/// 系统域登录信息配置输入参数 /// 系统域登录信息配置输入参数
/// </summary> /// </summary>
public class SysLdapInput : BasePageInput public class PageSysLdapInput : BasePageInput
{ {
/// <summary> /// <summary>
/// 关键字查询 /// 关键字查询

View File

@ -27,7 +27,7 @@ public class SysLdapService : IDynamicApiController, ITransient
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取系统域登录配置分页列表")] [DisplayName("获取系统域登录配置分页列表")]
public async Task<SqlSugarPagedList<SysLdap>> Page(SysLdapInput input) public async Task<SqlSugarPagedList<SysLdap>> Page(PageSysLdapInput input)
{ {
return await _sysLdapRep.AsQueryable() return await _sysLdapRep.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u => u.Host.Contains(input.SearchKey.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u => u.Host.Contains(input.SearchKey.Trim()))

View File

@ -144,6 +144,10 @@ public class SysCacheService : IDynamicApiController, ISingleton
[DisplayName("获取缓存值")] [DisplayName("获取缓存值")]
public object GetValue(string key) public object GetValue(string key)
{ {
// 若Key经过URL编码则进行解码
if (Regex.IsMatch(key, @"%[0-9a-fA-F]{2}"))
key = HttpUtility.UrlDecode(key);
return _cacheProvider.Cache == Cache.Default return _cacheProvider.Cache == Cache.Default
? _cacheProvider.Cache.Get<object>($"{_cacheOptions.Prefix}{key}") ? _cacheProvider.Cache.Get<object>($"{_cacheOptions.Prefix}{key}")
: _cacheProvider.Cache.Get<string>($"{_cacheOptions.Prefix}{key}"); : _cacheProvider.Cache.Get<string>($"{_cacheOptions.Prefix}{key}");

View File

@ -9,7 +9,7 @@ namespace Admin.NET.Core.Service;
/// <summary> /// <summary>
/// 代码生成参数类 /// 代码生成参数类
/// </summary> /// </summary>
public class CodeGenInput : BasePageInput public class PageCodeGenInput : BasePageInput
{ {
/// <summary> /// <summary>
/// 作者姓名 /// 作者姓名
@ -107,7 +107,7 @@ public class CodeGenInput : BasePageInput
public virtual bool IsApiService { get; set; } public virtual bool IsApiService { get; set; }
} }
public class AddCodeGenInput : CodeGenInput public class AddCodeGenInput : PageCodeGenInput
{ {
/// <summary> /// <summary>
/// 数据库表名 /// 数据库表名
@ -178,7 +178,7 @@ public class DeleteCodeGenInput
public long Id { get; set; } public long Id { get; set; }
} }
public class UpdateCodeGenInput : CodeGenInput public class UpdateCodeGenInput : PageCodeGenInput
{ {
/// <summary> /// <summary>
/// 代码生成器Id /// 代码生成器Id

View File

@ -37,7 +37,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取代码生成分页列表")] [DisplayName("获取代码生成分页列表")]
public async Task<SqlSugarPagedList<SysCodeGen>> Page(CodeGenInput input) public async Task<SqlSugarPagedList<SysCodeGen>> Page(PageCodeGenInput input)
{ {
return await _db.Queryable<SysCodeGen>() return await _db.Queryable<SysCodeGen>()
.WhereIF(!string.IsNullOrWhiteSpace(input.TableName), u => u.TableName.Contains(input.TableName.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.TableName), u => u.TableName.Contains(input.TableName.Trim()))

View File

@ -121,4 +121,23 @@ public class SysCommonService : IDynamicApiController, ITransient
} }
return apiList; return apiList;
} }
/// <summary>
/// 下载标记错误的临时 Excel全局
/// </summary>
/// <returns></returns>
[DisplayName("下载标记错误的临时 Excel")]
public async Task<IActionResult> DownloadErrorExcelTemp([FromQuery] string fileName = null)
{
var userId = App.User?.FindFirst(ClaimConst.UserId)?.Value;
var resultStream = App.GetRequiredService<SysCacheService>().Get<MemoryStream>(CacheConst.KeyExcelTemp + userId);
if (resultStream == null)
throw Oops.Oh("错误标记文件已过期。");
return await Task.FromResult(new FileStreamResult(resultStream, "application/octet-stream")
{
FileDownloadName = $"{(string.IsNullOrEmpty(fileName) ? "_" + DateTime.Now.ToString("yyyyMMddhhmmss") : fileName)}.xlsx"
});
}
} }

View File

@ -9,7 +9,7 @@ namespace Admin.NET.Core.Service;
/// <summary> /// <summary>
/// 开放接口身份输入参数 /// 开放接口身份输入参数
/// </summary> /// </summary>
public class OpenAccessInput : BasePageInput public class PageOpenAccessInput : BasePageInput
{ {
/// <summary> /// <summary>
/// 身份标识 /// 身份标识

View File

@ -54,7 +54,7 @@ public class SysOpenAccessService : IDynamicApiController, ITransient
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取开放接口身份分页列表")] [DisplayName("获取开放接口身份分页列表")]
public async Task<SqlSugarPagedList<OpenAccessOutput>> Page(OpenAccessInput input) public async Task<SqlSugarPagedList<OpenAccessOutput>> Page(PageOpenAccessInput input)
{ {
return await _sysOpenAccessRep.AsQueryable() return await _sysOpenAccessRep.AsQueryable()
.LeftJoin<SysUser>((u, a) => u.BindUserId == a.Id) .LeftJoin<SysUser>((u, a) => u.BindUserId == a.Id)

View File

@ -27,7 +27,7 @@ public class SysRoleApiService : ITransient
{ {
await _sysRoleApiRep.DeleteAsync(u => u.RoleId == input.Id); await _sysRoleApiRep.DeleteAsync(u => u.RoleId == input.Id);
var roleApis = input.ApiList.Select(u => new SysRoleApi var roleApis = input.ApiList.Where(u => !string.IsNullOrWhiteSpace(u)).Select(u => new SysRoleApi
{ {
RoleId = input.Id, RoleId = input.Id,
Route = u Route = u

View File

@ -203,7 +203,44 @@ public static class CommonUtil
foreach (var item in drErrorInfo.FieldErrors) foreach (var item in drErrorInfo.FieldErrors)
message += $"\r\n{item.Key}{item.Value}(文件第{drErrorInfo.RowIndex}行)"; message += $"\r\n{item.Key}{item.Value}(文件第{drErrorInfo.RowIndex}行)";
} }
message += "字段缺失:" + string.Join("", res.TemplateErrors.Select(m => m.RequireColumnName).ToList()); message += "\r\n字段缺失" + string.Join("", res.TemplateErrors.Select(m => m.RequireColumnName).ToList());
throw Oops.Oh("导入异常:" + message);
}
return res.Data;
}
/// <summary>
/// 导入Excel数据并错误标记
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public static async Task<ICollection<T>> ImportExcelData<T>([Required] IFormFile file, Func<ImportResult<T>, ImportResult<T>> importResultCallback = null) where T : class, new()
{
IImporter importer = new ExcelImporter();
var resultStream = new MemoryStream();
var res = await importer.Import<T>(file.OpenReadStream(), resultStream, importResultCallback);
resultStream.Seek(0, SeekOrigin.Begin);
var userId = App.User?.FindFirst(ClaimConst.UserId)?.Value;
App.GetRequiredService<SysCacheService>().Remove(CacheConst.KeyExcelTemp + userId);
App.GetRequiredService<SysCacheService>().Set(CacheConst.KeyExcelTemp + userId, resultStream, TimeSpan.FromMinutes(5));
var message = string.Empty;
if (res.HasError)
{
if (res.Exception != null)
message += $"\r\n{res.Exception.Message}";
foreach (DataRowErrorInfo drErrorInfo in res.RowErrors)
{
int rowNum = drErrorInfo.RowIndex;
foreach (var item in drErrorInfo.FieldErrors)
message += $"\r\n{item.Key}{item.Value}(文件第{drErrorInfo.RowIndex}行)";
}
if (res.TemplateErrors.Count > 0)
message += "\r\n字段缺失" + string.Join("", res.TemplateErrors.Select(m => m.RequireColumnName).ToList());
if (message.Length > 200)
message = message.Substring(0, 200) + "...\r\n异常过多建议下载错误标记文件查看详细错误信息并重新导入。";
throw Oops.Oh("导入异常:" + message); throw Oops.Oh("导入异常:" + message);
} }
return res.Data; return res.Data;

View File

@ -20,25 +20,25 @@
<template> <template>
<div class="@(@Model.LowerClassName)-container" v-loading="options.loading"> <div class="@(@Model.LowerClassName)-container" v-loading="options.loading">
<el-card shadow="hover" :body-style="{ padding: '20px 20px 16px 10px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }"> <el-card shadow="hover" :body-style="{ padding: '20px 20px 16px 10px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }">
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true" label-width="auto" style="flex: 1 1 0%" @@submit.prevent="handleQuery(true)" > <el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true" label-width="auto" style="flex: 1 1 0%" @@submit.prevent="handleQuery" >
<el-row :gutter="10"> <el-row :gutter="10">
@if(Model.QueryWhetherList.Count > 0){ @if(Model.QueryWhetherList.Count > 0){
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6"> <el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="关键字" prop="searchKey"> <el-form-item label="关键字" prop="searchKey">
<el-input v-model="state.queryParams.searchKey" placeholder="请输入模糊查询关键字" clearable @@keyup.enter.native="handleQuery(true)" /> <el-input v-model="state.queryParams.searchKey" placeholder="请输入模糊查询关键字" clearable @@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
foreach (var column in Model.QueryWhetherList) { foreach (var column in Model.QueryWhetherList) {
if(@column.EffectType == "Input" || @column.EffectType == "InputTextArea") { if(@column.EffectType == "Input" || @column.EffectType == "InputTextArea") {
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI"> <el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)"> <el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
<el-input v-model="state.queryParams.@(@column.LowerPropertyName)" placeholder="@column.ColumnComment" clearable @@keyup.enter.native="handleQuery(true)" /> <el-input v-model="state.queryParams.@(@column.LowerPropertyName)" placeholder="@column.ColumnComment" clearable @@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
} else if(@column.EffectType == "InputNumber") { } else if(@column.EffectType == "InputNumber") {
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI"> <el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment"> <el-form-item label="@column.ColumnComment">
<el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" placeholder="请输入@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" /> <el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" placeholder="请输入@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
} else if(@column.EffectType == "fk") { } else if(@column.EffectType == "fk") {
@ -52,7 +52,7 @@
} else if(@column.EffectType == "Select") { } else if(@column.EffectType == "Select") {
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI"> <el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)"> <el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" > <el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.code" :label="`${item.name} [${item.code}] ${item.value}`" /> <el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.code" :label="`${item.name} [${item.code}] ${item.value}`" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -60,7 +60,7 @@
} else if(@column.EffectType == "EnumSelector") { } else if(@column.EffectType == "EnumSelector") {
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI"> <el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)"> <el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" > <el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} [${item.code}] ${item.value}`" /> <el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} [${item.code}] ${item.value}`" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -86,7 +86,7 @@
<el-row> <el-row>
<el-col> <el-col>
<el-button-group> <el-button-group>
<el-button type="primary" icon="ele-Search" @@click="handleQuery(true)" v-auth="'@(@Model.LowerClassName):page'" :loading="options.loading"> 查询 </el-button> <el-button type="primary" icon="ele-Search" @@click="handleQuery" v-auth="'@(@Model.LowerClassName):page'" :loading="options.loading"> 查询 </el-button>
<el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> 重置 </el-button> <el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> 重置 </el-button>
<el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> 高级查询 </el-button> <el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> 高级查询 </el-button>
<el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> 隐藏 </el-button> <el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> 隐藏 </el-button>
@ -96,7 +96,7 @@
</el-card> </el-card>
<el-card class="full-table" shadow="hover" style="margin-top: 5px"> <el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" @@sort-change="sortChange"> <vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_buttons> <template #toolbar_buttons>
<el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName):add'"> 新增 </el-button> <el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName):add'"> 新增 </el-button>
</template> </template>
@ -154,11 +154,7 @@
@:<template #row_@(@column.LowerPropertyName)="{ row }"> @:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<el-tag :type="dv('@(@column.DictTypeCode)', row.@(@column.LowerPropertyName))?.tagType"> {{dv('@(@column.DictTypeCode)', row.@column.LowerPropertyName)?.name}}</el-tag> @:<el-tag :type="dv('@(@column.DictTypeCode)', row.@(@column.LowerPropertyName))?.tagType"> {{dv('@(@column.DictTypeCode)', row.@column.LowerPropertyName)?.name}}</el-tag>
@:</template> @:</template>
} else if(@column.EffectType == "DatePicker") { }
@:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<span>{{ formatDate(new Date(row.@(@column.LowerPropertyName)), 'YYYY-mm-dd HH:MM:SS') }}</span>
@:</template>
}
} }
} }
<template #row_record="{ row }"> <template #row_record="{ row }">
@ -177,15 +173,6 @@
<el-button icon="ele-Delete" size="small" text type="danger" @@click="handleDelete(row)" v-auth="'@(@Model.LowerClassName):delete'" :disabled="row.status === 1" /> <el-button icon="ele-Delete" size="small" text type="danger" @@click="handleDelete(row)" v-auth="'@(@Model.LowerClassName):delete'" :disabled="row.status === 1" />
</el-tooltip> </el-tooltip>
</template> </template>
<template #pager>
<vxe-pager
:loading="options.loading"
v-model:current-page="state.tableParams.page"
v-model:page-size="state.tableParams.pageSize"
:total="state.tableParams.total"
@@page-change="pageChange"
/>
</template>
</vxe-grid> </vxe-grid>
</el-card> </el-card>
@ -198,8 +185,10 @@
import { onMounted, reactive, ref } from 'vue'; import { onMounted, reactive, ref } from 'vue';
import { ElMessageBox, ElMessage } from "element-plus"; import { ElMessageBox, ElMessage } from "element-plus";
import { auth } from '/@@/utils/authFunction'; import { auth } from '/@@/utils/authFunction';
import { VxeGridInstance, VxePagerEvents, VxePagerDefines } from 'vxe-table';
import { useVxeTable } from '/@@/hooks/vxeTableOptionsHook'; import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
import { useVxeTable } from '/@@/hooks/useVxeTableOptionsHook';
import { Local } from '/@@/utils/storage';
@if(@Model.TableField.Any(x=>x.EffectType == "ConstSelector")){ @if(@Model.TableField.Any(x=>x.EffectType == "ConstSelector")){
@:import { codeToName, getConstType } from "/@@/utils/constHelper"; @:import { codeToName, getConstType } from "/@@/utils/constHelper";
@ -260,81 +249,82 @@ const state = reactive({
} }
} }
}, },
tableParams: { localPageParam: {
page: 1, pageSize: 50 as number,
pageSize: 50, defaultSort: { field: 'createTime', order: 'asc', descStr: 'desc' },
field: 'id', // 默认的排序字段
order: 'aes', // 排序方向
descStr: 'desc', // 降序排序的关键字符
total: 0 as any,
}, },
visible: false, visible: false,
title: '', title: '',
}); });
// 本地存储参数
const localPageParamKey = 'localPageParam:@(@Model.LowerClassName)';
// 改变高级查询的控件显示状态 // 改变高级查询的控件显示状态
const changeAdvanceQueryUI = () => { const changeAdvanceQueryUI = () => {
state.showAdvanceQueryUI = !state.showAdvanceQueryUI; state.showAdvanceQueryUI = !state.showAdvanceQueryUI;
}; };
// 表格参数配置 // 表格参数配置
const options = useVxeTable<@(@Model.ClassName)>({ const options = useVxeTable<@(@Model.ClassName)>(
id: '@(@Model.ClassName)', {
name: '@(@Model.BusName)', id: '@(@Model.ClassName)',
columns: [ name: '@(@Model.BusName)',
{ type: 'seq', title: '序号', width: 60, fixed: 'left' }, columns: [
@foreach (var column in Model.TableField) { { type: 'seq', title: '序号', width: 60, fixed: 'left' },
var whethersortable =column.WhetherSortable == "Y" ? "sortable: true" : "sortable: false"; @foreach (var column in Model.TableField) {
if(@column.WhetherTable == "Y") { var whethersortable =column.WhetherSortable == "Y" ? "sortable: true" : "sortable: false";
if(@column.EffectType == "Upload" || @column.EffectType == "fk" || @column.EffectType == "ApiTreeSelect" || @column.EffectType == "Switch" || @column.EffectType == "ConstSelector") { if(@column.WhetherTable == "Y") {
if(@column.EffectType == "Upload") { if(@column.EffectType == "Upload" || @column.EffectType == "fk" || @column.EffectType == "ApiTreeSelect" || @column.EffectType == "Switch" || @column.EffectType == "ConstSelector") {
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, if(@column.EffectType == "Upload") {
} else if(@column.EffectType == "fk") { @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable },
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, } else if(@column.EffectType == "fk") {
} else if(@column.EffectType == "ApiTreeSelect") { @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable },
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, } else if(@column.EffectType == "ApiTreeSelect") {
} else if(@column.EffectType == "Switch") { @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable },
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, } else if(@column.EffectType == "Switch") {
} else if(@column.EffectType == "ConstSelector") { @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable },
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, } else if(@column.EffectType == "ConstSelector") {
} @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable },
} else if(@column.EffectType == "Select") { }
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, } else if(@column.EffectType == "Select") {
} else if(@column.EffectType == "EnumSelector") { @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable },
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, } else if(@column.EffectType == "EnumSelector") {
} else if(@column.EffectType == "DatePicker") { @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable },
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', slots: { default: 'row_@column.LowerPropertyName' }, @whethersortable }, } else if(@column.EffectType == "DatePicker") {
} else { @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', formatter: ({ cellValue }) => formatDate(new Date(cellValue), 'YYYY-mm-dd HH:MM:SS'), @whethersortable },
@:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', @whethersortable}, } else {
} @:{ field: '@column.LowerPropertyName', title: '@column.ColumnComment', minWidth: 100, showOverflow: 'tooltip', @whethersortable},
} }
} }
{ field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } }, }
{ title: '操作', fixed: 'right', width: 180, showOverflow: true, slots: { default: 'row_buttons' } }, { field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
], { title: '操作', fixed: 'right', width: 180, showOverflow: true, slots: { default: 'row_buttons' } },
enableExport: auth('@(@Model.LowerClassName):export'), ],
searchCallback: () => handleQuery(), },
queryAllCallback: () => fetchData({ pageSize: 99999 }), // vxeGrid配置参数(此处可覆写任何参数)参考vxe-table官方文档
}); {
// 代理配置
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
// 排序配置
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
// 分页配置
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
// 工具栏配置
toolbarConfig: { export: false },
// 行设置
rowConfig: { height: 80 },
}
);
// 页面初始化 // 页面初始化
onMounted(async () => { onMounted(async () => {
await handleQuery(); await handleQuery();
}); });
// 查询操作 // 查询api
const handleQuery = async (reset = false) => { const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
options.loading = true; const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as @(@Model.ClassName)Input;
if (reset) state.tableParams.page = 1;
var res = await fetchData(null);
xGrid.value?.loadData(res.data.result?.items ?? []);
state.tableParams.total = res.data.result?.total;
options.loading = false;
};
// 获取数据
const fetchData = async (tableParams: any) => {
let params = Object.assign(state.queryParams, state.tableParams, tableParams);
@if (@Model.IsApiService) { @if (@Model.IsApiService) {
@:return getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)PagePost(params); @:return getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)PagePost(params);
} else { } else {
@ -342,29 +332,20 @@ const fetchData = async (tableParams: any) => {
} }
}; };
// 查询操作
const handleQuery = async (reset = false) => {
await xGrid.value?.commitProxy('query');
};
// 重置操作 // 重置操作
const resetQuery = () => { const resetQuery = async () => {
state.queryParams.searchKey = undefined, state.queryParams.searchKey = undefined,
@if(Model.QueryWhetherList.Count > 0) { @if(Model.QueryWhetherList.Count > 0) {
@foreach (var column in Model.QueryWhetherList) { @foreach (var column in Model.QueryWhetherList) {
@:state.queryParams.@(@column.LowerPropertyName) = undefined, @:state.queryParams.@(@column.LowerPropertyName) = undefined,
} }
} }
handleQuery(true); await xGrid.value?.commitProxy('reload');
};
// 改变页码序号或页面容量
const pageChange: VxePagerEvents.PageChange = ({ currentPage, pageSize }: VxePagerDefines.PageChangeEventParams) => {
state.tableParams.page = currentPage;
state.tableParams.pageSize = pageSize;
handleQuery();
};
// 列排序
const sortChange = (options: any) => {
state.tableParams.field = options.field;
state.tableParams.order = options.order;
handleQuery();
}; };
// 打开新增页面 // 打开新增页面
@ -419,6 +400,20 @@ const handleDelete = (row: any) => {
.catch(() => {}); .catch(() => {});
}; };
// 表格事件
const gridEvents: VxeGridListeners<@(@Model.ClassName)> = {
// 只对 pager-config 配置时有效,分页发生改变时会触发该事件
async pageChange({ pageSize }) {
state.localPageParam.pageSize = pageSize;
Local.set(localPageParamKey, state.localPageParam);
},
// 当排序条件发生变化时会触发该事件
async sortChange({ field, order }) {
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
Local.set(localPageParamKey, state.localPageParam);
},
};
@foreach (var column in Model.QueryWhetherList) { @foreach (var column in Model.QueryWhetherList) {
@if(@column.EffectType == "fk") { @if(@column.EffectType == "fk") {
@:const @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList = ref<any>([]); @:const @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList = ref<any>([]);

View File

@ -36,10 +36,12 @@ public class DingTalkConst
/// 主部门Id /// 主部门Id
/// </summary> /// </summary>
public const string DeptId = "sys00-mainDeptId"; public const string DeptId = "sys00-mainDeptId";
/// <summary> /// <summary>
/// 主部门 /// 主部门
/// </summary> /// </summary>
public const string Dept = "sys00-mainDept"; public const string Dept = "sys00-mainDept";
/// <summary> /// <summary>
/// 职位 /// 职位
/// </summary> /// </summary>

View File

@ -73,23 +73,25 @@ public class DingTalkUser : EntityBase
[SugarColumn(ColumnDescription = "工号", Length = 16)] [SugarColumn(ColumnDescription = "工号", Length = 16)]
[MaxLength(16)] [MaxLength(16)]
public string? JobNumber { get; set; } public string? JobNumber { get; set; }
/// <summary> /// <summary>
/// 主部门Id /// 主部门Id
/// </summary> /// </summary>
[SugarColumn(ColumnDescription = "主部门Id", Length = 16)] [SugarColumn(ColumnDescription = "主部门Id", Length = 16)]
[MaxLength(16)] [MaxLength(16)]
public string? DeptId { get; set; } public string? DeptId { get; set; }
/// <summary> /// <summary>
/// 主部门 /// 主部门
/// </summary> /// </summary>
[SugarColumn(ColumnDescription = "主部门", Length = 16)] [SugarColumn(ColumnDescription = "主部门", Length = 16)]
[MaxLength(16)] [MaxLength(16)]
public string? Dept { get; set; } public string? Dept { get; set; }
/// <summary> /// <summary>
/// 职位 /// 职位
/// </summary> /// </summary>
[SugarColumn(ColumnDescription = "职位", Length = 16)] [SugarColumn(ColumnDescription = "职位", Length = 16)]
[MaxLength(16)] [MaxLength(16)]
public string? Position { get; set; } public string? Position { get; set; }
} }

View File

@ -43,7 +43,7 @@ public class DingTalkService : IDynamicApiController, IScoped
/// <param name="access_token"></param> /// <param name="access_token"></param>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取在职员工列表")] [HttpPost, DisplayName("获取在职员工列表")]
public async Task<DingTalkBaseResponse<GetDingTalkCurrentEmployeesListOutput>> GetDingTalkCurrentEmployeesList(string access_token, [Required] GetDingTalkCurrentEmployeesListInput input) public async Task<DingTalkBaseResponse<GetDingTalkCurrentEmployeesListOutput>> GetDingTalkCurrentEmployeesList(string access_token, [Required] GetDingTalkCurrentEmployeesListInput input)
{ {
return await _dingTalkApi.GetDingTalkCurrentEmployeesList(access_token, input); return await _dingTalkApi.GetDingTalkCurrentEmployeesList(access_token, input);
@ -55,7 +55,7 @@ public class DingTalkService : IDynamicApiController, IScoped
/// <param name="access_token"></param> /// <param name="access_token"></param>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取员工花名册字段信息")] [HttpPost, DisplayName("获取员工花名册字段信息")]
public async Task<DingTalkBaseResponse<List<DingTalkEmpRosterFieldVo>>> GetDingTalkCurrentEmployeesRosterList(string access_token, [Required] GetDingTalkCurrentEmployeesRosterListInput input) public async Task<DingTalkBaseResponse<List<DingTalkEmpRosterFieldVo>>> GetDingTalkCurrentEmployeesRosterList(string access_token, [Required] GetDingTalkCurrentEmployeesRosterListInput input)
{ {
return await _dingTalkApi.GetDingTalkCurrentEmployeesRosterList(access_token, input); return await _dingTalkApi.GetDingTalkCurrentEmployeesRosterList(access_token, input);

View File

@ -1,4 +1,4 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
// //
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
// //
@ -10,6 +10,7 @@ namespace Admin.NET.Plugin.GoView;
/// GoView 项目表 /// GoView 项目表
/// </summary> /// </summary>
[SugarTable(null, "GoView 项目表")] [SugarTable(null, "GoView 项目表")]
[SysTable]
public class GoViewPro : EntityTenant public class GoViewPro : EntityTenant
{ {
/// <summary> /// <summary>

View File

@ -10,6 +10,7 @@ namespace Admin.NET.Plugin.GoView;
/// GoView 项目数据表 /// GoView 项目数据表
/// </summary> /// </summary>
[SugarTable(null, "GoView 项目数据表")] [SugarTable(null, "GoView 项目数据表")]
[SysTable]
public class GoViewProData : EntityTenant public class GoViewProData : EntityTenant
{ {
/// <summary> /// <summary>

View File

@ -24,7 +24,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Rezero.Api" Version="1.7.8" /> <PackageReference Include="Rezero.Api" Version="1.7.9" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -2,7 +2,7 @@
"name": "admin.net.pro", "name": "admin.net.pro",
"type": "module", "type": "module",
"version": "2.4.33", "version": "2.4.33",
"lastBuildTime": "2024.07.10", "lastBuildTime": "2024.07.12",
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架", "description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
"author": "zuohuaijun", "author": "zuohuaijun",
"license": "MIT", "license": "MIT",
@ -31,7 +31,7 @@
"echarts": "^5.5.1", "echarts": "^5.5.1",
"echarts-gl": "^2.0.9", "echarts-gl": "^2.0.9",
"echarts-wordcloud": "^2.1.0", "echarts-wordcloud": "^2.1.0",
"element-plus": "^2.7.6", "element-plus": "^2.7.7",
"exceljs": "^4.4.0", "exceljs": "^4.4.0",
"ezuikit": "^1.0.0", "ezuikit": "^1.0.0",
"ezuikit-js": "^8.0.5", "ezuikit-js": "^8.0.5",
@ -68,8 +68,8 @@
"vue-signature-pad": "^3.0.2", "vue-signature-pad": "^3.0.2",
"vue3-tree-org": "^4.2.2", "vue3-tree-org": "^4.2.2",
"vuedraggable": "4.0.3", "vuedraggable": "4.0.3",
"vxe-pc-ui": "^4.0.58", "vxe-pc-ui": "^4.0.64",
"vxe-table": "^4.7.47", "vxe-table": "^4.7.49",
"vxe-table-plugin-element": "^4.0.4", "vxe-table-plugin-element": "^4.0.4",
"vxe-table-plugin-export-xlsx": "^4.0.5", "vxe-table-plugin-export-xlsx": "^4.0.5",
"xe-utils": "^3.5.28", "xe-utils": "^3.5.28",
@ -93,7 +93,7 @@
"less": "^4.2.0", "less": "^4.2.0",
"prettier": "^3.3.2", "prettier": "^3.3.2",
"rollup-plugin-visualizer": "^5.12.0", "rollup-plugin-visualizer": "^5.12.0",
"sass": "^1.77.7", "sass": "^1.77.8",
"terser": "^5.31.2", "terser": "^5.31.2",
"typescript": "^5.5.3", "typescript": "^5.5.3",
"vite": "^5.3.3", "vite": "^5.3.3",

View File

@ -26,8 +26,8 @@ import { AdminResultListTableOutput } from '../models';
import { AdminResultObject } from '../models'; import { AdminResultObject } from '../models';
import { AdminResultSqlSugarPagedListSysCodeGen } from '../models'; import { AdminResultSqlSugarPagedListSysCodeGen } from '../models';
import { AdminResultSysCodeGen } from '../models'; import { AdminResultSysCodeGen } from '../models';
import { CodeGenInput } from '../models';
import { DeleteCodeGenInput } from '../models'; import { DeleteCodeGenInput } from '../models';
import { PageCodeGenInput } from '../models';
import { SysCodeGen } from '../models'; import { SysCodeGen } from '../models';
import { UpdateCodeGenInput } from '../models'; import { UpdateCodeGenInput } from '../models';
/** /**
@ -328,11 +328,11 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {CodeGenInput} [body] * @param {PageCodeGenInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
apiSysCodeGenPagePost: async (body?: CodeGenInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { apiSysCodeGenPagePost: async (body?: PageCodeGenInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/sysCodeGen/page`; const localVarPath = `/api/sysCodeGen/page`;
// use dummy base URL string because the URL constructor only accepts absolute URLs. // use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com'); const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@ -661,11 +661,11 @@ export const SysCodeGenApiFp = function(configuration?: Configuration) {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {CodeGenInput} [body] * @param {PageCodeGenInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysCodeGenPagePost(body?: CodeGenInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>>> { async apiSysCodeGenPagePost(body?: PageCodeGenInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>>> {
const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenPagePost(body, options); const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenPagePost(body, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
@ -799,11 +799,11 @@ export const SysCodeGenApiFactory = function (configuration?: Configuration, bas
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {CodeGenInput} [body] * @param {PageCodeGenInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysCodeGenPagePost(body?: CodeGenInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> { async apiSysCodeGenPagePost(body?: PageCodeGenInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> {
return SysCodeGenApiFp(configuration).apiSysCodeGenPagePost(body, options).then((request) => request(axios, basePath)); return SysCodeGenApiFp(configuration).apiSysCodeGenPagePost(body, options).then((request) => request(axios, basePath));
}, },
/** /**
@ -924,12 +924,12 @@ export class SysCodeGenApi extends BaseAPI {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {CodeGenInput} [body] * @param {PageCodeGenInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
* @memberof SysCodeGenApi * @memberof SysCodeGenApi
*/ */
public async apiSysCodeGenPagePost(body?: CodeGenInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> { public async apiSysCodeGenPagePost(body?: PageCodeGenInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> {
return SysCodeGenApiFp(this.configuration).apiSysCodeGenPagePost(body, options).then((request) => request(this.axios, this.basePath)); return SysCodeGenApiFp(this.configuration).apiSysCodeGenPagePost(body, options).then((request) => request(this.axios, this.basePath));
} }
/** /**

View File

@ -23,8 +23,8 @@ import { AdminResultListSysLdap } from '../models';
import { AdminResultSqlSugarPagedListSysLdap } from '../models'; import { AdminResultSqlSugarPagedListSysLdap } from '../models';
import { AdminResultSysLdap } from '../models'; import { AdminResultSysLdap } from '../models';
import { DeleteSysLdapInput } from '../models'; import { DeleteSysLdapInput } from '../models';
import { PageSysLdapInput } from '../models';
import { SyncSysLdapInput } from '../models'; import { SyncSysLdapInput } from '../models';
import { SysLdapInput } from '../models';
import { UpdateSysLdapInput } from '../models'; import { UpdateSysLdapInput } from '../models';
/** /**
* SysLdapApi - axios parameter creator * SysLdapApi - axios parameter creator
@ -226,11 +226,11 @@ export const SysLdapApiAxiosParamCreator = function (configuration?: Configurati
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {SysLdapInput} [body] * @param {PageSysLdapInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
apiSysLdapPagePost: async (body?: SysLdapInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { apiSysLdapPagePost: async (body?: PageSysLdapInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/sysLdap/page`; const localVarPath = `/api/sysLdap/page`;
// use dummy base URL string because the URL constructor only accepts absolute URLs. // use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com'); const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@ -482,11 +482,11 @@ export const SysLdapApiFp = function(configuration?: Configuration) {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {SysLdapInput} [body] * @param {PageSysLdapInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysLdapPagePost(body?: SysLdapInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLdap>>> { async apiSysLdapPagePost(body?: PageSysLdapInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLdap>>> {
const localVarAxiosArgs = await SysLdapApiAxiosParamCreator(configuration).apiSysLdapPagePost(body, options); const localVarAxiosArgs = await SysLdapApiAxiosParamCreator(configuration).apiSysLdapPagePost(body, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
@ -586,11 +586,11 @@ export const SysLdapApiFactory = function (configuration?: Configuration, basePa
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {SysLdapInput} [body] * @param {PageSysLdapInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysLdapPagePost(body?: SysLdapInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLdap>> { async apiSysLdapPagePost(body?: PageSysLdapInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLdap>> {
return SysLdapApiFp(configuration).apiSysLdapPagePost(body, options).then((request) => request(axios, basePath)); return SysLdapApiFp(configuration).apiSysLdapPagePost(body, options).then((request) => request(axios, basePath));
}, },
/** /**
@ -679,12 +679,12 @@ export class SysLdapApi extends BaseAPI {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {SysLdapInput} [body] * @param {PageSysLdapInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
* @memberof SysLdapApi * @memberof SysLdapApi
*/ */
public async apiSysLdapPagePost(body?: SysLdapInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLdap>> { public async apiSysLdapPagePost(body?: PageSysLdapInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLdap>> {
return SysLdapApiFp(this.configuration).apiSysLdapPagePost(body, options).then((request) => request(this.axios, this.basePath)); return SysLdapApiFp(this.configuration).apiSysLdapPagePost(body, options).then((request) => request(this.axios, this.basePath));
} }
/** /**

View File

@ -22,7 +22,7 @@ import { AdminResultSqlSugarPagedListOpenAccessOutput } from '../models';
import { AdminResultString } from '../models'; import { AdminResultString } from '../models';
import { DeleteOpenAccessInput } from '../models'; import { DeleteOpenAccessInput } from '../models';
import { GenerateSignatureInput } from '../models'; import { GenerateSignatureInput } from '../models';
import { OpenAccessInput } from '../models'; import { PageOpenAccessInput } from '../models';
import { UpdateOpenAccessInput } from '../models'; import { UpdateOpenAccessInput } from '../models';
/** /**
* SysOpenAccessApi - axios parameter creator * SysOpenAccessApi - axios parameter creator
@ -177,11 +177,11 @@ export const SysOpenAccessApiAxiosParamCreator = function (configuration?: Confi
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {OpenAccessInput} [body] * @param {PageOpenAccessInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
apiSysOpenAccessPagePost: async (body?: OpenAccessInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { apiSysOpenAccessPagePost: async (body?: PageOpenAccessInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/sysOpenAccess/page`; const localVarPath = `/api/sysOpenAccess/page`;
// use dummy base URL string because the URL constructor only accepts absolute URLs. // use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com'); const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@ -367,11 +367,11 @@ export const SysOpenAccessApiFp = function(configuration?: Configuration) {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {OpenAccessInput} [body] * @param {PageOpenAccessInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysOpenAccessPagePost(body?: OpenAccessInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListOpenAccessOutput>>> { async apiSysOpenAccessPagePost(body?: PageOpenAccessInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListOpenAccessOutput>>> {
const localVarAxiosArgs = await SysOpenAccessApiAxiosParamCreator(configuration).apiSysOpenAccessPagePost(body, options); const localVarAxiosArgs = await SysOpenAccessApiAxiosParamCreator(configuration).apiSysOpenAccessPagePost(body, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
@ -447,11 +447,11 @@ export const SysOpenAccessApiFactory = function (configuration?: Configuration,
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {OpenAccessInput} [body] * @param {PageOpenAccessInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysOpenAccessPagePost(body?: OpenAccessInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListOpenAccessOutput>> { async apiSysOpenAccessPagePost(body?: PageOpenAccessInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListOpenAccessOutput>> {
return SysOpenAccessApiFp(configuration).apiSysOpenAccessPagePost(body, options).then((request) => request(axios, basePath)); return SysOpenAccessApiFp(configuration).apiSysOpenAccessPagePost(body, options).then((request) => request(axios, basePath));
}, },
/** /**
@ -519,12 +519,12 @@ export class SysOpenAccessApi extends BaseAPI {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {OpenAccessInput} [body] * @param {PageOpenAccessInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
* @memberof SysOpenAccessApi * @memberof SysOpenAccessApi
*/ */
public async apiSysOpenAccessPagePost(body?: OpenAccessInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListOpenAccessOutput>> { public async apiSysOpenAccessPagePost(body?: PageOpenAccessInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListOpenAccessOutput>> {
return SysOpenAccessApiFp(this.configuration).apiSysOpenAccessPagePost(body, options).then((request) => request(this.axios, this.basePath)); return SysOpenAccessApiFp(this.configuration).apiSysOpenAccessPagePost(body, options).then((request) => request(this.axios, this.basePath));
} }
/** /**

View File

@ -17,9 +17,14 @@ import { Configuration } from '../configuration';
// Some imports not used depending on template conditions // Some imports not used depending on template conditions
// @ts-ignore // @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
import { AdminResultCreatePayTransactionOutput } from '../models';
import { AdminResultGetRefundDomesticRefundByOutRefundNumberResponse } from '../models';
import { AdminResultObject } from '../models'; import { AdminResultObject } from '../models';
import { AdminResultSqlSugarPagedListSysWechatPay } from '../models';
import { AdminResultSysWechatPay } from '../models'; import { AdminResultSysWechatPay } from '../models';
import { AdminResultWechatPayOutput } from '../models'; import { AdminResultWechatPayOutput } from '../models';
import { PageSysWechatPayInput } from '../models';
import { RefundRequestInput } from '../models';
import { WechatPayParaInput } from '../models'; import { WechatPayParaInput } from '../models';
import { WechatPayTransactionInput } from '../models'; import { WechatPayTransactionInput } from '../models';
/** /**
@ -76,6 +81,54 @@ export const SysWechatPayApiAxiosParamCreator = function (configuration?: Config
options: localVarRequestOptions, options: localVarRequestOptions,
}; };
}, },
/**
*
* @summary ()
* @param {PageSysWechatPayInput} [body] PageSysWechatPayInput
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysWechatPayPagePost: async (body?: PageSysWechatPayInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/sysWechatPay/page`;
// 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 () 🔖 * @summary () 🔖
@ -259,6 +312,104 @@ export const SysWechatPayApiAxiosParamCreator = function (configuration?: Config
options: localVarRequestOptions, options: localVarRequestOptions,
}; };
}, },
/**
*
* @summary () https://api.mch.weixin.qq.com/v3/pay/transactions/id/{transaction_id}
* @param {string} transactionId
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysWechatPayPayTransactionByIdTransactionIdGet: async (transactionId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'transactionId' is not null or undefined
if (transactionId === null || transactionId === undefined) {
throw new RequiredError('transactionId','Required parameter transactionId was null or undefined when calling apiSysWechatPayPayTransactionByIdTransactionIdGet.');
}
const localVarPath = `/api/sysWechatPay/payTransactionById/{transactionId}`
.replace(`{${"transactionId"}}`, encodeURIComponent(String(transactionId)));
// 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 () https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{out_trade_no}
* @param {string} outTradeNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet: async (outTradeNumber: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'outTradeNumber' is not null or undefined
if (outTradeNumber === null || outTradeNumber === undefined) {
throw new RequiredError('outTradeNumber','Required parameter outTradeNumber was null or undefined when calling apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet.');
}
const localVarPath = `/api/sysWechatPay/payTransactionByOutTradeNumber/{outTradeNumber}`
.replace(`{${"outTradeNumber"}}`, encodeURIComponent(String(outTradeNumber)));
// 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 Id() 🔖 * @summary Id() 🔖
@ -302,6 +453,103 @@ export const SysWechatPayApiAxiosParamCreator = function (configuration?: Config
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || ""); localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
return {
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
options: localVarRequestOptions,
};
},
/**
*
* @summary 退退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/query-by-out-refund-no.html
* @param {string} outRefundNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet: async (outRefundNumber: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'outRefundNumber' is not null or undefined
if (outRefundNumber === null || outRefundNumber === undefined) {
throw new RequiredError('outRefundNumber','Required parameter outRefundNumber was null or undefined when calling apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet.');
}
const localVarPath = `/api/sysWechatPay/refundByOutRefundNumber/{outRefundNumber}`
.replace(`{${"outRefundNumber"}}`, encodeURIComponent(String(outRefundNumber)));
// 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 退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/create.html
* @param {RefundRequestInput} [body]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysWechatPayRefundPost: async (body?: RefundRequestInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/sysWechatPay/refund`;
// 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 { return {
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
options: localVarRequestOptions, options: localVarRequestOptions,
@ -330,6 +578,20 @@ export const SysWechatPayApiFp = function(configuration?: Configuration) {
return axios.request(axiosRequestArgs); return axios.request(axiosRequestArgs);
}; };
}, },
/**
*
* @summary ()
* @param {PageSysWechatPayInput} [body] PageSysWechatPayInput
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayPagePost(body?: PageSysWechatPayInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatPay>>> {
const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayPagePost(body, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
};
},
/** /**
* *
* @summary () 🔖 * @summary () 🔖
@ -377,13 +639,41 @@ export const SysWechatPayApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysWechatPayPayPartnerTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultObject>>> { async apiSysWechatPayPayPartnerTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultCreatePayTransactionOutput>>> {
const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayPayPartnerTransactionPost(body, options); const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayPayPartnerTransactionPost(body, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs); return axios.request(axiosRequestArgs);
}; };
}, },
/**
*
* @summary () https://api.mch.weixin.qq.com/v3/pay/transactions/id/{transaction_id}
* @param {string} transactionId
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayPayTransactionByIdTransactionIdGet(transactionId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultWechatPayOutput>>> {
const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayPayTransactionByIdTransactionIdGet(transactionId, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
};
},
/**
*
* @summary () https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{out_trade_no}
* @param {string} outTradeNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet(outTradeNumber: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultWechatPayOutput>>> {
const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet(outTradeNumber, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
};
},
/** /**
* *
* @summary Id() 🔖 * @summary Id() 🔖
@ -391,13 +681,41 @@ export const SysWechatPayApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysWechatPayPayTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultObject>>> { async apiSysWechatPayPayTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultCreatePayTransactionOutput>>> {
const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayPayTransactionPost(body, options); const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayPayTransactionPost(body, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs); return axios.request(axiosRequestArgs);
}; };
}, },
/**
*
* @summary 退退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/query-by-out-refund-no.html
* @param {string} outRefundNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet(outRefundNumber: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultGetRefundDomesticRefundByOutRefundNumberResponse>>> {
const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet(outRefundNumber, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
};
},
/**
*
* @summary 退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/create.html
* @param {RefundRequestInput} [body]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayRefundPost(body?: RefundRequestInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
const localVarAxiosArgs = await SysWechatPayApiAxiosParamCreator(configuration).apiSysWechatPayRefundPost(body, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
};
},
} }
}; };
@ -417,6 +735,16 @@ export const SysWechatPayApiFactory = function (configuration?: Configuration, b
async apiSysWechatPayGenerateParametersForJsapiPayPost(body?: WechatPayParaInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> { async apiSysWechatPayGenerateParametersForJsapiPayPost(body?: WechatPayParaInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayGenerateParametersForJsapiPayPost(body, options).then((request) => request(axios, basePath)); return SysWechatPayApiFp(configuration).apiSysWechatPayGenerateParametersForJsapiPayPost(body, options).then((request) => request(axios, basePath));
}, },
/**
*
* @summary ()
* @param {PageSysWechatPayInput} [body] PageSysWechatPayInput
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayPagePost(body?: PageSysWechatPayInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatPay>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayPagePost(body, options).then((request) => request(axios, basePath));
},
/** /**
* *
* @summary () 🔖 * @summary () 🔖
@ -452,9 +780,29 @@ export const SysWechatPayApiFactory = function (configuration?: Configuration, b
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysWechatPayPayPartnerTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> { async apiSysWechatPayPayPartnerTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultCreatePayTransactionOutput>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayPayPartnerTransactionPost(body, options).then((request) => request(axios, basePath)); return SysWechatPayApiFp(configuration).apiSysWechatPayPayPartnerTransactionPost(body, options).then((request) => request(axios, basePath));
}, },
/**
*
* @summary () https://api.mch.weixin.qq.com/v3/pay/transactions/id/{transaction_id}
* @param {string} transactionId
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayPayTransactionByIdTransactionIdGet(transactionId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultWechatPayOutput>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayPayTransactionByIdTransactionIdGet(transactionId, options).then((request) => request(axios, basePath));
},
/**
*
* @summary () https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{out_trade_no}
* @param {string} outTradeNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet(outTradeNumber: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultWechatPayOutput>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet(outTradeNumber, options).then((request) => request(axios, basePath));
},
/** /**
* *
* @summary Id() 🔖 * @summary Id() 🔖
@ -462,9 +810,29 @@ export const SysWechatPayApiFactory = function (configuration?: Configuration, b
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysWechatPayPayTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> { async apiSysWechatPayPayTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultCreatePayTransactionOutput>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayPayTransactionPost(body, options).then((request) => request(axios, basePath)); return SysWechatPayApiFp(configuration).apiSysWechatPayPayTransactionPost(body, options).then((request) => request(axios, basePath));
}, },
/**
*
* @summary 退退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/query-by-out-refund-no.html
* @param {string} outRefundNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet(outRefundNumber: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultGetRefundDomesticRefundByOutRefundNumberResponse>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet(outRefundNumber, options).then((request) => request(axios, basePath));
},
/**
*
* @summary 退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/create.html
* @param {RefundRequestInput} [body]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysWechatPayRefundPost(body?: RefundRequestInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
return SysWechatPayApiFp(configuration).apiSysWechatPayRefundPost(body, options).then((request) => request(axios, basePath));
},
}; };
}; };
@ -486,6 +854,17 @@ export class SysWechatPayApi extends BaseAPI {
public async apiSysWechatPayGenerateParametersForJsapiPayPost(body?: WechatPayParaInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> { public async apiSysWechatPayGenerateParametersForJsapiPayPost(body?: WechatPayParaInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayGenerateParametersForJsapiPayPost(body, options).then((request) => request(this.axios, this.basePath)); return SysWechatPayApiFp(this.configuration).apiSysWechatPayGenerateParametersForJsapiPayPost(body, options).then((request) => request(this.axios, this.basePath));
} }
/**
*
* @summary ()
* @param {PageSysWechatPayInput} [body] PageSysWechatPayInput
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof SysWechatPayApi
*/
public async apiSysWechatPayPagePost(body?: PageSysWechatPayInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatPay>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayPagePost(body, options).then((request) => request(this.axios, this.basePath));
}
/** /**
* *
* @summary () 🔖 * @summary () 🔖
@ -525,9 +904,31 @@ export class SysWechatPayApi extends BaseAPI {
* @throws {RequiredError} * @throws {RequiredError}
* @memberof SysWechatPayApi * @memberof SysWechatPayApi
*/ */
public async apiSysWechatPayPayPartnerTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> { public async apiSysWechatPayPayPartnerTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultCreatePayTransactionOutput>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayPayPartnerTransactionPost(body, options).then((request) => request(this.axios, this.basePath)); return SysWechatPayApiFp(this.configuration).apiSysWechatPayPayPartnerTransactionPost(body, options).then((request) => request(this.axios, this.basePath));
} }
/**
*
* @summary () https://api.mch.weixin.qq.com/v3/pay/transactions/id/{transaction_id}
* @param {string} transactionId
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof SysWechatPayApi
*/
public async apiSysWechatPayPayTransactionByIdTransactionIdGet(transactionId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultWechatPayOutput>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayPayTransactionByIdTransactionIdGet(transactionId, options).then((request) => request(this.axios, this.basePath));
}
/**
*
* @summary () https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{out_trade_no}
* @param {string} outTradeNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof SysWechatPayApi
*/
public async apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet(outTradeNumber: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultWechatPayOutput>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayPayTransactionByOutTradeNumberOutTradeNumberGet(outTradeNumber, options).then((request) => request(this.axios, this.basePath));
}
/** /**
* *
* @summary Id() 🔖 * @summary Id() 🔖
@ -536,7 +937,29 @@ export class SysWechatPayApi extends BaseAPI {
* @throws {RequiredError} * @throws {RequiredError}
* @memberof SysWechatPayApi * @memberof SysWechatPayApi
*/ */
public async apiSysWechatPayPayTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> { public async apiSysWechatPayPayTransactionPost(body?: WechatPayTransactionInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultCreatePayTransactionOutput>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayPayTransactionPost(body, options).then((request) => request(this.axios, this.basePath)); return SysWechatPayApiFp(this.configuration).apiSysWechatPayPayTransactionPost(body, options).then((request) => request(this.axios, this.basePath));
} }
/**
*
* @summary 退退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/query-by-out-refund-no.html
* @param {string} outRefundNumber
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof SysWechatPayApi
*/
public async apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet(outRefundNumber: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultGetRefundDomesticRefundByOutRefundNumberResponse>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayRefundByOutRefundNumberOutRefundNumberGet(outRefundNumber, options).then((request) => request(this.axios, this.basePath));
}
/**
*
* @summary 退 https://pay.weixin.qq.com/docs/merchant/apis/mini-program-payment/create.html
* @param {RefundRequestInput} [body]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof SysWechatPayApi
*/
public async apiSysWechatPayRefundPost(body?: RefundRequestInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
return SysWechatPayApiFp(this.configuration).apiSysWechatPayRefundPost(body, options).then((request) => request(this.axios, this.basePath));
}
} }

View File

@ -203,4 +203,12 @@ export interface AddCodeGenInput {
* @memberof AddCodeGenInput * @memberof AddCodeGenInput
*/ */
generateMenu: boolean; generateMenu: boolean;
/**
* 使 Api Service
*
* @type {boolean}
* @memberof AddCodeGenInput
*/
isApiService?: boolean;
} }

View File

@ -12,6 +12,7 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { SysUser } from './sys-user';
/** /**
* *
* *
@ -92,6 +93,12 @@ export interface AddOpenAccessInput {
*/ */
bindTenantId?: number; bindTenantId?: number;
/**
* @type {SysUser}
* @memberof AddOpenAccessInput
*/
bindUser?: SysUser;
/** /**
* *
* *

View File

@ -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 { CreatePayTransactionOutput } from './create-pay-transaction-output';
/**
*
*
* @export
* @interface AdminResultCreatePayTransactionOutput
*/
export interface AdminResultCreatePayTransactionOutput {
/**
*
*
* @type {number}
* @memberof AdminResultCreatePayTransactionOutput
*/
code?: number;
/**
* successwarningerror
*
* @type {string}
* @memberof AdminResultCreatePayTransactionOutput
*/
type?: string | null;
/**
*
*
* @type {string}
* @memberof AdminResultCreatePayTransactionOutput
*/
message?: string | null;
/**
* @type {CreatePayTransactionOutput}
* @memberof AdminResultCreatePayTransactionOutput
*/
result?: CreatePayTransactionOutput;
/**
*
*
* @type {any}
* @memberof AdminResultCreatePayTransactionOutput
*/
extras?: any | null;
/**
*
*
* @type {Date}
* @memberof AdminResultCreatePayTransactionOutput
*/
time?: Date;
}

View File

@ -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 { GetRefundDomesticRefundByOutRefundNumberResponse } from './get-refund-domestic-refund-by-out-refund-number-response';
/**
*
*
* @export
* @interface AdminResultGetRefundDomesticRefundByOutRefundNumberResponse
*/
export interface AdminResultGetRefundDomesticRefundByOutRefundNumberResponse {
/**
*
*
* @type {number}
* @memberof AdminResultGetRefundDomesticRefundByOutRefundNumberResponse
*/
code?: number;
/**
* successwarningerror
*
* @type {string}
* @memberof AdminResultGetRefundDomesticRefundByOutRefundNumberResponse
*/
type?: string | null;
/**
*
*
* @type {string}
* @memberof AdminResultGetRefundDomesticRefundByOutRefundNumberResponse
*/
message?: string | null;
/**
* @type {GetRefundDomesticRefundByOutRefundNumberResponse}
* @memberof AdminResultGetRefundDomesticRefundByOutRefundNumberResponse
*/
result?: GetRefundDomesticRefundByOutRefundNumberResponse;
/**
*
*
* @type {any}
* @memberof AdminResultGetRefundDomesticRefundByOutRefundNumberResponse
*/
extras?: any | null;
/**
*
*
* @type {Date}
* @memberof AdminResultGetRefundDomesticRefundByOutRefundNumberResponse
*/
time?: Date;
}

View File

@ -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 { SqlSugarPagedListSysWechatPay } from './sql-sugar-paged-list-sys-wechat-pay';
/**
*
*
* @export
* @interface AdminResultSqlSugarPagedListSysWechatPay
*/
export interface AdminResultSqlSugarPagedListSysWechatPay {
/**
*
*
* @type {number}
* @memberof AdminResultSqlSugarPagedListSysWechatPay
*/
code?: number;
/**
* successwarningerror
*
* @type {string}
* @memberof AdminResultSqlSugarPagedListSysWechatPay
*/
type?: string | null;
/**
*
*
* @type {string}
* @memberof AdminResultSqlSugarPagedListSysWechatPay
*/
message?: string | null;
/**
* @type {SqlSugarPagedListSysWechatPay}
* @memberof AdminResultSqlSugarPagedListSysWechatPay
*/
result?: SqlSugarPagedListSysWechatPay;
/**
*
*
* @type {any}
* @memberof AdminResultSqlSugarPagedListSysWechatPay
*/
extras?: any | null;
/**
*
*
* @type {Date}
* @memberof AdminResultSqlSugarPagedListSysWechatPay
*/
time?: Date;
}

View File

@ -0,0 +1,83 @@
/* 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 { From } from './from';
/**
*
*
* @export
* @interface Amount
*/
export interface Amount {
/**
* @type {number}
* @memberof Amount
*/
total?: number;
/**
* @type {number}
* @memberof Amount
*/
refund?: number;
/**
* @type {string}
* @memberof Amount
*/
currency?: string | null;
/**
* @type {number}
* @memberof Amount
*/
payerTotal?: number;
/**
* @type {number}
* @memberof Amount
*/
payerRefund?: number;
/**
* @type {number}
* @memberof Amount
*/
settlementTotal?: number;
/**
* @type {number}
* @memberof Amount
*/
settlementRefund?: number;
/**
* @type {number}
* @memberof Amount
*/
discountRefund?: number;
/**
* @type {Array<From>}
* @memberof Amount
*/
from?: Array<From> | null;
/**
* @type {number}
* @memberof Amount
*/
refundFee?: number | null;
}

View File

@ -0,0 +1,34 @@
/* 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 CreatePayTransactionOutput
*/
export interface CreatePayTransactionOutput {
/**
* @type {string}
* @memberof CreatePayTransactionOutput
*/
prepayId?: string | null;
/**
* @type {string}
* @memberof CreatePayTransactionOutput
*/
outTradeNumber?: string | null;
}

View File

@ -42,6 +42,8 @@ export enum DbType {
NUMBER_21 = 21, NUMBER_21 = 21,
NUMBER_22 = 22, NUMBER_22 = 22,
NUMBER_23 = 23, NUMBER_23 = 23,
NUMBER_24 = 24,
NUMBER_25 = 25,
NUMBER_900 = 900 NUMBER_900 = 900
} }

View File

@ -0,0 +1,34 @@
/* 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 From
*/
export interface From {
/**
* @type {number}
* @memberof From
*/
amount?: number;
/**
* @type {string}
* @memberof From
*/
account?: string | null;
}

View File

@ -0,0 +1,114 @@
/* 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 { Amount } from './amount';
import { Promotion } from './promotion';
/**
*
*
* @export
* @interface GetRefundDomesticRefundByOutRefundNumberResponse
*/
export interface GetRefundDomesticRefundByOutRefundNumberResponse {
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
code?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
message?: string | null;
/**
* @type {{ [key: string]: any; }}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
detail?: { [key: string]: any; } | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
refundId?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
outRefundNo?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
transactionId?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
outTradeNo?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
channel?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
userReceivedAccount?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
fundsAccount?: string | null;
/**
* @type {string}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
status?: string | null;
/**
* @type {Date}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
successTime?: Date | null;
/**
* @type {Date}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
createTime?: Date;
/**
* @type {Amount}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
amount?: Amount;
/**
* @type {Array<Promotion>}
* @memberof GetRefundDomesticRefundByOutRefundNumberResponse
*/
promotionDetail?: Array<Promotion> | null;
}

View File

@ -0,0 +1,58 @@
/* 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 GoodsDetail
*/
export interface GoodsDetail {
/**
* @type {string}
* @memberof GoodsDetail
*/
merchantGoodsId?: string | null;
/**
* @type {string}
* @memberof GoodsDetail
*/
wechatpayGoodsId?: string | null;
/**
* @type {string}
* @memberof GoodsDetail
*/
goodsName?: string | null;
/**
* @type {number}
* @memberof GoodsDetail
*/
unitPrice?: number;
/**
* @type {number}
* @memberof GoodsDetail
*/
refundAmount?: number;
/**
* @type {number}
* @memberof GoodsDetail
*/
refundQuantity?: number;
}

View File

@ -19,9 +19,11 @@ export * from './add-sys-ldap-input';
export * from './add-tenant-input'; export * from './add-tenant-input';
export * from './add-user-input'; export * from './add-user-input';
export * from './admin-result-boolean'; export * from './admin-result-boolean';
export * from './admin-result-create-pay-transaction-output';
export * from './admin-result-data-set'; export * from './admin-result-data-set';
export * from './admin-result-data-table'; export * from './admin-result-data-table';
export * from './admin-result-dictionary-string-string'; export * from './admin-result-dictionary-string-string';
export * from './admin-result-get-refund-domestic-refund-by-out-refund-number-response';
export * from './admin-result-iaction-result'; export * from './admin-result-iaction-result';
export * from './admin-result-int32'; export * from './admin-result-int32';
export * from './admin-result-int64'; export * from './admin-result-int64';
@ -82,6 +84,7 @@ export * from './admin-result-sql-sugar-paged-list-sys-online-user';
export * from './admin-result-sql-sugar-paged-list-sys-plugin'; export * from './admin-result-sql-sugar-paged-list-sys-plugin';
export * from './admin-result-sql-sugar-paged-list-sys-print'; export * from './admin-result-sql-sugar-paged-list-sys-print';
export * from './admin-result-sql-sugar-paged-list-sys-region'; export * from './admin-result-sql-sugar-paged-list-sys-region';
export * from './admin-result-sql-sugar-paged-list-sys-wechat-pay';
export * from './admin-result-sql-sugar-paged-list-tenant-output'; export * from './admin-result-sql-sugar-paged-list-tenant-output';
export * from './admin-result-sql-sugar-paged-list-user-output'; export * from './admin-result-sql-sugar-paged-list-user-output';
export * from './admin-result-string'; export * from './admin-result-string';
@ -101,6 +104,7 @@ export * from './admin-result-visual-db-table';
export * from './admin-result-wechat-pay-output'; export * from './admin-result-wechat-pay-output';
export * from './admin-result-wx-open-id-output'; export * from './admin-result-wx-open-id-output';
export * from './admin-result-wx-phone-output'; export * from './admin-result-wx-phone-output';
export * from './amount';
export * from './api-output'; export * from './api-output';
export * from './assembly'; export * from './assembly';
export * from './base-api-input'; export * from './base-api-input';
@ -114,13 +118,13 @@ export * from './card-type-enum';
export * from './change-pwd-input'; export * from './change-pwd-input';
export * from './cluster-status'; export * from './cluster-status';
export * from './code-gen-config'; export * from './code-gen-config';
export * from './code-gen-input';
export * from './column-ouput'; export * from './column-ouput';
export * from './column-relation'; export * from './column-relation';
export * from './compare-info'; export * from './compare-info';
export * from './const-output'; export * from './const-output';
export * from './constructor-info'; export * from './constructor-info';
export * from './create-entity-input'; export * from './create-entity-input';
export * from './create-pay-transaction-output';
export * from './create-seed-data-input'; export * from './create-seed-data-input';
export * from './culture-info'; export * from './culture-info';
export * from './culture-level-enum'; export * from './culture-level-enum';
@ -179,10 +183,13 @@ export * from './field-attributes';
export * from './field-info'; export * from './field-info';
export * from './file-input'; export * from './file-input';
export * from './file-output'; export * from './file-output';
export * from './from';
export * from './gen-auth-url-input'; export * from './gen-auth-url-input';
export * from './gender-enum'; export * from './gender-enum';
export * from './generate-signature-input'; export * from './generate-signature-input';
export * from './generic-parameter-attributes'; export * from './generic-parameter-attributes';
export * from './get-refund-domestic-refund-by-out-refund-number-response';
export * from './goods-detail';
export * from './http-method-enum'; export * from './http-method-enum';
export * from './iaction-result'; export * from './iaction-result';
export * from './icomponent'; export * from './icomponent';
@ -225,8 +232,8 @@ export * from './notice-user-status-enum';
export * from './number-format-info'; export * from './number-format-info';
export * from './oauth-user-input'; export * from './oauth-user-input';
export * from './oauth-user-output'; export * from './oauth-user-output';
export * from './open-access-input';
export * from './open-access-output'; export * from './open-access-output';
export * from './page-code-gen-input';
export * from './page-config-input'; export * from './page-config-input';
export * from './page-dict-data-input'; export * from './page-dict-data-input';
export * from './page-dict-type-input'; export * from './page-dict-type-input';
@ -236,6 +243,7 @@ export * from './page-job-trigger-record-input';
export * from './page-log-input'; export * from './page-log-input';
export * from './page-notice-input'; export * from './page-notice-input';
export * from './page-online-user-input'; export * from './page-online-user-input';
export * from './page-open-access-input';
export * from './page-plugin-input'; export * from './page-plugin-input';
export * from './page-pos-input'; export * from './page-pos-input';
export * from './page-pos-output'; export * from './page-pos-output';
@ -243,6 +251,8 @@ export * from './page-print-input';
export * from './page-region-input'; export * from './page-region-input';
export * from './page-role-input'; export * from './page-role-input';
export * from './page-role-output'; export * from './page-role-output';
export * from './page-sys-ldap-input';
export * from './page-sys-wechat-pay-input';
export * from './page-tenant-input'; export * from './page-tenant-input';
export * from './page-user-input'; export * from './page-user-input';
export * from './parameter-attributes'; export * from './parameter-attributes';
@ -250,8 +260,10 @@ export * from './parameter-info';
export * from './platform-type-enum'; export * from './platform-type-enum';
export * from './pos-output'; export * from './pos-output';
export * from './print-type-enum'; export * from './print-type-enum';
export * from './promotion';
export * from './property-attributes'; export * from './property-attributes';
export * from './property-info'; export * from './property-info';
export * from './refund-request-input';
export * from './reset-pwd-user-input'; export * from './reset-pwd-user-input';
export * from './role-api-input'; export * from './role-api-input';
export * from './role-input'; export * from './role-input';
@ -290,6 +302,7 @@ export * from './sql-sugar-paged-list-sys-online-user';
export * from './sql-sugar-paged-list-sys-plugin'; export * from './sql-sugar-paged-list-sys-plugin';
export * from './sql-sugar-paged-list-sys-print'; export * from './sql-sugar-paged-list-sys-print';
export * from './sql-sugar-paged-list-sys-region'; export * from './sql-sugar-paged-list-sys-region';
export * from './sql-sugar-paged-list-sys-wechat-pay';
export * from './sql-sugar-paged-list-tenant-output'; export * from './sql-sugar-paged-list-tenant-output';
export * from './sql-sugar-paged-list-user-output'; export * from './sql-sugar-paged-list-user-output';
export * from './status-enum'; export * from './status-enum';
@ -311,7 +324,6 @@ export * from './sys-job-detail';
export * from './sys-job-trigger'; export * from './sys-job-trigger';
export * from './sys-job-trigger-record'; export * from './sys-job-trigger-record';
export * from './sys-ldap'; export * from './sys-ldap';
export * from './sys-ldap-input';
export * from './sys-log-diff'; export * from './sys-log-diff';
export * from './sys-log-ex'; export * from './sys-log-ex';
export * from './sys-log-op'; export * from './sys-log-op';

View File

@ -30,12 +30,6 @@ export interface MemberInfo {
*/ */
memberType?: MemberTypes; memberType?: MemberTypes;
/**
* @type {string}
* @memberof MemberInfo
*/
name?: string | null;
/** /**
* @type {Type} * @type {Type}
* @memberof MemberInfo * @memberof MemberInfo
@ -48,6 +42,12 @@ export interface MemberInfo {
*/ */
reflectedType?: Type; reflectedType?: Type;
/**
* @type {string}
* @memberof MemberInfo
*/
name?: string | null;
/** /**
* @type {Module} * @type {Module}
* @memberof MemberInfo * @memberof MemberInfo

View File

@ -12,6 +12,7 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { SysUser } from './sys-user';
/** /**
* *
* *
@ -116,6 +117,12 @@ export interface OpenAccessOutput {
*/ */
bindUserId?: number; bindUserId?: number;
/**
* @type {SysUser}
* @memberof OpenAccessOutput
*/
bindUser?: SysUser;
/** /**
* *
* *

View File

@ -16,15 +16,15 @@
* *
* *
* @export * @export
* @interface CodeGenInput * @interface PageCodeGenInput
*/ */
export interface CodeGenInput { export interface PageCodeGenInput {
/** /**
* *
* *
* @type {number} * @type {number}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
page?: number; page?: number;
@ -32,7 +32,7 @@ export interface CodeGenInput {
* *
* *
* @type {number} * @type {number}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
pageSize?: number; pageSize?: number;
@ -40,7 +40,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
field?: string | null; field?: string | null;
@ -48,7 +48,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
order?: string | null; order?: string | null;
@ -56,7 +56,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
descStr?: string | null; descStr?: string | null;
@ -64,7 +64,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
authorName?: string | null; authorName?: string | null;
@ -72,7 +72,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
className?: string | null; className?: string | null;
@ -80,7 +80,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
tablePrefix?: string | null; tablePrefix?: string | null;
@ -88,7 +88,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
configId?: string | null; configId?: string | null;
@ -96,7 +96,7 @@ export interface CodeGenInput {
* () * ()
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
dbName?: string | null; dbName?: string | null;
@ -104,7 +104,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
dbType?: string | null; dbType?: string | null;
@ -112,7 +112,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
connectionString?: string | null; connectionString?: string | null;
@ -120,7 +120,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
generateType?: string | null; generateType?: string | null;
@ -128,7 +128,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
tableName?: string | null; tableName?: string | null;
@ -136,7 +136,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
nameSpace?: string | null; nameSpace?: string | null;
@ -144,7 +144,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
busName?: string | null; busName?: string | null;
@ -152,7 +152,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
tableComment?: string | null; tableComment?: string | null;
@ -160,7 +160,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
menuApplication?: string | null; menuApplication?: string | null;
@ -168,7 +168,7 @@ export interface CodeGenInput {
* *
* *
* @type {boolean} * @type {boolean}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
generateMenu?: boolean; generateMenu?: boolean;
@ -176,7 +176,7 @@ export interface CodeGenInput {
* *
* *
* @type {number} * @type {number}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
menuPid?: number | null; menuPid?: number | null;
@ -184,7 +184,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
pagePath?: string | null; pagePath?: string | null;
@ -192,7 +192,7 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
printType?: string | null; printType?: string | null;
@ -200,7 +200,15 @@ export interface CodeGenInput {
* *
* *
* @type {string} * @type {string}
* @memberof CodeGenInput * @memberof PageCodeGenInput
*/ */
printName?: string | null; printName?: string | null;
/**
* 使 Api Service
*
* @type {boolean}
* @memberof PageCodeGenInput
*/
isApiService?: boolean;
} }

View File

@ -16,15 +16,15 @@
* *
* *
* @export * @export
* @interface OpenAccessInput * @interface PageOpenAccessInput
*/ */
export interface OpenAccessInput { export interface PageOpenAccessInput {
/** /**
* *
* *
* @type {number} * @type {number}
* @memberof OpenAccessInput * @memberof PageOpenAccessInput
*/ */
page?: number; page?: number;
@ -32,7 +32,7 @@ export interface OpenAccessInput {
* *
* *
* @type {number} * @type {number}
* @memberof OpenAccessInput * @memberof PageOpenAccessInput
*/ */
pageSize?: number; pageSize?: number;
@ -40,7 +40,7 @@ export interface OpenAccessInput {
* *
* *
* @type {string} * @type {string}
* @memberof OpenAccessInput * @memberof PageOpenAccessInput
*/ */
field?: string | null; field?: string | null;
@ -48,7 +48,7 @@ export interface OpenAccessInput {
* *
* *
* @type {string} * @type {string}
* @memberof OpenAccessInput * @memberof PageOpenAccessInput
*/ */
order?: string | null; order?: string | null;
@ -56,7 +56,7 @@ export interface OpenAccessInput {
* *
* *
* @type {string} * @type {string}
* @memberof OpenAccessInput * @memberof PageOpenAccessInput
*/ */
descStr?: string | null; descStr?: string | null;
@ -64,7 +64,7 @@ export interface OpenAccessInput {
* *
* *
* @type {string} * @type {string}
* @memberof OpenAccessInput * @memberof PageOpenAccessInput
*/ */
accessKey?: string | null; accessKey?: string | null;
} }

View File

@ -16,15 +16,15 @@
* *
* *
* @export * @export
* @interface SysLdapInput * @interface PageSysLdapInput
*/ */
export interface SysLdapInput { export interface PageSysLdapInput {
/** /**
* *
* *
* @type {number} * @type {number}
* @memberof SysLdapInput * @memberof PageSysLdapInput
*/ */
page?: number; page?: number;
@ -32,7 +32,7 @@ export interface SysLdapInput {
* *
* *
* @type {number} * @type {number}
* @memberof SysLdapInput * @memberof PageSysLdapInput
*/ */
pageSize?: number; pageSize?: number;
@ -40,7 +40,7 @@ export interface SysLdapInput {
* *
* *
* @type {string} * @type {string}
* @memberof SysLdapInput * @memberof PageSysLdapInput
*/ */
field?: string | null; field?: string | null;
@ -48,7 +48,7 @@ export interface SysLdapInput {
* *
* *
* @type {string} * @type {string}
* @memberof SysLdapInput * @memberof PageSysLdapInput
*/ */
order?: string | null; order?: string | null;
@ -56,7 +56,7 @@ export interface SysLdapInput {
* *
* *
* @type {string} * @type {string}
* @memberof SysLdapInput * @memberof PageSysLdapInput
*/ */
descStr?: string | null; descStr?: string | null;
@ -64,7 +64,7 @@ export interface SysLdapInput {
* *
* *
* @type {string} * @type {string}
* @memberof SysLdapInput * @memberof PageSysLdapInput
*/ */
searchKey?: string | null; searchKey?: string | null;
@ -72,7 +72,7 @@ export interface SysLdapInput {
* *
* *
* @type {string} * @type {string}
* @memberof SysLdapInput * @memberof PageSysLdapInput
*/ */
host?: string | null; host?: string | null;
} }

View File

@ -0,0 +1,102 @@
/* 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 PageSysWechatPayInput
*/
export interface PageSysWechatPayInput {
/**
*
*
* @type {number}
* @memberof PageSysWechatPayInput
*/
page?: number;
/**
*
*
* @type {number}
* @memberof PageSysWechatPayInput
*/
pageSize?: number;
/**
*
*
* @type {string}
* @memberof PageSysWechatPayInput
*/
field?: string | null;
/**
*
*
* @type {string}
* @memberof PageSysWechatPayInput
*/
order?: string | null;
/**
*
*
* @type {string}
* @memberof PageSysWechatPayInput
*/
descStr?: string | null;
/**
* order_id
*
* @type {number}
* @memberof PageSysWechatPayInput
*/
orderId?: number | null;
/**
* order_status
*
* @type {number}
* @memberof PageSysWechatPayInput
*/
orderStatus?: number | null;
/**
* out_trade_number
*
* @type {string}
* @memberof PageSysWechatPayInput
*/
outTradeNumber?: string | null;
/**
* success_time范围
*
* @type {Array<Date>}
* @memberof PageSysWechatPayInput
*/
successTimeRange?: Array<Date> | null;
/**
* expire_time范围
*
* @type {Array<Date>}
* @memberof PageSysWechatPayInput
*/
expireTimeRange?: Array<Date> | null;
}

View File

@ -0,0 +1,59 @@
/* 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 { GoodsDetail } from './goods-detail';
/**
*
*
* @export
* @interface Promotion
*/
export interface Promotion {
/**
* @type {string}
* @memberof Promotion
*/
promotionId?: string | null;
/**
* @type {string}
* @memberof Promotion
*/
scope?: string | null;
/**
* @type {string}
* @memberof Promotion
*/
type?: string | null;
/**
* @type {number}
* @memberof Promotion
*/
amount?: number;
/**
* @type {number}
* @memberof Promotion
*/
refundAmount?: number;
/**
* @type {Array<GoodsDetail>}
* @memberof Promotion
*/
goodsDetail?: Array<GoodsDetail> | null;
}

View File

@ -0,0 +1,126 @@
/* 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 RefundRequestInput
*/
export interface RefundRequestInput {
/**
* ()
*
* @type {string}
* @memberof RefundRequestInput
*/
outTradeNumber?: string | null;
/**
* ()
*
* @type {number}
* @memberof RefundRequestInput
*/
total?: number;
/**
* 退()
*
* @type {number}
* @memberof RefundRequestInput
*/
refund?: number;
/**
* 退
*
* @type {string}
* @memberof RefundRequestInput
*/
reason?: string | null;
/**
*
*
* @type {number}
* @memberof RefundRequestInput
*/
orderId?: number;
/**
* ()
*
* @type {number}
* @memberof RefundRequestInput
*/
orderStatus?: number;
/**
*
*
* @type {string}
* @memberof RefundRequestInput
*/
merchantGoodsId?: string | null;
/**
*
*
* @type {string}
* @memberof RefundRequestInput
*/
goodsName?: string | null;
/**
*
*
* @type {number}
* @memberof RefundRequestInput
*/
unitPrice?: number;
/**
* 退
*
* @type {number}
* @memberof RefundRequestInput
*/
refundAmount?: number;
/**
* 退
*
* @type {number}
* @memberof RefundRequestInput
*/
refundQuantity?: number;
/**
*
*
* @type {string}
* @memberof RefundRequestInput
*/
attachment?: string | null;
/**
*
*
* @type {string}
* @memberof RefundRequestInput
*/
remark?: string | null;
}

View File

@ -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 { SysWechatPay } from './sys-wechat-pay';
/**
*
*
* @export
* @interface SqlSugarPagedListSysWechatPay
*/
export interface SqlSugarPagedListSysWechatPay {
/**
*
*
* @type {number}
* @memberof SqlSugarPagedListSysWechatPay
*/
page?: number;
/**
*
*
* @type {number}
* @memberof SqlSugarPagedListSysWechatPay
*/
pageSize?: number;
/**
*
*
* @type {number}
* @memberof SqlSugarPagedListSysWechatPay
*/
total?: number;
/**
*
*
* @type {number}
* @memberof SqlSugarPagedListSysWechatPay
*/
totalPages?: number;
/**
*
*
* @type {Array<SysWechatPay>}
* @memberof SqlSugarPagedListSysWechatPay
*/
items?: Array<SysWechatPay> | null;
/**
*
*
* @type {boolean}
* @memberof SqlSugarPagedListSysWechatPay
*/
hasPrevPage?: boolean;
/**
*
*
* @type {boolean}
* @memberof SqlSugarPagedListSysWechatPay
*/
hasNextPage?: boolean;
}

View File

@ -211,4 +211,12 @@ export interface SysCodeGen {
* @memberof SysCodeGen * @memberof SysCodeGen
*/ */
printName?: string | null; printName?: string | null;
/**
* 使 Api Service
*
* @type {boolean}
* @memberof SysCodeGen
*/
isApiService?: boolean;
} }

View File

@ -84,6 +84,22 @@ export interface SysWechatPay {
*/ */
isDelete?: boolean; isDelete?: boolean;
/**
*
*
* @type {number}
* @memberof SysWechatPay
*/
orderId?: number;
/**
* ()
*
* @type {number}
* @memberof SysWechatPay
*/
orderStatus?: number;
/** /**
* *
* *

View File

@ -204,6 +204,14 @@ export interface UpdateCodeGenInput {
*/ */
printName?: string | null; printName?: string | null;
/**
* 使 Api Service
*
* @type {boolean}
* @memberof UpdateCodeGenInput
*/
isApiService?: boolean;
/** /**
* Id * Id
* *

View File

@ -12,6 +12,7 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { SysUser } from './sys-user';
/** /**
* *
* *
@ -92,6 +93,12 @@ export interface UpdateOpenAccessInput {
*/ */
bindTenantId?: number; bindTenantId?: number;
/**
* @type {SysUser}
* @memberof UpdateOpenAccessInput
*/
bindUser?: SysUser;
/** /**
* *
* *

View File

@ -28,6 +28,30 @@ export interface WechatPayOutput {
*/ */
openId?: string | null; openId?: string | null;
/**
* (),
*
* @type {string}
* @memberof WechatPayOutput
*/
outTradeNumber?: string | null;
/**
* ()
*
* @type {number}
* @memberof WechatPayOutput
*/
orderId?: number;
/**
* ()
*
* @type {number}
* @memberof WechatPayOutput
*/
orderStatus?: number;
/** /**
* *
* *
@ -51,4 +75,36 @@ export interface WechatPayOutput {
* @memberof WechatPayOutput * @memberof WechatPayOutput
*/ */
goodsTag?: string | null; goodsTag?: string | null;
/**
*
*
* @type {Date}
* @memberof WechatPayOutput
*/
createTime?: Date;
/**
*
*
* @type {Date}
* @memberof WechatPayOutput
*/
successTime?: Date;
/**
* ()
*
* @type {string}
* @memberof WechatPayOutput
*/
tradeState?: string | null;
/**
* ()
*
* @type {string}
* @memberof WechatPayOutput
*/
tradeStateDescription?: string | null;
} }

View File

@ -59,4 +59,20 @@ export interface WechatPayTransactionInput {
* @memberof WechatPayTransactionInput * @memberof WechatPayTransactionInput
*/ */
goodsTag?: string | null; goodsTag?: string | null;
/**
*
*
* @type {number}
* @memberof WechatPayTransactionInput
*/
orderId?: number;
/**
* ()
*
* @type {number}
* @memberof WechatPayTransactionInput
*/
orderStatus?: number;
} }

View File

@ -79,8 +79,9 @@ const onColumnsAsideMenuClick = async (v: RouteItem) => {
if (route.path.startsWith(redirect)) mittBus.emit('setSendColumnsChildren', setSendChildren(redirect)); if (route.path.startsWith(redirect)) mittBus.emit('setSendColumnsChildren', setSendChildren(redirect));
else router.push(redirect); else router.push(redirect);
} else { } else {
if (!v.children) { if (!v.children || v.children?.length === 0) {
router.push(path); router.push(path);
onColumnsAsideDown(v.k);
} else { } else {
// //
const resData: MittMenu = setSendChildren(path); const resData: MittMenu = setSendChildren(path);
@ -92,7 +93,7 @@ const onColumnsAsideMenuClick = async (v: RouteItem) => {
// //
// https://gitee.com/lyt-top/vue-next-admin/issues/I6HW7H // https://gitee.com/lyt-top/vue-next-admin/issues/I6HW7H
if (!v.children) themeConfig.value.isCollapse = true; if (!v.children || v.children?.length === 0) themeConfig.value.isCollapse = true;
else if (v.children.length > 1) themeConfig.value.isCollapse = false; else if (v.children.length > 1) themeConfig.value.isCollapse = false;
}; };
// //

View File

@ -132,8 +132,7 @@ export const useUserInfo = defineStore('userInfo', {
// 根据字典类型和代码取字典项 // 根据字典类型和代码取字典项
getDictItemByCode(typePCode: string, val: string) { getDictItemByCode(typePCode: string, val: string) {
if(val!=undefined) if (val != undefined) {
{
val = val.toString(); val = val.toString();
if (val) { if (val) {
const _val = val.toString(); const _val = val.toString();

View File

@ -5,8 +5,8 @@
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Postcard /> </el-icon>(About) <el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Postcard /> </el-icon>(About)
</h4> </h4>
<span class="text"> <span class="text">
基于 .NET6 (Furion/SqlSugar) 实现的通用权限开发框架前端采用 🔥基于 .NET 6/8 (Furion/SqlSugar) 实现的通用权限开发框架前端采用
Vue3+Element-plus+Vite5整合众多优秀技术和框架模块插件式开发集成多租户缓存数据校验鉴权事件总线动态API通讯远程请求任务调度打印等众多黑科技代码结构简单清晰注释详尽易于上手与二次开发即便是复杂业务逻辑也能迅速实现真正实现开箱即用 Vue3/Element-plus代码简洁易扩展整合最新技术模块插件式开发前后端分离开箱即用集成多租户缓存数据校验鉴权事件总线动态API通讯远程请求任务调度打印等众多黑科技让开发更简单更通用更流行
</span> </span>
</div> </div>

View File

@ -7,6 +7,10 @@
<span> {{ props.title }} </span> <span> {{ props.title }} </span>
</div> </div>
</template> </template>
<div style="color: red; padding: 15px 15px; background: #faecd8; margin-bottom: 10px">
<el-icon style="transform: translateY(2px)"><ele-Bell /></el-icon>
<span> 如果是在前端生成的实体/在生成表选择项里面找不到请重启后台服务后再进行代码生成 </span>
</div>
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto"> <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@ -54,6 +58,14 @@
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="生成表" prop="tableName" :rules="[{ required: true, message: '生成表不能为空', trigger: 'blur' }]"> <el-form-item label="生成表" prop="tableName" :rules="[{ required: true, message: '生成表不能为空', trigger: 'blur' }]">
<template v-slot:label>
<div>
生成表
<el-tooltip raw-content content="如果是在前端生成的实体/表(在生成表选择项里面找不到),请重启后台服务后再进行代码生成。" placement="top">
<SvgIcon name="fa fa-question-circle-o" :size="16" />
</el-tooltip>
</div>
</template>
<el-select v-model="state.ruleForm.tableName" @change="tableChanged" value-key="value" filterable clearable class="w100"> <el-select v-model="state.ruleForm.tableName" @change="tableChanged" value-key="value" filterable clearable class="w100">
<el-option v-for="item in state.tableData" :key="item.entityName" :label="item.entityName + ' ( ' + item.tableName + ' ) [' + item.tableComment + ']'" :value="item" /> <el-option v-for="item in state.tableData" :key="item.entityName" :label="item.entityName + ' ( ' + item.tableName + ' ) [' + item.tableComment + ']'" :value="item" />
</el-select> </el-select>

View File

@ -109,6 +109,7 @@ const state = reactive({
allEnumSelector: [] as any, allEnumSelector: [] as any,
}); });
//
onMounted(async () => { onMounted(async () => {
var res = await getAPI(SysDictDataApi).apiSysDictDataDataListCodeGet('code_gen_effect_type'); var res = await getAPI(SysDictDataApi).apiSysDictDataDataListCodeGet('code_gen_effect_type');
state.effectTypeList = res.data.result; state.effectTypeList = res.data.result;
@ -140,6 +141,7 @@ onUnmounted(() => {
mittBus.off('submitRefresh', () => {}); mittBus.off('submitRefresh', () => {});
mittBus.off('submitRefreshFk', () => {}); mittBus.off('submitRefreshFk', () => {});
}); });
// //
const effectTypeChange = (data: any, index: number) => { const effectTypeChange = (data: any, index: number) => {
let value = data.effectType; let value = data.effectType;
@ -190,8 +192,8 @@ function effectTypeEnable(data: any) {
} }
// //
const openDialog = (addRow: any) => { const openDialog = async (addRow: any) => {
handleQuery(addRow); await handleQuery(addRow);
state.isShowDialog = true; state.isShowDialog = true;
}; };

View File

@ -5,12 +5,12 @@
<el-row :gutter="10"> <el-row :gutter="10">
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6"> <el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="业务名" prop="busName"> <el-form-item label="业务名" prop="busName">
<el-input placeholder="业务名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.busName" @keyup.enter.native="handleQuery(true)" /> <el-input placeholder="业务名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.busName" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6"> <el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="数据库表名" prop="tableName"> <el-form-item label="数据库表名" prop="tableName">
<el-input placeholder="数据库表名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.tableName" @keyup.enter.native="handleQuery(true)" /> <el-input placeholder="数据库表名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.tableName" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -21,7 +21,7 @@
<el-row> <el-row>
<el-col> <el-col>
<el-button-group> <el-button-group>
<el-button type="primary" icon="ele-Search" @click="handleQuery(true)" :loading="options.loading"> 查询 </el-button> <el-button type="primary" icon="ele-Search" @click="handleQuery" :loading="options.loading"> 查询 </el-button>
<el-button icon="ele-Refresh" @click="resetQuery" :loading="options.loading"> 重置 </el-button> <el-button icon="ele-Refresh" @click="resetQuery" :loading="options.loading"> 重置 </el-button>
</el-button-group> </el-button-group>
</el-col> </el-col>
@ -29,7 +29,7 @@
</el-card> </el-card>
<el-card class="full-table" shadow="hover" style="margin-top: 5px"> <el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" @sort-change="sortChange"> <vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_buttons> <template #toolbar_buttons>
<el-button type="primary" icon="ele-Plus" @click="handleAdd"> 新增 </el-button> <el-button type="primary" icon="ele-Plus" @click="handleAdd"> 新增 </el-button>
</template> </template>
@ -62,15 +62,6 @@
<el-button icon="ele-Cpu" text type="primary" @click="handleGenerate(row)">生成</el-button> <el-button icon="ele-Cpu" text type="primary" @click="handleGenerate(row)">生成</el-button>
</el-tooltip> </el-tooltip>
</template> </template>
<template #pager>
<vxe-pager
:loading="options.loading"
v-model:current-page="state.tableParams.page"
v-model:page-size="state.tableParams.pageSize"
:total="state.tableParams.total"
@page-change="pageChange"
/>
</template>
</vxe-grid> </vxe-grid>
</el-card> </el-card>
@ -84,8 +75,9 @@
import { onMounted, reactive, ref, defineAsyncComponent } from 'vue'; import { onMounted, reactive, ref, defineAsyncComponent } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus'; import { ElMessageBox, ElMessage } from 'element-plus';
import { auth } from '/@/utils/authFunction'; import { auth } from '/@/utils/authFunction';
import { VxeGridInstance, VxePagerEvents, VxePagerDefines } from 'vxe-table'; import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
import { useVxeTable } from '/@/hooks/vxeTableOptionsHook'; import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
import { Local } from '/@/utils/storage';
import { downloadByUrl } from '/@/utils/download'; import { downloadByUrl } from '/@/utils/download';
import EditCodeGenDialog from './component/editCodeGenDialog.vue'; import EditCodeGenDialog from './component/editCodeGenDialog.vue';
@ -93,7 +85,7 @@ import CodeConfigDialog from './component/genConfigDialog.vue';
import { getAPI } from '/@/utils/axios-utils'; import { getAPI } from '/@/utils/axios-utils';
import { SysCodeGenApi } from '/@/api-services/api'; import { SysCodeGenApi } from '/@/api-services/api';
import { SysCodeGen } from '/@/api-services/models'; import { SysCodeGen, PageCodeGenInput } from '/@/api-services/models';
const PreviewDialog = defineAsyncComponent(() => import('./component/previewDialog.vue')); const PreviewDialog = defineAsyncComponent(() => import('./component/previewDialog.vue'));
const xGrid = ref<VxeGridInstance>(); const xGrid = ref<VxeGridInstance>();
@ -110,90 +102,78 @@ const state = reactive({
tableName: undefined, tableName: undefined,
busName: undefined, busName: undefined,
}, },
tableParams: { localPageParam: {
page: 1, pageSize: 50 as number,
pageSize: 50, defaultSort: { field: 'id', order: 'asc', descStr: 'desc' },
field: 'id', //
order: 'aes', //
descStr: 'desc', //
total: 0 as any,
}, },
visible: false, visible: false,
title: '', title: '',
applicationNamespaces: [] as Array<string>, applicationNamespaces: [] as Array<string>,
}); });
//
const localPageParamKey = 'localPageParam:sysCodeGen';
// //
const options = useVxeTable<SysCodeGen>({ const options = useVxeTable<SysCodeGen>(
id: 'sysCodeGen', {
name: '代码生成', id: 'sysCodeGen',
columns: [ name: '代码生成',
// { type: 'checkbox', width: 40, fixed: 'left' }, columns: [
{ type: 'seq', title: '序号', width: 60, fixed: 'left' }, // { type: 'checkbox', width: 40, fixed: 'left' },
{ field: 'configId', title: '库定位器', minWidth: 200, showOverflow: 'tooltip' }, { type: 'seq', title: '序号', width: 60, fixed: 'left' },
{ field: 'tableName', title: '表名称', minWidth: 200, showOverflow: 'tooltip' }, { field: 'configId', title: '库定位器', minWidth: 200, showOverflow: 'tooltip' },
{ field: 'busName', title: '业务名', minWidth: 200, showOverflow: 'tooltip' }, { field: 'tableName', title: '表名称', minWidth: 200, showOverflow: 'tooltip' },
{ field: 'nameSpace', title: '命名空间', minWidth: 200, showOverflow: 'tooltip' }, { field: 'busName', title: '业务名', minWidth: 200, showOverflow: 'tooltip' },
{ field: 'authorName', title: '作者姓名', minWidth: 200, showOverflow: 'tooltip' }, { field: 'nameSpace', title: '命名空间', minWidth: 200, showOverflow: 'tooltip' },
{ field: 'generateType', title: '生成方式', minWidth: 140, showOverflow: 'tooltip', slots: { default: 'row_generateType' } }, { field: 'authorName', title: '作者姓名', minWidth: 200, showOverflow: 'tooltip' },
{ title: '操作', fixed: 'right', width: 280, showOverflow: true, slots: { default: 'row_buttons' } }, { field: 'generateType', title: '生成方式', minWidth: 140, showOverflow: 'tooltip', slots: { default: 'row_generateType' } },
], { title: '操作', fixed: 'right', width: 280, showOverflow: true, slots: { default: 'row_buttons' } },
enableExport: auth('sysCodeGen:export'), ],
searchCallback: () => handleQuery(), },
queryAllCallback: () => fetchData({ pageSize: 99999 }), // vxeGrid()vxe-table
}); {
//
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
//
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
//
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
//
toolbarConfig: { export: false },
}
);
// //
onMounted(async () => { onMounted(async () => {
state.localPageParam = Local.get(localPageParamKey) || state.localPageParam;
await handleQuery(); await handleQuery();
//
let res = await getAPI(SysCodeGenApi).apiSysCodeGenApplicationNamespacesGet(); let res = await getAPI(SysCodeGenApi).apiSysCodeGenApplicationNamespacesGet();
state.applicationNamespaces = res.data.result as Array<string>; state.applicationNamespaces = res.data.result as Array<string>;
}); });
// // api
const handleQuery = async (reset = false) => { const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
options.loading = true; const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as PageCodeGenInput;
if (reset) state.tableParams.page = 1;
var res = await fetchData(null);
xGrid.value?.loadData(res.data.result?.items ?? []);
state.tableParams.total = res.data.result?.total;
options.loading = false;
};
//
const fetchData = async (tableParams: any) => {
let params = Object.assign(state.queryParams, state.tableParams, tableParams);
return getAPI(SysCodeGenApi).apiSysCodeGenPagePost(params); return getAPI(SysCodeGenApi).apiSysCodeGenPagePost(params);
}; };
//
const handleQuery = async () => {
await xGrid.value?.commitProxy('query');
};
// //
const resetQuery = () => { const resetQuery = async () => {
state.queryParams.busName = undefined; state.queryParams.busName = undefined;
state.queryParams.tableName = undefined; state.queryParams.tableName = undefined;
handleQuery(true); await xGrid.value?.commitProxy('reload');
};
const handleConfig = (row: any) => {
CodeConfigRef.value?.openDialog(row);
};
//
const pageChange: VxePagerEvents.PageChange = ({ currentPage, pageSize }: VxePagerDefines.PageChangeEventParams) => {
state.tableParams.page = currentPage;
state.tableParams.pageSize = pageSize;
handleQuery();
};
//
const sortChange = (options: any) => {
state.tableParams.field = options.field;
state.tableParams.order = options.order;
handleQuery();
}; };
// //
const handleAdd = () => { const handleAdd = () => {
state.title = '增加'; state.title = '增加代码生成';
EditCodeGenRef.value?.openDialog({ EditCodeGenRef.value?.openDialog({
authorName: 'Admin.NET', authorName: 'Admin.NET',
generateType: '200', generateType: '200',
@ -202,12 +182,13 @@ const handleAdd = () => {
pagePath: 'main', pagePath: 'main',
nameSpace: state.applicationNamespaces[0], nameSpace: state.applicationNamespaces[0],
generateMenu: false, generateMenu: false,
isApiService: false,
}); });
}; };
// //
const handleEdit = (row: any) => { const handleEdit = (row: any) => {
state.title = '编辑'; state.title = '编辑代码生成';
EditCodeGenRef.value?.openDialog(row); EditCodeGenRef.value?.openDialog(row);
}; };
@ -220,12 +201,31 @@ const handleDelete = (row: any) => {
}) })
.then(async () => { .then(async () => {
await getAPI(SysCodeGenApi).apiSysCodeGenDeletePost([{ id: row.id }]); await getAPI(SysCodeGenApi).apiSysCodeGenDeletePost([{ id: row.id }]);
handleQuery(); await handleQuery();
ElMessage.success('操作成功'); ElMessage.success('操作成功');
}) })
.catch(() => {}); .catch(() => {});
}; };
//
const gridEvents: VxeGridListeners<SysCodeGen> = {
// pager-config
async pageChange({ pageSize }) {
state.localPageParam.pageSize = pageSize;
Local.set(localPageParamKey, state.localPageParam);
},
//
async sortChange({ field, order }) {
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
Local.set(localPageParamKey, state.localPageParam);
},
};
//
const handleConfig = (row: any) => {
CodeConfigRef.value?.openDialog(row);
};
// //
const handleGenerate = (row: any) => { const handleGenerate = (row: any) => {
ElMessageBox.confirm(`确定要生成吗?`, '提示', { ElMessageBox.confirm(`确定要生成吗?`, '提示', {
@ -236,7 +236,7 @@ const handleGenerate = (row: any) => {
.then(async () => { .then(async () => {
var res = await getAPI(SysCodeGenApi).apiSysCodeGenRunLocalPost(row); var res = await getAPI(SysCodeGenApi).apiSysCodeGenRunLocalPost(row);
if (res.data.result != null && res.data.result.url != null) downloadByUrl({ url: res.data.result.url }); if (res.data.result != null && res.data.result.url != null) downloadByUrl({ url: res.data.result.url });
handleQuery(); await handleQuery();
ElMessage.success('操作成功'); ElMessage.success('操作成功');
}) })
.catch(() => {}); .catch(() => {});

View File

@ -104,4 +104,9 @@ export const dataTypeList = [
hasLength: false, hasLength: false,
hasDecimalDigits: false, hasDecimalDigits: false,
}, },
{
value: 'boolean',
hasLength: false,
hasDecimalDigits: false,
},
]; ];

View File

@ -32,7 +32,7 @@
<el-button-group style="padding-left: 12px; padding-right: 12px"> <el-button-group style="padding-left: 12px; padding-right: 12px">
<el-button icon="ele-Plus" @click="showAddColumn"> 增加列 </el-button> <el-button icon="ele-Plus" @click="showAddColumn"> 增加列 </el-button>
<el-button icon="ele-Plus" @click="showGenDialog"> 生成实体 </el-button> <el-button icon="ele-Plus" @click="showGenDialog"> 生成实体 </el-button>
<el-popover placement="bottom" title="温馨提示" :width="200" trigger="hover" content="如果是刚刚生成的实体,请重启服务后再生成种子"> <el-popover placement="bottom" title="🔔提示" :width="220" trigger="hover" content="如果是刚刚生成的实体,请重启后台服务后再生成种子">
<template #reference> <template #reference>
<el-button icon="ele-Plus" @click="showGenSeedDataDialog"> 生成种子 </el-button> <el-button icon="ele-Plus" @click="showGenSeedDataDialog"> 生成种子 </el-button>
</template> </template>
@ -81,7 +81,7 @@ import { onMounted, reactive, ref } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus'; import { ElMessageBox, ElMessage } from 'element-plus';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { VxeGridInstance } from 'vxe-table'; import { VxeGridInstance } from 'vxe-table';
import { useVxeTable } from '/@/hooks/vxeTableOptionsHook'; import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
import EditTable from '/@/views/system/database/component/editTable.vue'; import EditTable from '/@/views/system/database/component/editTable.vue';
import EditColumn from '/@/views/system/database/component/editColumn.vue'; import EditColumn from '/@/views/system/database/component/editColumn.vue';
@ -118,54 +118,58 @@ const state = reactive({
}); });
// //
const options = useVxeTable<DbColumnOutput>({ const options = useVxeTable<DbColumnOutput>(
id: 'sysDatabase', {
name: '库表信息', id: 'sysDatabase',
columns: [ name: '库表信息',
// { type: 'checkbox', width: 40, fixed: 'left' }, columns: [
{ type: 'seq', title: '序号', width: 50, fixed: 'left' }, // { type: 'checkbox', width: 40, fixed: 'left' },
{ field: 'dbColumnName', title: '字段名', minWidth: 200, showOverflow: 'tooltip' }, { type: 'seq', title: '序号', width: 50, fixed: 'left' },
{ field: 'dataType', title: '数据类型', minWidth: 120, showOverflow: 'tooltip' }, { field: 'dbColumnName', title: '字段名', minWidth: 200, showOverflow: 'tooltip' },
{ field: 'isPrimarykey', title: '主键', minWidth: 70, slots: { default: 'row_isPrimarykey' } }, { field: 'dataType', title: '数据类型', minWidth: 120, showOverflow: 'tooltip' },
{ field: 'isIdentity', title: '自增', minWidth: 70, slots: { default: 'row_isIdentity' } }, { field: 'isPrimarykey', title: '主键', minWidth: 70, slots: { default: 'row_isPrimarykey' } },
{ field: 'isNullable', title: '可空', minWidth: 70, slots: { default: 'row_isNullable' } }, { field: 'isIdentity', title: '自增', minWidth: 70, slots: { default: 'row_isIdentity' } },
{ field: 'length', title: '长度', minWidth: 80, showOverflow: 'tooltip' }, { field: 'isNullable', title: '可空', minWidth: 70, slots: { default: 'row_isNullable' } },
{ field: 'decimalDigits', title: '精度', minWidth: 80, showOverflow: 'tooltip' }, { field: 'length', title: '长度', minWidth: 80, showOverflow: 'tooltip' },
{ field: 'defaultValue', title: '默认值', minWidth: 80, showOverflow: 'tooltip' }, { field: 'decimalDigits', title: '精度', minWidth: 80, showOverflow: 'tooltip' },
{ field: 'columnDescription', title: '描述', minWidth: 200, showOverflow: 'tooltip' }, { field: 'defaultValue', title: '默认值', minWidth: 80, showOverflow: 'tooltip' },
{ title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } }, { field: 'columnDescription', title: '描述', minWidth: 200, showOverflow: 'tooltip' },
], { title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
enableExport: true, ],
searchCallback: () => handleQueryColumn(), },
queryAllCallback: () => fetchData({ pageSize: 99999 }), // vxeGrid()vxe-table
}); {
//
proxyConfig: { autoLoad: true, ajax: { query: () => handleQueryColumnApi() } },
//
pagerConfig: { enabled: false },
//
toolbarConfig: { export: true },
}
);
// //
onMounted(async () => { onMounted(async () => {
options.loading = true; options.loading = true;
var res = await getAPI(SysDatabaseApi).apiSysDatabaseListGet(); let res = await getAPI(SysDatabaseApi).apiSysDatabaseListGet();
state.dbData = res.data.result; state.dbData = res.data.result;
options.loading = false;
let appNamesRes = await getAPI(SysCodeGenApi).apiSysCodeGenApplicationNamespacesGet(); let appNamesRes = await getAPI(SysCodeGenApi).apiSysCodeGenApplicationNamespacesGet();
state.appNamespaces = appNamesRes.data.result as Array<string>; state.appNamespaces = appNamesRes.data.result as Array<string>;
options.loading = false;
}); });
// // api
const handleQueryColumn = async () => { const handleQueryColumnApi = async () => {
if (state.tableName == '' || typeof state.tableName == 'undefined') { if (state.tableName == '' || typeof state.tableName == 'undefined') {
await xGrid.value?.loadData([]);
options.loading = false;
return; return;
} }
options.loading = true; return getAPI(SysDatabaseApi).apiSysDatabaseColumnListTableNameConfigIdGet(state.tableName, state.configId);
var res = await fetchData();
await xGrid.value?.loadData(res.data.result ?? []);
options.loading = false;
}; };
// //
const fetchData = async (tableParams?: any) => { const handleQueryColumn = async () => {
return getAPI(SysDatabaseApi).apiSysDatabaseColumnListTableNameConfigIdGet(state.tableName, state.configId); await xGrid.value?.commitProxy('query');
}; };
// //

View File

@ -44,7 +44,7 @@
<div> <div>
扫描触发器 扫描触发器
<el-tooltip raw-content content="此参数只在新增作业时生效<br/>扫描定义在作业上的触发器" placement="top"> <el-tooltip raw-content content="此参数只在新增作业时生效<br/>扫描定义在作业上的触发器" placement="top">
<SvgIcon name="fa fa-question-circle-o" :size="16" style="vertical-align: middle" /> <SvgIcon name="fa fa-question-circle-o" :size="16" />
</el-tooltip> </el-tooltip>
</div> </div>
</template> </template>

View File

@ -95,7 +95,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils'; import { getAPI } from '/@/utils/axios-utils';
import { SysLdapApi } from '/@/api-services'; import { SysLdapApi } from '/@/api-services';
import { SysLdap, SysLdapInput } from '/@/api-services/models'; import { SysLdap, PageSysLdapInput } from '/@/api-services/models';
// //
const PrintDialog = defineAsyncComponent(() => import('/@/views/system/print/component/hiprint/preview.vue')); const PrintDialog = defineAsyncComponent(() => import('/@/views/system/print/component/hiprint/preview.vue'));
@ -159,7 +159,7 @@ onMounted(async () => {
// api // api
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => { const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as SysLdapInput; const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as PageSysLdapInput;
return getAPI(SysLdapApi).apiSysLdapPagePost(params); return getAPI(SysLdapApi).apiSysLdapPagePost(params);
}; };

View File

@ -130,6 +130,7 @@ const options = useVxeTable<SysMenu>(
pagerConfig: { enabled: false }, pagerConfig: { enabled: false },
// //
toolbarConfig: { export: false }, toolbarConfig: { export: false },
//
treeConfig: { expandAll: false }, treeConfig: { expandAll: false },
} }
); );

View File

@ -71,7 +71,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils'; import { getAPI } from '/@/utils/axios-utils';
import { SysOpenAccessApi } from '/@/api-services/api'; import { SysOpenAccessApi } from '/@/api-services/api';
import { OpenAccessInput, OpenAccessOutput } from '/@/api-services/models'; import { PageOpenAccessInput, OpenAccessOutput } from '/@/api-services/models';
const xGrid = ref<VxeGridInstance>(); const xGrid = ref<VxeGridInstance>();
const editRef = ref<InstanceType<typeof EditOpenAccess>>(); const editRef = ref<InstanceType<typeof EditOpenAccess>>();
@ -128,7 +128,7 @@ onMounted(async () => {
// api // api
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => { const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as OpenAccessInput; const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as PageOpenAccessInput;
return getAPI(SysOpenAccessApi).apiSysOpenAccessPagePost(params); return getAPI(SysOpenAccessApi).apiSysOpenAccessPagePost(params);
}; };