|
@ -0,0 +1,895 @@
|
|
|
package com.yihu.jw.security.utils;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yihu.jw.util.http.HttpClientUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.http.NameValuePair;
|
|
|
import org.apache.http.message.BasicNameValuePair;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* IM工具类
|
|
|
* @author huangwenjie
|
|
|
*/
|
|
|
@Component
|
|
|
public class ImUtil {
|
|
|
|
|
|
@Autowired
|
|
|
private HttpClientUtil HttpClientUtil;
|
|
|
|
|
|
@Value("${im.im_list_get}")
|
|
|
private String im_host;
|
|
|
|
|
|
|
|
|
public enum ContentType {
|
|
|
plainText("信息", "1"),
|
|
|
image("图片信息", "2"),
|
|
|
audio("创建处方", "3"),
|
|
|
article("文章信息", "4"),
|
|
|
goTo("跳转信息,求组其他医生或者邀请其他医生发送的推送消息", "5"),
|
|
|
topicBegin("议题开始", "6"),
|
|
|
topicEnd("议题结束", "7"),
|
|
|
personalCard("个人名片", "18"),
|
|
|
messageForward("消息转发", "19"),
|
|
|
topicInto("进入议题", "14"),
|
|
|
video("视频", "12"),
|
|
|
system("系统消息", "13"),
|
|
|
prescriptionCheck("续方审核消息消息", "15"),
|
|
|
prescriptionBloodStatus("续方咨询血糖血压咨询消息", "16"),
|
|
|
prescriptionFollowupContent("续方咨询随访问卷消息", "17"),
|
|
|
Rehabilitation("康复计划发送","20"),
|
|
|
Reservation("转诊预约发送","21"),
|
|
|
Know("已知悉","22");
|
|
|
|
|
|
private String name;
|
|
|
private String value;
|
|
|
ContentType(String name, String value) {
|
|
|
this.name = name;
|
|
|
this.value = value;
|
|
|
}
|
|
|
|
|
|
public String getName() {
|
|
|
return name;
|
|
|
}
|
|
|
|
|
|
public void setName(String name) {
|
|
|
this.name = name;
|
|
|
}
|
|
|
|
|
|
public String getValue() {
|
|
|
return value;
|
|
|
}
|
|
|
|
|
|
public void setValue(String value) {
|
|
|
this.value = value;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public String sendMDTSocketMessageToDoctor(String targetUserId, String message) {
|
|
|
String imAddr = im_host + "api/v2/message/doctorSystemMessage";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("targetUserId", targetUserId);
|
|
|
params.put("message", message);
|
|
|
String response = HttpClientUtil.postBody(imAddr,params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
public String sendPcManageMessageToPc(String clientType, String message) {
|
|
|
String imAddr = im_host + "api/v2/message/cloudCarePcManageMessage";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("clientType", clientType);
|
|
|
params.put("message", message);
|
|
|
String response = HttpClientUtil.postBody(imAddr,params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
public String sendPatientSystemMessage(String targetUserId, String message) {
|
|
|
String imAddr = im_host + "api/v2/message/patientSystemMessage";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("targetUserId", targetUserId);
|
|
|
params.put("message", message);
|
|
|
String response = HttpClientUtil.postBody(imAddr,params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送消息
|
|
|
* @param senderId 发送者的code
|
|
|
* @param receiverId 接受者code
|
|
|
* @param contentType 消息类型 1二维码内容
|
|
|
* @param content 消息内容
|
|
|
* @return
|
|
|
*/
|
|
|
public String sendMessage(String senderId,String receiverId,String contentType,String content){
|
|
|
String imAddr = im_host + "api/v2/message/send";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("sender_id", senderId);
|
|
|
params.put("sender_name", receiverId);
|
|
|
params.put("content_type", contentType);
|
|
|
params.put("content", content);
|
|
|
String response = HttpClientUtil.postBody(imAddr, params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取医生统计数据
|
|
|
* status reply 为空值是是该医生总咨询量
|
|
|
*
|
|
|
* @param user 团队就把团队的医生合并起来用,隔开(医生编码)
|
|
|
* @param adminTeamCode
|
|
|
* @param status
|
|
|
* @param reply
|
|
|
* @return
|
|
|
*/
|
|
|
public String getConsultData(String user, Integer adminTeamCode, Integer status, Integer reply) {
|
|
|
String imAddr = im_host + "api/v2/sessions/topics/count/reply";
|
|
|
imAddr = imAddr + "?user=" + user;
|
|
|
if (status != null) {
|
|
|
imAddr += ("&status=" + status);
|
|
|
}
|
|
|
if (adminTeamCode != null) {
|
|
|
imAddr += ("&adminTeamCode=" + adminTeamCode);
|
|
|
}
|
|
|
if (reply != null) {
|
|
|
imAddr += ("&reply=" + reply);
|
|
|
}
|
|
|
String response = HttpClientUtil.get(imAddr, "UTF-8");
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
public void updateTopics(String topicId, String jsonValue) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + topicId + "/topics";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("topic_id", topicId);
|
|
|
params.put("data", jsonValue);
|
|
|
HttpClientUtil.putBody(imAddr, params);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 当前医生下当前团队列表接口
|
|
|
* 获取团队内医生的健康咨询状况
|
|
|
* status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
|
|
|
*
|
|
|
* @param user 团队就把团队的医生合并起来用,隔开(医生编码)
|
|
|
* @param adminTeamCode 行政团队code
|
|
|
* @param page
|
|
|
* @param pagesize
|
|
|
* @param status
|
|
|
* @param reply
|
|
|
* @return
|
|
|
*/
|
|
|
public String getTeamConsultByStatus(String user, Integer adminTeamCode, Integer status, Integer reply, int page, int pagesize) {
|
|
|
String imAddr = im_host + "api/v2/sessions/healthTeamTopics";
|
|
|
imAddr = imAddr + "?user=" + user + "&page=" + page + "&pagesize=" + pagesize;
|
|
|
if (adminTeamCode != null) {
|
|
|
imAddr += ("&adminTeamCode=" + adminTeamCode);
|
|
|
}
|
|
|
if (status != null) {
|
|
|
imAddr += ("&status=" + status);
|
|
|
}
|
|
|
if (reply != null) {
|
|
|
imAddr += ("&reply=" + reply);
|
|
|
}
|
|
|
String response = HttpClientUtil.get(imAddr, "UTF-8");
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 列表接口
|
|
|
* 获取团队内医生的健康咨询状况
|
|
|
* status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
|
|
|
*
|
|
|
* @param user 团队就把团队的医生合并起来用,隔开(医生编码)
|
|
|
* @param page
|
|
|
* @param pagesize
|
|
|
* @param status
|
|
|
* @param reply
|
|
|
* @return
|
|
|
*/
|
|
|
public String getConsultByStatus(String user, Integer status, Integer reply, int page, int pagesize) {
|
|
|
String imAddr = im_host + "api/v2/sessions/healthTopics";
|
|
|
imAddr = imAddr + "?user=" + user + "&page=" + page + "&pagesize=" + pagesize;
|
|
|
if (status != null) {
|
|
|
imAddr += ("&status=" + status);
|
|
|
}
|
|
|
if (reply != null) {
|
|
|
imAddr += ("&reply=" + reply);
|
|
|
}
|
|
|
String response = HttpClientUtil.get(imAddr, "UTF-8");
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 咨询列表
|
|
|
* @param user
|
|
|
* @param status status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
|
|
|
* @param reply
|
|
|
* @param type 1、三师咨询,2、家庭医生咨询,6、患者名医咨询 7医生名医咨询 8续方咨询 10医生发起的求助
|
|
|
* @param page
|
|
|
* @param pagesize
|
|
|
* @return
|
|
|
*/
|
|
|
public String getConsultByStatusAndType(String user,Integer status,Integer reply,Integer type,String patientName,String startTime,String endTime,int page,int pagesize){
|
|
|
String imAddr = im_host + "api/v2/sessions/topicListByType";
|
|
|
imAddr = imAddr + "?user="+user + "&page=" + page + "&pagesize=" + pagesize;
|
|
|
if (status != null) {
|
|
|
imAddr += ("&status=" + status);
|
|
|
}
|
|
|
if (reply != null) {
|
|
|
imAddr += ("&reply=" + reply);
|
|
|
}
|
|
|
if (type != null) {
|
|
|
imAddr += ("&type=" + type);
|
|
|
}
|
|
|
if (patientName != null) {
|
|
|
imAddr += ("&patientName=" + patientName);
|
|
|
}
|
|
|
if (startTime != null) {
|
|
|
imAddr += ("&startTime=" + startTime);
|
|
|
}
|
|
|
if (endTime != null) {
|
|
|
imAddr += ("&endTime=" + endTime);
|
|
|
}
|
|
|
String response = HttpClientUtil.get(imAddr, "UTF-8");
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 咨询列表总数
|
|
|
* @param user
|
|
|
* @param status status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
|
|
|
* @param reply
|
|
|
* @param type 1、三师咨询,2、家庭医生咨询,6、患者名医咨询 7医生名医咨询 8续方咨询 10医生发起的求助
|
|
|
* @return
|
|
|
*/
|
|
|
public String getConsultCountByStatusAndType(String user,Integer status,Integer reply,Integer type,String patientName,String startTime,String endTime){
|
|
|
String imAddr = im_host + "api/v2/sessions/topicListCountByType";
|
|
|
imAddr = imAddr + "?user="+user;
|
|
|
if (status != null) {
|
|
|
imAddr += ("&status=" + status);
|
|
|
}
|
|
|
if (reply != null) {
|
|
|
imAddr += ("&reply=" + reply);
|
|
|
}
|
|
|
if (type != null) {
|
|
|
imAddr += ("&type=" + type);
|
|
|
}
|
|
|
if (patientName != null) {
|
|
|
imAddr += ("&patientName=" + patientName);
|
|
|
}
|
|
|
if (startTime != null) {
|
|
|
imAddr += ("&startTime=" + startTime);
|
|
|
}
|
|
|
if (endTime != null) {
|
|
|
imAddr += ("&endTime=" + endTime);
|
|
|
}
|
|
|
String response = HttpClientUtil.get(imAddr, "UTF-8");
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送消息给IM
|
|
|
*
|
|
|
* @param from 来自
|
|
|
* @param contentType 1文字 2图片消息
|
|
|
* @param content 内容
|
|
|
*/
|
|
|
public String sendImMsg(String from, String fromName, String sessionId, String contentType, String content, String businessType,String extend) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/messages";
|
|
|
System.out.println("im地址"+imAddr);
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("sender_id", from);
|
|
|
params.put("sender_name", fromName);
|
|
|
params.put("content_type", contentType);
|
|
|
params.put("content", content);
|
|
|
params.put("session_id", sessionId);
|
|
|
params.put("business_type", businessType);
|
|
|
params.put("extend",extend);
|
|
|
String response = HttpClientUtil.postBody(imAddr, params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新会话状态
|
|
|
*
|
|
|
* @param sessionId 会话ID
|
|
|
* @param status 状态
|
|
|
*/
|
|
|
public String updateSessionStatus(String sessionId, String status) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/status?status=" + status + "&sessionId=" + sessionId;
|
|
|
JSONObject params = new JSONObject();
|
|
|
String response = HttpClientUtil.postBody(imAddr, params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新会话状态
|
|
|
*
|
|
|
* @param sessionId 会话ID
|
|
|
* @param status 状态
|
|
|
*/
|
|
|
public String updateTopicEvaluate(String sessionId, String status) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/status?status=" + status + "&sessionId=" + sessionId;
|
|
|
JSONObject params = new JSONObject();
|
|
|
String response = HttpClientUtil.postBody(imAddr, params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送消息给IM
|
|
|
*
|
|
|
* @param from 来自
|
|
|
* @param contentType 1文字 2图片消息
|
|
|
* @param content 内容
|
|
|
*/
|
|
|
public String sendTopicIM(String from, String fromName, String topicId, String contentType, String content, String agent) {
|
|
|
String url = im_host + "api/v2/sessions/topic/" + topicId + "/messages";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("sender_id", from);
|
|
|
params.put("sender_name", fromName);
|
|
|
params.put("content_type", contentType);
|
|
|
params.put("content", content);
|
|
|
params.put("topic_id", topicId);
|
|
|
params.put("agent", agent);
|
|
|
String response = HttpClientUtil.postBody(url, params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送消息给IM
|
|
|
*
|
|
|
* @param from 来自
|
|
|
* @param contentType 1文字 2图片消息
|
|
|
* @param content 内容
|
|
|
*/
|
|
|
public String sendTopicIM(String from, String fromName, String topicId, String contentType, String content, String agent,String patient_name,int patient_sex,int patient_age) {
|
|
|
String url = im_host + "api/v2/sessions/topic/" + topicId + "/messages";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("sender_id", from);
|
|
|
params.put("sender_name", fromName);
|
|
|
params.put("patient_name", patient_name);
|
|
|
params.put("patient_sex", patient_sex);
|
|
|
params.put("patient_age", patient_age);
|
|
|
params.put("content_type", contentType);
|
|
|
params.put("content", content);
|
|
|
params.put("topic_id", topicId);
|
|
|
params.put("agent", agent);
|
|
|
String response = HttpClientUtil.postBody(url, params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送进入im消息
|
|
|
* IM: ParticipantUpdate:'/:session_id/participant/update'
|
|
|
*
|
|
|
* @param from
|
|
|
* @param sessionId
|
|
|
* @param topicId
|
|
|
* @return
|
|
|
*/
|
|
|
public String sendIntoTopicIM(String from, String sessionId, String topicId, String content, String intoUser, String intoUserName) {
|
|
|
String url = im_host + "api/v2/sessions/" + sessionId + "/topics/" + topicId + "/into";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("sender_id", from);
|
|
|
params.put("topic_id", topicId);
|
|
|
params.put("into_user", intoUser);
|
|
|
params.put("into_user_name", intoUserName);
|
|
|
params.put("content", content);
|
|
|
String response = HttpClientUtil.postBody(url, params);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 更新会话成员(新增或删除)
|
|
|
* @param sessionId 会话id
|
|
|
* @param user 新增的成员id
|
|
|
* @param oldUserId 删除的成员id
|
|
|
*/
|
|
|
public String updateParticipant(String sessionId, String user,String oldUserId) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/participant/update";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("session_id", sessionId );
|
|
|
params.put("user_id", user );
|
|
|
if(!StringUtils.isEmpty(oldUserId)){
|
|
|
params.put("old_user_id", oldUserId);
|
|
|
}
|
|
|
return HttpClientUtil.postBody(imAddr, params);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新会话成员(新增或删除) 活跃成员
|
|
|
* @param sessionId 会话id
|
|
|
* @param user 新增的成员id
|
|
|
* @param oldUserId 删除的成员id
|
|
|
*/
|
|
|
public String updateParticipantNew(String sessionId, String user,String oldUserId) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/participant/updateNew";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("session_id", sessionId );
|
|
|
params.put("user_id", user );
|
|
|
if(!StringUtils.isEmpty(oldUserId)){
|
|
|
params.put("old_user_id", oldUserId);
|
|
|
}
|
|
|
return HttpClientUtil.postBody(imAddr, params);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新消息内容
|
|
|
* @param sessionId 会话id
|
|
|
* @param sessionType 会话类型
|
|
|
* @param msgId 消息id
|
|
|
* @param content 消息内容
|
|
|
*/
|
|
|
public String updateMessage(String sessionId, String sessionType,String msgId,String content) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/messages/"+ msgId +"/update";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("session_id", sessionId );
|
|
|
params.put("session_type", sessionType );
|
|
|
params.put("message_id", msgId );
|
|
|
params.put("content", content );
|
|
|
return HttpClientUtil.postBody(imAddr, params);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 结束议题
|
|
|
*
|
|
|
* @param topicId 议题ID
|
|
|
* @param endUser 结束人
|
|
|
* @param endUserName 结束人名字
|
|
|
* @param sessionId 会话ID
|
|
|
*/
|
|
|
public JSONObject endTopics(String sessionId, String endUser, String endUserName, String topicId) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/topics/" + topicId + "/ended";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("session_id", sessionId);
|
|
|
params.put("end_user", endUser);
|
|
|
params.put("end_user_name", endUserName);
|
|
|
params.put("topic_id", topicId);
|
|
|
String ret = HttpClientUtil.postBody(imAddr, params);
|
|
|
JSONObject obj = null;
|
|
|
try {
|
|
|
obj = JSON.parseObject(ret);
|
|
|
} catch (Exception e) {
|
|
|
return null;
|
|
|
}
|
|
|
return obj;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 议题邀请人员
|
|
|
*
|
|
|
* @param user 结束人名字
|
|
|
* @param sessionId 会话ID
|
|
|
*/
|
|
|
public void updateTopicUser(String sessionId, String user) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + sessionId + "/participants/" + user;
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("user", user + ":" + 0);
|
|
|
HttpClientUtil.putBody(imAddr, params);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 创建议题
|
|
|
*
|
|
|
* @param topicId 议题ID
|
|
|
* @param topicName 议题名称
|
|
|
* @param participants 成员
|
|
|
*/
|
|
|
public JSONObject createTopics(String sessionId, String topicId, String topicName, JSONObject participants, JSONObject messages, String sessionType) {
|
|
|
String imAddr = im_host + "api/v2/sessions/" + topicId + "/topics";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("topic_id", topicId);
|
|
|
params.put("topic_name", topicName);
|
|
|
params.put("participants", participants.toString());
|
|
|
params.put("messages", messages.toString());
|
|
|
params.put("session_id", sessionId);
|
|
|
params.put("session_type", sessionType);
|
|
|
String ret = HttpClientUtil.postBody(imAddr, params);
|
|
|
JSONObject obj = null;
|
|
|
try {
|
|
|
obj = JSON.parseObject(ret);
|
|
|
} catch (Exception e) {
|
|
|
return null;
|
|
|
}
|
|
|
return obj;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 判断会话是否存在
|
|
|
*/
|
|
|
public Boolean sessionIsExist(String sessionId) {
|
|
|
Boolean re = false;
|
|
|
String url = im_host + "api/v2/sessions/isExist?session_id="+sessionId;
|
|
|
JSONObject params = new JSONObject();
|
|
|
String ret = HttpClientUtil.get(url, "UTF-8");
|
|
|
JSONObject obj = null;
|
|
|
try {
|
|
|
obj = JSON.parseObject(ret);
|
|
|
if(obj.getInteger("status") ==200&&sessionId.equals(obj.getString("sessionId"))){
|
|
|
String sessionStatus = obj.getString("sessionId");
|
|
|
if (StringUtils.isNoneBlank(sessionStatus)){
|
|
|
String sessionStatusUrl = im_host + "api/v2/sessions/"+sessionId+"/status?status=0&sessionId="+sessionId;
|
|
|
JSONObject object = new JSONObject();
|
|
|
String rs = HttpClientUtil.postBody(sessionStatusUrl, object);
|
|
|
}
|
|
|
re = true;
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
return null;
|
|
|
}
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 创建会话(system)
|
|
|
*/
|
|
|
public JSONObject createSession(JSONObject participants, String sessionType, String sessionName, String sessionId) {
|
|
|
String imAddr = im_host + "api/v2/sessions";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("participants", participants.toString());
|
|
|
params.put("session_name", sessionName);
|
|
|
params.put("session_type", sessionType);
|
|
|
params.put("session_id", sessionId);
|
|
|
String ret = HttpClientUtil.postBody(imAddr, params);
|
|
|
JSONObject obj = null;
|
|
|
try {
|
|
|
obj = JSON.parseObject(ret);
|
|
|
} catch (Exception e) {
|
|
|
return null;
|
|
|
}
|
|
|
return obj;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取会话实例的消息对象
|
|
|
*
|
|
|
* @param senderId
|
|
|
* @param senderName
|
|
|
* @param title
|
|
|
* @param description
|
|
|
* @param images
|
|
|
* @param agent
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getCreateTopicMessage(String senderId, String senderName, String title, String description, String images, String agent) {
|
|
|
JSONObject messages = new JSONObject();
|
|
|
messages.put("description", description);
|
|
|
messages.put("title", title);
|
|
|
messages.put("img", images);
|
|
|
messages.put("sender_id", senderId);
|
|
|
messages.put("sender_name", senderName);
|
|
|
messages.put("agent", agent);
|
|
|
return messages;
|
|
|
}
|
|
|
|
|
|
public JSONObject getTopicMessage(String topicId, String startMsgId, String endMsgId, int page, int pagesize, String uid) {
|
|
|
String url = im_host
|
|
|
+ "api/v2/sessions/topic/" + topicId + "/messages?topic_id=" + topicId + "&end=" + startMsgId
|
|
|
+ "&start=" + (endMsgId == null ? "" : endMsgId) + "&page=" + page + "&pagesize=" + pagesize + "&user=" + uid;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url, "UTF-8");
|
|
|
JSONObject obj = JSON.parseObject(ret);
|
|
|
if (obj.getInteger("status") == -1) {
|
|
|
throw new RuntimeException(obj.getString("message"));
|
|
|
} else {
|
|
|
return obj.getJSONObject("data");
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public JSONArray getSessionMessage(String sessionId, String startMsgId, String endMsgId, int page, int pagesize, String uid) {
|
|
|
String url = im_host + "api/v2/sessions/" + sessionId + "/messages?session_id=" + sessionId + "&user=" + uid + "&start_message_id=" + startMsgId + "&end_message_id=" + endMsgId + "&page=" + page + "&pagesize=" + pagesize;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url, "UTF-8");
|
|
|
JSONArray obj = JSON.parseArray(ret);
|
|
|
return obj;
|
|
|
} catch (Exception e) {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除对应的成员信息在MUC模式中
|
|
|
*
|
|
|
* @param userId
|
|
|
* @param oldUserId
|
|
|
* @param sessionId
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject deleteMucUser(String userId, String oldUserId, String sessionId) throws Exception {
|
|
|
String url = im_host + "api/v2/sessions/" + sessionId + "/participant/update";
|
|
|
try {
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("user_id", userId);
|
|
|
params.put("old_user_id", oldUserId);
|
|
|
params.put("session_id", sessionId);
|
|
|
String ret = HttpClientUtil.postBody(url, params);
|
|
|
JSONObject obj = JSON.parseObject(ret);
|
|
|
if (obj.getInteger("status") == -1) {
|
|
|
throw new RuntimeException("人员更换失败!");
|
|
|
} else {
|
|
|
return obj;
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("人员更换失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 删除会话人员
|
|
|
* @param sessionId
|
|
|
* @param participants
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject deleteParticipants(String sessionId,String participants){
|
|
|
String url = im_host+"api/v2/sessions/"+sessionId+"/participants/"+participants;
|
|
|
String rs = HttpClientUtil.doDelete(url,null,null);
|
|
|
JSONObject obj = JSONObject.parseObject(rs);
|
|
|
if (obj.getInteger("status")==-1){
|
|
|
throw new RuntimeException("删除会话人员失败!");
|
|
|
}else {
|
|
|
return obj;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取议题
|
|
|
*
|
|
|
* @param topicId
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getTopic(String topicId) throws Exception {
|
|
|
String url = im_host + "api/v2/sessions/topics/" + topicId + "?topic_id=" + topicId;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url, "utf-8");
|
|
|
JSONObject obj = JSON.parseObject(ret);
|
|
|
if (obj.getInteger("status") == -1) {
|
|
|
throw new RuntimeException("获取议题失败!");
|
|
|
} else {
|
|
|
return obj;
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("获取议题失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取会话成员
|
|
|
*
|
|
|
* @param sessionId
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONArray getParticipants(String sessionId) {
|
|
|
String url = im_host + "api/v2/sessions/" + sessionId + "/participants?session_id=" + sessionId;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url, "utf-8");
|
|
|
return JSON.parseArray(ret);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("获取会话成员!sessionId =" + sessionId);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取会话成员
|
|
|
*
|
|
|
* @param sessionId
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONArray getSessions(String sessionId) {
|
|
|
String url = im_host + "api/v2/sessions/" + sessionId + "/participants?session_id=" + sessionId;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url, "utf-8");
|
|
|
return JSON.parseArray(ret);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("获取议题失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public JSONObject cleanMessageToRedis(String sessionId){
|
|
|
String url = im_host + "api/v2/message/dataMessage?sessionId="+sessionId;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url,"utf-8");
|
|
|
return JSON.parseObject(ret);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("操作失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public JSONObject cleanMessageLastFetchTime(String sessionId,String userId){
|
|
|
String url = im_host + "api/v2/message/cleanMessageLastFetchTimeToRedis?sessionId="+sessionId+"&userId="+userId;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url,"utf-8");
|
|
|
return JSON.parseObject(ret);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("操作失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 根据session和userid获取单个会话
|
|
|
* @param sessionId
|
|
|
* @param userId
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getSingleSessionInfo(String sessionId,String userId){
|
|
|
String url = im_host + "api/v2/sessions/" + sessionId + "/session?user_id=" + userId;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url,"utf-8");
|
|
|
return JSON.parseObject(ret);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("操作失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送消息给IM
|
|
|
*
|
|
|
* @param from 来自
|
|
|
* @param to
|
|
|
* @param contentType 1文字 2图片消息
|
|
|
* @param content 内容
|
|
|
*/
|
|
|
public String sendIM(String from, String to, String contentType, String content) {
|
|
|
String imAddr = im_host + "api/v1/chats/pm";
|
|
|
List<NameValuePair> params = new ArrayList<>();
|
|
|
params.add(new BasicNameValuePair("from", from));
|
|
|
params.add(new BasicNameValuePair("to", to));
|
|
|
params.add(new BasicNameValuePair("contentType", contentType));
|
|
|
params.add(new BasicNameValuePair("content", content));
|
|
|
String response = HttpClientUtil.post(imAddr, params, "UTF-8");
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
|
|
|
public static final String SESSION_TYPE_MUC = "1";
|
|
|
public static final String SESSION_TYPE_P2P = "2";
|
|
|
public static final String SESSION_TYPE_GROUP = "3";
|
|
|
public static final String SESSION_TYPE_SYSTEM = "0";
|
|
|
public static final String SESSION_TYPE_PRESCRIPTION = "8";//续方
|
|
|
public static final String SESSION_TYPE_KANGFU = "18";//续方
|
|
|
public static final String SESSION_TYPE_EXAMINATION = "9";//在线复诊-图文
|
|
|
public static final String SESSION_TYPE_ONDOOR_NURSING = "11";//上门护理
|
|
|
public static final String SESSION_TYPE_COLLABORATION_HOSPITAL = "12";///互联网医院协同门诊
|
|
|
public static final String SESSION_TYPE_GUIDANCE_HOSPITAL = "14";//互联网医院居民导诊聊天
|
|
|
public static final String SESSION_TYPE_GENERAL_EXPERT = "15";//全科医生发起求助专科医生的专家咨询
|
|
|
public static final String SESSION_TYPE_EXAMINATION_VIDEO = "16";//在线复诊-视频
|
|
|
public static final String SESSION_TYPE_MUC_VIDEO = "17";//专家-视频
|
|
|
public static final String SESSION_TYPE_GUIDANCE_ASSISTANT = "18";//导诊助手
|
|
|
public static final String SESSION_STATUS_PROCEEDINGS = "0";
|
|
|
public static final String SESSION_STATUS_END = "1";
|
|
|
public static final String SESSION_TYPE_EMERGENCY_ASSISTANCE = "20";//紧急救助
|
|
|
public static final String SESSION_TYPE_DOOR_COACH = "21";//上门辅导(上门预约)
|
|
|
public static final String SESSION_TYPE_SECURITY_WARN = "22";//安防咨询
|
|
|
public static final String SESSION_TYPE_ONLINE = "23";//新生儿在线咨询
|
|
|
public static final String SESSION_TYPE_ONLINEAged = "24";//老人在线咨询
|
|
|
|
|
|
public static final String CONTENT_TYPE_TEXT = "1";
|
|
|
|
|
|
|
|
|
/**
|
|
|
*按会话类型获取会话总数
|
|
|
* @param userid
|
|
|
* @param type
|
|
|
* @param status
|
|
|
* @return
|
|
|
*/
|
|
|
public Integer sessionCountByType(String userid,Integer type,Integer status){
|
|
|
String url = im_host + "api/v2/sessions/sessionCountByType?user_id="+userid+"&type="+type+"&status="+status;
|
|
|
String ret = HttpClientUtil.get(url,"utf-8");
|
|
|
JSONObject obj = JSON.parseObject(ret);
|
|
|
if(obj.getInteger("status") ==200){
|
|
|
return obj.getInteger("count");
|
|
|
}else{
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public Integer SessionsUnreadMessageCountByUserId(String userid){
|
|
|
String url = im_host + "api/v2/sessions/unread_message_count?user_id="+userid;
|
|
|
// String url = "http://ehr.yihu.com/api/v2/sessions/unread_message_count?user_id="+userid;
|
|
|
String ret = HttpClientUtil.get(url,"utf-8");
|
|
|
JSONObject obj = JSON.parseObject(ret);
|
|
|
// if(obj.getInteger("count") ==200){
|
|
|
return obj.getInteger("count");
|
|
|
// }else{
|
|
|
// return 0;
|
|
|
// }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
*获取所有会话未读消息数。
|
|
|
* @param userid
|
|
|
* @param type
|
|
|
* @return
|
|
|
*/
|
|
|
public Integer SessionsUnreadMessageCount(String userid,String type){
|
|
|
String url = im_host + "api/v2/sessions/unread_message_count?user_id="+userid+"&type="+type;
|
|
|
String ret = HttpClientUtil.get(url,"utf-8");
|
|
|
JSONObject obj = JSON.parseObject(ret);
|
|
|
// if(obj.getInteger("count") ==200){
|
|
|
return obj.getInteger("count");
|
|
|
// }else{
|
|
|
// return 0;
|
|
|
// }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
*获取某个会话某个对象的未读消息数。
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
public Integer UserSessionsUnreadMessageCount(String session,String userid){
|
|
|
String url = im_host + "api/v2/sessions/"+session+"/unread_message_count?user_id="+userid;
|
|
|
String ret = HttpClientUtil.get(url,"utf-8");
|
|
|
JSONObject obj = JSON.parseObject(ret);
|
|
|
// if(obj.getInteger("count") ==200){
|
|
|
return obj.getInteger("count");
|
|
|
// }else{
|
|
|
// return 0;
|
|
|
// }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取会话未读消息数量
|
|
|
* @param sessionId
|
|
|
* @param userId
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getSessionUnreadMessageCount(String sessionId, String userId) {
|
|
|
String url = im_host + "api/v2/sessions/" + sessionId + "/unread_message_count?user_id=" + userId;
|
|
|
try {
|
|
|
String ret = HttpClientUtil.get(url, "utf-8");
|
|
|
return JSONObject.parseObject(ret);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("获取会话成员!sessionId =" + sessionId);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取在线人数
|
|
|
* helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
|
|
|
*/
|
|
|
public String getOnlineCountByType(String type) {
|
|
|
String url = im_host + "api/v2/sessions/getOnlineCountByType?type="+type;
|
|
|
String ret = HttpClientUtil.get(url, "UTF-8");
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取在线人数列表
|
|
|
* helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
|
|
|
*/
|
|
|
public String getOnlineListByType(String type) {
|
|
|
String url = im_host + "api/v2/sessions/getOnlineListByType?type="+type;
|
|
|
String ret = HttpClientUtil.get(url, "UTF-8");
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取在线状态
|
|
|
* helper 助老员,teacher 教师,child 幼儿,older 老人
|
|
|
* 返回 {"status":200,"data":1} data>0 说明在线 data =0 不在线
|
|
|
*/
|
|
|
public String findByUserIdAndType(String userId,String type) {
|
|
|
String url = im_host + "api/v2/sessions/findByUserIdAndType?userId="+userId+"&type="+type;
|
|
|
String ret = HttpClientUtil.get(url, "UTF-8");
|
|
|
return ret;
|
|
|
}
|
|
|
}
|