添加获取指定类型的消息记录接口;
This commit is contained in:
parent
dc1b4c681e
commit
6f499cd4a5
@ -16,7 +16,7 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class FDMessageDto extends FDMessageExtentDto {
|
public class FDMessageDto extends FDMessageExtentDto {
|
||||||
|
|
||||||
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询")
|
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询 4:消息通知")
|
||||||
private String messageCategory;
|
private String messageCategory;
|
||||||
|
|
||||||
@ApiModelProperty("通知适用人群(0:全部人群)")
|
@ApiModelProperty("通知适用人群(0:全部人群)")
|
||||||
|
|||||||
@ -4,12 +4,15 @@ import com.xinelu.applet.dto.chatrecord.ChatRecordDTO;
|
|||||||
import com.xinelu.applet.dto.chatrecord.MessageSearchDto;
|
import com.xinelu.applet.dto.chatrecord.MessageSearchDto;
|
||||||
import com.xinelu.applet.service.chatRecord.IChatRecordService;
|
import com.xinelu.applet.service.chatRecord.IChatRecordService;
|
||||||
import com.xinelu.applet.vo.chatrecord.MessageCenterVo;
|
import com.xinelu.applet.vo.chatrecord.MessageCenterVo;
|
||||||
|
import com.xinelu.applet.vo.chatrecord.MessageVo;
|
||||||
import com.xinelu.common.annotation.Log;
|
import com.xinelu.common.annotation.Log;
|
||||||
import com.xinelu.common.constant.Constants;
|
import com.xinelu.common.constant.Constants;
|
||||||
import com.xinelu.common.core.controller.BaseController;
|
import com.xinelu.common.core.controller.BaseController;
|
||||||
import com.xinelu.common.core.domain.AjaxResult;
|
import com.xinelu.common.core.domain.AjaxResult;
|
||||||
import com.xinelu.common.core.domain.R;
|
import com.xinelu.common.core.domain.R;
|
||||||
|
import com.xinelu.common.core.page.TableDataInfo;
|
||||||
import com.xinelu.common.enums.BusinessType;
|
import com.xinelu.common.enums.BusinessType;
|
||||||
|
import com.xinelu.common.exception.ServiceException;
|
||||||
import com.xinelu.common.socket.WebSocketUtils;
|
import com.xinelu.common.socket.WebSocketUtils;
|
||||||
import com.xinelu.manage.domain.chatRecord.ChatRecord;
|
import com.xinelu.manage.domain.chatRecord.ChatRecord;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@ -101,6 +104,19 @@ public class ChatRecordController extends BaseController {
|
|||||||
return R.ok(chatRecordService.getMegVoList(messageDto));
|
return R.ok(chatRecordService.getMegVoList(messageDto));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取指定类型的消息记录", notes = "1:通知公告 2:健康推送 4:消息通知")
|
||||||
|
@GetMapping("/getMegList")
|
||||||
|
public TableDataInfo getMegList(MessageSearchDto messageDto) {
|
||||||
|
if (messageDto.getPatientId() == null) {
|
||||||
|
throw new ServiceException("居民业务主键不能为空");
|
||||||
|
}
|
||||||
|
if (StringUtils.isBlank(messageDto.getMessageCategory())) {
|
||||||
|
throw new ServiceException("消息类型不能为空");
|
||||||
|
}
|
||||||
|
startPage();
|
||||||
|
return getDataTable(chatRecordService.getMegList(messageDto));
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("删除消息")
|
@ApiOperation("删除消息")
|
||||||
@GetMapping("/deleteMegs")
|
@GetMapping("/deleteMegs")
|
||||||
public R<String> deleteMegs(@RequestBody List<Long> ids) {
|
public R<String> deleteMegs(@RequestBody List<Long> ids) {
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import lombok.Data;
|
|||||||
@ApiModel("标记为已读传输对象")
|
@ApiModel("标记为已读传输对象")
|
||||||
public class MarkReadDto {
|
public class MarkReadDto {
|
||||||
|
|
||||||
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询")
|
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询 4:消息通知")
|
||||||
private String messageCategory;
|
private String messageCategory;
|
||||||
|
|
||||||
@ApiModelProperty("绑定编号")
|
@ApiModelProperty("绑定编号")
|
||||||
|
|||||||
@ -14,14 +14,14 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class MessageSearchDto {
|
public class MessageSearchDto {
|
||||||
|
|
||||||
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询")
|
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询 4:消息通知")
|
||||||
private String messageCategory;
|
private String messageCategory;
|
||||||
|
|
||||||
@ApiModelProperty("通知适用人群(0:全部人群)")
|
@ApiModelProperty("通知适用人群(0:全部人群)")
|
||||||
private String crowds;
|
private String crowds;
|
||||||
|
|
||||||
@ApiModelProperty(value = "居民注册业务主键")
|
@ApiModelProperty(value = "居民注册业务主键")
|
||||||
private String bindingNo;
|
private Long patientId;
|
||||||
|
|
||||||
@ApiModelProperty("发送人编号")
|
@ApiModelProperty("发送人编号")
|
||||||
private Long senderId;
|
private Long senderId;
|
||||||
|
|||||||
@ -18,7 +18,7 @@ public class FDMessagePushDto extends FDMessageExtentDto{
|
|||||||
@ApiModelProperty("业务主键")
|
@ApiModelProperty("业务主键")
|
||||||
private String messageNo;
|
private String messageNo;
|
||||||
|
|
||||||
@ApiModelProperty(value = "消息类别 1:通知公告,2:健康推送,3:在线咨询", required = true)
|
@ApiModelProperty(value = "消息类别 1:通知公告,2:健康推送,3:在线咨询 4:消息通知", required = true)
|
||||||
private String messageCategory;
|
private String messageCategory;
|
||||||
|
|
||||||
@ApiModelProperty("通知适用人群(0:全部人群)")
|
@ApiModelProperty("通知适用人群(0:全部人群)")
|
||||||
|
|||||||
@ -18,6 +18,15 @@ public interface ChatRecordMapper {
|
|||||||
|
|
||||||
List<MessageVo> selectMegVoList(MessageSearchDto messageDto);
|
List<MessageVo> selectMegVoList(MessageSearchDto messageDto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author mengkuiliang
|
||||||
|
* @Description
|
||||||
|
* @Date 2023-10-25 025 15:25
|
||||||
|
* @Param [bindingNo, doctorNo]
|
||||||
|
* @return com.xinelu.applet.vo.chatrecord.MessageCenterVo
|
||||||
|
**/
|
||||||
|
List<MessageVo> selectMegList(MessageSearchDto messageDto);
|
||||||
|
|
||||||
MessageCenterVo selectOneChatRecord(@Param("bindingNo")Long bindingNo, @Param("doctorNo")Long doctorNo);
|
MessageCenterVo selectOneChatRecord(@Param("bindingNo")Long bindingNo, @Param("doctorNo")Long doctorNo);
|
||||||
/**
|
/**
|
||||||
* 查询图文咨询-聊天记录
|
* 查询图文咨询-聊天记录
|
||||||
|
|||||||
@ -81,6 +81,15 @@ public interface IChatRecordService {
|
|||||||
|
|
||||||
List<MessageCenterVo> getMegVoList(MessageSearchDto messageDto);
|
List<MessageCenterVo> getMegVoList(MessageSearchDto messageDto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author mengkuiliang
|
||||||
|
* @Description 获取指定类型的消息记录
|
||||||
|
* @Date 2023-10-25 025 15:22
|
||||||
|
* @Param [messageDto]
|
||||||
|
* @return java.util.List<com.xinelu.applet.vo.chatrecord.MessageVo>
|
||||||
|
**/
|
||||||
|
List<MessageVo> getMegList(MessageSearchDto messageDto);
|
||||||
|
|
||||||
|
|
||||||
Integer deleteMegs(List<Long> ids);
|
Integer deleteMegs(List<Long> ids);
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.xinelu.applet.service.chatRecord.impl;
|
package com.xinelu.applet.service.chatRecord.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.xinelu.applet.dto.chatrecord.ChatRecordDTO;
|
import com.xinelu.applet.dto.chatrecord.ChatRecordDTO;
|
||||||
@ -10,6 +11,7 @@ import com.xinelu.applet.vo.chatrecord.MessageCenterVo;
|
|||||||
import com.xinelu.applet.vo.chatrecord.MessageVo;
|
import com.xinelu.applet.vo.chatrecord.MessageVo;
|
||||||
import com.xinelu.common.config.XinELuConfig;
|
import com.xinelu.common.config.XinELuConfig;
|
||||||
import com.xinelu.common.core.domain.AjaxResult;
|
import com.xinelu.common.core.domain.AjaxResult;
|
||||||
|
import com.xinelu.common.core.domain.R;
|
||||||
import com.xinelu.common.core.dto.MessageTemplate;
|
import com.xinelu.common.core.dto.MessageTemplate;
|
||||||
import com.xinelu.common.enums.MessageContentType;
|
import com.xinelu.common.enums.MessageContentType;
|
||||||
import com.xinelu.common.exception.ServiceException;
|
import com.xinelu.common.exception.ServiceException;
|
||||||
@ -19,19 +21,20 @@ import com.xinelu.common.utils.DateUtils;
|
|||||||
import com.xinelu.common.utils.bean.BeanUtils;
|
import com.xinelu.common.utils.bean.BeanUtils;
|
||||||
import com.xinelu.common.utils.file.FileUploadUtils;
|
import com.xinelu.common.utils.file.FileUploadUtils;
|
||||||
import com.xinelu.common.utils.file.MimeTypeUtils;
|
import com.xinelu.common.utils.file.MimeTypeUtils;
|
||||||
|
import com.xinelu.common.utils.http.HttpService;
|
||||||
|
import com.xinelu.common.utils.spring.SpringUtils;
|
||||||
import com.xinelu.common.utils.uuid.IdUtils;
|
import com.xinelu.common.utils.uuid.IdUtils;
|
||||||
import com.xinelu.manage.domain.chatRecord.ChatRecord;
|
import com.xinelu.manage.domain.chatRecord.ChatRecord;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.time.ZoneId;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
import com.xinelu.manage.domain.hospitalpersoninfo.HospitalPersonInfo;
|
import com.xinelu.manage.domain.hospitalpersoninfo.HospitalPersonInfo;
|
||||||
import com.xinelu.manage.service.hospitalpersoninfo.IHospitalPersonInfoService;
|
import com.xinelu.manage.service.hospitalpersoninfo.IHospitalPersonInfoService;
|
||||||
|
import com.xinelu.manage.service.patientinfo.IPatientInfoService;
|
||||||
|
import com.xinelu.manage.vo.patientinfo.PatientInfoVO;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
@ -51,6 +54,10 @@ public class ChatRecordServiceImpl implements IChatRecordService {
|
|||||||
private XinELuConfig xinYiLuConfig;
|
private XinELuConfig xinYiLuConfig;
|
||||||
@Resource
|
@Resource
|
||||||
private IHospitalPersonInfoService hospitalPersonInfoService;
|
private IHospitalPersonInfoService hospitalPersonInfoService;
|
||||||
|
@Resource
|
||||||
|
private IPatientInfoService patientInfoService;
|
||||||
|
@Resource
|
||||||
|
private HttpService httpService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询图文咨询-聊天记录
|
* 查询图文咨询-聊天记录
|
||||||
@ -224,6 +231,53 @@ public class ChatRecordServiceImpl implements IChatRecordService {
|
|||||||
return messageCenterVos;
|
return messageCenterVos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author mengkuiliang
|
||||||
|
* @Description 获取指定类型的消息记录
|
||||||
|
* @Date 2023-10-25 025 15:21
|
||||||
|
* @Param [messageDto]
|
||||||
|
* @return java.util.List<com.xinelu.applet.vo.chatrecord.MessageVo>
|
||||||
|
**/
|
||||||
|
@Override
|
||||||
|
public List<MessageVo> getMegList(MessageSearchDto messageDto) {
|
||||||
|
// 获取注册信息
|
||||||
|
PatientInfoVO patientInfo = patientInfoService.selectPatientInfoById(messageDto.getPatientId());
|
||||||
|
if (patientInfo == null) {
|
||||||
|
throw new ServiceException("未查询到注册信息");
|
||||||
|
}
|
||||||
|
String bindTimeStr = String.valueOf(patientInfo.getBindingTime().getYear()) + String.valueOf(patientInfo.getBindingTime().getMonthValue()) + String.valueOf(patientInfo.getBindingTime().getDayOfMonth()) + String.valueOf(patientInfo.getBindingTime().getHour()) + String.valueOf(patientInfo.getBindingTime().getMinute()) + String.valueOf(patientInfo.getBindingTime().getSecond());
|
||||||
|
messageDto.setBindingTime(DateUtils.parseDate(bindTimeStr));
|
||||||
|
|
||||||
|
// 通知公告
|
||||||
|
if(messageDto.getMessageCategory().equals("1")) {
|
||||||
|
return chatRecordMapper.selectMegList(messageDto);
|
||||||
|
// 健康推送
|
||||||
|
} else if(messageDto.getMessageCategory().equals("2")) {
|
||||||
|
String result = (String) httpService.get(SpringUtils.getFdUrl(patientInfo.getCityCode()) + "/resident/signinfo/detail/" + patientInfo.getCardNo(), null, String.class);
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||||
|
if (!"1".equals(jsonObject.get("code"))) {
|
||||||
|
throw new ServiceException(jsonObject.get("msg").toString());
|
||||||
|
}
|
||||||
|
if (!jsonObject.containsKey("data") || jsonObject.get("data") == null) {
|
||||||
|
throw new ServiceException("未查询到签约信息");
|
||||||
|
}
|
||||||
|
JSONObject signInfoObject = jsonObject.getJSONObject("data");
|
||||||
|
HospitalPersonInfo hospitalPersonInfo = hospitalPersonInfoService.getByPersonCode(signInfoObject.getString("userNo"), null);
|
||||||
|
if (hospitalPersonInfo == null) {
|
||||||
|
throw new ServiceException("未查询到医生信息");
|
||||||
|
}
|
||||||
|
messageDto.setSenderId(hospitalPersonInfo.getId());
|
||||||
|
messageDto.setCrowdNoList(Arrays.asList(signInfoObject.getString("crowdsNo").split(",")));
|
||||||
|
return chatRecordMapper.selectMegList(messageDto);
|
||||||
|
// 消息通知
|
||||||
|
} else if(messageDto.getMessageCategory().equals("4")) {
|
||||||
|
messageDto.setRecipientId(patientInfo.getId());
|
||||||
|
return chatRecordMapper.selectMegList(messageDto);
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override public Integer deleteMegs(List<Long> ids) {
|
@Override public Integer deleteMegs(List<Long> ids) {
|
||||||
return chatRecordMapper.deleteMegs(ids);
|
return chatRecordMapper.deleteMegs(ids);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class MessageCenterVo {
|
public class MessageCenterVo {
|
||||||
|
|
||||||
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询")
|
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询 4:消息通知")
|
||||||
private String messageCategory;
|
private String messageCategory;
|
||||||
|
|
||||||
@ApiModelProperty("通知适用人群(0:全部人群)")
|
@ApiModelProperty("通知适用人群(0:全部人群)")
|
||||||
|
|||||||
@ -18,7 +18,7 @@ public class MessageVo {
|
|||||||
@ApiModelProperty("业务主键")
|
@ApiModelProperty("业务主键")
|
||||||
private String messageNo;
|
private String messageNo;
|
||||||
|
|
||||||
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询")
|
@ApiModelProperty("消息类别 1:通知公告,2:健康推送,3:在线咨询 4:消息通知")
|
||||||
private String messageCategory;
|
private String messageCategory;
|
||||||
|
|
||||||
@ApiModelProperty("通知适用人群(0:全部人群)")
|
@ApiModelProperty("通知适用人群(0:全部人群)")
|
||||||
|
|||||||
@ -78,6 +78,42 @@
|
|||||||
order by send_time desc
|
order by send_time desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectMegList" resultType="com.xinelu.applet.vo.chatrecord.MessageVo">
|
||||||
|
select <include refid="Message_Vo_List"/>
|
||||||
|
from chat_record
|
||||||
|
where del_flag = '0' and message_category = #{messageCategory}
|
||||||
|
<!-- 查询居民注册之后的通知消息 -->
|
||||||
|
<if test="bindingTime != null">
|
||||||
|
and send_time >= #{bindingTime}
|
||||||
|
</if>
|
||||||
|
<choose>
|
||||||
|
<!-- 健康推送 -->
|
||||||
|
<when test="messageCategory == 2">
|
||||||
|
and recipient_id is null
|
||||||
|
<!-- 查询适用人群的通知消息 -->
|
||||||
|
<if test="crowdNoList != null and crowdNoList.size() > 0">
|
||||||
|
and (
|
||||||
|
<foreach collection="crowdNoList" item="no" open="(" separator="or" close=")">
|
||||||
|
FIND_IN_SET(#{no},crowds)
|
||||||
|
</foreach>
|
||||||
|
or crowds = '0')
|
||||||
|
</if>
|
||||||
|
<!-- 查询签约医生的通知 -->
|
||||||
|
and sender_id = #{senderId}
|
||||||
|
</when>
|
||||||
|
<!-- 通知公告 -->
|
||||||
|
<when test="messageCategory == 1">
|
||||||
|
and recipient_id is null
|
||||||
|
</when>
|
||||||
|
<!-- 消息通知 -->
|
||||||
|
<when test="messageCategory == 4">
|
||||||
|
and recipient_id = #{recipientId}
|
||||||
|
</when>
|
||||||
|
</choose>
|
||||||
|
order by send_time desc
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectOneChatRecord" parameterType="java.lang.String"
|
<select id="selectOneChatRecord" parameterType="java.lang.String"
|
||||||
resultType="com.xinelu.applet.vo.chatrecord.MessageCenterVo">
|
resultType="com.xinelu.applet.vo.chatrecord.MessageCenterVo">
|
||||||
select message_category,
|
select message_category,
|
||||||
|
|||||||
@ -563,7 +563,9 @@
|
|||||||
birth_date,
|
birth_date,
|
||||||
personal_wechat_code_url,
|
personal_wechat_code_url,
|
||||||
disabling_condition,
|
disabling_condition,
|
||||||
disabling_reason
|
disabling_reason,
|
||||||
|
city_code,
|
||||||
|
binding_time
|
||||||
FROM patient_info
|
FROM patient_info
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
and del_flag = 0
|
and del_flag = 0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user