| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package com.nb.im.service;
- import cn.hutool.core.collection.CollectionUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.extra.spring.SpringUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.nb.app.msg.enums.MsgEnum;
- import com.nb.auth.enums.StpTypeEnum;
- import com.nb.common.crud.BaseService;
- import com.nb.core.exception.CustomException;
- import com.nb.im.controller.vo.UnreadVo;
- import com.nb.im.entity.ImMsgEntity;
- import com.nb.im.entity.ImRoomEntity;
- import com.nb.im.enums.ImMsgType;
- import com.nb.im.enums.ImStatusEnum;
- import com.nb.im.enums.SponsorEnum;
- import com.nb.im.event.ImMsgEvent;
- import com.nb.im.mapper.ImRoomMsgMapper;
- import com.nb.im.room.ImRoomOperatorManager;
- import com.nb.im.utils.ImUtils;
- import com.nb.im.ws.PubMsgInfo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Lazy;
- import org.springframework.stereotype.Service;
- import java.util.List;
- import java.util.concurrent.atomic.AtomicLong;
- /**
- * @author lifang
- * @version 1.0.0
- * @ClassName LocalChatRoomMsgService.java
- * @Description TODO
- * @createTime 2022年08月16日 09:31:00
- */
- @Service
- public class LocalImMsgService extends BaseService<ImRoomMsgMapper, ImMsgEntity,String> {
- @Autowired
- @Lazy
- private LocalImRoomService imRoomService;
- @Autowired
- @Lazy
- private ImRoomOperatorManager roomOperatorManager;
- @Override
- public void validateBeforeSave(ImMsgEntity entity) {
- }
- @Override
- public void validateBeforeUpdate(ImMsgEntity entity) {
- }
- @Override
- public void postSave(ImMsgEntity entity) {
- SpringUtil.publishEvent(new ImMsgEvent(this,entity));
- }
- @Override
- public void validateBeforeDelete(String id) {
- }
- public Long unReadCount(UnreadVo vo){
- if (StrUtil.isEmpty(vo.getAssistId()) && StrUtil.isEmpty(vo.getDoctorId())) {
- throw new CustomException("看护人id和医生id不能同时为空");
- }
- String userId=StrUtil.isEmpty(vo.getAssistId())?vo.getDoctorId():vo.getAssistId();
- AtomicLong result=new AtomicLong(0);
- List<ImRoomEntity> rooms = imRoomService.list(new QueryWrapper<ImRoomEntity>()
- .lambda()
- .select(ImRoomEntity::getId)
- .eq(StrUtil.isNotEmpty(vo.getAssistId()), ImRoomEntity::getAssistId, vo.getAssistId())
- .eq(StrUtil.isNotEmpty(vo.getDoctorId()), ImRoomEntity::getDoctorId, vo.getDoctorId())
- .eq(ImRoomEntity::getStatus, ImStatusEnum.SUCCESS)
- );
- if(CollectionUtil.isNotEmpty(rooms)){
- rooms.stream()
- .map(ImRoomEntity::getId).map(roomOperatorManager::getRoomOperator)
- .forEach(operator->{
- result.addAndGet(operator.unReadCount(userId));
- });
- }
- return result.get();
- }
- }
|