优化代码结构
This commit is contained in:
parent
f9b5e8e1ee
commit
12bbaf5efd
@ -4,10 +4,12 @@ using Microsoft.Extensions.Logging;
|
||||
using YD_Event.Application.Client.Dtos;
|
||||
using YD_Event.Core.Entities;
|
||||
using YD_Event.Core.Enum;
|
||||
using YD_Event.Core.Utils;
|
||||
using Easy.Core;
|
||||
using YD_Event.Core.Infrastructure.WeChat;
|
||||
using YD_Event.Core.Infrastructure.WeChat.Dto;
|
||||
using YD_Event.Core.Options;
|
||||
using YD_Event.Core.Domain.Pricing;
|
||||
using YD_Event.Core.Domain.Pricing.Models;
|
||||
using SqlSugar;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@ -496,7 +498,7 @@ public class EventClientController : IDynamicApiController
|
||||
int totalParticipantCount = input.Items.Sum(i => i.PersonCount);
|
||||
|
||||
// 构建定价服务输入
|
||||
var pricingInput = new YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput
|
||||
var pricingInput = new PricingInput
|
||||
{
|
||||
ChargeMode = evt.ChargeMode,
|
||||
ParticipantCount = totalParticipantCount,
|
||||
@ -511,7 +513,7 @@ public class EventClientController : IDynamicApiController
|
||||
|
||||
var bp = baseProjects.FirstOrDefault(p => p.Id == ep.ProjectId);
|
||||
|
||||
pricingInput.Projects.Add(new YD_Event.Core.Domain.Pricing.EventPricingService.ProjectPricingInfo
|
||||
pricingInput.Projects.Add(new ProjectPricingInfo
|
||||
{
|
||||
ProjectId = ep.Id,
|
||||
ProjectName = bp?.Name ?? "",
|
||||
@ -713,7 +715,7 @@ public class EventClientController : IDynamicApiController
|
||||
int totalPerson = input.Items.Sum(i => i.Persons!.Count);
|
||||
|
||||
// 构建定价服务输入
|
||||
var pricingInput = new YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput
|
||||
var pricingInput = new PricingInput
|
||||
{
|
||||
ChargeMode = evt.ChargeMode,
|
||||
ParticipantCount = totalPerson,
|
||||
@ -728,7 +730,7 @@ public class EventClientController : IDynamicApiController
|
||||
|
||||
if (ep != null)
|
||||
{
|
||||
pricingInput.Projects.Add(new YD_Event.Core.Domain.Pricing.EventPricingService.ProjectPricingInfo
|
||||
pricingInput.Projects.Add(new ProjectPricingInfo
|
||||
{
|
||||
ProjectId = ep.Id,
|
||||
ProjectName = bp?.Name ?? "",
|
||||
|
||||
@ -2,7 +2,7 @@ using YD_Event.Application.Event.Dtos;
|
||||
using YD_Event.Application.Project.Dtos;
|
||||
using YD_Event.Core.Entities;
|
||||
using YD_Event.Core.Enum;
|
||||
using YD_Event.Core.Utils;
|
||||
using Easy.Core;
|
||||
using MiniExcelLibs;
|
||||
using SqlSugar;
|
||||
using Mapster;
|
||||
|
||||
@ -5,7 +5,7 @@ using System.Threading.Tasks;
|
||||
using YD_Event.Application.Event.Dtos;
|
||||
using YD_Event.Core.Entities;
|
||||
using YD_Event.Core.Enum;
|
||||
using YD_Event.Core.Utils;
|
||||
using Easy.Core;
|
||||
using SqlSugar;
|
||||
using Mapster;
|
||||
using YD_Event.Application.Auth;
|
||||
|
||||
@ -7,7 +7,8 @@ using YD_Event.Application.Project;
|
||||
using YD_Event.Core.Entities;
|
||||
using YD_Event.Core.Enum;
|
||||
using YD_Event.Core.Domain.Pricing;
|
||||
using YD_Event.Core.Utils;
|
||||
using YD_Event.Core.Domain.Pricing.Models;
|
||||
using Easy.Core;
|
||||
using SqlSugar;
|
||||
using Mapster;
|
||||
using YD_Event.Application.Auth;
|
||||
@ -1591,7 +1592,7 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
|
||||
var baseProjects = await _projectRepository.GetListAsync(x => projectIds.Contains(x.Id));
|
||||
|
||||
// 构建统一计算服务的输入参数
|
||||
var pricingInput = new EventPricingService.PricingInput
|
||||
var pricingInput = new PricingInput
|
||||
{
|
||||
ChargeMode = feeConfig.ChargeMode,
|
||||
ParticipantCount = input.ParticipantCount,
|
||||
@ -1602,7 +1603,7 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
|
||||
foreach (var eventProject in eventProjects)
|
||||
{
|
||||
var baseProject = baseProjects.FirstOrDefault(p => p.Id == eventProject.ProjectId);
|
||||
pricingInput.Projects.Add(new EventPricingService.ProjectPricingInfo
|
||||
pricingInput.Projects.Add(new ProjectPricingInfo
|
||||
{
|
||||
ProjectId = eventProject.ProjectId,
|
||||
ProjectName = baseProject?.Name ?? "未知项目",
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
global using Furion;
|
||||
global using Furion;
|
||||
global using Furion.DataEncryption;
|
||||
global using Furion.DataValidation;
|
||||
global using Furion.DependencyInjection;
|
||||
@ -28,4 +28,3 @@ global using System.Collections;
|
||||
global using Newtonsoft.Json;
|
||||
global using Newtonsoft.Json.Linq;
|
||||
global using System.Text.RegularExpressions;
|
||||
global using YD_Event.Core.Config;
|
||||
@ -37,7 +37,6 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MiniExcel" Version="1.42.0" />
|
||||
<PackageReference Include="MiniWord" Version="0.9.2" />
|
||||
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.16.0" />
|
||||
<PackageReference Include="EPPlus" Version="7.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -1,67 +0,0 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
namespace YD_Event.Core.Config;
|
||||
public class BlogSetting
|
||||
{
|
||||
/// <summary>
|
||||
/// 网站Logo
|
||||
/// </summary>
|
||||
public string Logo { get; set; }
|
||||
/// <summary>
|
||||
/// 站点图标
|
||||
/// </summary>
|
||||
public string Favicon { get; set; }
|
||||
/// <summary>
|
||||
/// 开启打赏
|
||||
/// </summary>
|
||||
public bool? IsRewards { get; set; }
|
||||
/// <summary>
|
||||
/// 支付宝
|
||||
/// </summary>
|
||||
public string AliPay { get; set; }
|
||||
/// <summary>
|
||||
/// 微信收款码
|
||||
/// </summary>
|
||||
public string WxPay { get; set; }
|
||||
/// <summary>
|
||||
/// 允许留言
|
||||
/// </summary>
|
||||
public bool? IsAllowMessage { get; set; }
|
||||
/// <summary>
|
||||
/// 允许评论
|
||||
/// </summary>
|
||||
public bool? IsAllowComments { get; set; }
|
||||
/// <summary>
|
||||
/// 公告
|
||||
/// </summary>
|
||||
public string Announcement { get; set; }
|
||||
/// <summary>
|
||||
/// 站点名称
|
||||
/// </summary>
|
||||
public string SiteName { get; set; }
|
||||
/// <summary>
|
||||
/// 首页格言
|
||||
/// </summary>
|
||||
public string Motto { get; set; }
|
||||
/// <summary>
|
||||
/// 网站运营时间
|
||||
/// </summary>
|
||||
public DateTime RunTime { get; set; }
|
||||
/// <summary>
|
||||
/// 站点版权
|
||||
/// </summary>
|
||||
public string Copyright { get; set; }
|
||||
/// <summary>
|
||||
/// 站点描述
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
/// <summary>
|
||||
/// 关键词
|
||||
/// </summary>
|
||||
public string Keyword { get; set; }
|
||||
/// <summary>
|
||||
/// 备案号
|
||||
/// </summary>
|
||||
public string Filing { get; set; }
|
||||
}
|
||||
@ -1,35 +0,0 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
namespace YD_Event.Core.Config;
|
||||
public class BloggerInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 头像
|
||||
/// </summary>
|
||||
public string Avatar { get; set; }
|
||||
/// <summary>
|
||||
/// 昵称
|
||||
/// </summary>
|
||||
public string NikeName { get; set; }
|
||||
/// <summary>
|
||||
/// QQ
|
||||
/// </summary>
|
||||
public string QQ { get; set; }
|
||||
/// <summary>
|
||||
/// Github
|
||||
/// </summary>
|
||||
public string Github { get; set; }
|
||||
/// <summary>
|
||||
/// 码云
|
||||
/// </summary>
|
||||
public string Gitee { get; set; }
|
||||
/// <summary>
|
||||
/// 个性签名
|
||||
/// </summary>
|
||||
public string Motto { get; set; }
|
||||
/// <summary>
|
||||
/// 关于我
|
||||
/// </summary>
|
||||
public string About { get; set; }
|
||||
}
|
||||
@ -1,27 +0,0 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
namespace YD_Event.Core.Config;
|
||||
public class SysSecuritySetting
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户默认密码
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
/// <summary>
|
||||
/// 密码错误次数
|
||||
/// </summary>
|
||||
public int Times { get; set; }
|
||||
/// <summary>
|
||||
/// 密码规则
|
||||
/// </summary>
|
||||
public string PasswordRule { get; set; }
|
||||
/// <summary>
|
||||
/// 密码规则提示语
|
||||
/// </summary>
|
||||
public string RuleMessage { get; set; }
|
||||
/// <summary>
|
||||
/// Token有效期(分钟)
|
||||
/// </summary>
|
||||
public int? TokenExpired { get; set; }
|
||||
}
|
||||
@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
@ -1,11 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using DocumentFormat.OpenXml.Packaging;
|
||||
using DocumentFormat.OpenXml.Wordprocessing;
|
||||
using DocumentFormat.OpenXml.Drawing.Wordprocessing;
|
||||
using Furion.DependencyInjection;
|
||||
|
||||
namespace YD_Event.Core.Domain.Certificate
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace YD_Event.Core.Domain.Certificate;
|
||||
namespace YD_Event.Core.Domain.Certificate.Models;
|
||||
|
||||
/// <summary>
|
||||
/// 证书模型
|
||||
@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using QRCoder;
|
||||
using Furion.DependencyInjection;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using YD_Event.Core.Enum;
|
||||
using YD_Event.Core.Domain.Pricing.Models;
|
||||
|
||||
namespace YD_Event.Core.Domain.Pricing;
|
||||
|
||||
@ -8,110 +9,6 @@ namespace YD_Event.Core.Domain.Pricing;
|
||||
/// </summary>
|
||||
public static class EventPricingService
|
||||
{
|
||||
/// <summary>
|
||||
/// 定价计算输入参数
|
||||
/// </summary>
|
||||
public class PricingInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 收费模式
|
||||
/// </summary>
|
||||
public ChargeMode ChargeMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 参赛人数
|
||||
/// </summary>
|
||||
public int ParticipantCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 赛事定价(用于定价(赛事)和单价(赛事)模式)
|
||||
/// </summary>
|
||||
public decimal EventPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目列表(单价项目模式使用)
|
||||
/// </summary>
|
||||
public List<ProjectPricingInfo> Projects { get; set; } = new List<ProjectPricingInfo>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 项目定价信息
|
||||
/// </summary>
|
||||
public class ProjectPricingInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 项目ID
|
||||
/// </summary>
|
||||
public long ProjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目名称
|
||||
/// </summary>
|
||||
public string ProjectName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 项目单价(元)
|
||||
/// </summary>
|
||||
public decimal UnitPrice { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 定价计算结果
|
||||
/// </summary>
|
||||
public class PricingResult
|
||||
{
|
||||
/// <summary>
|
||||
/// 总金额(精确到分)
|
||||
/// </summary>
|
||||
public decimal TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 总人数
|
||||
/// </summary>
|
||||
public int TotalPersonCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 费用明细
|
||||
/// </summary>
|
||||
public List<PricingDetailItem> Details { get; set; } = new List<PricingDetailItem>();
|
||||
|
||||
/// <summary>
|
||||
/// 计算日志(用于审计)
|
||||
/// </summary>
|
||||
public List<string> CalculationLogs { get; set; } = new List<string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 费用明细项
|
||||
/// </summary>
|
||||
public class PricingDetailItem
|
||||
{
|
||||
/// <summary>
|
||||
/// 项目名称
|
||||
/// </summary>
|
||||
public string ItemName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 单价
|
||||
/// </summary>
|
||||
public decimal UnitPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数量
|
||||
/// </summary>
|
||||
public int Quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小计
|
||||
/// </summary>
|
||||
public decimal Subtotal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 计算赛事报名费用
|
||||
/// </summary>
|
||||
@ -142,7 +39,6 @@ public static class EventPricingService
|
||||
break;
|
||||
}
|
||||
|
||||
// 确保金额精确到分
|
||||
result.TotalAmount = Math.Round(result.TotalAmount, 2, MidpointRounding.AwayFromZero);
|
||||
result.CalculationLogs.Add($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] 最终总金额: {result.TotalAmount:F2} 元");
|
||||
|
||||
@ -230,7 +126,6 @@ public static class EventPricingService
|
||||
var totalAmount = totalProjectPrice * input.ParticipantCount;
|
||||
result.TotalAmount = totalAmount;
|
||||
|
||||
// 添加汇总项
|
||||
result.Details.Add(new PricingDetailItem
|
||||
{
|
||||
ItemName = input.ParticipantCount == 1 ? "项目总价" : "项目总价 × 人数",
|
||||
|
||||
32
YD_Event.Core/Domain/Pricing/Models/PricingDetailItem.cs
Normal file
32
YD_Event.Core/Domain/Pricing/Models/PricingDetailItem.cs
Normal file
@ -0,0 +1,32 @@
|
||||
namespace YD_Event.Core.Domain.Pricing.Models;
|
||||
|
||||
/// <summary>
|
||||
/// 费用明细项
|
||||
/// </summary>
|
||||
public class PricingDetailItem
|
||||
{
|
||||
/// <summary>
|
||||
/// 项目名称
|
||||
/// </summary>
|
||||
public string ItemName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 单价
|
||||
/// </summary>
|
||||
public decimal UnitPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数量
|
||||
/// </summary>
|
||||
public int Quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小计
|
||||
/// </summary>
|
||||
public decimal Subtotal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
29
YD_Event.Core/Domain/Pricing/Models/PricingInput.cs
Normal file
29
YD_Event.Core/Domain/Pricing/Models/PricingInput.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using YD_Event.Core.Enum;
|
||||
|
||||
namespace YD_Event.Core.Domain.Pricing.Models;
|
||||
|
||||
/// <summary>
|
||||
/// 定价计算输入参数
|
||||
/// </summary>
|
||||
public class PricingInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 收费模式
|
||||
/// </summary>
|
||||
public ChargeMode ChargeMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 参赛人数
|
||||
/// </summary>
|
||||
public int ParticipantCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 赛事定价(用于定价(赛事)和单价(赛事)模式)
|
||||
/// </summary>
|
||||
public decimal EventPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目列表(单价项目模式使用)
|
||||
/// </summary>
|
||||
public List<ProjectPricingInfo> Projects { get; set; } = new List<ProjectPricingInfo>();
|
||||
}
|
||||
27
YD_Event.Core/Domain/Pricing/Models/PricingResult.cs
Normal file
27
YD_Event.Core/Domain/Pricing/Models/PricingResult.cs
Normal file
@ -0,0 +1,27 @@
|
||||
namespace YD_Event.Core.Domain.Pricing.Models;
|
||||
|
||||
/// <summary>
|
||||
/// 定价计算结果
|
||||
/// </summary>
|
||||
public class PricingResult
|
||||
{
|
||||
/// <summary>
|
||||
/// 总金额(精确到分)
|
||||
/// </summary>
|
||||
public decimal TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 总人数
|
||||
/// </summary>
|
||||
public int TotalPersonCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 费用明细
|
||||
/// </summary>
|
||||
public List<PricingDetailItem> Details { get; set; } = new List<PricingDetailItem>();
|
||||
|
||||
/// <summary>
|
||||
/// 计算日志(用于审计)
|
||||
/// </summary>
|
||||
public List<string> CalculationLogs { get; set; } = new List<string>();
|
||||
}
|
||||
22
YD_Event.Core/Domain/Pricing/Models/ProjectPricingInfo.cs
Normal file
22
YD_Event.Core/Domain/Pricing/Models/ProjectPricingInfo.cs
Normal file
@ -0,0 +1,22 @@
|
||||
namespace YD_Event.Core.Domain.Pricing.Models;
|
||||
|
||||
/// <summary>
|
||||
/// 项目定价信息
|
||||
/// </summary>
|
||||
public class ProjectPricingInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 项目ID
|
||||
/// </summary>
|
||||
public long ProjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目名称
|
||||
/// </summary>
|
||||
public string ProjectName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 项目单价(元)
|
||||
/// </summary>
|
||||
public decimal UnitPrice { get; set; }
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
namespace YD_Event.Core.Utils;
|
||||
namespace Easy.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 金额处理工具类
|
||||
@ -18,8 +18,6 @@ public static class AmountHelper
|
||||
/// <returns>金额(分)</returns>
|
||||
public static int YuanToFen(decimal amount)
|
||||
{
|
||||
// 使用四舍五入到最近的整数,使用银行家舍入法(四舍六入五成双)
|
||||
// 这里先确保精度,然后乘以100,再四舍五入
|
||||
var roundedAmount = Math.Round(amount, DecimalPlaces, MidpointRounding.AwayFromZero);
|
||||
return (int)Math.Round(roundedAmount * 100, MidpointRounding.AwayFromZero);
|
||||
}
|
||||
@ -20,8 +20,6 @@
|
||||
<PackageReference Include="Furion.Pure" Version="4.9.7.211" />
|
||||
<PackageReference Include="Hashids.net" Version="1.7.0" />
|
||||
<PackageReference Include="Lazy.Captcha.Core" Version="2.2.2" />
|
||||
<PackageReference Include="log4net" Version="3.2.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="10.0.5" />
|
||||
<PackageReference Include="MrHuo.OAuth.QQ" Version="1.1.1" />
|
||||
<PackageReference Include="Polly" Version="8.6.6" />
|
||||
<PackageReference Include="QuestPDF" Version="2025.12.1" />
|
||||
@ -31,7 +29,6 @@
|
||||
<PackageReference Include="SkiaSharp" Version="3.119.1" />
|
||||
<PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="3.119.1" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.210" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.16.0" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -4,141 +4,6 @@
|
||||
<name>YD_Event.Core</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="P:YD_Event.Core.Config.BloggerInfo.Avatar">
|
||||
<summary>
|
||||
头像
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BloggerInfo.NikeName">
|
||||
<summary>
|
||||
昵称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BloggerInfo.QQ">
|
||||
<summary>
|
||||
QQ
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BloggerInfo.Github">
|
||||
<summary>
|
||||
Github
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BloggerInfo.Gitee">
|
||||
<summary>
|
||||
码云
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BloggerInfo.Motto">
|
||||
<summary>
|
||||
个性签名
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BloggerInfo.About">
|
||||
<summary>
|
||||
关于我
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Logo">
|
||||
<summary>
|
||||
网站Logo
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Favicon">
|
||||
<summary>
|
||||
站点图标
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.IsRewards">
|
||||
<summary>
|
||||
开启打赏
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.AliPay">
|
||||
<summary>
|
||||
支付宝
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.WxPay">
|
||||
<summary>
|
||||
微信收款码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.IsAllowMessage">
|
||||
<summary>
|
||||
允许留言
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.IsAllowComments">
|
||||
<summary>
|
||||
允许评论
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Announcement">
|
||||
<summary>
|
||||
公告
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.SiteName">
|
||||
<summary>
|
||||
站点名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Motto">
|
||||
<summary>
|
||||
首页格言
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.RunTime">
|
||||
<summary>
|
||||
网站运营时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Copyright">
|
||||
<summary>
|
||||
站点版权
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Description">
|
||||
<summary>
|
||||
站点描述
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Keyword">
|
||||
<summary>
|
||||
关键词
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.BlogSetting.Filing">
|
||||
<summary>
|
||||
备案号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.SysSecuritySetting.Password">
|
||||
<summary>
|
||||
用户默认密码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.SysSecuritySetting.Times">
|
||||
<summary>
|
||||
密码错误次数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.SysSecuritySetting.PasswordRule">
|
||||
<summary>
|
||||
密码规则
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.SysSecuritySetting.RuleMessage">
|
||||
<summary>
|
||||
密码规则提示语
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Config.SysSecuritySetting.TokenExpired">
|
||||
<summary>
|
||||
Token有效期(分钟)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:YD_Event.Core.Const.AuthClaimsConst.AuthIdKey">
|
||||
<summary>
|
||||
用户唯一ID
|
||||
@ -179,36 +44,6 @@
|
||||
自定义配置缓存键
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Certificate.CertificateModel">
|
||||
<summary>
|
||||
证书模型
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.CertificateModel.Name">
|
||||
<summary>
|
||||
证书名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.CertificateModel.Code">
|
||||
<summary>
|
||||
证书编号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.CertificateModel.BackgroundImageUrl">
|
||||
<summary>
|
||||
背景图片URL
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.CertificateModel.Width">
|
||||
<summary>
|
||||
宽度
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.CertificateModel.Height">
|
||||
<summary>
|
||||
高度
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Certificate.DocxTemplateParser">
|
||||
<summary>
|
||||
DOCX模板解析器
|
||||
@ -330,6 +165,36 @@
|
||||
模板验证结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Certificate.Models.CertificateModel">
|
||||
<summary>
|
||||
证书模型
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.Models.CertificateModel.Name">
|
||||
<summary>
|
||||
证书名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.Models.CertificateModel.Code">
|
||||
<summary>
|
||||
证书编号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.Models.CertificateModel.BackgroundImageUrl">
|
||||
<summary>
|
||||
背景图片URL
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.Models.CertificateModel.Width">
|
||||
<summary>
|
||||
宽度
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Certificate.Models.CertificateModel.Height">
|
||||
<summary>
|
||||
高度
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Certificate.QRCodeService">
|
||||
<summary>
|
||||
二维码服务
|
||||
@ -494,134 +359,134 @@
|
||||
所有金额计算均以此服务为准,确保计算结果的一致性
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput">
|
||||
<summary>
|
||||
定价计算输入参数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput.ChargeMode">
|
||||
<summary>
|
||||
收费模式
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput.ParticipantCount">
|
||||
<summary>
|
||||
参赛人数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput.EventPrice">
|
||||
<summary>
|
||||
赛事定价(用于定价(赛事)和单价(赛事)模式)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput.Projects">
|
||||
<summary>
|
||||
项目列表(单价项目模式使用)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.EventPricingService.ProjectPricingInfo">
|
||||
<summary>
|
||||
项目定价信息
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.ProjectPricingInfo.ProjectId">
|
||||
<summary>
|
||||
项目ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.ProjectPricingInfo.ProjectName">
|
||||
<summary>
|
||||
项目名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.ProjectPricingInfo.UnitPrice">
|
||||
<summary>
|
||||
项目单价(元)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult">
|
||||
<summary>
|
||||
定价计算结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult.TotalAmount">
|
||||
<summary>
|
||||
总金额(精确到分)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult.TotalPersonCount">
|
||||
<summary>
|
||||
总人数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult.Details">
|
||||
<summary>
|
||||
费用明细
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult.CalculationLogs">
|
||||
<summary>
|
||||
计算日志(用于审计)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.EventPricingService.PricingDetailItem">
|
||||
<summary>
|
||||
费用明细项
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingDetailItem.ItemName">
|
||||
<summary>
|
||||
项目名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingDetailItem.UnitPrice">
|
||||
<summary>
|
||||
单价
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingDetailItem.Quantity">
|
||||
<summary>
|
||||
数量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingDetailItem.Subtotal">
|
||||
<summary>
|
||||
小计
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.EventPricingService.PricingDetailItem.Remark">
|
||||
<summary>
|
||||
备注
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.Calculate(YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput)">
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.Calculate(YD_Event.Core.Domain.Pricing.Models.PricingInput)">
|
||||
<summary>
|
||||
计算赛事报名费用
|
||||
</summary>
|
||||
<param name="input">定价计算输入</param>
|
||||
<returns>定价计算结果</returns>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateFreeMode(YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult)">
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateFreeMode(YD_Event.Core.Domain.Pricing.Models.PricingResult)">
|
||||
<summary>
|
||||
免费模式
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateFixedPriceMode(YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult,YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput)">
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateFixedPriceMode(YD_Event.Core.Domain.Pricing.Models.PricingResult,YD_Event.Core.Domain.Pricing.Models.PricingInput)">
|
||||
<summary>
|
||||
定价(赛事)模式:固定为赛事设定价格/场,无论参赛主体是个人还是单位,也无论参赛项目数量多少,均统一按固定价格计算
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateUnitPriceEventMode(YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult,YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput)">
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateUnitPriceEventMode(YD_Event.Core.Domain.Pricing.Models.PricingResult,YD_Event.Core.Domain.Pricing.Models.PricingInput)">
|
||||
<summary>
|
||||
单价(赛事)模式:按照赛事设定的单价乘以实际报名人数计算总金额
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateUnitPriceProjectMode(YD_Event.Core.Domain.Pricing.EventPricingService.PricingResult,YD_Event.Core.Domain.Pricing.EventPricingService.PricingInput)">
|
||||
<member name="M:YD_Event.Core.Domain.Pricing.EventPricingService.CalculateUnitPriceProjectMode(YD_Event.Core.Domain.Pricing.Models.PricingResult,YD_Event.Core.Domain.Pricing.Models.PricingInput)">
|
||||
<summary>
|
||||
单价(项目)模式:根据每个项目的单独定价和报名人数进行计算。
|
||||
将每个报名项目的单价相加得到单人总费用,再乘以报名人数得出最终金额
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.Models.PricingDetailItem">
|
||||
<summary>
|
||||
费用明细项
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingDetailItem.ItemName">
|
||||
<summary>
|
||||
项目名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingDetailItem.UnitPrice">
|
||||
<summary>
|
||||
单价
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingDetailItem.Quantity">
|
||||
<summary>
|
||||
数量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingDetailItem.Subtotal">
|
||||
<summary>
|
||||
小计
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingDetailItem.Remark">
|
||||
<summary>
|
||||
备注
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.Models.PricingInput">
|
||||
<summary>
|
||||
定价计算输入参数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingInput.ChargeMode">
|
||||
<summary>
|
||||
收费模式
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingInput.ParticipantCount">
|
||||
<summary>
|
||||
参赛人数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingInput.EventPrice">
|
||||
<summary>
|
||||
赛事定价(用于定价(赛事)和单价(赛事)模式)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingInput.Projects">
|
||||
<summary>
|
||||
项目列表(单价项目模式使用)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.Models.PricingResult">
|
||||
<summary>
|
||||
定价计算结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingResult.TotalAmount">
|
||||
<summary>
|
||||
总金额(精确到分)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingResult.TotalPersonCount">
|
||||
<summary>
|
||||
总人数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingResult.Details">
|
||||
<summary>
|
||||
费用明细
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.PricingResult.CalculationLogs">
|
||||
<summary>
|
||||
计算日志(用于审计)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Domain.Pricing.Models.ProjectPricingInfo">
|
||||
<summary>
|
||||
项目定价信息
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.ProjectPricingInfo.ProjectId">
|
||||
<summary>
|
||||
项目ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.ProjectPricingInfo.ProjectName">
|
||||
<summary>
|
||||
项目名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YD_Event.Core.Domain.Pricing.Models.ProjectPricingInfo.UnitPrice">
|
||||
<summary>
|
||||
项目单价(元)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Entities.Entity`1">
|
||||
<summary>
|
||||
表实体继承
|
||||
@ -5806,39 +5671,39 @@
|
||||
子选项
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YD_Event.Core.Utils.AmountHelper">
|
||||
<member name="T:Easy.Core.AmountHelper">
|
||||
<summary>
|
||||
金额处理工具类
|
||||
统一处理货币单位转换、精度控制和四舍五入规则
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:YD_Event.Core.Utils.AmountHelper.DecimalPlaces">
|
||||
<member name="F:Easy.Core.AmountHelper.DecimalPlaces">
|
||||
<summary>
|
||||
金额精度小数位数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Utils.AmountHelper.YuanToFen(System.Decimal)">
|
||||
<member name="M:Easy.Core.AmountHelper.YuanToFen(System.Decimal)">
|
||||
<summary>
|
||||
将元转换为分
|
||||
</summary>
|
||||
<param name="amount">金额(元)</param>
|
||||
<returns>金额(分)</returns>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Utils.AmountHelper.FenToYuan(System.Int32)">
|
||||
<member name="M:Easy.Core.AmountHelper.FenToYuan(System.Int32)">
|
||||
<summary>
|
||||
将分转换为元
|
||||
</summary>
|
||||
<param name="amount">金额(分)</param>
|
||||
<returns>金额(元)</returns>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Utils.AmountHelper.FenToYuan(System.Nullable{System.Int32})">
|
||||
<member name="M:Easy.Core.AmountHelper.FenToYuan(System.Nullable{System.Int32})">
|
||||
<summary>
|
||||
将分转换为元(可为空)
|
||||
</summary>
|
||||
<param name="amount">金额(分)</param>
|
||||
<returns>金额(元)</returns>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Utils.AmountHelper.Round(System.Decimal,System.Int32)">
|
||||
<member name="M:Easy.Core.AmountHelper.Round(System.Decimal,System.Int32)">
|
||||
<summary>
|
||||
四舍五入金额到指定小数位
|
||||
</summary>
|
||||
@ -5846,14 +5711,14 @@
|
||||
<param name="decimalPlaces">小数位数,默认2位</param>
|
||||
<returns>四舍五入后的金额</returns>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Utils.AmountHelper.IsValidAmount(System.Decimal)">
|
||||
<member name="M:Easy.Core.AmountHelper.IsValidAmount(System.Decimal)">
|
||||
<summary>
|
||||
验证金额格式是否正确(最多保留2位小数)
|
||||
</summary>
|
||||
<param name="amount">金额</param>
|
||||
<returns>是否有效</returns>
|
||||
</member>
|
||||
<member name="M:YD_Event.Core.Utils.AmountHelper.IsValidPositiveAmount(System.Decimal)">
|
||||
<member name="M:Easy.Core.AmountHelper.IsValidPositiveAmount(System.Decimal)">
|
||||
<summary>
|
||||
验证金额是否大于0且格式正确
|
||||
</summary>
|
||||
|
||||
@ -10,19 +10,16 @@ using SqlSugar;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AspNetCoreRateLimit;
|
||||
using Easy.Core;
|
||||
using YD_Event.Core.Logging;
|
||||
using YD_Event.Core.Options;
|
||||
using Easy.Core;
|
||||
using Furion.Logging;
|
||||
using Lazy.Captcha.Core;
|
||||
using Lazy.Captcha.Core.Generator;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using MrHuo.OAuth;
|
||||
using MrHuo.OAuth.QQ;
|
||||
using QuestPDF;
|
||||
using QuestPDF.Infrastructure;
|
||||
|
||||
using SkiaSharp;
|
||||
|
||||
namespace YD_Event.Web.Core;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user