All checks were successful
Build and Deploy / deploy (push) Successful in 3m50s
Co-authored-by: Cursor <cursoragent@cursor.com>
266 lines
6.2 KiB
C#
266 lines
6.2 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using Oms.Domain.MarketingAggregate.Enums;
|
|
using Oms.Domain.Shared.Enums;
|
|
|
|
namespace Oms.Application.Dtos.Marketing;
|
|
|
|
public class ReferralCommissionRuleOutput
|
|
{
|
|
public int Id { get; set; }
|
|
|
|
public string RuleName { get; set; } = string.Empty;
|
|
|
|
public string CommissionMode { get; set; } = string.Empty;
|
|
|
|
public decimal BaseAmount { get; set; }
|
|
|
|
public decimal CommissionAmount { get; set; }
|
|
|
|
public int FreezeDays { get; set; }
|
|
|
|
public string SettleTriggerOrderStatus { get; set; } = string.Empty;
|
|
|
|
public decimal? MonthlyCap { get; set; }
|
|
|
|
public string MinInviteLevelCode { get; set; } = "V1";
|
|
|
|
public decimal MinPaidBaseFreight { get; set; }
|
|
|
|
public decimal FirstOrderRate { get; set; }
|
|
|
|
public decimal FirstOrderCap { get; set; }
|
|
|
|
public decimal FollowOrderRate { get; set; }
|
|
|
|
public decimal FollowOrderCap { get; set; }
|
|
|
|
public int FollowWindowDays { get; set; }
|
|
|
|
public int MaxRewardOrders { get; set; }
|
|
|
|
public int SettleBusinessDays { get; set; }
|
|
|
|
public EnableStatus Status { get; set; }
|
|
|
|
public string StatusName { get; set; } = string.Empty;
|
|
|
|
public DateTime CreateTime { get; set; }
|
|
|
|
public DateTime? UpdateTime { get; set; }
|
|
}
|
|
|
|
public class ReferralCommissionRuleSaveInput
|
|
{
|
|
public int? Id { get; set; }
|
|
|
|
[Required]
|
|
public string RuleName { get; set; } = string.Empty;
|
|
|
|
public string CommissionMode { get; set; } = "per_amount";
|
|
|
|
public decimal BaseAmount { get; set; } = 1000M;
|
|
|
|
public decimal CommissionAmount { get; set; } = 2M;
|
|
|
|
public int FreezeDays { get; set; } = 7;
|
|
|
|
public string SettleTriggerOrderStatus { get; set; } = "deliverySuccess";
|
|
|
|
public decimal? MonthlyCap { get; set; }
|
|
|
|
public string MinInviteLevelCode { get; set; } = "V1";
|
|
|
|
public decimal MinPaidBaseFreight { get; set; } = 50M;
|
|
|
|
public decimal FirstOrderRate { get; set; } = 0.05M;
|
|
|
|
public decimal FirstOrderCap { get; set; } = 50M;
|
|
|
|
public decimal FollowOrderRate { get; set; } = 0.03M;
|
|
|
|
public decimal FollowOrderCap { get; set; } = 30M;
|
|
|
|
public int FollowWindowDays { get; set; } = 90;
|
|
|
|
public int MaxRewardOrders { get; set; } = 6;
|
|
|
|
public int SettleBusinessDays { get; set; } = 3;
|
|
|
|
public EnableStatus Status { get; set; } = EnableStatus.Enabled;
|
|
}
|
|
|
|
public class CommissionDetailListInput
|
|
{
|
|
public int? ReferrerCustomerId { get; set; }
|
|
|
|
public int? RefereeCustomerId { get; set; }
|
|
|
|
public CommissionStatus? Status { get; set; }
|
|
|
|
public string? OrderNo { get; set; }
|
|
|
|
public DateTime? StartTime { get; set; }
|
|
|
|
public DateTime? EndTime { get; set; }
|
|
|
|
public int Page { get; set; }
|
|
|
|
public int PageSize { get; set; }
|
|
}
|
|
|
|
public class CommissionDetailOutput
|
|
{
|
|
public int Id { get; set; }
|
|
|
|
public int ReferrerCustomerId { get; set; }
|
|
|
|
public string? ReferrerCustomerCode { get; set; }
|
|
|
|
public int RefereeCustomerId { get; set; }
|
|
|
|
public string? RefereeCustomerCode { get; set; }
|
|
|
|
public int OrderId { get; set; }
|
|
|
|
public string OrderNo { get; set; } = string.Empty;
|
|
|
|
public decimal BasePayableAmount { get; set; }
|
|
|
|
public decimal CommissionAmount { get; set; }
|
|
|
|
public int RewardOrderIndex { get; set; }
|
|
|
|
public DateTime? SettleDueTime { get; set; }
|
|
|
|
public CommissionStatus Status { get; set; }
|
|
|
|
public string StatusName { get; set; } = string.Empty;
|
|
|
|
public DateTime? EligibleTime { get; set; }
|
|
|
|
public DateTime? SettleTime { get; set; }
|
|
|
|
public string? CancelReason { get; set; }
|
|
|
|
public DateTime CreateTime { get; set; }
|
|
}
|
|
|
|
public class CommissionAdjustInput
|
|
{
|
|
public int? CustomerId { get; set; }
|
|
|
|
public string? CustomerCode { get; set; }
|
|
|
|
public decimal Amount { get; set; }
|
|
|
|
public int? DetailId { get; set; }
|
|
|
|
[Required]
|
|
[StringLength(512, MinimumLength = 10)]
|
|
public string Remark { get; set; } = string.Empty;
|
|
}
|
|
|
|
public class CommissionWithdrawListInput
|
|
{
|
|
public int? CustomerId { get; set; }
|
|
|
|
/// <summary>客户编号(解析为 CustomerId 再筛选)。</summary>
|
|
public string? CustomerCode { get; set; }
|
|
|
|
public CommissionWithdrawType? WithdrawType { get; set; }
|
|
|
|
public WithdrawStatus? Status { get; set; }
|
|
|
|
public DateTime? StartTime { get; set; }
|
|
|
|
public DateTime? EndTime { get; set; }
|
|
|
|
public int Page { get; set; }
|
|
|
|
public int PageSize { get; set; }
|
|
}
|
|
|
|
public class CommissionWithdrawOutput
|
|
{
|
|
public int Id { get; set; }
|
|
|
|
public int CustomerId { get; set; }
|
|
|
|
public string? CustomerCode { get; set; }
|
|
|
|
public string SerialNumber { get; set; } = string.Empty;
|
|
|
|
public decimal Amount { get; set; }
|
|
|
|
/// <summary>客户当前佣金余额(审核参考)。</summary>
|
|
public decimal CommissionBalance { get; set; }
|
|
|
|
public CommissionWithdrawType WithdrawType { get; set; }
|
|
|
|
public string WithdrawTypeName { get; set; } = string.Empty;
|
|
|
|
public WithdrawStatus Status { get; set; }
|
|
|
|
public string StatusName { get; set; } = string.Empty;
|
|
|
|
public string? Remark { get; set; }
|
|
|
|
public string? AuditRemark { get; set; }
|
|
|
|
public string? AuditBy { get; set; }
|
|
|
|
public DateTime? AuditTime { get; set; }
|
|
|
|
public DateTime CreateTime { get; set; }
|
|
}
|
|
|
|
public class CommissionWithdrawApproveInput
|
|
{
|
|
[Required]
|
|
public int Id { get; set; }
|
|
|
|
public string? AuditRemark { get; set; }
|
|
}
|
|
|
|
public class CommissionWithdrawRejectInput
|
|
{
|
|
[Required]
|
|
public int Id { get; set; }
|
|
|
|
[Required]
|
|
[StringLength(512, MinimumLength = 5)]
|
|
public string AuditRemark { get; set; } = string.Empty;
|
|
}
|
|
|
|
public class CommissionOverviewOutput
|
|
{
|
|
public decimal CommissionBalance { get; set; }
|
|
|
|
public decimal PendingCommission { get; set; }
|
|
|
|
public decimal SettledThisMonth { get; set; }
|
|
|
|
public int RefereeCount { get; set; }
|
|
|
|
public decimal FrozenByPendingWithdraw { get; set; }
|
|
|
|
public decimal AvailableCommission { get; set; }
|
|
}
|
|
|
|
public class CommissionTransferInput
|
|
{
|
|
[Range(typeof(decimal), "0.01", "999999999999")]
|
|
public decimal Amount { get; set; }
|
|
|
|
public string? Remark { get; set; }
|
|
}
|
|
|
|
public class CommissionWithdrawApplyInput
|
|
{
|
|
[Range(typeof(decimal), "0.01", "999999999999")]
|
|
public decimal Amount { get; set; }
|
|
|
|
public string? Remark { get; set; }
|
|
}
|
|
|