LocalImMsgService.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.nb.im.service;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import cn.hutool.extra.spring.SpringUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.nb.app.msg.enums.MsgEnum;
  7. import com.nb.auth.enums.StpTypeEnum;
  8. import com.nb.common.crud.BaseService;
  9. import com.nb.core.exception.CustomException;
  10. import com.nb.im.controller.vo.UnreadVo;
  11. import com.nb.im.entity.ImMsgEntity;
  12. import com.nb.im.entity.ImRoomEntity;
  13. import com.nb.im.enums.ImMsgType;
  14. import com.nb.im.enums.ImStatusEnum;
  15. import com.nb.im.enums.SponsorEnum;
  16. import com.nb.im.event.ImMsgEvent;
  17. import com.nb.im.mapper.ImRoomMsgMapper;
  18. import com.nb.im.room.ImRoomOperatorManager;
  19. import com.nb.im.utils.ImUtils;
  20. import com.nb.im.ws.PubMsgInfo;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.context.annotation.Lazy;
  23. import org.springframework.stereotype.Service;
  24. import java.util.List;
  25. import java.util.concurrent.atomic.AtomicLong;
  26. /**
  27. * @author lifang
  28. * @version 1.0.0
  29. * @ClassName LocalChatRoomMsgService.java
  30. * @Description TODO
  31. * @createTime 2022年08月16日 09:31:00
  32. */
  33. @Service
  34. public class LocalImMsgService extends BaseService<ImRoomMsgMapper, ImMsgEntity,String> {
  35. @Autowired
  36. @Lazy
  37. private LocalImRoomService imRoomService;
  38. @Autowired
  39. @Lazy
  40. private ImRoomOperatorManager roomOperatorManager;
  41. @Override
  42. public void validateBeforeSave(ImMsgEntity entity) {
  43. }
  44. @Override
  45. public void validateBeforeUpdate(ImMsgEntity entity) {
  46. }
  47. @Override
  48. public void postSave(ImMsgEntity entity) {
  49. SpringUtil.publishEvent(new ImMsgEvent(this,entity));
  50. }
  51. @Override
  52. public void validateBeforeDelete(String id) {
  53. }
  54. public Long unReadCount(UnreadVo vo){
  55. if (StrUtil.isEmpty(vo.getAssistId()) && StrUtil.isEmpty(vo.getDoctorId())) {
  56. throw new CustomException("看护人id和医生id不能同时为空");
  57. }
  58. String userId=StrUtil.isEmpty(vo.getAssistId())?vo.getDoctorId():vo.getAssistId();
  59. AtomicLong result=new AtomicLong(0);
  60. List<ImRoomEntity> rooms = imRoomService.list(new QueryWrapper<ImRoomEntity>()
  61. .lambda()
  62. .select(ImRoomEntity::getId)
  63. .eq(StrUtil.isNotEmpty(vo.getAssistId()), ImRoomEntity::getAssistId, vo.getAssistId())
  64. .eq(StrUtil.isNotEmpty(vo.getDoctorId()), ImRoomEntity::getDoctorId, vo.getDoctorId())
  65. .eq(ImRoomEntity::getStatus, ImStatusEnum.SUCCESS)
  66. );
  67. if(CollectionUtil.isNotEmpty(rooms)){
  68. rooms.stream()
  69. .map(ImRoomEntity::getId).map(roomOperatorManager::getRoomOperator)
  70. .forEach(operator->{
  71. result.addAndGet(operator.unReadCount(userId));
  72. });
  73. }
  74. return result.get();
  75. }
  76. }