提交 a869027c authored 作者: 杨凯's avatar 杨凯

feat:家庭医生初始化

上级 2058ecb0
package com.ebaiyihui.family.doctor.common.bo;
import lombok.Data;
/**
* @ClassName: Components
* @Author:yanliang
* @Date:2024/3/15 10:22
* @Description
*/
@Data
public class Components {
private String sender;
private Integer sort;
private String content;
}
package com.ebaiyihui.family.doctor.common.bo;
import lombok.Data;
import java.util.List;
/**
* @ClassName: MsgContent
* @Author:yanliang
* @Date:2024/3/15 10:20
* @Description
*/
@Data
public class MsgContent {
private List<Components> components;
}
package com.ebaiyihui.family.doctor.common.dto;
import lombok.Data;
/**
* @ClassName: SendImMsgDTO
* @Author:yanliang
* @Date:2024/3/15 10:09
* @Description
*/
@Data
public class SendImMsgDTO {
private Integer type;
private String appCode;
private Long organId;
private String admId;
}
package com.ebaiyihui.family.doctor.server.common.enums;
/**
* @ClassName: SenderEnum
* @Author:yanliang
* @Date:2024/3/15 10:59
* @Description
*/
public enum SenderEnum {
DOCTOR("doctor", 1),
PATIENT("patient", 2);
private String desc;
private Integer value;
private SenderEnum(String desc, Integer value) {
this.desc = desc;
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}
package com.ebaiyihui.family.doctor.server.controller;
import com.ebaiyihui.family.doctor.common.dto.SendImMsgDTO;
import com.ebaiyihui.family.doctor.server.service.ImMsgTemplateService;
import com.ebaiyihui.framework.response.BaseResponse;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName: ImMsgTemplateController
* @Author:yanliang
* @Date:2024/3/15 10:07
* @Description
*/
@RestController
@RequestMapping("/imMsgTemplate")
@Api(tags = "消息发送API")
@Slf4j
public class ImMsgTemplateController {
@Autowired
private ImMsgTemplateService imMsgTemplateService;
@RequestMapping(value = "/sendImMsg", method = RequestMethod.POST)
public BaseResponse<String> sendImMsg(@RequestBody SendImMsgDTO reqVo,
BindingResult bindingResult) {
BaseResponse<String> response = null;
try {
response = imMsgTemplateService.sendImMsg(reqVo);
} catch (Exception e) {
return BaseResponse.error(e.getMessage());
}
return response;
}
}
...@@ -44,7 +44,7 @@ public class PatientController { ...@@ -44,7 +44,7 @@ public class PatientController {
return response; return response;
} }
@ApiOperation(value = "签约医生", notes = "医生服务feign调用") @ApiOperation(value = "获取签约医生信息", notes = "医生服务feign调用")
@RequestMapping(value = "/getSignedDoctor", method = RequestMethod.POST) @RequestMapping(value = "/getSignedDoctor", method = RequestMethod.POST)
public BaseResponse<PatientSignEntity> getSignedDoctor(@RequestBody SignedDoctorDTO reqVo, public BaseResponse<PatientSignEntity> getSignedDoctor(@RequestBody SignedDoctorDTO reqVo,
BindingResult bindingResult) { BindingResult bindingResult) {
......
package com.ebaiyihui.family.doctor.server.entity;
import lombok.Data;
import java.util.Date;
/**
* @ClassName: ImMsgTemplate
* @Author:yanliang
* @Date:2024/3/15 09:59
* @Description
*/
@Data
public class ImMsgTemplateEntity {
private Long id;
private Integer type;
private String appCode;
private Long organId;
private String content;
private Date createTime;
private Date updateTime;
private String templateName;
private String remark;
}
package com.ebaiyihui.family.doctor.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ebaiyihui.family.doctor.server.entity.ImMsgTemplateEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName: ImMsgTemplateMapper
* @Author:yanliang
* @Date:2024/3/15 10:05
* @Description
*/
@Mapper
public interface ImMsgTemplateMapper extends BaseMapper<ImMsgTemplateEntity> {
}
package com.ebaiyihui.family.doctor.server.service; package com.ebaiyihui.family.doctor.server.service;
import com.ebaiyihui.family.doctor.common.bo.Components;
import com.ebaiyihui.family.doctor.server.entity.PatientSignEntity; import com.ebaiyihui.family.doctor.server.entity.PatientSignEntity;
import com.ebaiyihui.framework.response.BaseResponse; import com.ebaiyihui.framework.response.BaseResponse;
import com.ebaiyihui.imforward.client.vo.IMQueryTargetSdkAccountRspVO; import com.ebaiyihui.imforward.client.vo.IMQueryTargetSdkAccountRspVO;
import java.util.List;
/** /**
* @ClassName: ImChatTemplate * @ClassName: ImChatTemplate
* @Author:yanliang * @Author:yanliang
...@@ -25,4 +28,6 @@ public interface ImChatTemplate { ...@@ -25,4 +28,6 @@ public interface ImChatTemplate {
IMQueryTargetSdkAccountRspVO queryImAccount(String admId, String imAppCode, String doctorId); IMQueryTargetSdkAccountRspVO queryImAccount(String admId, String imAppCode, String doctorId);
void doctorPrompted(String admId); void doctorPrompted(String admId);
Boolean sendMsg(List<Components> componentsList, String admId);
} }
package com.ebaiyihui.family.doctor.server.service;
import com.ebaiyihui.family.doctor.common.dto.SendImMsgDTO;
import com.ebaiyihui.framework.response.BaseResponse;
/**
* @ClassName: ImMsgTemplateService
* @Author:yanliang
* @Date:2024/3/15 10:06
* @Description
*/
public interface ImMsgTemplateService {
BaseResponse<String> sendImMsg(SendImMsgDTO reqVo);
}
...@@ -12,6 +12,7 @@ import com.ebaiyihui.family.doctor.common.dto.DoctorIdDTO; ...@@ -12,6 +12,7 @@ import com.ebaiyihui.family.doctor.common.dto.DoctorIdDTO;
import com.ebaiyihui.family.doctor.server.common.constants.CommonConstants; import com.ebaiyihui.family.doctor.server.common.constants.CommonConstants;
import com.ebaiyihui.family.doctor.server.common.constants.IMInformConstants; import com.ebaiyihui.family.doctor.server.common.constants.IMInformConstants;
import com.ebaiyihui.family.doctor.server.common.constants.ImConstants; import com.ebaiyihui.family.doctor.server.common.constants.ImConstants;
import com.ebaiyihui.family.doctor.server.common.enums.SenderEnum;
import com.ebaiyihui.family.doctor.server.entity.PatientSignEntity; import com.ebaiyihui.family.doctor.server.entity.PatientSignEntity;
import com.ebaiyihui.family.doctor.server.exception.BusinessException; import com.ebaiyihui.family.doctor.server.exception.BusinessException;
import com.ebaiyihui.family.doctor.server.feign.DoctorInfofeignClient; import com.ebaiyihui.family.doctor.server.feign.DoctorInfofeignClient;
...@@ -139,6 +140,37 @@ public class ImChatTemplateImpl implements ImChatTemplate { ...@@ -139,6 +140,37 @@ public class ImChatTemplateImpl implements ImChatTemplate {
} }
} }
@Override
public Boolean sendMsg(List<Components> componentsList, String admId) {
if (!componentsList.isEmpty()) {
for (int i = 0; i < componentsList.size(); i++) {
String content = componentsList.get(i).getContent();
List<MessageInfo> messageInfos = new ArrayList<>();
PatientSignInfo patientSignInfo = getPatientSignInfo(admId);
MessageInfo messageInfo = new MessageInfo();
if (SenderEnum.DOCTOR.getDesc().equals(componentsList.get(i).getSender())) {
messageInfo = getDoctorInformRefreshPatientParam(patientSignInfo, IMInformConstants.REFRESH);
} else {
messageInfo = getInformRefreshPatientParam(patientSignInfo, IMInformConstants.REFRESH);
}
messageInfos.add(messageInfo);
PersonImInformReq parameter = new PersonImInformReq();
parameter.setMessageInfos(messageInfos);
parameter.setAdmissionId(admId);
parameter.setBusiCode(IMInformConstants.IM_SYSTEM_BUSINESS_CODE);
log.info("推送家庭医生提示语推送:{}" + JSON.toJSONString(parameter.getMessageInfos()));
Long syncFlag = i * 100L;
if (personUserImInform(parameter, content, syncFlag)) {
log.info("推送家庭医生提示语推送成功,admissionId:{}", admId);
return true;
}
}
}
return null;
}
/** /**
* 获取im推送需要的信息 * 获取im推送需要的信息
* 1.serviceType 2.0 病人账号 2.1 病人名字 3.3 医生生名字 账号 6.拒绝理由 7.订单号 * 1.serviceType 2.0 病人账号 2.1 病人名字 3.3 医生生名字 账号 6.拒绝理由 7.订单号
...@@ -199,24 +231,19 @@ public class ImChatTemplateImpl implements ImChatTemplate { ...@@ -199,24 +231,19 @@ public class ImChatTemplateImpl implements ImChatTemplate {
return messageInfo; return messageInfo;
} }
private <T> MessageInfo getInformRefreshPatientParam(PatientSignInfo patientSignInfo, T content, Integer isRefresh) { private <T> MessageInfo getInformRefreshPatientParam(PatientSignInfo patientSignInfo, Integer isRefresh) {
String patientUserId = patientSignInfo.getPatientUserId(); String doctorUserId = patientSignInfo.getDoctorUserId();
if (org.apache.commons.lang3.StringUtils.isEmpty(patientUserId)) { if (StringUtils.isEmpty(doctorUserId)) {
log.error("IM INFORM ERROR : 无法查询到接收人信息"); log.error("IM INFORM ERROR : 无法查询到接收人信息");
return new MessageInfo(); return new MessageInfo();
} }
MessageInfo messageInfo = new MessageInfo(); MessageInfo messageInfo = new MessageInfo();
Message<T> message = new Message<>(); Message<T> message = new Message<>();
message.setMessageType(IMInformConstants.SERVICE_SYSTEM_FIXATION_TYPE); // message.setData(content);
message.setAdmissionId(patientSignInfo.getAdmId()); // messageInfo.setMessage(message);
message.setApplicationCode(IMInformConstants.IM_SYSTEM_BUSINESS_CODE);
message.setIsRefresh(isRefresh);
message.setData(content);
messageInfo.setMessage(message);
message.setApplicationCode(IMInformConstants.IM_SYSTEM_BUSINESS_CODE); message.setApplicationCode(IMInformConstants.IM_SYSTEM_BUSINESS_CODE);
messageInfo.setSingleAccount(newAccount(IMInformConstants.PATIENT_APPLICATION_CODE, patientUserId)); messageInfo.setSingleAccount(newAccount(IMInformConstants.DOCTOR_APPLICATION_CODE, doctorUserId));
messageInfo.setSelfAccount(newAccount(IMInformConstants.DOCTOR_APPLICATION_CODE, messageInfo.setSelfAccount(newAccount(IMInformConstants.PATIENT_APPLICATION_CODE, patientSignInfo.getPatientUserId()));
patientSignInfo.getDoctorUserId()));
messageInfo.setMessage(message); messageInfo.setMessage(message);
return messageInfo; return messageInfo;
} }
......
package com.ebaiyihui.family.doctor.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ebaiyihui.family.doctor.common.bo.Components;
import com.ebaiyihui.family.doctor.common.bo.MsgContent;
import com.ebaiyihui.family.doctor.common.dto.SendImMsgDTO;
import com.ebaiyihui.family.doctor.server.entity.ImMsgTemplateEntity;
import com.ebaiyihui.family.doctor.server.exception.BusinessException;
import com.ebaiyihui.family.doctor.server.mapper.ImMsgTemplateMapper;
import com.ebaiyihui.family.doctor.server.service.ImChatTemplate;
import com.ebaiyihui.family.doctor.server.service.ImMsgTemplateService;
import com.ebaiyihui.framework.response.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ClassName: ImMsgTemplateServiceImpl
* @Author:yanliang
* @Date:2024/3/15 10:06
* @Description
*/
@Service
public class ImMsgTemplateServiceImpl implements ImMsgTemplateService {
@Autowired
private ImMsgTemplateMapper imMsgTemplateMapper;
@Autowired
private ImChatTemplate imChatTemplate;
@Override
public BaseResponse<String> sendImMsg(SendImMsgDTO reqVo) {
QueryWrapper<ImMsgTemplateEntity> wrapper = new QueryWrapper<>();
ImMsgTemplateEntity imMsgTemplate = new ImMsgTemplateEntity();
imMsgTemplate.setAppCode(reqVo.getAppCode());
imMsgTemplate.setOrganId(reqVo.getOrganId());
imMsgTemplate.setType(reqVo.getType());
wrapper.setEntity(imMsgTemplate);
ImMsgTemplateEntity imMsgTemplateEntity = imMsgTemplateMapper.selectOne(wrapper);
String components = imMsgTemplateEntity.getContent();
MsgContent msgContent = JSON.parseObject(components, MsgContent.class);
List<Components> componentsList = msgContent.getComponents().stream().sorted(Comparator.comparing(Components::getSort)).collect(Collectors.toList());
Boolean flag = imChatTemplate.sendMsg(componentsList, reqVo.getAdmId());
if (!flag) {
throw new BusinessException("消息推送失败");
}
return BaseResponse.success("消息推送成功");
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论