😎同步升级

This commit is contained in:
zuohuaijun 2024-07-01 17:11:09 +08:00
parent 729e1776d9
commit 11f2eac522
6 changed files with 41 additions and 39 deletions

View File

@ -18,18 +18,18 @@
<PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
<PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.14.3" />
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.4.2" />
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.4.2" />
<PackageReference Include="Furion.Pure" Version="4.9.4.2" />
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.4.3" />
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.4.3" />
<PackageReference Include="Furion.Pure" Version="4.9.4.3" />
<PackageReference Include="IPTools.China" 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.Pdf" Version="2.7.5.1" />
<PackageReference Include="Magicodes.IE.Word" Version="2.7.5.1" />
<PackageReference Include="MailKit" Version="4.6.0" />
<PackageReference Include="NewLife.Redis" Version="5.7.2024.602" />
<PackageReference Include="MailKit" Version="4.7.0" />
<PackageReference Include="NewLife.Redis" Version="5.7.2024.701" />
<PackageReference Include="Novell.Directory.Ldap.NETStandard" Version="3.6.0" />
<PackageReference Include="QRCoder" Version="1.5.1" />
<PackageReference Include="QRCoder" Version="1.6.0" />
<PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
<PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.2" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.3.0" />
@ -37,7 +37,7 @@
<PackageReference Include="SqlSugarCore" Version="5.1.4.160" />
<PackageReference Include="SSH.NET" Version="2024.0.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.2" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1036" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1037" />
<PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup>

View File

