using Common.DbExtends;
using Common.DbExtends.Extends;
using Common.Models.Enums;
using Common.Models.UnqTables;
using Common.Requests.Lianmengs;
using CsharpHttpHelper;
using Newtonsoft.Json.Linq;
using Server.MyClass.Views;
using Server.MyClass.Views.medias;
using Server.Utils;
using Server.Winforms.LoginForms;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
namespace Server.Controllers.AccountManagement
{
public partial class LianmengController : DefaultController
{
private const string VipAppId = "9f7a9b3d";
private const string VipAppSecret = "074B0E1FFB94334FDEC993913884EC7F";
static object lockObj = new object();
///
/// 登录联盟 - 未完成
///
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult Login()
{
///TODO:未完成联盟登录
var type = GetEnum("LianmengType");
var callBack = GetUrl() + "lianmeng/";
string url = "";
var token = Guid.NewGuid().ToString("N");
switch (type)
{
case LianmengType.淘宝联盟:
{
var time = DateTime.Now.AddSeconds(30);
var login = LianMengWebViewLoginHelper.Instance.GetViewLogin();
if (login == null)
{
return PutData("服务启动失败,请重试。");
}
login.Start(LianmengType.淘宝联盟);
while (DateTime.Now < time)
{
if (!string.IsNullOrEmpty(login.QRCodeUrl))
{
CacheHelper.GetIntance().SetCache(login.Msgid, login, 60 * 5);
return PutData(new { Msgid = login.Msgid, QRCodeUrl = login.QRCodeUrl });
}
Thread.Sleep(100);
}
login.Dispose();
return PutData("获取二维码失败,请稍后重试!");
}
case LianmengType.京东联盟:
try
{
var authId = GetLong("authId", true);
var authUser = authId.ToString();
var authKey = GetString("authKey", true).Trim();
var remark = GetString("remark");
var et = GetString("et", true);
var exTime = DateTime.ParseExact(et, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
var jdApi = new JingdongRequest(new Lianmeng() { Username = authId.ToString(), Token = authKey, LianmengType = LianmengType.京东联盟 });
var result = jdApi.SendData("jd.union.open.position.query", new { positionReq = new { unionType = 1, pageSize = 1, pageIndex = 1, unionId = authId, key = authKey } });
JObject res = JObject.Parse(result.ToString());
if ((int)res["code"] == 200)
{
string auIdStr = authId.ToString();
var tar = Db.Queryable().First(p => p.Username == auIdStr && p.LianmengType == LianmengType.京东联盟);
if (tar == null)
{
tar = new Lianmeng() { LianmengType = LianmengType.京东联盟, ExpirationTime = exTime, Nickname = authUser, Username = authUser, Token = authKey, Cookies = "", Remark = remark };
}
else
{
tar.Username = authUser;
tar.Nickname = authUser;
tar.Token = authKey;
tar.Remark = remark;
tar.ExpirationTime = exTime;
}
Db.Save(tar);
if (tar.Id != 0)
{
GetJdAds(authUser, authKey, jdApi, tar);
return PutSuccess;
}
}
return PutError;
}
catch (Exception ex)
{
return PutData(ex);
}
case LianmengType.拼多多联盟:
callBack += "Pinduoduo";
url = $"https://jinbao.pinduoduo.com/open.html?client_id=4ca7ddf2678b4ba39ecbc60c9d60b4ed&response_type=code&redirect_uri={HttpUtility.UrlEncode(callBack)}";
break;
case LianmengType.唯品会联盟:
callBack += "vip";
url = $"https://auth.vip.com/oauth2/authorize?client_id={VipAppId}&response_type=code&redirect_uri={HttpUtility.UrlEncode(callBack)}";
break;
case LianmengType.苏宁联盟:
{
LoginSuningClass login = new LoginSuningClass();
var qrurl = login.GetQRCodeUrl();
if (!string.IsNullOrEmpty(qrurl))
{
var guid = Guid.NewGuid().ToString("N");
CacheHelper.GetIntance().SetCache(guid, login, 60 * 5);
return PutData(new { Msgid = guid, QRCodeUrl = login.QRCodeUrl });
}
return PutData("获取二维码失败,请稍后重试!");
}
case LianmengType.抖音联盟:
{
var time = DateTime.Now.AddSeconds(30);
var login = LianMengWebViewLoginHelper.Instance.GetViewLogin();
if (login == null)
{
return PutData("服务启动失败,请重试。");
}
login.Start(LianmengType.抖音联盟);
while (DateTime.Now < time)
{
if (!string.IsNullOrEmpty(login.QRCodeUrl))
{
CacheHelper.GetIntance().SetCache(login.Msgid, login, 60 * 5);
return PutData(new { Msgid = login.Msgid, QRCodeUrl = login.QRCodeUrl });
}
Thread.Sleep(1000);
}
login.Dispose();
//var login = Client.Form.GetLoginForm();
//Client.Form.Invoke(new Action(delegate ()
//{
// login.Show();
// login.Hide();
// login.Start(LianmengType.抖音联盟);
//}));
//while (DateTime.Now < time)
//{
// if (!string.IsNullOrEmpty(login.QRCodeUrl))
// {
// CacheHelper.GetIntance().SetCache(login.Msgid, login, 60 * 5);
// return PutData(new { Msgid = login.Msgid, QRCodeUrl = login.QRCodeUrl });
// }
// Thread.Sleep(100);
//}
//login?.CloseUI();
//if (string.IsNullOrEmpty(login.ErrorMsg)) return PutData(login.ErrorMsg);
return PutData("获取二维码失败,请稍后重试!");
}
case LianmengType.美团联盟:
try
{
#region 第二版、自动登录 聂红利
var loginType = GetInt("LoginType");
if (loginType == 1)
{
var telNumber = GetString("TelNumber", true);
var mtLoginReq = new LoginMeituanClass();
var errorMsg = mtLoginReq.SendLoginCode(telNumber);
if (!string.IsNullOrWhiteSpace(errorMsg)) return PutData(errorMsg);
var guid = Guid.NewGuid().ToString("N");
CacheHelper.GetIntance().SetCache(guid, mtLoginReq, 60 * 5);
return PutData(new { Msgid = guid, QRCodeUrl = string.Empty });
}
else if (loginType == 2)
{
var Msgid = GetString("Msgid", true);
var Code = GetString("Code", true);
var req = CacheHelper.GetIntance().GetCache(Msgid);
if (req == null) return PutData("登录失败,验证码已过期!");
var mtReq = req as LoginMeituanClass;
if (mtReq == null) return PutData("登录失败,验证码已过期!");
var loginResult = mtReq.VerifyLoginCode(Code);
if (!string.IsNullOrEmpty(loginResult)) return PutData(loginResult);
var tar = Db.Queryable().First(p => p.Username == mtReq.mobile && p.LianmengType == LianmengType.美团联盟);
if (tar == null)
{
tar = new Lianmeng()
{
LianmengType = LianmengType.美团联盟,
Username = mtReq.mobile
};
}
tar.Nickname = mtReq.nickName;
tar.Cookies = mtReq.Cookies;
tar.ExpirationTime = DateTime.Now.AddYears(100);
tar.Token = mtReq.appkey;
tar.ReToken = mtReq.utmSource;
Db.Save(tar);
Task.Factory.StartNew(() =>
{
var db = Db;
try
{
db.BeginTran();
var medias = mtReq.GetMedias();
foreach (var item in medias)
{
var media = db.Queryable().Where(f => f.LianmengId == tar.Id && f.AdzoneId == item.promotionId && f.MediaPId == item.mediaId).First();
if (media == null)
media = new MtMedia() { LianmengId = tar.Id, AdzoneId = item.promotionId, MediaPId = item.mediaId };
else if (media.UpdateTime == item.updateTime) continue;
media.MediaType = (MTMediaType)item.mediaType;
media.AdzoneName = item.promotionName;
media.MediaName = item.mediaName;
media.UpdateTime = item.updateTime;
if (media.Id == 0)
db.Insertable(media).ExecuteCommand();
else
db.Updateable(media).ExecuteCommand();
}
db.CommitTran();
}
catch (Exception)
{
db.RollbackTran();
}
});
return PutData(tar);
}
#endregion
#region 第一版、人工录入 赵家保
else
{
var appKey = GetString("appKey", true);
var utmSource = GetString("utmSource", true);
var username = GetString("username", true);
var remark = GetString("remark", false);
var item = Db.Queryable().First(p => p.Username == username && p.LianmengType == LianmengType.美团联盟);
if (item == null)
{
item = new Lianmeng()
{
LianmengType = LianmengType.美团联盟,
ExpirationTime = DateTime.Now.AddYears(100),
Cookies = "",
Username = username,
Nickname = "",
Remark = remark,
ReToken = utmSource,
Token = appKey
};
}
else
{
item.Username = username;
item.Remark = remark;
item.ReToken = utmSource;
item.Token = appKey;
}
var res = new MTRequest(item).CPSOrderList(DateTime.Now, DateTime.Now, 1, 50, out _);
if (res == null)
{
return PutData("登录失败,您输入的appKey或utmSource不正确!");
}
Db.Save(item);
if (item.Id != 0)
{
return PutSuccess;
}
return PutError;
}
#endregion
}
catch (Exception ex)
{
return PutData(ex);
}
default:
return PutData("暂不支持该联盟账号登录");
}
return PutData(new { Url = url, Token = token });
}
///
/// 获取京东的推广位(同步获取)
///
///
///
///
///
private void GetJdAds(string authUser, string authKey, JingdongRequest jdApi, Lianmeng lianmeng)
{
Task.Factory.StartNew(() =>
{
//TODO 使用API获取京东推广位
var req = new JingdongRequest(lianmeng);
req.GetPositionListAll(items =>
{
var db = Db;
db.BeginTran();
try
{
foreach (JToken token in items)
{
var adzoneId = token["id"].Value();
var adzonename = token["spaceName"].Value();
var info = db.Queryable().Where(w => w.LianmengId == lianmeng.Id && w.AdzoneId == adzoneId).First();
if (info == null)
{
info = new JdMedia();
info.AdzoneId = adzoneId;
info.LianmengId = lianmeng.Id;
info.AdzoneName = adzonename;
info.IsRemove = false;
info.Remark = "";
db.Insertable(info).ExecuteCommand();
}
else if (info.AdzoneName != adzonename)
{
info.AdzoneName = adzonename;
db.Updateable(info).ExecuteCommand();
}
}
db.CommitTran();
}
catch (Exception e)
{
Db.OnLog("同步推广位", e);
db.RollbackTran();
}
return false;
});
});
}
///
/// 获得登录状态
///
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetLoginStatus()
{
var msgId = GetString("Msgid", true);
var result = CacheHelper.GetIntance().GetCache(msgId);
if (result == null)
{
return PutData(new { Msgid = msgId, QRCodeStatus = LoginQRCodeStatus.操作超时 });
}
var login = result as LianmengWebViewLogin;
if (login == null)
{
if (result is LoginSuningClass login2)
{
return PutData(new { Msgid = msgId, QRCodeStatus = login2.QRCodeStatus, ErrorMsg = login2.ErrorMsg });
}
return PutData("二维码获取失败!");
}
else
{
return PutData(new { Msgid = login.Msgid, QRCodeStatus = login.QRCodeStatus, ErrorMsg = login.ErrorMsg });
}
}
private string GetUrl()
{
var url = $"http://{Client.InternetIP}:{Client.Config.Port}/";
#if DEBUG
url = $"http://127.0.0.1/";
#endif
return url;
}
///
/// 拼多多回调
///
[HttpGet]
public IHttpActionResult Pinduoduo()
{
var url = GetUrl();
try
{
var Params = HttpUtility.ParseQueryString(Request.RequestUri.Query);
var code = Params.Get("code");
var state = Params.Get("state");
string json = HttpHelper.ObjectToJson(new
{
client_id = "4ca7ddf2678b4ba39ecbc60c9d60b4ed",
code = code,
grant_type = "authorization_code",
client_secret = "c05574e5bbb450bb1ad66e08cdccf05a8a274161"
});
HttpHelper http = new HttpHelper();
var item = http.GetItem("http://open-api.pinduoduo.com/oauth/token", "", json);
item.ContentType = "application/json";
var html = http.GetHtml(item).Html;
Newtonsoft.Json.Linq.JObject target = Newtonsoft.Json.Linq.JObject.Parse(html);
var UserId = target["owner_id"].ToString();
var Lianmeng = Db.Queryable().First(f => f.Username == UserId && f.LianmengType == LianmengType.拼多多联盟);
if (Lianmeng == null)
{
Lianmeng = new Lianmeng() { Username = UserId, LianmengType = LianmengType.拼多多联盟 };
}
Lianmeng.Nickname = target["owner_name"].ToString();
Lianmeng.Token = target["access_token"].ToString();
Lianmeng.ExpirationTime = DateTime.Now.AddDays(30);
Lianmeng.ReToken = target["refresh_token"].ToString();
Db.Save(Lianmeng);
//同步推广位
var req = new PinduoRequest(Lianmeng);
req.GetPositionList(items =>
{
var db = Db;
db.BeginTran();
try
{
foreach (JToken token in items)
{
//var adzoneId = token["p_id_list"].First["p_id"].Value();
//var adzonename = token["p_id_list"].First["pid_name"].Value();
var adzoneId = token["p_id"].Value();
var adzonename = token["pid_name"].Value();
var info = db.Queryable().Where(w => w.LianmengId == Lianmeng.Id && w.AdzoneId == adzoneId).First();
if (info == null)
{
info = new PddMedia();
info.AdzoneId = adzoneId;
info.LianmengId = Lianmeng.Id;
info.AdzoneName = adzonename;
info.IsRemove = false;
info.Remark = "";
db.Insertable(info).ExecuteCommand();
}
else if (info.AdzoneName != adzonename)
{
info.AdzoneName = adzonename;
db.Updateable(info).ExecuteCommand();
}
}
db.CommitTran();
}
catch (Exception e)
{
Db.OnLog("同步推广位", e);
db.RollbackTran();
}
return false;
});
return Redirect($"{url}?t={LianmengType.拼多多联盟}&f=true");
}
catch
{
return Redirect($"{url}?t={LianmengType.拼多多联盟}&f=false");
}
}
///
/// 淘宝回调
///
///
[HttpGet]
public WebResult LoginTaobaoCallback()
{
var url = GetUrl();
try
{
//http://127.0.0.1:81/lianmeng/logintaobaoresult/?access_token=6100a011713579cffde010fc5c5faa734a72a17bcf96283824166474&token_type=Bearer&expires_in=2592000&refresh_token=6100a01171d612063de010fc5c5faa734a72a17bcf96283824166474&re_expires_in=2592000&r1_expires_in=2592000&r2_expires_in=86400&taobao_open_uid=AAHwsrlwAJVa5gTotY3c-Pas&taobao_user_id=824166474&taobao_user_nick=oreoa&w1_expires_in=2592000&w2_expires_in=300&state=http%3A%2F%2F127.0.0.1%3A81%2Flianmeng%2Flogintaobaoresult&top_sign=37E502E07685C07A0DFB104A30837A6B
var Params = HttpUtility.ParseQueryString(Request.RequestUri.Query);
var Token = Params.Get("access_token");
var UserId = Params.Get("taobao_user_id");
var UserNick = Params.Get("taobao_user_nick");
var Lianmeng = Db.Queryable().WithCache().First(f => f.Username == UserId && f.LianmengType == LianmengType.淘宝联盟);
if (Lianmeng == null)
{
Lianmeng = new Lianmeng() { Username = UserId, LianmengType = LianmengType.淘宝联盟 };
}
Lianmeng.Nickname = UserNick;
Lianmeng.Token = Token;
Lianmeng.ExpirationTime = DateTime.Now.AddDays(30);
Db.Storageable(Lianmeng).ExecuteCommand();
//Db.Save(Lianmeng);
return PutSuccess;
}
catch (Exception)
{
return PutError;
}
}
///
/// 唯品会回调
///
[HttpGet]
public IHttpActionResult Vip()
{
var url = GetUrl();
try
{
var Params = HttpUtility.ParseQueryString(Request.RequestUri.Query);
var code = Params.Get("code");
var state = Params.Get("state");
var http = new HttpHelper();
var item = new HttpItem() { Method = "post", URL = $"https://auth.vip.com/oauth2/token?client_id={VipAppId}&client_secret={VipAppSecret}&grant_type=authorization_code&redirect_uri={HttpUtility.UrlEncode(url)}&request_client_ip=127.0.0.1&code={code}" };
var html = http.GetHtml(item).Html;
Newtonsoft.Json.Linq.JObject target = Newtonsoft.Json.Linq.JObject.Parse(html);
var UserId = target["open_id"].ToString();
var Lianmeng = Db.Queryable().First(f => f.Username == UserId && f.LianmengType == LianmengType.唯品会联盟);
if (Lianmeng == null)
{
Lianmeng = new Lianmeng() { Username = UserId, LianmengType = LianmengType.唯品会联盟 };
}
Lianmeng.Nickname = "";
Lianmeng.Token = target["access_token"].ToString();
Lianmeng.ExpirationTime = DateTime.Now.AddSeconds((int)target["expires_in"]);
Lianmeng.ReToken = target["refresh_token"].ToString();
Db.Save(Lianmeng);
GetVipAds(Lianmeng);
return Redirect($"{url}?t={LianmengType.唯品会联盟}&f=true");
}
catch
{
return Redirect($"{url}?t={LianmengType.唯品会联盟}&f=false");
}
}
///
/// 获取唯品会推广位信息
///
private void GetVipAds(Lianmeng Lianmeng)
{
Task.Factory.StartNew(() =>
{
var req = new WeipinhuiRequest(Lianmeng);
req.GetWphTgwAll(items =>
{
var db = Db;
db.UseTran(() =>
{
foreach (var token in items)
{
string adzoneName = token["pidName"].Value();
var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == Lianmeng.Id).First();
if (item != null)
{
continue;
}
item = new WphMedia();
item.AdzoneId = token["pid"].Value();
item.AdzoneName = adzoneName;
item.LianmengId = Lianmeng.Id;
item.Remark = "";
Db.Insertable(item).ExecuteCommand();
}
}, (ex) =>
{
db.OnLog("登陆同步唯品会推广位", ex);
});
return false;
});
});
}
///
/// 分页查询联盟
///
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetLianmengs()
{
var Keyword = GetString("Keyword");
var PageIndex = GetInt("PageIndex");
var PageSize = GetInt("PageSize");
var LmType = GetEnum("Type");
if (PageSize > 100) PageSize = 100;
var TotalNumber = 0;
var exp = Expressionable.Create();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.Nickname.Contains(Keyword) || f.Username.Contains(Keyword) || f.Remark.Contains(Keyword));
}
if (LmType != LianmengType.无)
{
exp.And(f => f.LianmengType == LmType);
}
var DataList = Db.Queryable().Where(exp.ToExpression()).ToPageList(PageIndex, PageSize, ref TotalNumber);
return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex));
}
///
/// 更新联盟
///
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult UpdLianmeng()
{
//TODO:编辑联盟信息,目前值做了备注修改
var Id = GetInt("Id", true);
var Remark = GetString("Remark");
var Lianmeng = Db.GetLianmeng(Id);
if (Lianmeng == null) return PutData("联盟账号不存在!");
Lianmeng.Remark = Remark;
Db.Save(Lianmeng);
return PutSuccess;
}
///
/// 删除联盟
///
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult DelLianmeng()
{
var Id = GetInt("Id", true);
var Data = Db.GetLianmeng(Id);
if (Data != null && Db.Delete(Data) > 0) return PutSuccess;
else return PutData("删除失败,未找到数据!");
}
///
/// 新增推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddTaobaoMedia()
{
try
{
var LianmengId = GetInt("LianmengId", true);
var SiteId = GetString("SiteId", true);
var AdzoneId = GetString("AdzoneId", true);
var Remark = GetString("Remark");
var AppKey = GetString("AppKey");
var AppSecret = GetString("AppSecret");
var Lianmeng = Db.Queryable().Where(f => f.Id == LianmengId).First();
if (Lianmeng == null) return PutData("新增失败,联盟ID不存在!");
var TbMedia = Db.Queryable().Where(f => f.LianmengId == LianmengId && f.SiteId == SiteId && f.AdzoneId == AdzoneId).First();
if (TbMedia != null) return PutData("新增失败,该推广位已存在!");
TbMedia = new TbMedia()
{
LianmengId = LianmengId,
SiteId = SiteId,
AdzoneId = AdzoneId,
Remark = Remark,
AppKey = AppKey,
AppSecret = AppSecret
};
Db.Save(TbMedia);
return PutData(TbMedia);
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 修改推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult UpdTaobaoMedia()
{
try
{
var MediaId = GetInt("MediaId", true);
var TbMedia = Db.GetTbMedia(MediaId);
if (TbMedia == null) return PutData("修改失败,该推广位不存在!");
var LianmengId = GetInt("LianmengId", true);
var SiteId = GetString("SiteId", true);
var AdzoneId = GetString("AdzoneId", true);
var Remark = GetString("Remark");
var AppKey = GetString("AppKey");
var AppSecret = GetString("AppSecret");
var Lianmeng = Db.Queryable().Where(f => f.Id == LianmengId).First();
if (Lianmeng == null) return PutData("修改失败,联盟ID不存在!");
var DbTbMedia = Db.Queryable().Where(f => f.LianmengId == LianmengId && f.SiteId == SiteId && f.AdzoneId == AdzoneId).First();
if (DbTbMedia != null)
{
if (DbTbMedia.Id != MediaId)
return PutData("修改失败,该推广位已存在!");
}
TbMedia.LianmengId = LianmengId;
TbMedia.SiteId = SiteId;
TbMedia.AdzoneId = AdzoneId;
TbMedia.Remark = Remark;
TbMedia.AppKey = AppKey;
TbMedia.AppSecret = AppSecret;
Db.Save(TbMedia);
return PutData(TbMedia);
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 删除推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult DelTaobaoMedia()
{
var MediaId = GetInt("MediaId", true);
Db.Updateable()
.Where(f => f.Id == MediaId)
.SetColumns(f => f.IsRemove == true)
.ExecuteCommand();
return PutSuccess;
}
///
/// 删除推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult DelTaobaoMedias()
{
try
{
var Ids = GetIntList("Ids", true);
Db.Updateable()
.Where(f => Ids.Contains(f.Id))
.SetColumns(f => f.IsRemove == true)
.ExecuteCommand();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 查询推广位列表
///
///
[HttpPost, ErrorFilter]
public WebResult GetTaobaoMedias()
{
try
{
var pageSize = GetInt("PageSize", true);
var index = GetInt("PageIndex", true);
var LianmengId = GetInt("LianmengId");
var SiteId = GetString("SiteId");
var AdzoneId = GetString("AdzoneId");
var Remark = GetString("Remark");
var exp = Expressionable.Create();
if (LianmengId > 0)
{
exp.And(f => f.LianmengId == LianmengId);
}
if (!string.IsNullOrEmpty(SiteId))
{
exp.And(f => f.SiteId == SiteId);
}
if (!string.IsNullOrEmpty(AdzoneId))
{
exp.And(f => f.AdzoneId == AdzoneId);
}
if (!string.IsNullOrEmpty(Remark))
{
exp.And(f => f.Remark.Contains(Remark));
}
exp.And(f => f.IsRemove == false);
var tNumber = 0;
var DataList = Db.Queryable()
.LeftJoin((f, r) => f.LianmengId == r.Id)
.Where(exp.ToExpression())
.Select((f, r) => new TbMediaShow
{
Id = f.Id,
LianmengId = f.LianmengId,
SiteName = f.SiteName,
AdzoneId = f.AdzoneId,
AdzoneName = f.AdzoneName,
AppKey = f.AppKey,
AppSecret = f.AppSecret,
IsSpecial = f.IsSpecial,
IsTlj = !string.IsNullOrEmpty(f.AppKey) && !string.IsNullOrEmpty(f.AppSecret),
LmName = r.Nickname,
LmAcc = r.Username,
Pid = f.Pid,
Remark = f.Remark,
SiteId = f.SiteId,
//UseCnt = Db.Queryable().Where(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id).Count(),
//Db.Queryable().Count(p=>p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id)
})
.ToPageList(index, pageSize, ref tNumber);
foreach (var item in DataList)
{
item.UseCnt = Db.Queryable().Count(p => p.TbMediaId1 == item.Id || p.TbMediaId2 == item.Id);
}
return PutData(new PageResult(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 新增美团推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddMtMedia()
{
try
{
var adzoneId = GetString("AdzoneId", true);
var lianmengId = GetInt("LianmengId", true);
var adzoneName = GetString("AdzoneName", true);
var remark = GetString("Remark", false);
var mediaType = GetEnum("MediaType", true);
var mediaPId = GetString("MediaPId", true);
var mediaName = GetString("MediaName", true);
var item = Db.Queryable().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First();
if (item != null)
{
return PutData("新增失败,该推广位已存在!");
}
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var req = new MTRequest(lianmeng);
var result = req.PromotionLink("吃货天天省", "0AlN4OtEIa", adzoneId, 2, 1, false);
if (result.code != 200)
{
return PutData(result.msg);
}
item = new MtMedia()
{
AdzoneId = adzoneId,
AdzoneName = adzoneName,
LianmengId = lianmengId,
MediaName = mediaName,
MediaPId = mediaPId,
MediaType = mediaType,
Remark = remark
};
Db.Insertable(item).ExecuteReturnEntityAsync();
return PutData(new MTMediaShow()
{
Id = item.Id,
LianmengId = item.LianmengId,
AdzoneId = item.AdzoneId,
AdzoneName = item.AdzoneName,
Remark = item.Remark,
MediaName = item.MediaName,
MediaPId = item.MediaPId,
MediaType = item.MediaType
});
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 编辑美团推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult UdpMtMedia()
{
try
{
var adzoneId = GetString("AdzoneId", true);
var lianmengId = GetInt("LianmengId", true);
var adzoneName = GetString("AdzoneName", true);
var remark = GetString("Remark", false);
var mediaType = GetEnum("MediaType", true);
var mediaPId = GetString("MediaPId", true);
var mediaName = GetString("MediaName", true);
var item = Db.Queryable().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("编辑失败,该推广位不存在!");
}
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var req = new MTRequest(lianmeng);
var result = req.PromotionLink("吃货天天省", "0AlN4OtEIa", adzoneId, 2, 1, false);
if (result.code != 200)
{
return PutData(result.msg);
}
item.AdzoneId = adzoneId;
item.AdzoneName = adzoneName;
item.LianmengId = lianmengId;
item.MediaName = mediaName;
item.MediaPId = mediaPId;
item.MediaType = mediaType;
item.Remark = remark;
Db.Insertable(item).ExecuteReturnEntityAsync();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 删除美团推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemoveMtMedia()
{
try
{
var adzoneId = GetString("AdzoneId", true);
var lianmengId = GetInt("LianmengId", true);
var item = Db.Queryable().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("推广位不存在");
}
else
{
item.IsDelete = true;
Db.Updateable(item).ExecuteCommand();
}
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 查询美团推广位列表
///
///
[HttpPost, ErrorFilter]
public WebResult GetMTMedias()
{
try
{
var pageSize = GetInt("PageSize", true);
var index = GetInt("PageIndex", true);
var lianmengId = GetInt("LianmengId");
var keyword = GetString("Keyword");
var exp = Expressionable.Create();
if (!string.IsNullOrEmpty(keyword))
{
exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword));
}
exp.And(f => f.IsDelete == false);
var tNumber = 0;
var DataList = Db.Queryable()
.Where(f => f.LianmengId == lianmengId)
.Where(exp.ToExpression())
.Select(f => new MTMediaShow
{
Id = f.Id,
LianmengId = f.LianmengId,
AdzoneId = f.AdzoneId,
AdzoneName = f.AdzoneName,
Remark = f.Remark,
MediaName = f.MediaName,
MediaPId = f.MediaPId,
MediaType = f.MediaType
})
.ToPageList(index, pageSize, ref tNumber);
foreach (var item in DataList)
{
item.UseCnt = Db.Queryable().Count(p => p.MtMediaId1 == item.Id || p.MtMediaId2 == item.Id);
}
return PutData(new PageResult(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 新增京东推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddJDMedia()
{
try
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var siteId = GetLong("SiteId");
var remark = GetString("Remark");
var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item != null)
{
return PutData("新增失败,该推广位名称相同!");
}
var req = new JingdongRequest(lianmeng);
var jobj = req.CreatePosition(4, 4, new string[] { adzoneName }, siteId);
if (jobj["code"].Value() != 200)
{
return PutData(jobj["message"].Value());
}
item = new JdMedia();
var property = jobj["data"]["resultList"][adzoneName] as JValue;
item.AdzoneId = property.Value?.ToString();
item.AdzoneName = adzoneName;
item.LianmengId = lianmengId;
item.Remark = remark;
item.PId = jobj["data"]["pid"][adzoneName].Value();
item.IsRemove = false;
Db.Insertable(item).ExecuteReturnEntityAsync();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 删除京东推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemoveJDMedia()
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("删除失败,推广位不存在");
}
item.IsRemove = true;
Db.Updateable(item).ExecuteCommand();
return PutSuccess;
}
///
/// 查询京东推广位列表
///
///
[HttpPost, ErrorFilter]
public WebResult GetJDMedias()
{
try
{
var pageSize = GetInt("PageSize", true);
var index = GetInt("PageIndex", true);
var lianmengId = GetInt("LianmengId");
var keyword = GetString("Keyword");
var exp = Expressionable.Create();
if (!string.IsNullOrEmpty(keyword))
{
exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword));
}
var tNumber = 0;
var DataList = Db.Queryable()
.Where(f => f.LianmengId == lianmengId && f.IsRemove == false)
.Where(exp.ToExpression())
.Select(f => f)
.ToPageList(index, pageSize, ref tNumber);
return PutData(new PageResult(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 新增拼多多推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddPDDMedia()
{
try
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var remark = GetString("Remark", false);
var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item != null)
{
return PutData("新增失败,该推广位名称相同!");
}
var req = new PinduoRequest(lianmeng);
var jobj = req.CreatePosition(adzoneName);
if (jobj["sub_code"] != null && jobj["sub_code"]?.Value() != 200)
{
return PutData(jobj["sub_msg"].Value());
}
item = new PddMedia();
item.AdzoneId = jobj["p_id_list"].First["p_id"].Value();
item.AdzoneName = adzoneName;
item.LianmengId = lianmengId;
item.Remark = remark;
item.IsRemove = false;
Db.Insertable(item).ExecuteReturnEntityAsync();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 删除拼多多推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemovePDDMedia()
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("删除失败,推广位不存在");
}
item.IsRemove = true;
Db.Updateable(item).ExecuteCommand();
return PutSuccess;
}
///
/// 查询拼多多推广位列表
///
///
[HttpPost, ErrorFilter]
public WebResult GetPDDMedias()
{
try
{
var pageSize = GetInt("PageSize", true);
var index = GetInt("PageIndex", true);
var lianmengId = GetInt("LianmengId");
var keyword = GetString("Keyword");
var exp = Expressionable.Create();
if (!string.IsNullOrEmpty(keyword))
{
exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword));
}
var tNumber = 0;
var DataList = Db.Queryable()
.Where(f => f.LianmengId == lianmengId && f.IsRemove == false)
.Where(exp.ToExpression())
.Select(f => f)
.ToPageList(index, pageSize, ref tNumber);
return PutData(new PageResult(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 新增唯品会推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddWPHMedia()
{
try
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var remark = GetString("Remark", false);
var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item != null)
{
return PutData("新增失败,该推广位名称相同!");
}
var req = new WeipinhuiRequest(lianmeng);
var jobj = req.CreateWphTgw(new List() { adzoneName });
if (jobj["returnCode"] != null && jobj["returnCode"]?.Value() != 0)
{
return PutData("创建推广位失败");
}
item = new WphMedia();
item.AdzoneId = jobj["result"]["pidInfoList"].First["pid"].Value();
item.AdzoneName = adzoneName;
item.LianmengId = lianmengId;
item.Remark = remark;
Db.Insertable(item).ExecuteCommand();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
///
/// 删除唯品会推广位
///
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemoveWPHMedia()
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("删除失败,推广位不存在");
}
Db.Deleteable(item).ExecuteCommand();
return PutSuccess;
}
///
/// 查询唯品会推广位列表
///
///
[HttpPost, ErrorFilter]
public WebResult GetWPHMedias()
{
try
{
var pageSize = GetInt("PageSize", true);
var index = GetInt("PageIndex", true);
var lianmengId = GetInt("LianmengId");
var keyword = GetString("Keyword");
var exp = Expressionable.Create();
if (!string.IsNullOrEmpty(keyword))
{
exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword));
}
var tNumber = 0;
var DataList = Db.Queryable()
.Where(f => f.LianmengId == lianmengId)
.Where(exp.ToExpression())
.Select(f => new VipMediaShow() {
Remark = f.Remark,
AdzoneId = f.AdzoneId,
AdzoneName = f.AdzoneName,
Id = f.Id,
LianmengId = f.LianmengId,
UseCnt = Db.Queryable().Count(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id)
})
.ToPageList(index, pageSize, ref tNumber);
//var result = new List();
//DataList.ForEach(f =>
//{
// var data = new VipMediaShow()
// {
// Remark = f.Remark,
// AdzoneId = f.AdzoneId,
// AdzoneName = f.AdzoneName,
// Id = f.Id,
// LianmengId = f.LianmengId,
// UseCnt = Db.Queryable().Count(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id)
// };
// result.Add(data);
//});
return PutData(new PageResult(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
}
}