376 lines
13 KiB
C#
376 lines
13 KiB
C#
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据计划id创建任务
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("TasksByPlan")]
|
|
public async Task CreateTasksByPlan([FromBody] CreateTasksByPlanDto dto)
|
|
{
|
|
await _msgToolDomain.CreateTasksByPlan(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据任务id创建命令
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("TaskCmdByTaskId")]
|
|
public async Task CreateTaskCmdByTaskId([FromBody] CreateTaskCmdByTaskIdDto dto)
|
|
{
|
|
await _msgToolDomain.CreateTaskCmdByTaskId(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改任务状态
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("ChangeTaskStatus")]
|
|
public async Task<bool> ChangeTaskStatus([FromBody] ChangeTaskStatusDto dto)
|
|
{
|
|
await _msgToolDomain.ChangeTaskStatus(dto);
|
|
return true;
|
|
}
|
|
/// <summary>
|
|
/// 获取OSS临时访问凭证
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("GetOSSAccess")]
|
|
public async Task<OssAccessModel> 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;
|
|
}
|
|
/// <summary>
|
|
/// 创建任务
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("CreateTask")]
|
|
public async Task<MsgToolTask> CreateTask([FromBody] MsgToolTaskCreateDto dto) {
|
|
var task=await _msgToolDomain.CreateTask(dto);
|
|
return task;
|
|
}
|
|
/// <summary>
|
|
/// 移动端 获取任务发送记录
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("GetMsgToolSendLog")]
|
|
public async Task<List<MsgToolSendLog>> GetMsgToolSendLog([FromBody] MsgToolTaskSendLogDto dto) {
|
|
var log = await _msgToolDomain.GetMsgToolTaskSendLog(dto);
|
|
return log;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 软件获取任务详情
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("GetMsgTaskInfo")]
|
|
public async Task<MsgTaskInfo> 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取执行频率配置
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("GetTaskTimeConfig")]
|
|
public async Task<IList<ConfigItem>> GetTaskTimeConfig()
|
|
{
|
|
return await _msgToolDomain.GetMsgConfig();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 软件 反馈任务执行情况
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("PushMsgTaskRes")]
|
|
public async Task<bool> PushMsgTaskRes([FromBody] PushTaskResDto dto)
|
|
{
|
|
await _msgToolDomain.UpdateTaskStatus(dto);
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据计划id取消任务
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("CancelTasksByPlan")]
|
|
public async Task CancelTasksByPlan([FromBody] CreateTasksByPlanDto dto)
|
|
{
|
|
await _msgToolDomain.CancelTasksByPlan(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取分群列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("UserGroupList")]
|
|
public async Task<List<UserGroupDto>> GetUserGroupList([FromQuery] decimal eid)
|
|
{
|
|
return await _msgToolDomain.GetUserGroupList(eid);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取执行任务列表
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("ExecuteTaskPage")]
|
|
public async Task<PageResult<MsgToolExecuteDto>> SearchExecuteTaskPage([FromQuery] SearchExecuteTaskDto dto)
|
|
{
|
|
return await _msgToolDomain.SearchExecuteTaskPage(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取任务列表
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("MsgToolTaskPage")]
|
|
public async Task<PageResult<MsgToolTaskDto>> SearchMsgToolTaskPage([FromQuery] SearchMsgToolTaskDto dto)
|
|
{
|
|
return await _msgToolDomain.SearchMsgToolTaskPage(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据任务id取消任务指令
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("CancelTaskCmd")]
|
|
public async Task CancelTaskCmd([FromBody] CancelTaskCmdByTaskDto dto)
|
|
{
|
|
await _msgToolDomain.CancelTaskCmd(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查看定时任务
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("TimingTasks")]
|
|
public async Task<List<MsgToolTaskEventDto>> GetTimingTasks()
|
|
{
|
|
return await _msgToolDomain.GetTimingTasks();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查看群发人员详情
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("TaskCmdDetail")]
|
|
public async Task<PageResult<CmdDetailDto>> GetTaskCmdDetail([FromQuery] SearchMsgToolCmdDetailDto queryDto)
|
|
{
|
|
return await _msgToolDomain.GetTaskCmdDetail(queryDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据任务id取消任务指令
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("SetCmdDetailEnable")]
|
|
public async Task SetCmdDetailEnable([FromBody] SetCmdDetailEnableDto data)
|
|
{
|
|
await _msgToolDomain.SetCmdDetailEnable(data);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取命令是否能执行
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetExecCmdEnable")]
|
|
public async Task GetExecCmdEnable([FromQuery] SerachCmdEnableDto dto)
|
|
{
|
|
await _msgToolDomain.GetExecCmdEnable(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取版本号信息
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetMsgToolVersion")]
|
|
public async Task<MsgToolVersionModel> GetMsgToolVersion()
|
|
{
|
|
return await _msgToolDomain.GetMsgToolVersion();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取版本号信息
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("SetMsgToolVersion")]
|
|
public async Task<bool> SetMsgToolVersion([FromBody] MsgToolVersionModel model)
|
|
{
|
|
return await _msgToolDomain.SetMsgToolVersion(model);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取pc软件最新版本号
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetPcVersion")]
|
|
public async Task<string> 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取需要更新的文件信息
|
|
/// </summary>
|
|
/// <param name="Version">版本号/版本文件夹全名</param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetVersionFile")]
|
|
public async Task<IList<VersionFileItem>> GetVersionFile(string Version)
|
|
{
|
|
IList<VersionFileItem> res = new List<VersionFileItem>();
|
|
|
|
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<string> findFiles(string dirPath)
|
|
{
|
|
List<string> files = new List<string>();
|
|
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
|
|
|
|
/// <summary>
|
|
/// 获取客服企微
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetWxWorkUser")]
|
|
public async Task<List<WxWorkModel>> GetWxWorkUser([FromQuery] EidQueryDto dto)
|
|
{
|
|
return await _msgToolDomain.GetWxWorkUser(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取客户企微
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetOutWorkUser")]
|
|
public async Task<wwExtuserModel> GetOutWorkUser([FromQuery] OutExtuserQueryDto dto)
|
|
{
|
|
return await _msgToolDomain.GetOutWorkUser(dto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// todo
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("GetUploadInfo")]
|
|
public async Task<string> GetUploadInfo()
|
|
{
|
|
return "";
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |