正在显示
6 个修改的文件
包含
28 行增加
和
13 行删除
@@ -9,6 +9,8 @@ import ( | @@ -9,6 +9,8 @@ import ( | ||
9 | type ReadAllUnReadSentNotificationCommand struct { | 9 | type ReadAllUnReadSentNotificationCommand struct { |
10 | // 通知接收者Uid | 10 | // 通知接收者Uid |
11 | ReceiverId int64 `json:"receiverId" valid:"Required"` | 11 | ReceiverId int64 `json:"receiverId" valid:"Required"` |
12 | + // 通知类型 | ||
13 | + NotificationType int `json:"notificationType"` | ||
12 | } | 14 | } |
13 | 15 | ||
14 | func (readAllUnReadSentNotificationCommand *ReadAllUnReadSentNotificationCommand) ValidateCommand() error { | 16 | func (readAllUnReadSentNotificationCommand *ReadAllUnReadSentNotificationCommand) ValidateCommand() error { |
@@ -222,7 +222,7 @@ func (notificationService *NotificationService) ReadAllUnReadSentNotification(re | @@ -222,7 +222,7 @@ func (notificationService *NotificationService) ReadAllUnReadSentNotification(re | ||
222 | } else { | 222 | } else { |
223 | readAllUnReadSentNotificationService = value | 223 | readAllUnReadSentNotificationService = value |
224 | } | 224 | } |
225 | - if readCount, err := readAllUnReadSentNotificationService.ReadAll(readAllUnReadSentNotificationCommand.ReceiverId); err != nil { | 225 | + if readCount, err := readAllUnReadSentNotificationService.ReadAll(readAllUnReadSentNotificationCommand.ReceiverId, readAllUnReadSentNotificationCommand.NotificationType); err != nil { |
226 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 226 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
227 | } else { | 227 | } else { |
228 | if err := transactionContext.CommitTransaction(); err != nil { | 228 | if err := transactionContext.CommitTransaction(); err != nil { |
@@ -6,5 +6,5 @@ import ( | @@ -6,5 +6,5 @@ import ( | ||
6 | 6 | ||
7 | type ReadAllUnReadSentNotificationService interface { | 7 | type ReadAllUnReadSentNotificationService interface { |
8 | coreDomain.DomainEventPublisher | 8 | coreDomain.DomainEventPublisher |
9 | - ReadAll(receiverUid int64) (int, error) | 9 | + ReadAll(receiverUid int64, notificationType int) (int, error) |
10 | } | 10 | } |
@@ -11,16 +11,28 @@ type NotificationDao struct { | @@ -11,16 +11,28 @@ type NotificationDao struct { | ||
11 | transactionContext *pgTransaction.TransactionContext | 11 | transactionContext *pgTransaction.TransactionContext |
12 | } | 12 | } |
13 | 13 | ||
14 | -func (dao *NotificationDao) ReadAllUnReadSentNotification(receiverId int64) (int, error) { | 14 | +func (dao *NotificationDao) ReadAllUnReadSentNotification(receiverId int64, notificationType int) (int, error) { |
15 | tx := dao.transactionContext.PgTx | 15 | tx := dao.transactionContext.PgTx |
16 | - result, err := tx.Query( | ||
17 | - pg.Scan(), | ||
18 | - `UPDATE sent_notifications SET is_read=?, read_time=? WHERE receiver @> '{"uid":?}' AND is_read=false`, | ||
19 | - true, time.Now(), receiverId) | ||
20 | - if err != nil { | ||
21 | - return 0, err | 16 | + if notificationType == 0 { |
17 | + result, err := tx.Query( | ||
18 | + pg.Scan(), | ||
19 | + `UPDATE sent_notifications SET is_read=?, read_time=? WHERE receiver @> '{"uid":?}' AND is_read=false`, | ||
20 | + true, time.Now(), receiverId) | ||
21 | + if err != nil { | ||
22 | + return 0, err | ||
23 | + } else { | ||
24 | + return result.RowsAffected(), nil | ||
25 | + } | ||
22 | } else { | 26 | } else { |
23 | - return result.RowsAffected(), nil | 27 | + result, err := tx.Query( |
28 | + pg.Scan(), | ||
29 | + `UPDATE sent_notifications SET is_read=?, read_time=? WHERE notification_id IN ( SELECT sent_notification.notification_id FROM sent_notifications AS sent_notification LEFT JOIN notifications AS notification ON notification.id = sent_notification.notification_id WHERE sent_notification.receiver @> '{"uid":?}' AND sent_notification.is_read=false AND notification.notification_type=?)`, | ||
30 | + true, time.Now(), receiverId, notificationType) | ||
31 | + if err != nil { | ||
32 | + return 0, err | ||
33 | + } else { | ||
34 | + return result.RowsAffected(), nil | ||
35 | + } | ||
24 | } | 36 | } |
25 | } | 37 | } |
26 | 38 |
@@ -14,7 +14,7 @@ type ReadAllUnReadSentNotificationService struct { | @@ -14,7 +14,7 @@ type ReadAllUnReadSentNotificationService struct { | ||
14 | transactionContext *pgTransaction.TransactionContext | 14 | transactionContext *pgTransaction.TransactionContext |
15 | } | 15 | } |
16 | 16 | ||
17 | -func (service *ReadAllUnReadSentNotificationService) ReadAll(receiverUid int64) (int, error) { | 17 | +func (service *ReadAllUnReadSentNotificationService) ReadAll(receiverUid int64, notificationType int) (int, error) { |
18 | var employeeRepository domain.EmployeeRepository | 18 | var employeeRepository domain.EmployeeRepository |
19 | var notificationDao *dao.NotificationDao | 19 | var notificationDao *dao.NotificationDao |
20 | if repository, err := repository.NewEmployeeRepository(service.transactionContext); err != nil { | 20 | if repository, err := repository.NewEmployeeRepository(service.transactionContext); err != nil { |
@@ -36,7 +36,7 @@ func (service *ReadAllUnReadSentNotificationService) ReadAll(receiverUid int64) | @@ -36,7 +36,7 @@ func (service *ReadAllUnReadSentNotificationService) ReadAll(receiverUid int64) | ||
36 | if receiver == nil { | 36 | if receiver == nil { |
37 | return 0, fmt.Errorf("无效的通知接收者") | 37 | return 0, fmt.Errorf("无效的通知接收者") |
38 | } | 38 | } |
39 | - readCount, err := notificationDao.ReadAllUnReadSentNotification(receiverUid) | 39 | + readCount, err := notificationDao.ReadAllUnReadSentNotification(receiverUid, notificationType) |
40 | if err != nil { | 40 | if err != nil { |
41 | return 0, err | 41 | return 0, err |
42 | } else { | 42 | } else { |
@@ -39,7 +39,8 @@ var _ = Describe("读取全部未读取的发送出的通知", func() { | @@ -39,7 +39,8 @@ var _ = Describe("读取全部未读取的发送出的通知", func() { | ||
39 | It("读取成功", func() { | 39 | It("读取成功", func() { |
40 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 40 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
41 | body := map[string]interface{}{ | 41 | body := map[string]interface{}{ |
42 | - "receiverId": 2499036607974745088, | 42 | + "receiverId": 2499036607974745088, |
43 | + "notificationType": 1, | ||
43 | } | 44 | } |
44 | httpExpect.POST("/notifications/read-all"). | 45 | httpExpect.POST("/notifications/read-all"). |
45 | WithJSON(body). | 46 | WithJSON(body). |
-
请 注册 或 登录 后发表评论