|
|
@@ -4,7 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.nb.app.assistant.api.bean.HandleBindResult;
|
|
|
@@ -23,12 +25,15 @@ import com.nb.app.assistant.api.event.AssistLiftEvent;
|
|
|
import com.nb.app.assistant.mapper.AssistantUserBindMapper;
|
|
|
import com.nb.app.assistant.service.dto.AssistPatientResult;
|
|
|
import com.nb.app.assistant.service.dto.EditAssistBindDto;
|
|
|
+import com.nb.app.doctor.api.entity.AppUserConsultConfigEntity;
|
|
|
import com.nb.app.doctor.api.feign.IAppDoctorUserClient;
|
|
|
+import com.nb.app.doctor.api.feign.IAppUserConsultConfigClient;
|
|
|
import com.nb.app.doctor.api.feign.result.AppDoctorUserResult;
|
|
|
import com.nb.app.msg.bean.MsgBean;
|
|
|
import com.nb.app.msg.enums.MsgEnum;
|
|
|
import com.nb.app.msg.event.SaveMsgEvent;
|
|
|
import com.nb.auth.bean.LoginUser;
|
|
|
+import com.nb.auth.enums.StpTypeEnum;
|
|
|
import com.nb.auth.utils.SecurityUtil;
|
|
|
import com.nb.common.crud.BaseService;
|
|
|
import com.nb.common.queue.delay.manager.DelayMessageManager;
|
|
|
@@ -37,6 +42,9 @@ import com.nb.common.queue.delay.message.DelayMessageProperties;
|
|
|
import com.nb.core.Value;
|
|
|
import com.nb.core.enums.StatusEnum;
|
|
|
import com.nb.core.exception.CustomException;
|
|
|
+import com.nb.core.sms.SmsHelper;
|
|
|
+import com.nb.im.entity.ImRoomEntity;
|
|
|
+import com.nb.im.service.LocalImRoomService;
|
|
|
import com.nb.web.api.entity.BusClinicEntity;
|
|
|
import com.nb.web.api.feign.IPatientClient;
|
|
|
import com.nb.web.api.feign.result.PatientMonitorDetailResult;
|
|
|
@@ -74,6 +82,19 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
@Autowired
|
|
|
@Lazy
|
|
|
private IAppDoctorUserClient doctorUserClient;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Lazy
|
|
|
+ private IAppUserConsultConfigClient userConsultConfigClient;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Lazy
|
|
|
+ private LocalImRoomService imRoomService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Lazy
|
|
|
+ private SmsHelper smsHelper;
|
|
|
+
|
|
|
@Override
|
|
|
public void validateBeforeSave(AssistantUserBindEntity entity) {
|
|
|
entity.setExistIm(false);
|
|
|
@@ -95,6 +116,7 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
|
|
|
@Override
|
|
|
public boolean save(AssistantUserBindEntity entity) {
|
|
|
+ LoginUser loginUser = SecurityUtil.getLoginUser();
|
|
|
entity.setExistIm(false);
|
|
|
String id = String.valueOf(SecurityUtil.getId());
|
|
|
if(StrUtil.isEmpty(entity.getPatientId())){
|
|
|
@@ -133,6 +155,7 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
.msgType(ApplyEnum.INVITE_CODE.equals(entity.getApplyType())?
|
|
|
MsgEnum.CODE_BIND_NOTIFY:MsgEnum.MANUAL_BIND_NOTIFY)
|
|
|
.payload(entity.getId())
|
|
|
+ .assistSend(StpTypeEnum.ASSISTANT.getText().equals(loginUser.getLoginType()))
|
|
|
.senderId(entity.getAssistId())
|
|
|
.senderNickname(currentUser.getNickname())
|
|
|
.senderAvatar(currentUser.getAvatar())
|
|
|
@@ -169,6 +192,7 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
.id(id)
|
|
|
.msgType(MsgEnum.PAIN_CALL)
|
|
|
.payload(id)
|
|
|
+ .assistSend(true)
|
|
|
.senderId(userBind.getAssistId())
|
|
|
.senderNickname(user.getNickname())
|
|
|
.senderAvatar(user.getAvatar())
|
|
|
@@ -184,6 +208,16 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
));
|
|
|
if(!doctorUserClient.isOnline(userBind.getDoctorId())){
|
|
|
//医生不在线,发送短信通知
|
|
|
+ AppDoctorUserResult doctorUser = doctorUserClient.lookById(userBind.getDoctorId());
|
|
|
+ if(doctorUser==null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ AppUserConsultConfigEntity consultConfig = userConsultConfigClient.findByDoctorId(doctorUser.getId());
|
|
|
+ if(consultConfig==null||!Boolean.TRUE.equals(consultConfig.getMsgPush())){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //发送短信通知
|
|
|
+ smsHelper.sendPainCall(doctorUser.getUsername(),userBind.getPatientCode());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -210,6 +244,15 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
return this.getById(bindId);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public AssistantUserBindEntity findSuccess(String doctorId, String assistId, String patientId) {
|
|
|
+ return this.getOne(new LambdaQueryWrapper<AssistantUserBindEntity>()
|
|
|
+ .eq(AssistantUserBindEntity::getDoctorId,doctorId)
|
|
|
+ .eq(AssistantUserBindEntity::getAssistId,assistId)
|
|
|
+ .eq(AssistantUserBindEntity::getPatientId,patientId)
|
|
|
+ .eq(AssistantUserBindEntity::getStatus,BindEnum.SUCCESS));
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean handleBindResult(HandleBindResult source) {
|
|
|
AssistantUserBindEntity userBind = this.findById(source.getBindId());
|
|
|
@@ -268,6 +311,7 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
MsgEnum.BIND_SUCCESS:MsgEnum.BIND_FAIL)
|
|
|
.payload(source.getBindId())
|
|
|
.senderId(source.getDoctorId())
|
|
|
+ .assistSend(false)
|
|
|
.senderNickname(source.getDoctorName())
|
|
|
.patientId(userBind.getPatientId())
|
|
|
.patientCode(userBind.getPatientCode())
|
|
|
@@ -457,4 +501,15 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
|
|
|
throw new CustomException("当前绑定关系未处于等待状态,无法修改");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void updatePatientNamePs(String id, String patientNamePs) {
|
|
|
+ if (this.update(new LambdaUpdateWrapper<AssistantUserBindEntity>()
|
|
|
+ .eq(AssistantUserBindEntity::getId,id)
|
|
|
+ .set(AssistantUserBindEntity::getPatientNamePs,patientNamePs))) {
|
|
|
+ imRoomService.update(new LambdaUpdateWrapper<ImRoomEntity>()
|
|
|
+ .eq(ImRoomEntity::getBindId,id)
|
|
|
+ .set(ImRoomEntity::getPatientNamePs,patientNamePs));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|