update 通知公告显示优化

This commit is contained in:
2021-07-01 22:26:11 +08:00
parent c4c35998a6
commit 850d490a1b
22 changed files with 435 additions and 193 deletions

View File

@@ -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>
更新发布信息

View File

@@ -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>

View File

@@ -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>

View File

@@ -97,7 +97,10 @@
"sysFileInfo:preview",
"sysUser:updateInfo",
"sysUser:updatePwd",
"sysUser:updateAvatar"
"sysUser:updateAvatar",
"sysNotice:received",
"sysNotice:unread",
"sysNotice:detail"
]
}
}