using Common.Models.Enums; using Common.Models.UnqTables; using Common.Requests.Lianmengs; using Common.Utils.CpsTurns; using Common.Utils.CpsTurns.Entitys; using Server.Timers; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Server.Controllers.OnlineTools { ///TODO:只兼容了淘宝联盟,其他平台尚未兼容 public class ArtificialController : DefaultController { /// /// 查询推广位 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetMedias() { var Keyword = GetString("Keyword"); var PageIndex = GetInt("PageIndex", true); var PageSize = GetInt("PageSize", true); if (PageSize > 100) PageSize = 100; var TotalNumber = 0; var LianmengType = GetEnum("LianmengType", true); switch (LianmengType) { case Common.Models.Enums.LianmengType.淘宝联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Remark.Contains(Keyword)); } var DataList = Db.Queryable().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } case Common.Models.Enums.LianmengType.京东联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Remark.Contains(Keyword)); } var DataList = Db.Queryable().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } case Common.Models.Enums.LianmengType.拼多多联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Remark.Contains(Keyword)); } var DataList = Db.Queryable().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } case Common.Models.Enums.LianmengType.唯品会联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Remark.Contains(Keyword)); } var DataList = Db.Queryable().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } case Common.Models.Enums.LianmengType.苏宁联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Remark.Contains(Keyword)); } var DataList = Db.Queryable().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } case Common.Models.Enums.LianmengType.抖音联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Remark.Contains(Keyword)); } var DataList = Db.Queryable().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } default: break; } return PutData("暂不支持,该商品类型的推广位查询!"); } /// /// 获得字符串中开始和结束字符串中间得值 /// /// 字符串 /// 开始 /// 结束 /// public static string GetValue(string str, string s, string e) { Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline); return rg.Match(str).Value; } /// /// 解析宝贝 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult AnalysisItem() { var LianmengType = GetEnum("LianmengType", true); var Content = GetString("Content", true); int DataId = 0; switch (LianmengType) { case LianmengType.淘宝联盟: case LianmengType.京东联盟: case LianmengType.拼多多联盟: case LianmengType.唯品会联盟: case LianmengType.抖音联盟: DataId = GetInt("MediaId", true); break; case LianmengType.苏宁联盟: DataId = GetInt("LianmengId", true); break; case LianmengType.美团联盟: break; case LianmengType.无: break; default: break; } switch (LianmengType) { case LianmengType.淘宝联盟: { #region 老妖 xxx //var tbMedia = Db.Queryable().Single(f => f.Id == MediaId); //if (tbMedia == null) return PutData("对不起,推广位信息不存在,请先添加!"); //var tbLianmeng = Db.Queryable().Single(f => f.Id == tbMedia.LianmengId); //if (tbLianmeng == null) return PutData("对不起,找不到联盟数据!"); //if (tbLianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{tbLianmeng.Nickname}({tbLianmeng.Username})"); //TaobaoRequest req = new TaobaoRequest(tbLianmeng, tbMedia); //var ItemId = req.AnalysisItemid(Content); //if (string.IsNullOrEmpty(ItemId)) //{ // ItemId = req.ConvertItemid(Content); //} //if (!string.IsNullOrEmpty(ItemId)) //{ // var ItemInfo = req.FindItemInfoByItemId(ItemId); // if (ItemInfo != null) // { // var counpInfo = req.CreateExtUrl(ItemId); // if (!string.IsNullOrEmpty(counpInfo.coupon_click_url)) // { // var r = GetValue(counpInfo.coupon_info, "减", "元"); // //var counpAmount = 1; // var tkl = req.CreateTkl(counpInfo.coupon_click_url); // var rtn = new { itemId = ItemId, title = ItemInfo.n_tbk_item.FirstOrDefault().title, oriPrice = ItemInfo.n_tbk_item.FirstOrDefault().zk_final_price, counpAmount = r, link = counpInfo.coupon_click_url, tkl = tkl.password_simple, imgSrc = ItemInfo.n_tbk_item.FirstOrDefault().pict_url, orderLink = counpInfo.coupon_click_url, middleLink = "" }; // return PutData(rtn); // } // } // else // { // return PutData(ItemInfo); // } //} ////TODO 疑似 有文案处理 ////TODO 中间页地址 //else return PutData("对不起,暂时无法识别您的“淘宝”文案信息!"); #endregion #region 老道 var media = Db.Queryable().Single(f => f.Id == DataId); if (media == null) return PutData("对不起,推广位信息不存在,请先添加!"); var lianmeng = Db.Queryable().Single(f => f.Id == media.LianmengId); if (lianmeng == null) return PutData("对不起,找不到联盟数据!"); if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})"); TaobaoRequest req = new TaobaoRequest(lianmeng, media); var itemInfo = new TbTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content }); if (itemInfo != null) return PutData(itemInfo as TbCpsInfo); //TODO 疑似 有文案处理??这个不知道指的啥 - 需要问老妖 else return PutData("对不起,暂时无法识别您的“淘宝”文案信息!"); #endregion } case LianmengType.京东联盟: { var media = Db.Queryable().Single(f => f.Id == DataId); if (media == null) return PutData("对不起,推广位信息不存在,请先添加!"); var lianmeng = Db.Queryable().Single(f => f.Id == media.LianmengId); if (lianmeng == null) return PutData("对不起,找不到联盟数据!"); if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})"); JingdongRequest req = new JingdongRequest(lianmeng, media); var itemInfo = new JdTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content }); if (itemInfo != null) return PutData(itemInfo as JdCpsInfo); else return PutData("对不起,暂时无法识别您的“京东”文案信息!"); } case LianmengType.拼多多联盟: { var media = Db.Queryable().Single(f => f.Id == DataId); if (media == null) return PutData("对不起,推广位信息不存在,请先添加!"); var lianmeng = Db.Queryable().Single(f => f.Id == media.LianmengId); if (lianmeng == null) return PutData("对不起,找不到联盟数据!"); if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})"); PinduoRequest req = new PinduoRequest(lianmeng, media); var itemInfo = new PddTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content }); if (itemInfo != null) return PutData(itemInfo as PddCpsInfo); else return PutData("对不起,暂时无法识别您的“拼多多”文案信息!"); } case LianmengType.唯品会联盟: { var media = Db.Queryable().Single(f => f.Id == DataId); if (media == null) return PutData("对不起,推广位信息不存在,请先添加!"); var lianmeng = Db.Queryable().Single(f => f.Id == media.LianmengId); if (lianmeng == null) return PutData("对不起,找不到联盟数据!"); if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})"); WeipinhuiRequest req = new WeipinhuiRequest(lianmeng, media); var itemInfo = new WphTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content }); if (itemInfo != null) return PutData(itemInfo as WphCpsInfo); else return PutData("对不起,暂时无法识别您的“唯品会”文案信息!"); } case LianmengType.苏宁联盟: { //var media = Db.Queryable().Single(f => f.Id == MediaId); //if (media == null) return PutData("对不起,推广位信息不存在,请先添加!"); var lianmeng = Db.Queryable().Single(f => f.Id == DataId); if (lianmeng == null) return PutData("对不起,找不到联盟数据!"); if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})"); SuningRequest req = new SuningRequest(lianmeng); var itemInfo = new SnTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content }); if (itemInfo != null) return PutData(itemInfo as SnCpsInfo); else return PutData("对不起,暂时无法识别您的“苏宁”文案信息!"); } case LianmengType.抖音联盟: { var media = Db.Queryable().Single(f => f.Id == DataId); if (media == null) return PutData("对不起,推广位信息不存在,请先添加!"); var lianmeng = Db.Queryable().Single(f => f.Id == media.LianmengId); if (lianmeng == null) return PutData("对不起,找不到联盟数据!"); if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})"); DouyinRequest req = new DouyinRequest(lianmeng, media); var itemInfo = new DyTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content }); if (itemInfo != null) return PutData(itemInfo as DyCpsInfo); else return PutData("对不起,暂时无法识别您的“抖音”文案信息!"); } default: break; } return PutData("对不起,暂时不支持该联盟操作!"); } } }