| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- using dodohold.core;
- using Microsoft.AspNetCore.Mvc;
- namespace molilian.core
- {
- public partial class UnionCouponCore
- {
- private static string _end_point;
- static UnionCouponCore()
- {
- _end_point = Environment.GetEnvironmentVariable("EndPoint");
- }
- public static async Task<ActionResult> UnionCouponAsync(string content, string dplink, string channel, string style, string ip, string oaid, string clickId)
- {
- switch (channel)
- {
- case "tb":
- return await TaobaoCouponAsync(content, dplink, ip, oaid);
- case "jd":
- return await JdCouponAsync(content, dplink, ip, oaid, clickId);
- default:
- if (!string.IsNullOrEmpty(content.Trim()))
- {
- return await UnionCpsCore.TbtCouponAsync(content, channel, ip, oaid);
- }
- var result = await UnionCpsCore.CpsCouponAsync(channel, style, ip, oaid);
- if (result.success)
- {
- return new APIResult(new
- {
- result.success,
- result.message,
- result.title,
- result.sub_title,
- result.deeplink_url,
- result.shortLinkurl,
- result.token,
- result.channel,
- exposeTracks = $"https://api.molilian.com/tracks/track?track_id=9&unique_id={result.channel}",
- clickTracks = $"https://api.molilian.com/tracks/track?track_id=10&unique_id={result.channel}",
- });
- }
- else
- {
- return new APIResult(new
- {
- result.success,
- result.message,
- result.reason,
- result.channel,
- });
- }
- }
- }
- public static async Task<APIResult> TaobaoCouponAsync(string content, string dplink, string ip = "", string oaid = "")
- {
- AlimamaPlus alimama = null;
- content = content.UrlDecode();
- dplink = dplink.UrlDecode();
- UnionCouponDTO result = new()
- {
- channel = TkChannelEnum.tb,
- rawContent = content,
- rawContent2 = dplink,
- end_point = _end_point,
- ip = ip,
- oaid = oaid
- };
- content = AlimamaPlus.FakeItemUrl(content, dplink);
- result.content = content;
- if (string.IsNullOrEmpty(content))
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = "无效的参数";
- result.rawContent = content;
- _ = TkLogCore.CouponLogAsync(result);
- return new APIResult(new
- {
- result.success,
- result.reason,
- result.message,
- channel = result.channel.ToString(),
- });
- }
- try
- {
- string reason;
- UnionParseRequest request = new()
- {
- Ip = ip,
- Oaid = oaid,
- RiskStrategy = string.Empty,
- LaunchScene = 0,
- };
- if (AlimamaPlus.FilterRiskLink(ip, oaid, content, out reason) ||
- AlimamaPlus.ShouldIgnoreRequest(request, out reason))
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = reason;
- _ = TkLogCore.CouponLogAsync(result);
- return new APIResult(new
- {
- result.success,
- result.message,
- result.reason,
- channel = result.channel.ToString(),
- });
- }
- var account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.coupon, false, string.Empty, 0);
- if (account == null)
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = "没有匹配账号";
- _ = TkLogCore.CouponLogAsync(result);
- return new APIResult(new
- {
- result.success,
- result.message,
- result.reason,
- channel = result.channel.ToString(),
- });
- }
- result.accountId = account.id;
- result.accountName = account.name;
- alimama = new AlimamaPlus(account);
- result = await alimama.UnionCoupon2Async(content, result);
- }
- catch (Exception ex)
- {
- if (ex.Message.Contains("was canceled"))
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = "请求超时";
- }
- else
- {
- _ = new LoggerLibrary("unionCoupon", "tb_error")
- .Info(ip, oaid)
- .Info(content)
- .Info(ex.Message, ex.StackTrace)
- .SaveAsync();
- NotifyCore.Notify(new NifyMessage
- {
- message = $"【转链异常TB】\n{content}\n\n{ex.Message}\n{ex.StackTrace}",
- priority = NifyMessagePriority.high,
- tags = ["red_circle"]
- });
- result.success = false;
- result.message = "放弃转链";
- result.reason = "转链接口异常";
- }
- }
- _ = TkLogCore.CouponLogAsync(result, alimama);
- if (!result.success)
- {
- return new APIResult(new
- {
- result.success,
- result.message,
- result.reason,
- channel = result?.channel.ToString(),
- });
- }
- int couponAmount = (int)result.couponAmount * 100;
- return new APIResult(new
- {
- result.success,
- result.message,
- channel = result?.channel.ToString(),
- result?.itemId,
- couponAmount,
- result?.deeplink_url,
- result?.pic,
- result?.couponEffectiveStartTime,
- result?.couponEffectiveEndTime,
- });
- }
- public static async Task<APIResult> JdCouponAsync(string content, string dplink, string ip, string oaid, string clickId)
- {
- content = content.UrlDecode();
- dplink = dplink.UrlDecode();
- UnionCouponDTO result = new()
- {
- channel = TkChannelEnum.jd,
- rawContent = content,
- rawContent2 = dplink,
- end_point = _end_point,
- };
- if (string.IsNullOrEmpty(content))
- {
- content = dplink.Replace("taobao://", "https://");
- }
- if (string.IsNullOrEmpty(content))
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = "无效的参数";
- result.rawContent = content;
- _ = TkLogCore.CouponLogAsync(result);
- return new APIResult(new
- {
- result.success,
- result.reason,
- result.message,
- channel = result.channel.ToString(),
- });
- }
- try
- {
- var config = TkConfigCore.Get();
- UnionParseRequest request = new();
- request.Ip = ip;
- request.Oaid = oaid;
- request.RiskStrategy = string.Empty;
- request.LaunchScene = 0;
- if (JdUnionPlus.ShouldIgnoreRequest(config, request, out string reason))
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = reason;
- _ = TkLogCore.CouponLogAsync(result);
- return new APIResult(new
- {
- result.success,
- result.reason,
- result.message,
- channel = result.channel.ToString(),
- });
- }
- var api = DataokeCore.GetOne();
- if (api == null)
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = "没有匹配账号";
- result.rawContent = content;
- _ = TkLogCore.CouponLogAsync(result);
- return new APIResult(new
- {
- result.success,
- result.reason,
- result.message,
- channel = result.channel.ToString(),
- });
- }
- var account = await JdPoolCore.GetOneAsync();
- if (account == null)
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = "没有匹配账号";
- _ = TkLogCore.CouponLogAsync(result);
- return new APIResult(new
- {
- result.success,
- result.reason,
- result.message,
- channel = result.channel.ToString(),
- });
- }
- result = await JdUnionPlus.JdCouponAsync(account, api, content, clickId, result);
- if (result.success && result.couponAmount == 0)
- {
- result.success = false;
- result.message = "没有优惠券";
- result.reason = "";
- }
- }
- catch (Exception ex)
- {
- if (ex.Message.Contains("was canceled"))
- {
- result.success = false;
- result.message = "放弃转链";
- result.reason = "请求超时";
- }
- else
- {
- _ = new LoggerLibrary("unionCoupon", "jd_error")
- .Info(ip, oaid)
- .Info(content)
- .Info(ex.Message, ex.StackTrace)
- .SaveAsync();
- NotifyCore.Notify(new NifyMessage
- {
- message = $"【转链异常JD】\n{content}\n\n{ex.Message}\n{ex.StackTrace}",
- priority = NifyMessagePriority.high,
- tags = ["red_circle"]
- });
- result.success = false;
- result.message = "内部错误";
- result.reason = "转链接口异常";
- }
- }
- _ = TkLogCore.CouponLogAsync(result);
- if (!result.success)
- {
- return new APIResult(new
- {
- result.success,
- result.reason,
- result.message,
- channel = result?.channel.ToString(),
- });
- }
- int couponAmount = (int)(result.couponAmount * 100);
- return new APIResult(new
- {
- result.success,
- result.message,
- channel = result?.channel.ToString(),
- result?.itemId,
- couponAmount,
- result?.deeplink_url,
- result?.pic,
- result?.couponEffectiveStartTime,
- result?.couponEffectiveEndTime,
- });
- }
- }
- }
|