NotifyServiceImpl.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.flow.service.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.flow.common.core.model.CursorResult;
  5. import com.flow.common.core.model.PageResult;
  6. import com.flow.common.mybatis.service.impl.BaseServiceImpl;
  7. import com.flow.common.oauth2.utils.SecurityContextUtil;
  8. import com.flow.dao.NotifyDao;
  9. import com.flow.entity.MessageEntity;
  10. import com.flow.entity.Notify;
  11. import com.flow.mapstruct.NotifyMapper;
  12. import com.flow.model.NotifyQuery;
  13. import com.flow.service.NotifyService;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.messaging.simp.SimpMessagingTemplate;
  16. import org.springframework.stereotype.Service;
  17. import java.util.List;
  18. @Service
  19. public class NotifyServiceImpl extends BaseServiceImpl<NotifyDao, Notify> implements NotifyService {
  20. @Autowired
  21. private NotifyDao notifyDao;
  22. @Autowired
  23. private NotifyMapper notifyMapper;
  24. @Autowired
  25. private SimpMessagingTemplate messagingTemplate;
  26. @Override
  27. public Notify notify(Notify notify) {
  28. int insert = notifyDao.insert(notify);
  29. if (insert > 0) {
  30. MessageEntity<Notify> messageEntity = new MessageEntity<>(
  31. notify.getSender(),
  32. notify.getReceiver(),
  33. notify
  34. );
  35. messagingTemplate.convertAndSendToUser(notify.getReceiver(), "/topic/notify", messageEntity);
  36. }
  37. return notify;
  38. }
  39. @Override
  40. public PageResult<Notify> getList(NotifyQuery query) {
  41. query.setReceiver(SecurityContextUtil.getUserId());
  42. Notify notify = notifyMapper.toEntity(query);
  43. Page<Notify> page = notifyDao.lambdaQueryChain()
  44. .setEntity(notify)
  45. .orderByDesc(Notify::getId)
  46. .page(new Page<>(query.getPage(), query.getLimit()));
  47. return new PageResult<>(page.getTotal(), page.getRecords());
  48. }
  49. @Override
  50. public CursorResult<Notify> cursor(NotifyQuery query) {
  51. query.setReceiver(SecurityContextUtil.getUserId());
  52. List<Notify> list = notifyDao.cursor(query);
  53. CursorResult<Notify> cursorResult = new CursorResult<>();
  54. cursorResult.setRows(list);
  55. if (CollectionUtils.isNotEmpty(list)) {
  56. cursorResult.setCursor(list.get(list.size() - 1).getId());
  57. }
  58. return cursorResult;
  59. }
  60. @Override
  61. public void read(List<Long> ids) {
  62. notifyDao.lambdaUpdateChain()
  63. .in(Notify::getId, ids)
  64. .set(Notify::getIsRead, true)
  65. .update();
  66. }
  67. @Override
  68. public void readAll() {
  69. String userId = SecurityContextUtil.getUserId();
  70. notifyDao.lambdaUpdateChain()
  71. .eq(Notify::getReceiver, userId)
  72. .set(Notify::getIsRead, true)
  73. .update();
  74. }
  75. @Override
  76. public void delete(List<Long> ids) {
  77. notifyDao.lambdaUpdateChain()
  78. .in(Notify::getId, ids)
  79. .remove();
  80. }
  81. @Override
  82. public Long getUnreadCount() {
  83. String userId = SecurityContextUtil.getUserId();
  84. return notifyDao.lambdaQueryChain()
  85. .select(Notify::getId)
  86. .eq(Notify::getReceiver, userId)
  87. .eq(Notify::getIsRead, false)
  88. .count();
  89. }
  90. }