233 lines
8.5 KiB
C#
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|