using Common.Models.Enums;
using Common.Models.JsonModels;
using Common.Models.UnqTables;
using Newtonsoft.Json;
using Server.MyClass.Views;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.Http;
namespace Server.Controllers.OnlineTools
{
public class PyqController : DefaultController
{
///
/// 获取机器人信息
///
///
[HttpPost, ErrorFilter]
public WebResult GetRobotInfo()
{
var PageIndex = GetInt("PageIndex", true);
var PageSize = GetInt("PageSize", true);
var tNumber = 0;
var Keyword = GetString("Keyword");
var exp = Expressionable.Create();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.Nickname.Contains(Keyword));
}
var DataList = Db.Queryable().Where(exp.ToExpression())
.Select(m => new RobotInfo { RobotId = m.Id, RobotName = m.Nickname })
.ToPageList(PageIndex, PageSize, ref tNumber);
var res = new PageResult(DataList, tNumber, PageSize, PageIndex);
return PutData(res);
}
///
/// 上传图片
///
///
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}" });
}
///
/// 删除图片
///
///
[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("删除失败,此文件不存在或无法识别路径");
}
///
/// 添加到发布朋友圈
///
///
public WebResult AddPyqPublish()
{
var Name = GetString("Name");
var ResIds = GetIntList("ResIds");
var Copywriting = GetString("Copywriting");
var Comment = GetString("Comment");
var SendTime = GetTime("SendTime");
var RobotIds = GetIntList("RobotIds");
var IsSendAll = GetBoolean("IsSendAll");
if (SendTime == DateTime.MinValue)
SendTime = DateTime.Now;
if (IsSendAll)
{
RobotIds.Clear();
RobotIds = Db.Queryable().Select(f => f.Id).ToList();
}
else if (RobotIds.Count <= 0) return PutData("添加失败,至少需要选择一个机器人");
if (RobotIds.Count == 0)
{
return PutData("添加失败,暂未发现有任何可用的机器人");
}
foreach (var RobotId in RobotIds)
{
var publish = new PyqPublish()
{
Name = Name,
SendTime = SendTime,
Comment = Comment,
Copywriting = Copywriting,
ResIds = ResIds.ToArray(),
CreateTime = DateTime.Now,
RobotId = RobotId
};
publish.Id = Db.Insertable(publish).ExecuteReturnIdentity();
Client.SendClientMsg(RobotId, DeviceMessageType.添加定时发送朋友圈, new { Id = publish.Id });
}
return PutSuccess;
}
///
/// 删除朋友圈任务
///
///
public WebResult DelSendRecord()
{
var Id = GetInt("Id", true);
var pyqPublish = Db.Queryable().First(p => p.Id == Id);
if (pyqPublish != null)
{
Client.SendClientMsg(pyqPublish.RobotId, DeviceMessageType.删除定时发送朋友圈, new { Id = Id });
return Db.Deleteable(pyqPublish).ExecuteCommandHasChange() ? PutSuccess : PutError;
}
return PutError;
}
///
/// 查询发送记录
///
///
[HttpPost, ErrorFilter]
public WebResult GetSendRecord()
{
var RobotId = GetInt("RobotId");
var Keyword = GetString("Keyword");
var exp = Expressionable.Create();
//var pp = Db.Queryable().First();
if (RobotId > 0)
exp.And(f => f.RobotId == RobotId);
if (!string.IsNullOrEmpty(Keyword))
exp.And(f => f.Name.Contains(Keyword));
var PageIndex = GetInt("PageIndex", true);
var PageSize = GetInt("PageSize", true);
var tNumber = 0;
var DataList = Db.Queryable()
.LeftJoin((f, r) => f.RobotId == r.Id)
.Where(exp.ToExpression())
.Select((f, r) => new PyqPublishShow
{
Id = f.Id,
Name = f.Name,
RobotId = f.RobotId,
RobotNickname = r.Nickname,
SendTime = f.SendTime,
IsSend = f.IsSend,
RobotUserName = r.Username,
UserType = r.UserType,
ResIds = f.ResIds,
Comment = f.Comment,
Copywriting = f.Copywriting
})
.ToPageList(PageIndex, PageSize, ref tNumber);
var res = new PageResult(DataList, tNumber, PageSize, PageIndex);
return PutData(res);
}
}
}