using Microsoft.AspNetCore.Mvc; using ZR.Model; using ZR.Model.Dto; //创建时间:2024-05-08 namespace ZR.Admin.WebApi.Controllers.System { /// /// 用户系统消息 /// [Route("SysUserMsg")] public class SysUserMsgController : BaseController { /// /// 用户系统消息接口 /// private readonly ISysUserMsgService _SysUserMsgService; public SysUserMsgController(ISysUserMsgService SysUserMsgService) { _SysUserMsgService = SysUserMsgService; } /// /// 查询用户系统消息列表 /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "usermsg:list")] public IActionResult QuerySysUserMsg([FromQuery] SysUserMsgQueryDto parm) { var response = _SysUserMsgService.GetList(parm); return SUCCESS(response); } /// /// 查询我的系统消息 /// /// /// [HttpGet("mylist")] public IActionResult QueryMySysUserMsg([FromQuery] SysUserMsgQueryDto parm) { parm.UserId = HttpContext.GetUId(); var response = _SysUserMsgService.GetList(parm); return SUCCESS(response); } /// /// 查询我的未读消息数 /// /// /// [HttpGet("myMsgNum")] public IActionResult QueryMyUnReadMsg([FromQuery] SysUserMsgQueryDto parm) { parm.UserId = HttpContext.GetUId(); var response = _SysUserMsgService .Queryable() .Where(f => f.IsRead == 0 && f.UserId == parm.UserId) .WithCache(60 * 10) .ToList(); var data = from a in response group a by new { a.MsgType } into grp select new { msgType = grp.Key.MsgType, num = grp.Count(), d = 3 }; var lastSysMsgInfo = _SysUserMsgService .Queryable() .Where(f => f.MsgType == UserMsgType.SYSTEM) .OrderByDescending(x => x.MsgId) .First(); return SUCCESS(new { data, lastSysMsgInfo }); } /// /// 查询用户系统消息详情 /// /// /// [HttpGet("{MsgId}")] [ActionPermissionFilter(Permission = "usermsg:query")] public IActionResult GetSysUserMsg(long MsgId) { var response = _SysUserMsgService.GetInfo(MsgId); var info = response.Adapt(); return SUCCESS(info); } /// /// 添加用户系统消息 /// /// [HttpPost] [ActionPermissionFilter(Permission = "usermsg:add")] [Log(Title = "用户系统消息", BusinessType = BusinessType.INSERT)] public IActionResult AddSysUserMsg([FromBody] SysUserMsgDto parm) { var modal = parm.Adapt().ToCreate(HttpContext); var response = _SysUserMsgService.AddSysUserMsg(modal); return SUCCESS(response); } /// /// 删除用户系统消息 /// /// [HttpDelete("delete/{ids}")] [ActionPermissionFilter(Permission = "usermsg:delete")] [Log(Title = "用户系统消息", BusinessType = BusinessType.DELETE)] public IActionResult DeleteSysUserMsg([FromRoute] string ids) { var idArr = Tools.SplitAndConvert(ids); return ToResponse(_SysUserMsgService.Delete(idArr)); } /// /// 已读消息 /// /// /// /// [HttpPost("read/{msgId}/{msgType}")] [ActionPermissionFilter(Permission = "common")] public IActionResult ReadMsg([FromRoute] long msgId, [FromRoute] UserMsgType msgType) { var userId = HttpContext.GetUId(); var response = _SysUserMsgService.ReadMsg(userId, msgId, msgType); return SUCCESS(response); } /// /// 导出用户系统消息 /// /// [Log(Title = "用户系统消息", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)] [HttpGet("export")] [ActionPermissionFilter(Permission = "usermsg:export")] public IActionResult Export([FromQuery] SysUserMsgQueryDto parm) { parm.PageNum = 1; parm.PageSize = 100000; var list = _SysUserMsgService.ExportList(parm).Result; if (list == null || list.Count <= 0) { return ToResponse(ResultCode.FAIL, "没有要导出的数据"); } var result = ExportExcelMini(list, "用户系统消息", "用户系统消息"); return ExportExcel(result.Item2, result.Item1); } /// /// 清空用户系统消息 /// /// [Log(Title = "用户系统消息", BusinessType = BusinessType.CLEAN)] [ActionPermissionFilter(Permission = "usermsg:delete")] [HttpDelete("clean")] public IActionResult Clear() { if (!HttpContext.IsAdmin()) { return ToResponse(ResultCode.FAIL, "操作失败"); } return SUCCESS(_SysUserMsgService.TruncateSysUserMsg()); } } }