yz_server/Server/Controllers/OnlineTools/QunfaController.cs

233 lines
8.5 KiB
C#

using Common.Models.Enums;
using Common.Models.SubTables;
using Common.Models.UnqTables;
using Newtonsoft.Json;
using Server.MyClass.Views;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.Http;
namespace Server.Controllers.OnlineTools
{
public class QunfaController : DefaultController
{
/// <summary>
/// 上传图片
/// </summary>
/// <returns></returns>
public WebResult UploadImgUrl()
{
var Img = GetString("Img", true);
var Name = GetString("Name", true);
var fileName = Guid.NewGuid().ToString("N") + Path.GetExtension(Name);
var path = CsharpHttpHelper.HttpExtend.MapFile(fileName, "网站\\Cache\\Images");
Img = Img.Replace("data:image/jpeg;base64,", "");
byte[] bytes = Convert.FromBase64String(Img);
File.WriteAllBytes(path, bytes);
return PutData(new { url = $"http://{Client.InternetIP}/Cache/Images/{fileName}" });
}
/// <summary>
/// 删除图片
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult DeleteImage()
{
var ImgUrl = GetString("ImgUrl", true);
ImgUrl = ImgUrl.Replace('/', '\\');
var reg = Regex.Match(ImgUrl, @"(Cache[\w\W]+)");
if (reg.Success)
{
var path = CsharpHttpHelper.HttpExtend.MapPath("网站\\") + reg.Groups[1].Value;
if (File.Exists(path))
{
File.Delete(path);
return PutSuccess;
}
}
return PutData("删除失败,此文件不存在或无法识别路径");
}
/// <summary>
/// 查询群发任务
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult GetQunfas()
{
var Keyword = GetString("Keyword");
var PageIndex = GetInt("PageIndex", true);
var PageSize = GetInt("PageSize", true);
if (PageSize > 100) PageSize = 100;
var TotalNumber = 0;
var RobotId = GetInt("RobotId");
var exp = Expressionable.Create<Qunfa, Robot>();
if (RobotId != 0)
{
exp.And((q, r) => q.RobotId == RobotId);
}
if (!string.IsNullOrEmpty(Keyword))
{
exp.And((q, r) => q.Name.Contains(Keyword));
}
var DataList = Db.Queryable<Qunfa>()
.LeftJoin<Robot>((q, r) => q.Id == r.Id)
.Where(exp.ToExpression())
.Select((q, r) => new QunfaShow()
{
Id = q.Id,
BuyOrderDay = q.BuyOrderDay,
Content = q.Content,
CreateTime = q.CreateTime,
FinishTime = q.FinishTime,
GroupId = q.GroupId,
Name = q.Name,
NotBuy = q.NotBuy,
NotInvitation = q.NotInvitation,
RobotId = RobotId,
RobotNick = r.Nickname,
SendMaxSleepInterval = q.SendMaxSleepInterval,
SendMinSleepInterval = q.SendMinSleepInterval,
SendNumberInterval = q.SendNumberInterval,
StartTime = q.StartTime,
Status = q.Status,
TodayMaxNumber = q.TodayMaxNumber,
Type = q.Type,
RobotUserName = r.Username,
UserType = r.UserType
})
.ToPageList(PageIndex, PageSize, ref TotalNumber);
return PutData(new PageResult<QunfaShow>(DataList, TotalNumber, PageSize, PageIndex));
}
/// <summary>
/// 新增群发
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult AddQunfa()
{
try
{
Qunfa qunfa = new Qunfa();
qunfa.Name = GetString("Name", true);
qunfa.StartTime = GetTime("StartTime", true);
qunfa.SendNumberInterval = GetInt("SendNumberInterval", true);
qunfa.SendMinSleepInterval = GetInt("SendMinSleepInterval", true);
qunfa.SendMaxSleepInterval = GetInt("SendMaxSleepInterval", true);
qunfa.TodayMaxNumber = GetInt("TodayMaxNumber", true);
qunfa.Type = GetEnum<QunfaType>("Type", true);
switch (qunfa.Type)
{
case QunfaType.:
break;
case QunfaType.:
qunfa.GroupId = GetIntList("GroupId", true);
break;
case QunfaType.:
qunfa.BuyOrderDay = GetInt("BuyOrderDay", true);
break;
case QunfaType.:
qunfa.NotBuy = GetBoolean("NotBuy", true);
qunfa.NotInvitation = GetBoolean("NotInvitation", true);
break;
default:
break;
}
qunfa.Content = GetString("Content", true);
List<int> RobotIds = null;
if (qunfa.Type == QunfaType.)
{
RobotIds = Db.Queryable<Robot>().Select(f => f.Id).ToList();
}
else
{
RobotIds = GetIntList("RobotIds");
}
if (RobotIds != null && RobotIds.Count > 0)
{
foreach (var RobotId in RobotIds)
{
var qf = qunfa.CopyQunfa(RobotId);//克隆一个自己
if (qf.GroupId == null)
{
qf.GroupId = new List<int>();
}
qf.Id = Db.Insertable(qf).ExecuteReturnIdentity();
Client.SendClientMsg(RobotId, DeviceMessageType., new { Id = qf.Id });
}
}
else return PutData("暂未发现,可用的机器人!");
return PutSuccess;
}
catch (Exception ex)
{
return PutData(ex.Message);
}
}
/// <summary>
/// 设置群发任务状态
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult SetQunfaStatus()
{
var QunfaId = GetInt("QunfaId", true);
var Qunfa = Db.Queryable<Qunfa>().Single(f => f.Id == QunfaId);
if (Qunfa == null) return PutData("对不起,任务不存在!");
if (Qunfa.Status == QunfaStatus.) return PutData("该任务已完成,无法修改!");
var Status = GetEnum<QunfaStatus>("QunfaStatus");
Qunfa.Status = Status;
if (Qunfa.Status == QunfaStatus.) Qunfa.FinishTime = DateTime.Now;
Db.Updateable(Qunfa).UpdateColumns(f => new { f.Status, f.FinishTime }).ExecuteCommand();
Client.SendClientMsg(Qunfa.RobotId, DeviceMessageType., new { Id = QunfaId });
return PutSuccess;
}
/// <summary>
/// 删除群发任务
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpPost, ErrorFilter]
public WebResult DelQunfa()
{
var Id = GetInt("Id", true);
var Qunfa = Db.Queryable<Qunfa>().Single(f => f.Id == Id);
if (Qunfa == null) return PutData("删除失败,未找到数据!");
Client.SendClientMsg(Qunfa.RobotId, DeviceMessageType., new { Id = Id });
Db.Deleteable<Qunfa>().Where(f => f.Id == Id).ExecuteCommand();
var TableName = Db.SplitHelper<QunfaHist>().GetTableName(Qunfa.CreateTime);//根据时间获取表名;
Db.Deleteable<QunfaHist>().Where(f => f.QunfaId == Qunfa.Id).SplitTable(tas => tas.InTableNames(TableName)).ExecuteCommand();
return PutSuccess;
}
}
}