|
|
@@ -1357,6 +1357,7 @@ namespace molilian.core
|
|
|
public static async Task<APIResult> PddParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
|
|
|
{
|
|
|
var result = PddUnionPlus.GetFormattedObject(request);
|
|
|
+ PddDataDTO? hiddenAccountFailure = null;
|
|
|
|
|
|
var overrideContent = await OverrideRuleCore.ProcessAsync(request);
|
|
|
if (overrideContent != null)
|
|
|
@@ -1503,6 +1504,7 @@ namespace molilian.core
|
|
|
PddPoolCore.UpdateAccountUsage(account.id);
|
|
|
|
|
|
var plus = new PddUnionPlus(account);
|
|
|
+ hiddenAccountFailure = account.is_hide ? CreatePddFailureResult(result) : null;
|
|
|
result = await plus.PddParseAsync(content, request.CommerceType, result, cancellationToken);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
@@ -1533,12 +1535,13 @@ namespace molilian.core
|
|
|
}
|
|
|
}
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
- return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK);
|
|
|
+ return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK, hiddenAccountFailure);
|
|
|
|
|
|
}
|
|
|
public static async Task<APIResult> GoodsPddParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
|
|
|
{
|
|
|
var result = PddUnionPlus.GetFormattedObject(request);
|
|
|
+ PddDataDTO? hiddenAccountFailure = null;
|
|
|
|
|
|
string content = request.Content;
|
|
|
content = content.UrlDecode();
|
|
|
@@ -1698,6 +1701,7 @@ namespace molilian.core
|
|
|
PddPoolCore.UpdateAccountUsage(account.id);
|
|
|
|
|
|
var plus = new PddUnionPlus(account);
|
|
|
+ hiddenAccountFailure = account.is_hide ? CreatePddFailureResult(result) : null;
|
|
|
result = await plus.PddParseAsync(content, request.CommerceType, result, cancellationToken);
|
|
|
if (!result.success)
|
|
|
{
|
|
|
@@ -1732,11 +1736,38 @@ namespace molilian.core
|
|
|
}
|
|
|
}
|
|
|
_ = TkLogCore.ParseLogAsync(result);
|
|
|
- return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK);
|
|
|
+ return PddParseOutput(result, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK, hiddenAccountFailure);
|
|
|
|
|
|
}
|
|
|
- private static APIResult PddParseOutput(PddDataDTO result, APIResultCodeEnum code = APIResultCodeEnum.OK)
|
|
|
+ private static PddDataDTO CreatePddFailureResult(PddDataDTO result)
|
|
|
{
|
|
|
+ // 转链前保存失败返回所需的字段,避免成功后的商品信息、短链进入隐藏号响应。
|
|
|
+ return new PddDataDTO
|
|
|
+ {
|
|
|
+ success = false,
|
|
|
+ message = "转链失败",
|
|
|
+ reason = "无法转链",
|
|
|
+ commercial = false,
|
|
|
+ channel = result.channel,
|
|
|
+ link_type = result.link_type,
|
|
|
+ accountId = result.accountId,
|
|
|
+ itemId = result.itemId,
|
|
|
+ itemName = result.itemName,
|
|
|
+ shortLinkurl = result.shortLinkurl,
|
|
|
+ parse_type = result.parse_type,
|
|
|
+ riskStrategy = result.riskStrategy,
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ private static APIResult PddParseOutput(PddDataDTO result, APIResultCodeEnum code = APIResultCodeEnum.OK, PddDataDTO? hiddenAccountFailure = null)
|
|
|
+ {
|
|
|
+ if (result.success && hiddenAccountFailure != null)
|
|
|
+ {
|
|
|
+ // 只替换对外响应,保留真实转链结果供日志和统计使用。
|
|
|
+ hiddenAccountFailure.deeplink_url = result.deeplink_url;
|
|
|
+ result = hiddenAccountFailure;
|
|
|
+ }
|
|
|
+
|
|
|
string itemName = result.itemName;
|
|
|
switch (result.riskStrategy)
|
|
|
{
|