update 通知公告显示优化
This commit is contained in:
@@ -5536,6 +5536,12 @@
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Core.Service.Notice.SysNoticeService.GetUnreadCount">
|
||||
<summary>
|
||||
获取接收到的通知公告总数
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Core.Service.Notice.SysNoticeService.UpdatePublicInfo(Ewide.Core.SysNotice)">
|
||||
<summary>
|
||||
更新发布信息
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using Furion.DatabaseAccessor;
|
||||
using Dapper;
|
||||
using Ewide.Core.Extension;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor.Extensions;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.DynamicApiController;
|
||||
@@ -9,6 +11,7 @@ using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service.Notice
|
||||
@@ -26,15 +29,20 @@ namespace Ewide.Core.Service.Notice
|
||||
|
||||
private readonly ISysNoticeUserService _sysNoticeUserService;
|
||||
|
||||
private readonly IDapperRepository _dapperRepository;
|
||||
|
||||
|
||||
public SysNoticeService(IRepository<SysNotice> sysNoticeRep,
|
||||
IRepository<SysNoticeUser> sysNoticeUserRep,
|
||||
IUserManager userManager,
|
||||
ISysNoticeUserService sysNoticeUserService)
|
||||
ISysNoticeUserService sysNoticeUserService, IDapperRepository dapperRepository)
|
||||
{
|
||||
_sysNoticeRep = sysNoticeRep;
|
||||
_sysNoticeUserRep = sysNoticeUserRep;
|
||||
_userManager = userManager;
|
||||
_sysNoticeUserService = sysNoticeUserService;
|
||||
|
||||
_dapperRepository = dapperRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -150,7 +158,6 @@ namespace Ewide.Core.Service.Notice
|
||||
var noticeUserRead = new NoticeUserRead
|
||||
{
|
||||
UserId = u.UserId,
|
||||
UserName = _userManager.Name,
|
||||
ReadStatus = u.ReadStatus,
|
||||
ReadTime = u.ReadTime
|
||||
};
|
||||
@@ -158,18 +165,17 @@ namespace Ewide.Core.Service.Notice
|
||||
});
|
||||
}
|
||||
var noticeResult = notice.Adapt<NoticeDetailOutput>();
|
||||
noticeResult.NoticeUserIdList = noticeUserIdList;
|
||||
noticeResult.NoticeUserReadInfoList = noticeUserReadInfoList;
|
||||
if (_userManager.SuperAdmin)
|
||||
{
|
||||
noticeResult.NoticeUserIdList = noticeUserIdList;
|
||||
noticeResult.NoticeUserReadInfoList = noticeUserReadInfoList;
|
||||
}
|
||||
// 如果该条通知公告为已发布,则将当前用户的该条通知公告设置为已读
|
||||
if (notice.Status == (int)NoticeStatus.PUBLIC)
|
||||
await _sysNoticeUserService.Read(notice.Id, _userManager.UserId, (int)NoticeUserStatus.READ);
|
||||
return noticeResult;
|
||||
}
|
||||
[HttpGet("/sysNotice/detailById")]
|
||||
public async Task<SysNotice> GetNotice(string id)
|
||||
{
|
||||
return await _sysNoticeRep.FirstOrDefaultAsync(u => u.Id == id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改通知公告状态
|
||||
/// </summary>
|
||||
@@ -201,18 +207,45 @@ namespace Ewide.Core.Service.Notice
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("/sysNotice/received")]
|
||||
public async Task<dynamic> ReceivedNoticePageList([FromQuery] NoticeInput input)
|
||||
[HttpPost("/sysNotice/received")]
|
||||
public async Task<dynamic> ReceivedNoticePageList([FromBody] NoticeInput input)
|
||||
{
|
||||
var searchValue = !string.IsNullOrEmpty(input.SearchValue?.Trim());
|
||||
var notices = await _sysNoticeRep.DetachedEntities.Join(_sysNoticeUserRep.DetachedEntities, u => u.Id, e => e.NoticeId, (u, e) => new { u, e })
|
||||
.Where(u => u.e.UserId == _userManager.UserId)
|
||||
.Where(searchValue, u => EF.Functions.Like(u.u.Title, $"%{input.SearchValue.Trim()}%") || EF.Functions.Like(u.u.Content, $"%{input.SearchValue.Trim()}%"))
|
||||
.Where(input.Type > 0, u => u.u.Type == input.Type)
|
||||
.Where(u => u.u.Status != (int)NoticeStatus.DELETED)
|
||||
.Select(u => u.u.Adapt<NoticeReceiveOutput>())
|
||||
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
||||
return PageDataResult<NoticeReceiveOutput>.PageResult(notices);
|
||||
var sql = @"SELECT
|
||||
SN.*,
|
||||
SU.Avatar
|
||||
FROM sys_notice SN
|
||||
LEFT JOIN sys_notice_user SNU ON SN.Id = SNU.NoticeId
|
||||
LEFT JOIN sys_user SU ON SN.PublicUserId = SU.Id
|
||||
WHERE SNU.UserId = @UserId AND SN.Status <> @Status";
|
||||
|
||||
var data = await _dapperRepository.QueryPageDataDynamic(
|
||||
sql,
|
||||
input,
|
||||
new
|
||||
{
|
||||
_userManager.UserId,
|
||||
Status = (int)NoticeStatus.DELETED
|
||||
}
|
||||
);
|
||||
|
||||
data.Items = data.Items.Select(p => {
|
||||
var r = p.Adapt<dynamic>();
|
||||
r.Content = Regex.Replace(r.Content, @"<\/?.+?\/?>", "").Replace("\r\n", "");
|
||||
return r;
|
||||
});
|
||||
|
||||
return data;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取接收到的通知公告总数
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("/sysNotice/unread")]
|
||||
public async Task<int> GetUnreadCount()
|
||||
{
|
||||
return await _sysNoticeUserRep.Where(u => u.UserId == _userManager.UserId && u.ReadStatus == (int)NoticeUserStatus.UNREAD).CountAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -48,18 +48,7 @@ namespace Ewide.Core.Service.Notice
|
||||
}.InsertAsync();
|
||||
}
|
||||
}
|
||||
[HttpGet("/NoticeUser/getCount")]
|
||||
public async Task<int> GetCount()
|
||||
{
|
||||
return await _sysNoticeUserRep.Where(u => u.UserId == _userManager.UserId && u.ReadStatus == (int)NoticeUserStatus.UNREAD).CountAsync();
|
||||
}
|
||||
[HttpGet("/NoticeUser/GetNoticeInfo")]
|
||||
public async Task<List<SysNotice>> GetNoticeInfo()
|
||||
{
|
||||
var noticeIdList = await _sysNoticeUserRep.Where(u => u.UserId == _userManager.UserId && u.ReadStatus == (int)NoticeUserStatus.UNREAD).Select(p => p.NoticeId).ToListAsync();
|
||||
|
||||
return await _sysNoticeRep.Where(s => noticeIdList.Contains(s.Id)).ToListAsync();
|
||||
}
|
||||
/// <summary>
|
||||
/// 更新
|
||||
/// </summary>
|
||||
|
||||
@@ -97,7 +97,10 @@
|
||||
"sysFileInfo:preview",
|
||||
"sysUser:updateInfo",
|
||||
"sysUser:updatePwd",
|
||||
"sysUser:updateAvatar"
|
||||
"sysUser:updateAvatar",
|
||||
"sysNotice:received",
|
||||
"sysNotice:unread",
|
||||
"sysNotice:detail"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user