yz_server/Server/Controllers/AccountManagement/RobotController.cs

436 lines
21 KiB
C#

using Common.DbExtends.Extends;
using Common.Models.Enums;
using Common.Models.UnqTables;
using Common.Utils;
using Server.MyClass.Views;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Server.Controllers.AccountManagement
{
public class RobotController : DefaultController
{
/// <summary>
/// 分页查询机器人
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetRobots()
{
var Keyword = GetString("Keyword");
var PageIndex = GetInt("PageIndex");
var PageSize = GetInt("PageSize");
if (PageSize > 100) PageSize = 100;
var TotalNumber = 0;
var exp = Expressionable.Create<Robot>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.Nickname.Contains(Keyword) || f.Username.Contains(Keyword));
}
var DataList = Db.Queryable<Robot>().Where(exp.ToExpression()).ToPageList(PageIndex, PageSize, ref TotalNumber);
foreach (var item in DataList)
{
var data = Client.SingleClient.OnlineDevices.FirstOrDefault(f => f.Value.RobotId == item.Id).Value;
item.IsOnlineRobot = data != null;
}
return PutData(new PageResult<Robot>(DataList, TotalNumber, PageSize, PageIndex));
}
/// <summary>
/// 删除机器人
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult DelRobot()
{
var Data = Db.GetRobot(GetInt("Id", true));
if (Data != null && Db.Delete(Data) > 0)
{
Client.SendClientMsg(Data.Id, DeviceMessageType.退, new { RobotId = Data.Id });
return PutSuccess;
}
else return PutData("删除失败,机器人信息不存在!");
}
/// <summary>
/// 登录机器人
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult LoginRobot()
{
var Id = GetInt("RobotId", true);
var Robot = Db.Queryable<Robot>().Single(f => f.Id == Id);
if (Robot == null) return PutData("找不到该机器人数据!");
var device = Db.Queryable<Device>().Where(f => f.RobotId == Robot.Id).OrderBy(f => f.LoginTime, OrderByType.Desc).First();
if (device == null)
return PutData("登录失败,未发现该机器人上次登录的设备信息");
var Msg = Client.SendClientMsg(device.Id, DeviceMessageType., new { RobotId = Id });
if (Msg == null)
return PutData("登录失败,设备离线请检查软件状态");
var Rst = Client.GetClientMsg(Msg.Msgid).Result;
if (Rst == null) return PutData("登录失败,未获取到二维码信息请检查软件状态");
return PutData(new { Type = Robot.UserType, Qrcode = Rst.Content });
}
/// <summary>
/// 退出机器人
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult LogoutRobot()
{
var Id = GetInt("RobotId",true);
var Robot = Db.Queryable<Robot>().Single(f => f.Id == Id);
if (Robot == null) return PutData("找不到该机器人数据!");
Robot.LoginTime = DateTime.MinValue;
Db.Updateable<Robot>(Robot).ExecuteCommand();
Client.SendClientMsg(Robot.Id, DeviceMessageType.退, new { RobotId = Robot.Id });
return PutSuccess;
}
/// <summary>
/// 查询机器人详细信息
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetRobot()
{
var Id = GetInt("RobotId",true);
var Robot = Db.Queryable<Robot>().Single(f => f.Id == Id);
if (Robot == null) return PutData("找不到该机器人数据!");
return null;
}
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetConfig()
{
var Id = GetInt("RobotId", true);
var Robot = Db.Queryable<Robot>().Single(f => f.Id == Id);
if (Robot == null) return PutData("查询失败,找不到该机器人信息!");
RobotSettingShow config = new RobotSettingShow();
var tbMedia1 = Robot.TbMediaId1 > 0 ? Db.GetTbMedia(Robot.TbMediaId1) : null;
var tbMedia2 = Robot.TbMediaId2 > 0 ? Db.GetTbMedia(Robot.TbMediaId2) : null;
var tbLianmeng1 = tbMedia1 != null ? Db.GetLianmeng(tbMedia1.LianmengId) : null;
var tbLianmeng2 = tbMedia2 != null ? Db.GetLianmeng(tbMedia2.LianmengId) : null;
config.TbLianmengId1 = tbLianmeng1 != null ? tbLianmeng1.Id : 0;
config.TbLianmengId2 = tbLianmeng2 != null ? tbLianmeng2.Id : 0;
config.TbLianmengNick1 = tbLianmeng1 != null ? tbLianmeng1.Showname : String.Empty;
config.TbLianmengNick2 = tbLianmeng2 != null ? tbLianmeng2.Showname : String.Empty;
config.TbMediaNick1 = tbMedia1 != null ? tbMedia1.AdzoneName : String.Empty;
config.TbMediaNick2 = tbMedia2!=null? tbMedia2.AdzoneName :String.Empty;
config.TbMediaId1 = tbMedia1!=null ? tbMedia1.Id : 0;
config.TbMediaId2 = tbMedia2!=null? tbMedia2.Id : 0;
var dyMedia1 = Robot.DyMediaId1 > 0 ? Db.GetDyMedia(Robot.DyMediaId1) : null;
var dyMedia2 = Robot.DyMediaId2 > 0 ? Db.GetDyMedia(Robot.DyMediaId2) : null;
var dyLianmeng1 = dyMedia1 != null ? Db.GetLianmeng(dyMedia1.LianmengId) : null;
var dyLianmeng2 = dyMedia2 != null ? Db.GetLianmeng(dyMedia2.LianmengId) : null;
config.DyLianmengId1 = dyLianmeng1 != null ? dyLianmeng1.Id : 0;
config.DyLianmengId2 = dyLianmeng2 != null ? dyLianmeng2.Id : 0;
config.DyLianmengNick1 = dyLianmeng1 != null ? dyLianmeng1.Showname : String.Empty;
config.DyLianmengNick2 = dyLianmeng2 != null ? dyLianmeng2.Showname : String.Empty;
config.DyMediaNick1 = dyMedia1 != null ? dyMedia1.AdzoneName : String.Empty;
config.DyMediaNick2 = dyMedia2 != null ? dyMedia2.AdzoneName : String.Empty;
config.DyMediaId1 = dyMedia1 != null ? dyMedia1.Id : 0;
config.DyMediaId2 = dyMedia2 != null ? dyMedia2.Id : 0;
var jdMedia1 = Robot.JdMediaId1 > 0 ? Db.GetJdMedia(Robot.JdMediaId1) : null;
var jdMedia2 = Robot.JdMediaId2 > 0 ? Db.GetJdMedia(Robot.JdMediaId2) : null;
var jdLianmeng1 = jdMedia1 != null ? Db.GetLianmeng(jdMedia1.LianmengId) : null;
var jdLianmeng2 = jdMedia2 != null ? Db.GetLianmeng(jdMedia2.LianmengId) : null;
config.JdLianmengId1 = jdLianmeng1 != null ? jdLianmeng1.Id : 0;
config.JdLianmengId2 = jdLianmeng2 != null ? jdLianmeng1.Id : 0;
config.JdLianmengNick1 = jdLianmeng1 != null ? jdLianmeng1.Showname : String.Empty;
config.JdLianmengNick2 = jdLianmeng2 != null ? jdLianmeng2.Showname : String.Empty;
config.JdMediaNick1 = jdMedia1 != null ? jdMedia1.AdzoneName : String.Empty;
config.JdMediaNick2 = jdMedia2 != null ? jdMedia2.AdzoneName : String.Empty;
config.JdMediaId1 = jdMedia1 != null ? jdMedia1.Id : 0;
config.JdMediaId2 = jdMedia2 != null ? jdMedia2.Id : 0;
var wphMedia1 = Robot.WphMediaId1 > 0 ? Db.GetWphMedia(Robot.WphMediaId1) : null;
var wphMedia2 = Robot.WphMediaId2 > 0 ? Db.GetWphMedia(Robot.WphMediaId2) : null;
var wphLianmeng1 = wphMedia1 != null ? Db.GetLianmeng(wphMedia1.LianmengId) : null;
var wphLianmeng2 = wphMedia1 != null ? Db.GetLianmeng(wphMedia2.LianmengId) : null;
config.WphLianmengId1 = wphLianmeng1 != null ? wphLianmeng1.Id : 0;
config.WphLianmengId2 = wphLianmeng2 != null ? wphLianmeng1.Id : 0;
config.WphLianmengNick1 = wphLianmeng1 != null ? wphLianmeng1.Showname : String.Empty;
config.WphLianmengNick2 = wphLianmeng2 != null ? wphLianmeng2.Showname : String.Empty;
config.WphMediaNick1 = wphMedia1 != null ? wphMedia1.AdzoneName : String.Empty;
config.WphMediaNick2 = wphMedia2 != null ? wphMedia2.AdzoneName : String.Empty;
config.WphMediaId1 = wphMedia1 != null ? wphMedia1.Id : 0;
config.WphMediaId2 = wphMedia2 != null ? wphMedia2.Id : 0;
var pddMedia1 = Robot.PddMediaId1 > 0 ? Db.GetPddMedia(Robot.PddMediaId1) : null;
var pddMedia2 = Robot.PddMediaId2 > 0 ? Db.GetPddMedia(Robot.PddMediaId2) : null;
var pddLianmeng1 = pddMedia1 != null ? Db.GetLianmeng(pddMedia1.LianmengId) : null;
var pddLianmeng2 = pddMedia2 != null ? Db.GetLianmeng(pddMedia2.LianmengId) : null;
config.PddLianmengId1 = pddLianmeng1 != null ? pddLianmeng1.Id : 0;
config.PddLianmengId2 = pddLianmeng2 != null ? pddLianmeng1.Id : 0;
config.PddLianmengNick1 = pddLianmeng1 != null ? pddLianmeng1.Showname : String.Empty;
config.PddLianmengNick2 = pddLianmeng2 != null ? pddLianmeng2.Showname : String.Empty;
config.PddMediaNick1 = pddMedia1 != null ? pddMedia1.AdzoneName : String.Empty;
config.PddMediaNick2 = pddMedia2 != null ? pddMedia2.AdzoneName : String.Empty;
config.PddMediaId1 = pddMedia1 != null ? pddMedia1.Id : 0;
config.PddMediaId2 = pddMedia2 != null ? pddMedia2.Id : 0;
var snLianmeng1 = Robot.SnLianmengId1 > 0 ? Db.GetLianmeng(Robot.SnLianmengId1) : null;
var snLianmeng2 = Robot.SnLianmengId2 > 0 ? Db.GetLianmeng(Robot.SnLianmengId2) : null;
config.SnLianmengId1 = snLianmeng1 != null ? snLianmeng1.Id : 0;
config.SnLianmengId2 = snLianmeng2 != null ? snLianmeng1.Id : 0;
config.SnLianmengNick1 = snLianmeng1 != null ? snLianmeng1.Showname : String.Empty;
config.SnLianmengNick2 = snLianmeng2 != null ? snLianmeng2.Showname : String.Empty;
var mtMedia1 = Robot.MtMediaId1 > 0 ? Db.GetMtMedia(Robot.MtMediaId1) : null;
var mtMedia2 = Robot.MtMediaId2 > 0 ? Db.GetMtMedia(Robot.MtMediaId2) : null;
var mtLianmeng1 = mtMedia1 != null ? Db.GetLianmeng(mtMedia1.LianmengId) : null;
var mtLianmeng2 = mtMedia2 != null ? Db.GetLianmeng(mtMedia2.LianmengId) : null;
config.MtLianmengId1 = mtLianmeng1 != null ? mtLianmeng1.Id : 0;
config.MtLianmengId2 = mtLianmeng2 != null ? mtLianmeng1.Id : 0;
config.MtLianmengNick1 = mtLianmeng1 != null ? mtLianmeng1.Showname : String.Empty;
config.MtLianmengNick2 = mtLianmeng2 != null ? mtLianmeng2.Showname : String.Empty;
config.MtMediaNick1 = mtMedia1 != null ? mtMedia1.AdzoneName : String.Empty;
config.MtMediaNick2 = mtMedia2 != null ? mtMedia2.AdzoneName : String.Empty;
config.MtMediaId1 = mtMedia1 != null ? mtMedia1.Id : 0;
config.MtMediaId2 = mtMedia2 != null ? mtMedia2.Id : 0;
config.ConfigRebateName = Robot.ConfigRebateId>0? Db.Queryable<ConfigData>().Where(f => f.Id == Robot.ConfigRebateId).Select(f=>f.Name).First():String.Empty;
config.ConfigReplyName = Robot.ConfigReplyId > 0 ? Db.Queryable<ConfigData>().Where(f => f.Id == Robot.ConfigReplyId).Select(f => f.Name).First() : String.Empty;
config.ConfibBaseName = Robot.ConfigBaseId > 0 ? Db.Queryable<ConfigData>().Where(f => f.Id == Robot.ConfigBaseId).Select(f => f.Name).First() : String.Empty;
config.ConfigBaseId = Robot.ConfigBaseId;
config.ConfigRebateId = Robot.ConfigRebateId;
config.ConfigReplyId = Robot.ConfigReplyId;
return PutData(config);
}
/// <summary>
/// 保存配置
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult SetConfig()
{
var Id = GetInt("RobotId", true);
var Robot = Db.Queryable<Robot>().Single(f => f.Id == Id);
if (Robot == null) return PutData("保存失败,找不到该机器人信息!");
Robot.ConfigBaseId = GetInt("ConfigBaseId",true);
Robot.ConfigRebateId = GetInt("ConfigRebateId", true);
Robot.ConfigReplyId = GetInt("ConfigReplyId", true);
Robot.TbMediaId1 = GetInt("TbMediaId1",true);
Robot.TbMediaId2 = GetInt("TbMediaId2", true);
Robot.DyMediaId1 = GetInt("DyMediaId1", true);
Robot.DyMediaId2 = GetInt("DyMediaId2", true);
Robot.JdMediaId1 = GetInt("JdMediaId1", true);
Robot.JdMediaId1 = GetInt("JdMediaId2", true);
Robot.MtMediaId1 = GetInt("MtMediaId1", true);
Robot.MtMediaId2 = GetInt("MtMediaId2", true);
Robot.WphMediaId1 = GetInt("WphMediaId1", true);
Robot.WphMediaId2 = GetInt("WphMediaId2", true);
Robot.PddMediaId1 = GetInt("PddMediaId1", true);
Robot.PddMediaId2 = GetInt("PddMediaId2", true);
Robot.SnLianmengId1 = GetInt("SnLianmengId1", true);
Robot.SnLianmengId2 = GetInt("SnLianmengId2", true);
Db.Save(Robot);
Client.SendClientMsg(Robot.Id, DeviceMessageType., new { RobotId = Robot.Id }); return PutSuccess;
}
/// <summary>
/// 获取联盟
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetLianmengs()
{
var Keyword = GetString("Keyword");
var LianmengType = GetEnum<LianmengType>("LianmengType",true);
var exp = Expressionable.Create<Lianmeng>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.Nickname.Contains(Keyword) || f.Username.Contains(Keyword));
}
exp.And(f=>f.LianmengType == LianmengType);
var Lianmengs = Db.Queryable<Lianmeng>()
.Where(exp.ToExpression())
.Select(f => new NameShow { Id = f.Id, Name = f.Nickname })
.Take(20).
OrderBy(f => f.Id, OrderByType.Desc)
.ToList();
;
return PutData(Lianmengs);
}
/// <summary>
/// 获取联盟
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetMedias()
{
var Keyword = GetString("Keyword");
var LianmengId = GetInt("LianmengId",true);
var lianmeng = Db.GetLianmeng(LianmengId);
if (lianmeng == null) return PutData("查询失败,当前联盟账号不存在!");
switch (lianmeng.LianmengType)
{
case Common.Models.Enums.LianmengType.:
{
var exp = Expressionable.Create<TbMedia>();
exp.And(f => f.LianmengId == LianmengId);
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.AdzoneName.Contains(Keyword) || f.Pid.Contains(Keyword));
}
exp.And(f=>f.IsRemove == false);
var Results = Db.Queryable<TbMedia>()
.Where(exp.ToExpression())
.Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName })
.Take(20)
.OrderBy(f => f.Id, OrderByType.Desc)
.ToList();
return PutData(Results);
}
case Common.Models.Enums.LianmengType.:
{
var exp = Expressionable.Create<JdMedia>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.AdzoneName.Contains(Keyword));
}
exp.And(f => f.LianmengId == LianmengId);
var Results = Db.Queryable<JdMedia>()
.Where(exp.ToExpression())
.Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName })
.Take(20)
.OrderBy(f => f.Id, OrderByType.Desc)
.ToList();
return PutData(Results);
}
case Common.Models.Enums.LianmengType.:
{
var exp = Expressionable.Create<PddMedia>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.AdzoneName.Contains(Keyword));
}
exp.And(f => f.LianmengId == LianmengId);
var Results = Db.Queryable<PddMedia>()
.Where(exp.ToExpression())
.Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName })
.Take(20)
.OrderBy(f => f.Id, OrderByType.Desc)
.ToList();
return PutData(Results);
}
case Common.Models.Enums.LianmengType.:
{
var exp = Expressionable.Create<WphMedia>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.AdzoneName.Contains(Keyword));
}
exp.And(f => f.LianmengId == LianmengId);
var Results = Db.Queryable<WphMedia>()
.Where(exp.ToExpression())
.Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName })
.Take(20)
.OrderBy(f => f.Id, OrderByType.Desc)
.ToList();
return PutData(Results);
}
case Common.Models.Enums.LianmengType.:
return PutData("查询失败,苏宁无需设置推广位!");
case Common.Models.Enums.LianmengType.:
{
var exp = Expressionable.Create<DyMedia>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.AdzoneName.Contains(Keyword));
}
exp.And(f => f.LianmengId == LianmengId);
var Results = Db.Queryable<DyMedia>()
.Where(exp.ToExpression())
.Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName })
.Take(20)
.OrderBy(f => f.Id, OrderByType.Desc)
.ToList();
return PutData(Results);
}
case LianmengType.:
{
var exp = Expressionable.Create<MtMedia>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.AdzoneName.Contains(Keyword));
}
exp.And(f => f.LianmengId == LianmengId);
var Results = Db.Queryable<MtMedia>()
.Where(exp.ToExpression())
.Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName })
.Take(20)
.OrderBy(f => f.Id, OrderByType.Desc)
.ToList();
return PutData(Results);
}
default:
break;
}
return PutError;
}
/// <summary>
/// 获取配置表
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetConfigNames()
{
var Keyword = GetString("Keyword");
var ConfigType = GetEnum<ConfigType>("ConfigType", true);
var exp = Expressionable.Create<ConfigData>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.Name.Contains(Keyword));
}
exp.And(f=>f.Type == ConfigType);
var result = Db.Queryable<ConfigData>()
.Where(exp.ToExpression())
.Select(f=>new NameShow{ Id = f.Id,Name = f.Name })
.Take(20)
.OrderBy(f=>f.Id, OrderByType.Desc)
.ToList();
return PutData(result);
}
}
}