|
|
@@ -1,12 +1,21 @@
|
|
|
package com.nb.im.service;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
+import com.nb.app.msg.enums.MsgEnum;
|
|
|
+import com.nb.auth.bean.LoginUser;
|
|
|
+import com.nb.auth.utils.SecurityUtil;
|
|
|
import com.nb.common.crud.BaseService;
|
|
|
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.mapper.ImRoomMapper;
|
|
|
+import com.nb.im.room.ImRoomOperator;
|
|
|
+import com.nb.im.room.ImRoomOperatorManager;
|
|
|
import com.nb.im.service.dto.ImRoomDto;
|
|
|
+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;
|
|
|
@@ -28,6 +37,14 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
@Lazy
|
|
|
private LocalImRoomUserService chatRoomUserService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ @Lazy
|
|
|
+ private ImUtils imUtils;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Lazy
|
|
|
+ private ImRoomOperatorManager roomOperatorManager;
|
|
|
+
|
|
|
@Override
|
|
|
public void validateBeforeSave(ImRoomEntity entity) {
|
|
|
|
|
|
@@ -100,4 +117,27 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
Long result = this.baseMapper.maxSort(roomId);
|
|
|
return result==null?0L:result;
|
|
|
}
|
|
|
+
|
|
|
+ public Boolean finished(String roomId) {
|
|
|
+ boolean result = this.update(new UpdateWrapper<ImRoomEntity>()
|
|
|
+ .lambda()
|
|
|
+ .eq(ImRoomEntity::getId, roomId)
|
|
|
+ .set(ImRoomEntity::getStatus, ImStatusEnum.DOCTOR_LIFT));
|
|
|
+
|
|
|
+ if(result){
|
|
|
+ ImRoomOperator roomOperator = roomOperatorManager.getRoomOperator(roomId);
|
|
|
+ imUtils.send(roomId,
|
|
|
+ PubMsgInfo.builder()
|
|
|
+ .key(IdWorker.getIdStr())
|
|
|
+ .roomId(roomId)
|
|
|
+ .payload("医生已关闭聊天")
|
|
|
+ .senderType(SponsorEnum.doctor)
|
|
|
+ .senderId(roomOperator.getDoctorId())
|
|
|
+ .msgType(ImMsgType.txt)
|
|
|
+ .operationType(MsgEnum.FINISHED)
|
|
|
+ .build());
|
|
|
+ roomOperator.close();
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|