using Admin.NET.Core;
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions;
using Furion.DependencyInjection;
using Microsoft.EntityFrameworkCore;
namespace Admin.NET.Application.Notice
{
///
/// 通知公告用户
///
public class SysNoticeUserService : ISysNoticeUserService, ITransient
{
private readonly IRepository _sysNoticeUserRep; // 通知公告用户表仓储
///
/// 构造函数
///
///
public SysNoticeUserService(IRepository sysNoticeUserRep)
{
_sysNoticeUserRep = sysNoticeUserRep;
}
///
/// 增加
///
///
///
///
///
public async Task Add(long noticeId, List noticeUserIdList, NoticeUserStatus noticeUserStatus)
{
var noticeUserList = noticeUserIdList.Select(u => new SysNoticeUser
{
NoticeId = noticeId,
UserId = u,
ReadStatus = noticeUserStatus
});
await _sysNoticeUserRep.InsertAsync(noticeUserList);
}
///
/// 更新
///
///
///
///
///
public async Task Update(long noticeId, List noticeUserIdList, NoticeUserStatus noticeUserStatus)
{
var noticeUsers = await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
await _sysNoticeUserRep.DeleteAsync(noticeUsers);
await Add(noticeId, noticeUserIdList, noticeUserStatus);
}
///
/// 获取通知公告用户列表
///
///
///
public async Task> GetNoticeUserListByNoticeId(long noticeId)
{
return await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
}
///
/// 设置通知公告读取状态
///
///
///
///
///
public async Task Read(long noticeId, long userId, NoticeUserStatus status)
{
var noticeUser = await _sysNoticeUserRep.FirstOrDefaultAsync(u => u.NoticeId == noticeId && u.UserId == userId);
if (noticeUser != null)
{
noticeUser.ReadStatus = status;
noticeUser.ReadTime = DateTimeOffset.Now;
await noticeUser.UpdateAsync();
}
}
}
}