|  | @ -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;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | }
 |