|
|
@@ -451,6 +451,7 @@ namespace molilian.core
|
|
|
bool other_aff = false;
|
|
|
AlimamaPlus alimama = null;
|
|
|
TkDataDTO? hiddenAccountFailure = null;
|
|
|
+ TkPoolDTO? hiddenOnceAccount = null;
|
|
|
//content = content.UrlDecode();
|
|
|
var result = AlimamaPlus.GetFormattedObject(request);
|
|
|
|
|
|
@@ -765,6 +766,38 @@ namespace molilian.core
|
|
|
result.accountId);
|
|
|
}
|
|
|
|
|
|
+ //============================== 放弃转链-隐藏号同 ip/oaid 当天只转一次 ==============================
|
|
|
+ if (account.is_hide)
|
|
|
+ {
|
|
|
+ if (!HiddenAccountCore.TryReserveOnce(TkChannelEnum.tb, account.id, request.Ip, request.Oaid))
|
|
|
+ {
|
|
|
+ if (request.AccountId <= 0) TkPoolCore.ReleaseQps(account, qpsAcquiredSinceTicks);
|
|
|
+ result.success = false;
|
|
|
+ result.message = "放弃转链";
|
|
|
+ result.reason = "频次限制";
|
|
|
+ result.subCode = TkSubCodeEnum.TrafficCtrl;
|
|
|
+ result.itemName = "点击打开淘宝APP";
|
|
|
+
|
|
|
+ _ = TkLogCore.ParseLogAsync(result);
|
|
|
+ return TaobaoParseOutput(result, swData, new
|
|
|
+ {
|
|
|
+ success = ValidateDeeplinkIfRequired(result.success, result.deeplink_url),
|
|
|
+ result.commercial,
|
|
|
+ result.with_middle_page,
|
|
|
+ result.message,
|
|
|
+ result.content,
|
|
|
+ sub_message = result.reason,
|
|
|
+ home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
+ result.couponAmount,
|
|
|
+ result.taoToken,
|
|
|
+ result.shortLinkurl,
|
|
|
+ other_aff,
|
|
|
+ result.deeplink_url,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ hiddenOnceAccount = account;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
alimama = new AlimamaPlus(account);
|
|
|
hiddenAccountFailure = account.is_hide ? CreateTaobaoFailureResult(result) : null;
|
|
|
@@ -836,6 +869,11 @@ namespace molilian.core
|
|
|
result.itemName = "点击打开淘宝APP";
|
|
|
}
|
|
|
}
|
|
|
+ // 隐藏号:转链成功则当天该 ip/oaid 不再转,失败则释放占位
|
|
|
+ if (hiddenOnceAccount != null)
|
|
|
+ {
|
|
|
+ _ = HiddenAccountCore.CompleteOnceAsync(TkChannelEnum.tb, hiddenOnceAccount.id, request.Ip, request.Oaid, result.success);
|
|
|
+ }
|
|
|
_ = TkLogCore.ParseLogAsync(result, alimama);
|
|
|
|
|
|
switch (result.reason)
|
|
|
@@ -1407,6 +1445,7 @@ namespace molilian.core
|
|
|
{
|
|
|
var result = PddUnionPlus.GetFormattedObject(request);
|
|
|
PddDataDTO? hiddenAccountFailure = null;
|
|
|
+ PddPoolDTO? hiddenOnceAccount = null;
|
|
|
|
|
|
var overrideContent = await OverrideRuleCore.ProcessAsync(request);
|
|
|
if (overrideContent != null)
|
|
|
@@ -1553,6 +1592,23 @@ namespace molilian.core
|
|
|
result.accountId);
|
|
|
}
|
|
|
|
|
|
+ //============================== 放弃转链-隐藏号同 ip/oaid 当天只转一次 ==============================
|
|
|
+ if (account.is_hide)
|
|
|
+ {
|
|
|
+ if (!HiddenAccountCore.TryReserveOnce(TkChannelEnum.pdd, account.id, request.Ip, request.Oaid))
|
|
|
+ {
|
|
|
+ result.success = false;
|
|
|
+ result.message = "放弃转链";
|
|
|
+ result.reason = "频次限制";
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
// 更新当前日使用统计
|
|
|
PddPoolCore.UpdateAccountUsage(account.id);
|
|
|
|
|
|
@@ -1587,6 +1643,11 @@ namespace molilian.core
|
|
|
result.reason = "转链接口异常";
|
|
|
}
|
|
|
}
|
|
|
+ // 隐藏号:转链成功则当天该 ip/oaid 不再转,失败则释放占位
|
|
|
+ if (hiddenOnceAccount != null)
|
|
|
+ {
|
|
|
+ _ = HiddenAccountCore.CompleteOnceAsync(TkChannelEnum.pdd, hiddenOnceAccount.id, request.Ip, request.Oaid, result.success);
|
|
|
+ }
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK, hiddenAccountFailure);
|
|
|
|
|
|
@@ -1595,6 +1656,7 @@ namespace molilian.core
|
|
|
{
|
|
|
var result = PddUnionPlus.GetFormattedObject(request);
|
|
|
PddDataDTO? hiddenAccountFailure = null;
|
|
|
+ PddPoolDTO? hiddenOnceAccount = null;
|
|
|
|
|
|
string content = request.Content;
|
|
|
content = content.UrlDecode();
|
|
|
@@ -1754,6 +1816,23 @@ namespace molilian.core
|
|
|
result.accountId);
|
|
|
}
|
|
|
|
|
|
+ //============================== 放弃转链-隐藏号同 ip/oaid 当天只转一次 ==============================
|
|
|
+ if (account.is_hide)
|
|
|
+ {
|
|
|
+ if (!HiddenAccountCore.TryReserveOnce(TkChannelEnum.pdd, account.id, request.Ip, request.Oaid))
|
|
|
+ {
|
|
|
+ result.success = false;
|
|
|
+ result.message = "放弃转链";
|
|
|
+ result.reason = "频次限制";
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
// 更新当前日使用统计
|
|
|
PddPoolCore.UpdateAccountUsage(account.id);
|
|
|
|
|
|
@@ -1792,6 +1871,11 @@ namespace molilian.core
|
|
|
result.reason = "转链接口异常";
|
|
|
}
|
|
|
}
|
|
|
+ // 隐藏号:转链成功则当天该 ip/oaid 不再转,失败则释放占位
|
|
|
+ if (hiddenOnceAccount != null)
|
|
|
+ {
|
|
|
+ _ = HiddenAccountCore.CompleteOnceAsync(TkChannelEnum.pdd, hiddenOnceAccount.id, request.Ip, request.Oaid, result.success);
|
|
|
+ }
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK, hiddenAccountFailure);
|
|
|
|