ke_junjie
2025-06-04 84620534eb627e95811b971a4b552b6a177829bf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using iWare.Wms.Core;
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions;
using Furion.DependencyInjection;
using Microsoft.EntityFrameworkCore;
 
namespace iWare.Wms.Application.Notice
{
    /// <summary>
    /// 通知公告用户
    /// </summary>
    public class SysNoticeUserService : ISysNoticeUserService, ITransient
    {
        private readonly IRepository<SysNoticeUser> _sysNoticeUserRep;  // 通知公告用户表仓储
 
        public SysNoticeUserService(IRepository<SysNoticeUser> sysNoticeUserRep)
        {
            _sysNoticeUserRep = sysNoticeUserRep;
        }
 
        /// <summary>
        /// 增加
        /// </summary>
        /// <param name="noticeId"></param>
        /// <param name="noticeUserIdList"></param>
        /// <param name="noticeUserStatus"></param>
        /// <returns></returns>
        public async Task Add(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus)
        {
            var noticeUserList = noticeUserIdList.Select(u => new SysNoticeUser
            {
                NoticeId = noticeId,
                UserId = u,
                ReadStatus = noticeUserStatus
            });
            await _sysNoticeUserRep.InsertAsync(noticeUserList);
        }
 
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="noticeId"></param>
        /// <param name="noticeUserIdList"></param>
        /// <param name="noticeUserStatus"></param>
        /// <returns></returns>
        public async Task Update(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus)
        {
            var noticeUsers = await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
            await _sysNoticeUserRep.DeleteAsync(noticeUsers);
 
            await Add(noticeId, noticeUserIdList, noticeUserStatus);
        }
 
        /// <summary>
        /// 获取通知公告用户列表
        /// </summary>
        /// <param name="noticeId"></param>
        /// <returns></returns>
        public async Task<List<SysNoticeUser>> GetNoticeUserListByNoticeId(long noticeId)
        {
            return await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
        }
 
        /// <summary>
        /// 设置通知公告读取状态
        /// </summary>
        /// <param name="noticeId"></param>
        /// <param name="userId"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        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();
            }
        }
    }
}