@ -167,6 +167,13 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
new SysMenu{ Id=1310000000431, Pid=1310000000301, Title="系统配置", Path="/platform/infoSetting", Name="sysInfoSetting", Component="/system/infoSetting/index", Icon="ele-Setting", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=220 },
new SysMenu{ Id=1310000000441, Pid=1310000000301, Title="微信支付", Path="/platform/wechatpay", Name="sysWechatPay", Component="/system/weChatPay/index", Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=230 },
new SysMenu{ Id=1310000000442, Pid=1310000000441, Title="微信支付下单Native", Permission="sysWechatPay:payTransactionNative", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
new SysMenu{ Id=1310000000443, Pid=1310000000441, Title="查询退款信息", Permission="sysWechatPay:listRefund", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
new SysMenu{ Id=1310000000444, Pid=1310000000441, Title="获取支付订单详情(本地库)", Permission="sysWechatPay:payInfo", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
new SysMenu{ Id=1310000000445, Pid=1310000000441, Title="获取支付订单详情(微信接口)", Permission="sysWechatPay:payInfoFromWechat", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
new SysMenu{ Id=1310000000446, Pid=1310000000441, Title="退款申请", Permission="sysWechatPay:refundDomestic", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
new SysMenu{ Id=1310000000501, Pid=0, Title="日志管理", Path="/log", Name="log", Component="Layout", Icon="ele-DocumentCopy", Type=MenuTypeEnum.Dir, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=12000 },
new SysMenu{ Id=1310000000511, Pid=1310000000501, Title="访问日志", Path="/log/vislog", Name="sysVisLog", Component="/system/log/vislog/index", Icon="ele-Document", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
new SysMenu{ Id=1310000000512, Pid=1310000000511, Title="查询", Permission="sysVislog:page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },

View File

@ -64,33 +64,6 @@ public class SysFileService : IDynamicApiController, ITransient
return await HandleUploadFile(input.File, input.Path, fileType: input.FileType);
}
/// <summary>
/// 上传文件Base64
/// </summary>
/// <param name="strBase64"></param>
/// <param name="fileName"></param>
/// <param name="contentType"></param>
/// <param name="path"></param>
/// <param name="fileType"></param>
/// <returns></returns>
private async Task<SysFile> UploadFileFromBase64(string strBase64, string fileName, string contentType, string? path, string? fileType)
{
byte[] fileData = Convert.FromBase64String(strBase64);
var ms = new MemoryStream();
ms.Write(fileData);
ms.Seek(0, SeekOrigin.Begin);
if (string.IsNullOrEmpty(fileName))
fileName = $"{YitIdHelper.NextId()}.jpg";
if (string.IsNullOrEmpty(contentType))
contentType = "image/jpg";
IFormFile formFile = new FormFile(ms, 0, fileData.Length, "file", fileName)
{
Headers = new HeaderDictionary(),
ContentType = contentType
};
return await UploadFile(new FileUploadInput { File = formFile, Path = path, FileType = fileType });
}
/// <summary>
/// 上传文件Base64 🔖
/// </summary>
@ -99,7 +72,20 @@ public class SysFileService : IDynamicApiController, ITransient
[DisplayName("上传文件Base64")]
public async Task<SysFile> UploadFileFromBase64(UploadFileFromBase64Input input)
{
return await UploadFileFromBase64(input.FileDataBase64, input.FileName, input.ContentType, input.Path, input.FileType);
byte[] fileData = Convert.FromBase64String(input.FileDataBase64);
var ms = new MemoryStream();
ms.Write(fileData);
ms.Seek(0, SeekOrigin.Begin);
if (string.IsNullOrEmpty(input.FileName))
input.FileName = $"{YitIdHelper.NextId()}.jpg";
if (string.IsNullOrEmpty(input.ContentType))
input.ContentType = "image/jpg";
IFormFile formFile = new FormFile(ms, 0, fileData.Length, "file", input.FileName)
{
Headers = new HeaderDictionary(),
ContentType = input.ContentType
};
return await UploadFile(new FileUploadInput { File = formFile, Path = input.Path, FileType = input.FileType });
}
/// <summary>
@ -335,7 +321,7 @@ public class SysFileService : IDynamicApiController, ITransient
// 获取文件后缀
var suffix = Path.GetExtension(file.FileName).ToLower(); // 后缀
if (string.IsNullOrWhiteSpace(suffix))
if (!string.IsNullOrWhiteSpace(suffix))
{
var contentTypeProvider = FS.GetFileExtensionContentTypeProvider();
suffix = contentTypeProvider.Mappings.FirstOrDefault(u => u.Value == file.ContentType).Key;

View File

@ -51,7 +51,7 @@ public class JobClusterServer : IJobClusterServer
try
{
ICache _cache = App.GetRequiredService<ICache>();
ICache _cache = App.GetRequiredService<ICacheProvider>().Cache;
// 使用分布式锁
using (_cache.AcquireLock("lock:JobClusterServer:WaitingForAsync", 1000))
{

View File

@ -38,6 +38,7 @@ public class @(@Model.ClassName)Service : IDynamicApiController, ITransient
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Page")]
[DisplayName("分页查询@(@Model.BusName)")]
public async Task<SqlSugarPagedList<@(@Model.ClassName)Output>> Page(@(@Model.ClassName)Input input)
{
@if (haveLikeCdt) {
@ -120,6 +121,7 @@ if (@column.QueryWhether == "Y"){
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Add")]
[DisplayName("增加@(@Model.BusName)")]
public async Task<long> Add(Add@(@Model.ClassName)Input input)
{
var entity = input.Adapt<@(@Model.ClassName)>();
@ -134,6 +136,7 @@ if (@column.QueryWhether == "Y"){
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Delete")]
[DisplayName("删除@(@Model.BusName)")]
public async Task Delete(Delete@(@Model.ClassName)Input input)
{
@foreach (var column in Model.TableField){
@ -152,6 +155,7 @@ if (@column.ColumnKey == "True"){
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Update")]
[DisplayName("更新@(@Model.BusName)")]
public async Task Update(Update@(@Model.ClassName)Input input)
{
var entity = input.Adapt<@(@Model.ClassName)>();
@ -165,6 +169,7 @@ if (@column.ColumnKey == "True"){
/// <returns></returns>
[HttpGet]
[ApiDescriptionSettings(Name = "Detail")]
[DisplayName("获取@(@Model.BusName)")]
public async Task<@(@Model.ClassName)> Detail([FromQuery] QueryById@(@Model.ClassName)Input input)
{
@foreach (var column in Model.TableField){
@ -181,6 +186,7 @@ if (@column.ColumnKey == "True"){
/// <returns></returns>
[HttpGet]
[ApiDescriptionSettings(Name = "List")]
[DisplayName("获取@(@Model.BusName)列表")]
public async Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input)
{
return await _rep.AsQueryable().Select<@(@Model.ClassName)Output>().ToListAsync();
@ -193,6 +199,7 @@ if(@column.EffectType == "fk" && (@column.WhetherAddUpdate == "Y" || column.Quer
@:/// </summary>
@:/// <returns></returns>
@:[ApiDescriptionSettings(Name = "@(@column.FkEntityName)@(@column.PropertyName)Dropdown"), HttpGet]
@:[DisplayName("获取@(@column.ColumnComment)列表")]
@:public async Task<dynamic> @(@column.FkEntityName)@(@column.PropertyName)Dropdown()
@:{
@:return await _rep.Context.Queryable<@(@column.FkEntityName)>()
@ -214,6 +221,7 @@ if(@column.EffectType == "Upload"){
@:/// <param name="file"></param>
@:/// <returns></returns>
@:[ApiDescriptionSettings(Name = "Upload@(@column.PropertyName)"), HttpPost]
@:[DisplayName("上传@(@column.ColumnComment)")]
@:public async Task<SysFile> Upload@(@column.PropertyName)([Required] IFormFile file)
@:{
@:var service = App.GetRequiredService<SysFileService>();
@ -227,6 +235,7 @@ if(@column.EffectType == "Upload"){
if(@column.EffectType == "ApiTreeSelect" && !definedObjects.ContainsKey("@(@column.FkEntityName)Tree")){
@{definedObjects.Add("@(@column.FkEntityName)Tree", 1);}
@:[HttpGet("@(@column.FkEntityName)Tree")]
@:[DisplayName("获取@(@column.FkEntityName)Tree")]
@:public async Task<dynamic> @(@column.FkEntityName)Tree()
@:{
@:return await _rep.Context.Queryable<@(@column.FkEntityName)>().ToTreeAsync(u => u.Children, u => u.@(@column.PidColumn), 0);

View File

@ -1,4 +1,4 @@
@{
@{
var pkField = Model.TableField.Where(c => c.ColumnKey == "True").FirstOrDefault();
string pkFieldName = null;
if(pkField != null && !string.IsNullOrEmpty(pkField.PropertyName))
@ -192,7 +192,7 @@
v-model:page-size="tableParams.pageSize"
:total="tableParams.total"
:page-sizes="[10, 20, 50, 100, 200, 500]"
small=""
size="small"
background=""
@@size-change="handleSizeChange"
@@current-change="handleCurrentChange"