yz_server/Server/Controllers/AccountManagement/LianmengController.cs

1356 lines
55 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
/// <summary>
/// 登录联盟 - 未完成
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult Login()
{
///TODO:未完成联盟登录
var type = GetEnum<LianmengType>("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<Lianmeng>().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<Lianmeng>().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<MtMedia>().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<Lianmeng>().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 });
}
/// <summary>
/// 获取京东的推广位(同步获取)
/// </summary>
/// <param name="authUser"></param>
/// <param name="authKey"></param>
/// <param name="jdApi"></param>
/// <param name="lianmeng"></param>
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<string>();
var adzonename = token["spaceName"].Value<string>();
var info = db.Queryable<JdMedia>().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;
});
});
}
/// <summary>
/// 获得登录状态
/// </summary>
/// <returns></returns>
[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;
}
/// <summary>
/// 拼多多回调
/// </summary>
[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<Lianmeng>().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<string>();
//var adzonename = token["p_id_list"].First["pid_name"].Value<string>();
var adzoneId = token["p_id"].Value<string>();
var adzonename = token["pid_name"].Value<string>();
var info = db.Queryable<PddMedia>().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");
}
}
/// <summary>
/// 淘宝回调
/// </summary>
/// <returns></returns>
[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<Lianmeng>().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;
}
}
/// <summary>
/// 唯品会回调
/// </summary>
[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<Lianmeng>().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");
}
}
/// <summary>
/// 获取唯品会推广位信息
/// </summary>
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<string>();
var item = Db.Queryable<WphMedia>().Where(f => f.AdzoneName == adzoneName && f.LianmengId == Lianmeng.Id).First();
if (item != null)
{
continue;
}
item = new WphMedia();
item.AdzoneId = token["pid"].Value<string>();
item.AdzoneName = adzoneName;
item.LianmengId = Lianmeng.Id;
item.Remark = "";
Db.Insertable(item).ExecuteCommand();
}
}, (ex) =>
{
db.OnLog("登陆同步唯品会推广位", ex);
});
return false;
});
});
}
/// <summary>
/// 分页查询联盟
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetLianmengs()
{
var Keyword = GetString("Keyword");
var PageIndex = GetInt("PageIndex");
var PageSize = GetInt("PageSize");
var LmType = GetEnum<LianmengType>("Type");
if (PageSize > 100) PageSize = 100;
var TotalNumber = 0;
var exp = Expressionable.Create<Lianmeng>();
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<Lianmeng>().Where(exp.ToExpression()).ToPageList(PageIndex, PageSize, ref TotalNumber);
return PutData(new PageResult<Lianmeng>(DataList, TotalNumber, PageSize, PageIndex));
}
/// <summary>
/// 更新联盟
/// </summary>
/// <returns></returns>
[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;
}
/// <summary>
/// 删除联盟
/// </summary>
/// <returns></returns>
[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("删除失败,未找到数据!");
}
/// <summary>
/// 新增推广位
/// </summary>
[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<Lianmeng>().Where(f => f.Id == LianmengId).First();
if (Lianmeng == null) return PutData("新增失败联盟ID不存在");
var TbMedia = Db.Queryable<TbMedia>().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);
}
}
/// <summary>
/// 修改推广位
/// </summary>
[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<Lianmeng>().Where(f => f.Id == LianmengId).First();
if (Lianmeng == null) return PutData("修改失败联盟ID不存在");
var DbTbMedia = Db.Queryable<TbMedia>().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);
}
}
/// <summary>
/// 删除推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult DelTaobaoMedia()
{
var MediaId = GetInt("MediaId", true);
Db.Updateable<TbMedia>()
.Where(f => f.Id == MediaId)
.SetColumns(f => f.IsRemove == true)
.ExecuteCommand();
return PutSuccess;
}
/// <summary>
/// 删除推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult DelTaobaoMedias()
{
try
{
var Ids = GetIntList("Ids", true);
Db.Updateable<TbMedia>()
.Where(f => Ids.Contains(f.Id))
.SetColumns(f => f.IsRemove == true)
.ExecuteCommand();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 查询推广位列表
/// </summary>
/// <returns></returns>
[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<TbMedia>();
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<TbMedia>()
.LeftJoin<Lianmeng>((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<Robot>().Where(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id).Count(),
//Db.Queryable<Robot>().Count(p=>p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id)
})
.ToPageList(index, pageSize, ref tNumber);
foreach (var item in DataList)
{
item.UseCnt = Db.Queryable<Robot>().Count(p => p.TbMediaId1 == item.Id || p.TbMediaId2 == item.Id);
}
return PutData(new PageResult<TbMediaShow>(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 新增美团推广位
/// </summary>
[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<MTMediaType>("MediaType", true);
var mediaPId = GetString("MediaPId", true);
var mediaName = GetString("MediaName", true);
var item = Db.Queryable<MtMedia>().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First();
if (item != null)
{
return PutData("新增失败,该推广位已存在!");
}
var lianmeng = Db.Queryable<Lianmeng>().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);
}
}
/// <summary>
/// 编辑美团推广位
/// </summary>
[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<MTMediaType>("MediaType", true);
var mediaPId = GetString("MediaPId", true);
var mediaName = GetString("MediaName", true);
var item = Db.Queryable<MtMedia>().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("编辑失败,该推广位不存在!");
}
var lianmeng = Db.Queryable<Lianmeng>().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);
}
}
/// <summary>
/// 删除美团推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemoveMtMedia()
{
try
{
var adzoneId = GetString("AdzoneId", true);
var lianmengId = GetInt("LianmengId", true);
var item = Db.Queryable<MtMedia>().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);
}
}
/// <summary>
/// 查询美团推广位列表
/// </summary>
/// <returns></returns>
[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<MtMedia>();
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<MtMedia>()
.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<Robot>().Count(p => p.MtMediaId1 == item.Id || p.MtMediaId2 == item.Id);
}
return PutData(new PageResult<MTMediaShow>(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 新增京东推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddJDMedia()
{
try
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable<Lianmeng>().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<JdMedia>().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<int>() != 200)
{
return PutData(jobj["message"].Value<string>());
}
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<string>();
item.IsRemove = false;
Db.Insertable(item).ExecuteReturnEntityAsync();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 删除京东推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemoveJDMedia()
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable<Lianmeng>().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var item = Db.Queryable<JdMedia>().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("删除失败,推广位不存在");
}
item.IsRemove = true;
Db.Updateable(item).ExecuteCommand();
return PutSuccess;
}
/// <summary>
/// 查询京东推广位列表
/// </summary>
/// <returns></returns>
[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<JdMedia>();
if (!string.IsNullOrEmpty(keyword))
{
exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword));
}
var tNumber = 0;
var DataList = Db.Queryable<JdMedia>()
.Where(f => f.LianmengId == lianmengId && f.IsRemove == false)
.Where(exp.ToExpression())
.Select(f => f)
.ToPageList(index, pageSize, ref tNumber);
return PutData(new PageResult<JdMedia>(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 新增拼多多推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddPDDMedia()
{
try
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable<Lianmeng>().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<PddMedia>().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<int>() != 200)
{
return PutData(jobj["sub_msg"].Value<string>());
}
item = new PddMedia();
item.AdzoneId = jobj["p_id_list"].First["p_id"].Value<string>();
item.AdzoneName = adzoneName;
item.LianmengId = lianmengId;
item.Remark = remark;
item.IsRemove = false;
Db.Insertable(item).ExecuteReturnEntityAsync();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 删除拼多多推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemovePDDMedia()
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable<Lianmeng>().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var item = Db.Queryable<PddMedia>().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("删除失败,推广位不存在");
}
item.IsRemove = true;
Db.Updateable(item).ExecuteCommand();
return PutSuccess;
}
/// <summary>
/// 查询拼多多推广位列表
/// </summary>
/// <returns></returns>
[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<PddMedia>();
if (!string.IsNullOrEmpty(keyword))
{
exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword));
}
var tNumber = 0;
var DataList = Db.Queryable<PddMedia>()
.Where(f => f.LianmengId == lianmengId && f.IsRemove == false)
.Where(exp.ToExpression())
.Select(f => f)
.ToPageList(index, pageSize, ref tNumber);
return PutData(new PageResult<PddMedia>(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 新增唯品会推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddWPHMedia()
{
try
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable<Lianmeng>().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<WphMedia>().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<string>() { adzoneName });
if (jobj["returnCode"] != null && jobj["returnCode"]?.Value<int>() != 0)
{
return PutData("创建推广位失败");
}
item = new WphMedia();
item.AdzoneId = jobj["result"]["pidInfoList"].First["pid"].Value<string>();
item.AdzoneName = adzoneName;
item.LianmengId = lianmengId;
item.Remark = remark;
Db.Insertable(item).ExecuteCommand();
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex);
}
}
/// <summary>
/// 删除唯品会推广位
/// </summary>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult RemoveWPHMedia()
{
var lianmengId = GetInt("LianmengId", true);
var lianmeng = Db.Queryable<Lianmeng>().Where(w => w.Id == lianmengId).First();
if (lianmeng == null)
{
return PutData("联盟不存在!");
}
var adzoneName = GetString("AdzoneName", true);
var item = Db.Queryable<WphMedia>().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First();
if (item == null)
{
return PutData("删除失败,推广位不存在");
}
Db.Deleteable(item).ExecuteCommand();
return PutSuccess;
}
/// <summary>
/// 查询唯品会推广位列表
/// </summary>
/// <returns></returns>
[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<WphMedia>();
if (!string.IsNullOrEmpty(keyword))
{
exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword));
}
var tNumber = 0;
var DataList = Db.Queryable<WphMedia>()
.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<Robot>().Count(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id)
})
.ToPageList(index, pageSize, ref tNumber);
//var result = new List<VipMediaShow>();
//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<Robot>().Count(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id)
// };
// result.Add(data);
//});
return PutData(new PageResult<VipMediaShow>(DataList, tNumber, pageSize, index));
}
catch (Exception ex)
{
return PutData(ex);
}
}
}
}