|
|
@@ -452,7 +452,7 @@ namespace molilian.core
|
|
|
bool other_aff = false;
|
|
|
AlimamaPlus alimama = null;
|
|
|
TkDataDTO? hiddenAccountFailure = null;
|
|
|
- TkPoolDTO? hiddenOnceAccount = null;
|
|
|
+ HiddenLimitTicket? hiddenLimitTicket = null;
|
|
|
//content = content.UrlDecode();
|
|
|
var result = AlimamaPlus.GetFormattedObject(request);
|
|
|
|
|
|
@@ -769,15 +769,15 @@ namespace molilian.core
|
|
|
|
|
|
result.hidden_account = account.is_hide;
|
|
|
|
|
|
- //============================== 放弃转链-隐藏号同 ip/oaid 当天只转一次 ==============================
|
|
|
+ //============================== 放弃转链-隐藏号专用限制(城市、IP/OAID 每日次数,所有隐藏号共用) ==============================
|
|
|
if (account.is_hide)
|
|
|
{
|
|
|
- if (!HiddenAccountCore.TryReserveOnce(TkChannelEnum.tb, account.id, request.Ip, request.Oaid))
|
|
|
+ if (!HiddenAccountCore.TryReserveLimit(TkChannelEnum.tb, request.Ip, request.Oaid, out hiddenLimitTicket, out string hiddenLimitReason))
|
|
|
{
|
|
|
if (request.AccountId <= 0) TkPoolCore.ReleaseQps(account, qpsAcquiredSinceTicks);
|
|
|
result.success = false;
|
|
|
result.message = "放弃转链";
|
|
|
- result.reason = "频次限制";
|
|
|
+ result.reason = hiddenLimitReason;
|
|
|
result.subCode = TkSubCodeEnum.TrafficCtrl;
|
|
|
result.itemName = "点击打开淘宝APP";
|
|
|
|
|
|
@@ -798,7 +798,6 @@ namespace molilian.core
|
|
|
result.deeplink_url,
|
|
|
});
|
|
|
}
|
|
|
- hiddenOnceAccount = account;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -872,10 +871,10 @@ namespace molilian.core
|
|
|
result.itemName = "点击打开淘宝APP";
|
|
|
}
|
|
|
}
|
|
|
- // 隐藏号:转链成功则当天该 ip/oaid 不再转,失败则释放占位
|
|
|
- if (hiddenOnceAccount != null)
|
|
|
+ // 隐藏号:转链成功计入当天 ip/oaid 次数,失败则归还占用的名额
|
|
|
+ if (hiddenLimitTicket != null)
|
|
|
{
|
|
|
- _ = HiddenAccountCore.CompleteOnceAsync(TkChannelEnum.tb, hiddenOnceAccount.id, request.Ip, request.Oaid, result.success);
|
|
|
+ _ = HiddenAccountCore.CompleteLimitAsync(hiddenLimitTicket, result.success);
|
|
|
}
|
|
|
_ = TkLogCore.ParseLogAsync(result, alimama);
|
|
|
|
|
|
@@ -1448,7 +1447,7 @@ namespace molilian.core
|
|
|
{
|
|
|
var result = PddUnionPlus.GetFormattedObject(request);
|
|
|
PddDataDTO? hiddenAccountFailure = null;
|
|
|
- PddPoolDTO? hiddenOnceAccount = null;
|
|
|
+ HiddenLimitTicket? hiddenLimitTicket = null;
|
|
|
|
|
|
var overrideContent = await OverrideRuleCore.ProcessAsync(request);
|
|
|
if (overrideContent != null)
|
|
|
@@ -1597,21 +1596,20 @@ namespace molilian.core
|
|
|
|
|
|
result.hidden_account = account.is_hide;
|
|
|
|
|
|
- //============================== 放弃转链-隐藏号同 ip/oaid 当天只转一次 ==============================
|
|
|
+ //============================== 放弃转链-隐藏号专用限制(城市、IP/OAID 每日次数,所有隐藏号共用) ==============================
|
|
|
if (account.is_hide)
|
|
|
{
|
|
|
- if (!HiddenAccountCore.TryReserveOnce(TkChannelEnum.pdd, account.id, request.Ip, request.Oaid))
|
|
|
+ if (!HiddenAccountCore.TryReserveLimit(TkChannelEnum.pdd, request.Ip, request.Oaid, out hiddenLimitTicket, out string hiddenLimitReason))
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "放弃转链";
|
|
|
- result.reason = "频次限制";
|
|
|
+ result.reason = hiddenLimitReason;
|
|
|
result.subCode = (int)TkSubCodeEnum.TrafficCtrl;
|
|
|
result.deeplink_url = string.IsNullOrEmpty(result.shortLinkurl) ? string.Empty : PddUnionPlus.GetDeeplink(result.shortLinkurl);
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
// 传入隐藏号失败对象仅用于不输出埋点
|
|
|
return PddParseOutput(result, APIResultCodeEnum.OK, CreatePddFailureResult(result));
|
|
|
}
|
|
|
- hiddenOnceAccount = account;
|
|
|
}
|
|
|
|
|
|
// 更新当前日使用统计
|
|
|
@@ -1648,10 +1646,10 @@ namespace molilian.core
|
|
|
result.reason = "转链接口异常";
|
|
|
}
|
|
|
}
|
|
|
- // 隐藏号:转链成功则当天该 ip/oaid 不再转,失败则释放占位
|
|
|
- if (hiddenOnceAccount != null)
|
|
|
+ // 隐藏号:转链成功计入当天 ip/oaid 次数,失败则归还占用的名额
|
|
|
+ if (hiddenLimitTicket != null)
|
|
|
{
|
|
|
- _ = HiddenAccountCore.CompleteOnceAsync(TkChannelEnum.pdd, hiddenOnceAccount.id, request.Ip, request.Oaid, result.success);
|
|
|
+ _ = HiddenAccountCore.CompleteLimitAsync(hiddenLimitTicket, result.success);
|
|
|
}
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK, hiddenAccountFailure);
|
|
|
@@ -1661,7 +1659,7 @@ namespace molilian.core
|
|
|
{
|
|
|
var result = PddUnionPlus.GetFormattedObject(request);
|
|
|
PddDataDTO? hiddenAccountFailure = null;
|
|
|
- PddPoolDTO? hiddenOnceAccount = null;
|
|
|
+ HiddenLimitTicket? hiddenLimitTicket = null;
|
|
|
|
|
|
string content = request.Content;
|
|
|
content = content.UrlDecode();
|
|
|
@@ -1823,21 +1821,20 @@ namespace molilian.core
|
|
|
|
|
|
result.hidden_account = account.is_hide;
|
|
|
|
|
|
- //============================== 放弃转链-隐藏号同 ip/oaid 当天只转一次 ==============================
|
|
|
+ //============================== 放弃转链-隐藏号专用限制(城市、IP/OAID 每日次数,所有隐藏号共用) ==============================
|
|
|
if (account.is_hide)
|
|
|
{
|
|
|
- if (!HiddenAccountCore.TryReserveOnce(TkChannelEnum.pdd, account.id, request.Ip, request.Oaid))
|
|
|
+ if (!HiddenAccountCore.TryReserveLimit(TkChannelEnum.pdd, request.Ip, request.Oaid, out hiddenLimitTicket, out string hiddenLimitReason))
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "放弃转链";
|
|
|
- result.reason = "频次限制";
|
|
|
+ result.reason = hiddenLimitReason;
|
|
|
result.subCode = (int)TkSubCodeEnum.TrafficCtrl;
|
|
|
result.deeplink_url = string.IsNullOrEmpty(result.shortLinkurl) ? string.Empty : PddUnionPlus.GetDeeplink(result.shortLinkurl);
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
// 传入隐藏号失败对象仅用于不输出埋点
|
|
|
return PddParseOutput(result, APIResultCodeEnum.OK, CreatePddFailureResult(result));
|
|
|
}
|
|
|
- hiddenOnceAccount = account;
|
|
|
}
|
|
|
|
|
|
// 更新当前日使用统计
|
|
|
@@ -1878,10 +1875,10 @@ namespace molilian.core
|
|
|
result.reason = "转链接口异常";
|
|
|
}
|
|
|
}
|
|
|
- // 隐藏号:转链成功则当天该 ip/oaid 不再转,失败则释放占位
|
|
|
- if (hiddenOnceAccount != null)
|
|
|
+ // 隐藏号:转链成功计入当天 ip/oaid 次数,失败则归还占用的名额
|
|
|
+ if (hiddenLimitTicket != null)
|
|
|
{
|
|
|
- _ = HiddenAccountCore.CompleteOnceAsync(TkChannelEnum.pdd, hiddenOnceAccount.id, request.Ip, request.Oaid, result.success);
|
|
|
+ _ = HiddenAccountCore.CompleteLimitAsync(hiddenLimitTicket, result.success);
|
|
|
}
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK, hiddenAccountFailure);
|