修改代理商后台退款

This commit is contained in:
“wanyongkang”
2025-05-24 17:25:27 +08:00
parent adb68c9401
commit c9d10a03f1
2 changed files with 52 additions and 5 deletions

View File

@@ -87,6 +87,7 @@ namespace Hncore.Pass.Vpn.Domain
public int agent_id {get; set;}
public string apikey {get; set;}
public string id_code {get; set;}
public int is_agent { get; set; }
}
}

View File

@@ -1139,6 +1139,8 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
}
var accountInfo = await m_ProductAccountService.GetAccountInfo(account, userId);
var userEntity = await m_UserService.GetById(userId);
if (accountInfo == null)
{
return new ApiResult(ResultCode.C_Illegal_Operation, "账户不存在");
@@ -1156,7 +1158,7 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
}
var pacageInfo = await m_ProductPackageService.GetById(accountInfo.PackageId);
if (pacageInfo.DayCount == 1)
if (pacageInfo.DayCount == 1 && userEntity.is_agent == 0)
{
return new ApiResult(ResultCode.C_Illegal_Operation, "天卡不能退款");
}
@@ -1168,7 +1170,6 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
//折扣
var refundDayPrice = 10.00M;
var userEntity = await m_UserService.GetById(userId);
if((userEntity.agent_id == 0||(userEntity.agent_id != 0 && userEntity.discount_id != 0)) && userEntity.discount_id >= 0){
//获取代理折扣
var discount = await m_ProductPriceSchemeService.GetById(userEntity.discount_id);
@@ -1188,7 +1189,29 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
var lastOrder = await GetLastOrderByAccount(account);
var dateStr = lastOrder.StartTime.ToString();
var now = DateTime.Now.GetUnixTimeStamp();
//解析字符串为 DateTime假设是本地时间
DateTime dateTime = DateTime.Parse(dateStr);
// 转换为 UTC如果原始时间是本地时间
DateTime utcTime = dateTime.ToUniversalTime();
// 计算 Unix 时间戳(秒)
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeDiff = utcTime - epoch;
long unixTimestampSeconds = (long)timeDiff.TotalSeconds + 3600;
var useDay = (int)Math.Ceiling((DateTime.Now - lastOrder.UpdateTime).TotalDays);
if (unixTimestampSeconds > now && userEntity.is_agent == 1) {
useDay = 0;
}
var refundAmount = lastOrder.PaymentAmount / lastOrder.AccountCount - useDay * refundDayPrice * accountInfo.ConnectCount;
refundAmount = refundAmount <= 0 ? 0 : refundAmount;
@@ -1486,6 +1509,7 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
public async Task<ApiResult> CaclRefund(int userId, string account)
{
var accountInfo = await m_ProductAccountService.GetAccountInfo(account, userId);
var userEntity = await m_UserService.GetById(userId);
if(accountInfo.Status == AccountStatus.Refund){
return new ApiResult(ResultCode.C_Illegal_Operation, "此类帐号不允许退款");
@@ -1507,7 +1531,7 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
}
var pacageInfo = await m_ProductPackageService.GetById(accountInfo.PackageId);
if (pacageInfo.DayCount == 1)
if (pacageInfo.DayCount == 1 && userEntity.is_agent == 0)
{
return new ApiResult(ResultCode.C_Illegal_Operation, "天卡不能退款");
}
@@ -1517,7 +1541,6 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
//折扣
var refundDayPrice = 10.00M;
var userEntity = await m_UserService.GetById(userId);
if((userEntity.agent_id == 0||(userEntity.agent_id != 0 && userEntity.discount_id != 0)) && userEntity.discount_id >= 0){
//获取代理折扣
var discount = await m_ProductPriceSchemeService.GetById(userEntity.discount_id);
@@ -1533,7 +1556,30 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
}
var lastOrder = await GetLastOrderByAccount(account);
var useDay = (int)Math.Ceiling((DateTime.Now - lastOrder.UpdateTime).TotalDays);
var dateStr = lastOrder.StartTime.ToString();
var now = DateTime.Now.GetUnixTimeStamp();
//解析字符串为 DateTime假设是本地时间
DateTime dateTime = DateTime.Parse(dateStr);
// 转换为 UTC如果原始时间是本地时间
DateTime utcTime = dateTime.ToUniversalTime();
// 计算 Unix 时间戳(秒)
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeDiff = utcTime - epoch;
long unixTimestampSeconds = (long)timeDiff.TotalSeconds + 3600;
var useDay = (int)Math.Ceiling((DateTime.Now - lastOrder.UpdateTime).TotalDays);
if (unixTimestampSeconds > now && userEntity.is_agent == 1) {
useDay = 0;
}
var RefundAmount = lastOrder.PaymentAmount / lastOrder.AccountCount - useDay * refundDayPrice * accountInfo.ConnectCount;
RefundAmount = RefundAmount <= 0 ? 0 : RefundAmount;