using Crm.Core.Entity.MsgTool;
using Crm.Core.Entity.MsgTool.ResultView;
using Crm.Core.MsgTool.Domain.Dto;
using Crm.Core.MsgTool.Domain.Impl;
using System.Security.Cryptography;
using System.Text;
namespace Crm.Core.MsgTool.WebApi.Controllers
{
public class MsgToolController : BaseController
{
private readonly IMsgToolDomain _msgToolDomain;
public MsgToolController(IMsgToolDomain msgToolDomain)
{
_msgToolDomain = msgToolDomain;
}
///
/// 根据计划id创建任务
///
///
///
[HttpPost("TasksByPlan")]
public async Task CreateTasksByPlan([FromBody] CreateTasksByPlanDto dto)
{
await _msgToolDomain.CreateTasksByPlan(dto);
}
///
/// 根据任务id创建命令
///
///
///
[HttpPost("TaskCmdByTaskId")]
public async Task CreateTaskCmdByTaskId([FromBody] CreateTaskCmdByTaskIdDto dto)
{
await _msgToolDomain.CreateTaskCmdByTaskId(dto);
}
///
/// 修改任务状态
///
///
///
[HttpPost("ChangeTaskStatus")]
public async Task ChangeTaskStatus([FromBody] ChangeTaskStatusDto dto)
{
await _msgToolDomain.ChangeTaskStatus(dto);
return true;
}
///
/// 获取OSS临时访问凭证
///
///
[HttpPost("GetOSSAccess")]
public async Task GetOSSAccess() {
OssAccessModel res = new OssAccessModel();
var Credentials= await _msgToolDomain.GetOSSAccess();
res.region = "oss-cn-shanghai";
res.accessKeyId = Credentials.AccessKeyId;
res.accessKeySecret = Credentials.AccessKeySecret;
res.stsToken = Credentials.SecurityToken;
res.bucket = "wxcrmbucket";
return res;
}
///
/// 创建任务
///
///
[HttpPost("CreateTask")]
public async Task CreateTask([FromBody] MsgToolTaskCreateDto dto) {
var task=await _msgToolDomain.CreateTask(dto);
return task;
}
///
/// 移动端 获取任务发送记录
///
///
[HttpPost("GetMsgToolSendLog")]
public async Task> GetMsgToolSendLog([FromBody] MsgToolTaskSendLogDto dto) {
var log = await _msgToolDomain.GetMsgToolTaskSendLog(dto);
return log;
}
///
/// 软件获取任务详情
///
///
///
[HttpPost("GetMsgTaskInfo")]
public async Task GetMsgTaskInfo([FromBody] GetTaskCmdDto dto)
{
var res = new MsgTaskInfo();
res.msgToolTaskCmd = await _msgToolDomain.GetMsgToolTaskCmd(dto);
if (res.msgToolTaskCmd != null)
{
res.msgToolTaskCmdDetails = await _msgToolDomain.GetMsgToolTaskCmdDetail(res.msgToolTaskCmd.PKID);
}
return res;
}
///
/// 获取执行频率配置
///
///
[HttpPost("GetTaskTimeConfig")]
public async Task> GetTaskTimeConfig()
{
return await _msgToolDomain.GetMsgConfig();
}
///
/// 软件 反馈任务执行情况
///
///
///
[HttpPost("PushMsgTaskRes")]
public async Task PushMsgTaskRes([FromBody] PushTaskResDto dto)
{
await _msgToolDomain.UpdateTaskStatus(dto);
return true;
}
///
/// 根据计划id取消任务
///
///
///
[HttpPost("CancelTasksByPlan")]
public async Task CancelTasksByPlan([FromBody] CreateTasksByPlanDto dto)
{
await _msgToolDomain.CancelTasksByPlan(dto);
}
///
/// 获取分群列表
///
///
[HttpGet("UserGroupList")]
public async Task> GetUserGroupList([FromQuery] decimal eid)
{
return await _msgToolDomain.GetUserGroupList(eid);
}
///
/// 获取执行任务列表
///
///
///
[HttpGet("ExecuteTaskPage")]
public async Task> SearchExecuteTaskPage([FromQuery] SearchExecuteTaskDto dto)
{
return await _msgToolDomain.SearchExecuteTaskPage(dto);
}
///
/// 获取任务列表
///
///
///
[HttpGet("MsgToolTaskPage")]
public async Task> SearchMsgToolTaskPage([FromQuery] SearchMsgToolTaskDto dto)
{
return await _msgToolDomain.SearchMsgToolTaskPage(dto);
}
///
/// 根据任务id取消任务指令
///
///
///
[HttpPost("CancelTaskCmd")]
public async Task CancelTaskCmd([FromBody] CancelTaskCmdByTaskDto dto)
{
await _msgToolDomain.CancelTaskCmd(dto);
}
///
/// 查看定时任务
///
///
[HttpGet("TimingTasks")]
public async Task> GetTimingTasks()
{
return await _msgToolDomain.GetTimingTasks();
}
///
/// 查看群发人员详情
///
///
[HttpGet("TaskCmdDetail")]
public async Task> GetTaskCmdDetail([FromQuery] SearchMsgToolCmdDetailDto queryDto)
{
return await _msgToolDomain.GetTaskCmdDetail(queryDto);
}
///
/// 根据任务id取消任务指令
///
///
///
[HttpPost("SetCmdDetailEnable")]
public async Task SetCmdDetailEnable([FromBody] SetCmdDetailEnableDto data)
{
await _msgToolDomain.SetCmdDetailEnable(data);
}
///
/// 获取命令是否能执行
///
///
///
[HttpGet("GetExecCmdEnable")]
public async Task GetExecCmdEnable([FromQuery] SerachCmdEnableDto dto)
{
await _msgToolDomain.GetExecCmdEnable(dto);
}
///
/// 获取版本号信息
///
///
///
[HttpGet("GetMsgToolVersion")]
public async Task GetMsgToolVersion()
{
return await _msgToolDomain.GetMsgToolVersion();
}
///
/// 获取版本号信息
///
///
///
[HttpPost("SetMsgToolVersion")]
public async Task SetMsgToolVersion([FromBody] MsgToolVersionModel model)
{
return await _msgToolDomain.SetMsgToolVersion(model);
}
///
/// 获取pc软件最新版本号
///
///
///
[HttpGet("GetPcVersion")]
public async Task GetPcVersion()
{
var dirPath = $"{Directory.GetCurrentDirectory()}/wwwroot/MsgTool/";
var versionList = Directory.GetDirectories(dirPath);
var maxVersion = "";
for (int i = 0; i < versionList.Length; i++)
{
var item = versionList[i];
var version = item.Substring(item.LastIndexOf("/") + 1, item.Length - item.LastIndexOf("/") - 1);
if (!version.Contains(".")) continue;
if (maxVersion == "") maxVersion = version;
for (int j = 0; j < maxVersion.Split(".").Length; j++)
{
int t = 0, nt = 0;
if ((j + 1) > version.Split(".").Length) continue;//长度不一致直接跳过
if (int.TryParse(maxVersion.Split(".")[j], out t) && int.TryParse(version.Split(".")[j], out nt))
{
if (nt > t)
{
maxVersion = version;
break;
}
}
else
{
break;
}
}
}
return maxVersion;
}
///
/// 获取需要更新的文件信息
///
/// 版本号/版本文件夹全名
///
[HttpGet("GetVersionFile")]
public async Task> GetVersionFile(string Version)
{
IList res = new List();
var dirPath = $"{Directory.GetCurrentDirectory()}/wwwroot/MsgTool/{Version}";
if (Directory.Exists(dirPath))
{
var files = findFiles(dirPath);
foreach (var filepath in files)
{
VersionFileItem fileitem = new VersionFileItem();
FileStream file = new FileStream(filepath, System.IO.FileMode.Open);
fileitem.filename = file.Name.Substring(file.Name.LastIndexOf("\\") + 1, file.Name.Length - file.Name.LastIndexOf("\\") - 1);
fileitem.size = file.Length;
fileitem.path = filepath.Replace("\\", "/").Replace(dirPath.Replace("\\", "/") + "/", "");
fileitem.downloadUrl = $"wwwroot/MsgTool/{Version}/{fileitem.path}";
#region md5
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
fileitem.md5 = sb.ToString();
#endregion md5
res.Add(fileitem);
}
}
Log.Information($"files.Length:{res.Count}");
return res;
}
private List findFiles(string dirPath)
{
List files = new List();
files = Directory.GetFiles(dirPath).ToList();
var directory = Directory.GetDirectories(dirPath);
if (directory.Any())
{
foreach (var dp in directory)
{
files.AddRange(findFiles(dp));
}
}
return files;
}
#region
///
/// 获取客服企微
///
///
///
[HttpGet("GetWxWorkUser")]
public async Task> GetWxWorkUser([FromQuery] EidQueryDto dto)
{
return await _msgToolDomain.GetWxWorkUser(dto);
}
///
/// 获取客户企微
///
///
///
[HttpGet("GetOutWorkUser")]
public async Task GetOutWorkUser([FromQuery] OutExtuserQueryDto dto)
{
return await _msgToolDomain.GetOutWorkUser(dto);
}
///
/// todo
///
///
[HttpPost("GetUploadInfo")]
public async Task GetUploadInfo()
{
return "";
}
#endregion
}
}