using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.AspNetCore.Mvc.Filters; using System; using System.Collections.Generic; using System.Linq; using System.Text; using dodohold.core; using Spire.Pdf.Exporting.XPS.Schema; using System.Xml.Linq; using System.Net; using TencentCloud.Mrs.V20200910.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authentication; using Spire.Pdf.Graphics; using Google.Protobuf.WellKnownTypes; using System.Threading.Channels; using TencentCloud.Weilingwith.V20230427.Models; namespace molilian.core { public partial class UnionCouponCore { public static async Task UnionCouponAsync(string content, string channel, string ip, string oaid) { return channel switch { "jd" => await JdCouponAsync(content, ip, oaid), _ => await TaobaoCouponAsync(content, ip, oaid), }; } public static async Task TaobaoCouponAsync(string content, string ip = "", string oaid = "") { AlimamaPlus alimama = null; content = content.UrlDecode(); UnionCouponDTO result = new() { channel = TkChannelEnum.tb, rawContent = content }; try { if (AlimamaPlus.ShouldIgnoreRequest(ip, oaid, out string reason)) { result.success = false; result.message = "放弃转链"; result.reason = reason; _ = TkLogCore.CouponLogAsync(result); return new APIResult(new { result.success, result.message, channel = result.channel.ToString(), }); } var account = TkPoolCore.GetOne(TkPoolCore.TkAction.coupon); if (account == null) { result.success = false; result.message = "放弃转链"; result.reason = "没有匹配账号"; _ = TkLogCore.CouponLogAsync(result); return new APIResult(new { result.success, result.message, channel = result.channel.ToString(), }); } result.accountId = account.id; result.accountName = account.name; alimama = new AlimamaPlus(account); result = await alimama.UnionCoupon2Async(content, result); if (result.success && result.couponAmount == 0) { result.success = false; result.message = "放弃转链"; result.reason = "没有优惠券"; } } catch (Exception ex) { if (ex.Message.Contains("A task 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) .Save(); 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, channel = result?.channel.ToString(), }); } return new APIResult(new { result.success, result.message, channel = result?.channel.ToString(), result?.itemId, result?.couponAmount, result?.deeplink_url, result?.pic, result?.couponEffectiveStartTime, result?.couponEffectiveEndTime, }); } public static async Task JdCouponAsync(string content, string ip, string oaid) { content = content.UrlDecode(); UnionCouponDTO result = new() { channel = TkChannelEnum.jd, rawContent = content }; try { if (JdUnionPlus.ShouldIgnoreRequest(ip, oaid, out string reason)) { result.success = false; result.message = "放弃转链"; result.reason = reason; _ = TkLogCore.CouponLogAsync(result); return new APIResult(result); } var api = DataokeCore.GetOne(); if (api == null) { result.success = false; result.message = "放弃转链"; result.reason = "没有匹配账号"; result.rawContent = content; _ = TkLogCore.CouponLogAsync(result); return new APIResult(result); } var account = JdPoolCore.GetOne(); if (account == null) { result.success = false; result.message = "放弃转链"; result.reason = "没有匹配账号"; _ = TkLogCore.CouponLogAsync(result); return new APIResult(result); } result = await JdUnionPlus.JdCouponAsync(account, api, content, result); if (result.success && result.couponAmount == 0) { result.success = false; result.message = "放弃转链"; result.reason = "没有优惠券"; } } catch (Exception ex) { if (ex.Message.Contains("A task 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) .Save(); 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.message, channel = result?.channel.ToString(), }); } return new APIResult(new { result.success, result.message, channel = result?.channel.ToString(), result?.itemId, result?.couponAmount, result?.deeplink_url, result?.pic, result?.couponEffectiveStartTime, result?.couponEffectiveEndTime, }); } } }