Files
tnb.server/message/Tnb.Message/Service/MessageMonitorService.cs
2023-11-06 19:35:59 +08:00

122 lines
4.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using JNPF.Common.Extension;
using JNPF.Common.Filter;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.LinqBuilder;
using JNPF.Message.Entitys.Dto.MessageMonitor;
using JNPF.Message.Entitys.Entity;
using JNPF.Systems.Entitys.Permission;
using JNPF.Systems.Interfaces.Permission;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace JNPF.Message.Service;
/// <summary>
/// 消息监控
/// 版 本V3.2
/// 版 权拓通智联科技有限公司http://www.tuotong-tech.com
/// 日 期2021-06-01.
/// </summary>
[ApiDescriptionSettings(Tag = "Message", Name = "MessageMonitor", Order = 240)]
[Route("api/message/[controller]")]
public class MessageMonitorService : IDynamicApiController, ITransient
{
private readonly ISqlSugarRepository<MessageMonitorEntity> _repository;
private readonly IUsersService _usersService;
public MessageMonitorService(
ISqlSugarRepository<MessageMonitorEntity> repository,
IUsersService usersService)
{
_repository = repository;
_usersService = usersService;
}
#region Get
/// <summary>
/// 列表.
/// </summary>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpGet("")]
public async Task<dynamic> GetList([FromQuery] MessageMonitorQuery input)
{
var whereLambda = LinqExpression.And<MessageMonitorEntity>();
whereLambda = whereLambda.And(a => a.DeleteMark == null);
var start = new DateTime();
var end = new DateTime();
if (input.endTime != null && input.startTime != null)
{
start = Convert.ToDateTime(string.Format("{0:yyyy-MM-dd 00:00:00}", input.startTime?.TimeStampToDateTime()));
end = Convert.ToDateTime(string.Format("{0:yyyy-MM-dd 23:59:59}", input.endTime?.TimeStampToDateTime()));
whereLambda = whereLambda.And(a => SqlFunc.Between(a.SendTime, start, end));
}
// 关键字用户、IP地址、功能名称
if (!string.IsNullOrEmpty(input.keyword))
whereLambda = whereLambda.And(a => a.Title.Contains(input.keyword));
if (input.messageSource.IsNotEmptyOrNull())
whereLambda = whereLambda.And(a => a.MessageSource.Contains(input.messageSource));
if (input.messageType.IsNotEmptyOrNull())
whereLambda = whereLambda.And(m => m.MessageType.Contains(input.messageType));
var list = await _repository.AsSugarClient().Queryable<MessageMonitorEntity>()
.Where(whereLambda)
.OrderBy(a => a.CreatorTime, OrderByType.Desc)
.OrderBy(a => a.LastModifyTime, OrderByType.Desc)
.Select(a => new MessageMonitorListOutput
{
id = a.Id,
messageType = SqlFunc.Subqueryable<MessageDataTypeEntity>().Where(u => u.Type == "1" && u.EnCode == a.MessageType).Select(u => u.FullName),
messageSource = SqlFunc.Subqueryable<MessageDataTypeEntity>().Where(u => u.Type == "4" && u.EnCode == a.MessageSource).Select(u => u.FullName),
title = a.Title,
sendTime = a.SendTime,
}).ToPagedListAsync(input.currentPage, input.pageSize);
return PageResult<MessageMonitorListOutput>.SqlSugarPageResult(list);
}
/// <summary>
/// 详情.
/// </summary>
/// <returns></returns>
[HttpGet("detail/{id}")]
public async Task<dynamic> GetInfo(string id)
{
return await _repository.AsSugarClient().Queryable<MessageMonitorEntity>().Where(a => a.Id == id && a.DeleteMark == null).Select(a => new MessageMonitorListOutput
{
id = a.Id,
messageType = SqlFunc.Subqueryable<MessageDataTypeEntity>().Where(u => u.Type == "1" && u.EnCode == a.MessageType).Select(u => u.FullName),
messageSource = SqlFunc.Subqueryable<MessageDataTypeEntity>().Where(u => u.Type == "4" && u.EnCode == a.MessageSource).Select(u => u.FullName),
title = a.Title,
sendTime = a.SendTime,
receiveUser = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == SqlFunc.ToString(a.ReceiveUser)).Select(u => SqlFunc.MergeString(u.RealName, "/", u.Account)),
content = a.Content
}).FirstAsync();
}
#endregion
#region POST
/// <summary>
/// 批量删除.
/// </summary>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpDelete("batchRemove")]
public async Task Delete([FromBody] MessageMonitorDelInput input)
{
await _repository.AsDeleteable().In(it => it.Id, input.ids).ExecuteCommandAsync();
}
/// <summary>
/// 一键删除.
/// </summary>
/// <returns></returns>
[HttpDelete("empty")]
public async Task Delete()
{
await _repository.DeleteAsync(x => x.DeleteMark == null);
}
#endregion
}