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("对不起,暂时不支持该联盟操作!");
}
}
}