瀏覽代碼

Merge branch 'dev' of chenweida/patient-co-management into dev

chenweida 8 年之前
父節點
當前提交
409fda1e84

+ 61 - 12
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/task/PushMsgTask.java

@ -1,15 +1,22 @@
package com.yihu.wlyy.statistics.task;
import com.yihu.wlyy.statistics.util.http.HttpHelper;
import com.yihu.wlyy.statistics.util.http.HttpResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.LinkedBlockingQueue;
public class PushMsgTask {
@ -117,14 +124,13 @@ public class PushMsgTask {
	 */
	public static boolean pushMessage(String receiver, String msgType, String title, String msg, String data) {
		try {
			HttpHelper httpHelper=new HttpHelper();
			Map<String,Object> params =new HashMap<>();
			params.put("to",receiver);
			params.put("content",msg);
			params.put("contentType",msgType);
			params.put("title",title);
			params.put("summary",data);
			HttpResponse response = httpHelper.post(url, params);
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			params.add(new BasicNameValuePair("to", receiver));
			params.add(new BasicNameValuePair("content", msg));
			params.add(new BasicNameValuePair("contentType", msgType));
			params.add(new BasicNameValuePair("title", title));
			params.add(new BasicNameValuePair("summary", data));
			HttpResponse response = post(url, params);
			if (response != null && response.getStatusCode() == 200) {
				JSONObject json = JSONObject.fromObject(response.getBody());
				if (!"200".equals(json.optString("status"))) {
@ -139,4 +145,47 @@ public class PushMsgTask {
		}
		return false;
	}
	private static HttpResponse post(String url, List<NameValuePair> params) {
		HttpResponse re = new HttpResponse();
		CloseableHttpResponse response = null;
		CloseableHttpClient httpclient =  HttpClients.createDefault();
		//设置请求信息
		try {
			RequestConfig requestConfig = RequestConfig.custom().
					setAuthenticationEnabled(true).build();
			HttpPost request = new HttpPost(url );
			request.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));
			request.setConfig(requestConfig);
			response = httpclient.execute(request);
			re.setStatusCode(response.getStatusLine().getStatusCode());
			re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));
		} catch (Exception e) {
			re.setStatusCode(201);
			re.setBody(e.getMessage());
		} finally {
			close(httpclient, response);
		}
		return re;
	}
	private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
		try {
			if (httpClient != null) {
				httpClient.close();
			}
		} catch (Exception e) {
			System.out.print("关闭httpClient失败");
		}
		try {
			if (response != null) {
				response.close();
			}
		} catch (Exception e) {
			System.out.print("关闭response失败");
		}
	}
}

+ 0 - 130
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/util/http/HttpClientUtil.java

@ -1,130 +0,0 @@
package com.yihu.wlyy.statistics.util.http;
import org.apache.http.Consts;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.*;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
public class HttpClientUtil {
    /**************************** 私有方法 *****************************************/
    private static CloseableHttpClient getCloseableHttpClient(SSLConnectionSocketFactory ssl) {
        if(ssl == null)
        {
            return HttpClients.createDefault();
        }
        else{
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setSSLSocketFactory(ssl)
                    .build();
            return httpClient;
        }
    }
    private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
        try {
            if (httpClient != null) {
                httpClient.close();
            }
        } catch (Exception e) {
            System.out.print("关闭httpClient失败");
        }
        try {
            if (response != null) {
                response.close();
            }
        } catch (Exception e) {
            System.out.print("关闭response失败");
        }
    }
    private static HttpRequestBase getRequest(String method,String url,Map<String,Object> params,Map<String,Object> header) throws Exception
    {
        List<BasicNameValuePair> jsonParams = new ArrayList<>();
        //配置参数
        if(params!=null) {
            for (String key : params.keySet()) {
                jsonParams.add(new BasicNameValuePair(key, String.valueOf(params.get(key))));
            }
        }
        HttpRequestBase request;
        if(method.equals("POST"))
        {
            request = new HttpPost(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("PUT"))
        {
            request = new HttpPut(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("DELETE"))
        {
            request = new HttpDelete(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else
        {
            request = new HttpGet(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        //配置头部信息
        if(header!=null)
        {
            for (String key : header.keySet()) {
                request.addHeader(key, header.get(key).toString());
            }
        }
        return request;
    }
    /****************************** 公用方法 *******************************************/
    /**
     * get请求
     */
    public static HttpResponse request(String method,String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password) {
        HttpResponse re = new HttpResponse();
        CloseableHttpResponse response = null;
        CloseableHttpClient httpclient = getCloseableHttpClient(ssl);
        //设置请求信息
        try {
            RequestConfig requestConfig = RequestConfig.custom().
                    setAuthenticationEnabled(true).build();
            HttpRequestBase request = getRequest(method,url,params,header);
            request.setConfig(requestConfig);
            //需要验证
            if (!StringUtils.isEmpty(user) && !StringUtils.isEmpty(password)) {
                HttpClientContext context = HttpClientContext.create();
                //通过http的上下文设置账号密码
                CredentialsProvider credsProvider = new BasicCredentialsProvider();
                credsProvider.setCredentials(new org.apache.http.auth.AuthScope(org.apache.http.auth.AuthScope.ANY_HOST, org.apache.http.auth.AuthScope.ANY_PORT),new org.apache.http.auth.UsernamePasswordCredentials(user, password));
                context.setCredentialsProvider(credsProvider);
                response = httpclient.execute(request, context);
            } else {
                response = httpclient.execute(request);
            }
            re.setStatusCode(response.getStatusLine().getStatusCode());
            re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));
        } catch (Exception e) {
            re.setStatusCode(201);
            re.setBody(e.getMessage());
        } finally {
            close(httpclient, response);
        }
        return re;
    }
}

+ 0 - 158
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/util/http/HttpHelper.java

@ -1,158 +0,0 @@
package com.yihu.wlyy.statistics.util.http;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.stereotype.Service;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
@Service
public class HttpHelper {
    private String sslKeystore;
    private String sslPassword;
    private String httpsUser;
    private String httpsUserPassword;
    private SSLConnectionSocketFactory  getDefaultSSL()
    {
        try {
            if (sslKeystore != null && sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
                SSLContext sslContext = SSLContexts.custom()
                        .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
                                new TrustSelfSignedStrategy())
                        .build();
                return new SSLConnectionSocketFactory(
                        sslContext,
                        new String[]{"TLSv1"},
                        null,
                        null);
            } else {
                return null;
            }
        }
        catch (Exception ex)
        {
            System.out.print("获取SSL配置失败!");
            return null;
        }
    }
    /************************** Get方法 ******************************************/
    public HttpResponse get(String url)
    {
        return get(url,null,null);
    }
    public HttpResponse get(String url,Map<String,Object> params)
    {
        return get(url,params,null);
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return get(url,params,header,getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return get(url, params, header, null, null, null);
        }
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("GET", url, params, header, ssl, user, password);
    }
    /************************** Post方法 ******************************************/
    public HttpResponse post(String url)
    {
        return post(url, null, null);
    }
    public HttpResponse post(String url,Map<String,Object> params)
    {
        return post(url, params, null);
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return post(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return post(url, params, header, null, null, null);
        }
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("POST",url,params,header,ssl,user,password);
    }
    /************************** Put方法 ******************************************/
    public HttpResponse put(String url)
    {
        return put(url, null, null);
    }
    public HttpResponse put(String url,Map<String,Object> params)
    {
        return put(url, params, null);
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return put(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return put(url, params, header, null, null, null);
        }
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("PUT",url,params,header,ssl,user,password);
    }
    /************************** Delete方法 **************************************/
    public HttpResponse delete(String url)
    {
        return delete(url, null, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params)
    {
        return delete(url, params, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return delete(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return delete(url, params, header, null, null, null);
        }
    }
    public static HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("DELETE",url,params,header,ssl,user,password);
    }
}

+ 3 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/discussion/DiscussionGroupDao.java

@ -43,4 +43,7 @@ public interface DiscussionGroupDao extends PagingAndSortingRepository<WlyyTalkG
	@Query("from WlyyTalkGroup tg where tg.consultCode=?1  ")
	List<WlyyTalkGroup> findByConsult(String consult);
	@Query("from WlyyTalkGroup tg where tg.consultCode=?1 and tg.type=?2 ")
	WlyyTalkGroup findByConsultAndType(String consult, int type);
}

+ 28 - 4
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/consult/ConsultTeamService.java

@ -543,11 +543,18 @@ public class ConsultTeamService extends ConsultService {
     * @param logs
     * @return
     */
    public void reply(List<ConsultTeamLog> logs, String patient) {
    public void reply(List<ConsultTeamLog> logs, String patient) throws Exception{
        ConsultTeam consultTeam=consultTeamDao.findByConsult(logs.get(0).getConsult());
        WlyyTalkGroup wlyyTalkGroup=talkGroupService.findConsultTalkGroupByType(logs.get(0).getConsult(),2);
        for (ConsultTeamLog log : logs) {
            reply(log, patient, null, log.getType());
            //推送给IM
            sendIM(patient, log.getDoctor(), log.getChatType()+"", log.getContent());
            //判断当前咨询是否创建讨论租
            if(wlyyTalkGroup!=null){
                sendGroupIM(patient, wlyyTalkGroup.getCode(), log.getChatType()+"", log.getContent());
            }else{
                //推送给IM
                sendIM(patient, consultTeam.getDoctor(), log.getChatType()+"", log.getContent());
            }
        }
    }
@ -721,7 +728,24 @@ public class ConsultTeamService extends ConsultService {
        String response = HttpClientUtil.post(imAddr, params, "UTF-8");
        return response;
    }
    /**
     * 发送消息给IM
     * @param from 来自
     * @param groupCode
     * @param contentType 1文字 2图片消息
     * @param content 内容
     */
    private String sendGroupIM(String from, String groupCode, String contentType, String content) {
        String imAddr = SystemConf.getInstance().getImListGet() + "api/v1/chats/gm";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("from", from));
        params.add(new BasicNameValuePair("group", groupCode));
        params.add(new BasicNameValuePair("groupType","1"));
        params.add(new BasicNameValuePair("contentType", contentType));
        params.add(new BasicNameValuePair("content", content));
        String response = HttpClientUtil.post(imAddr, params, "UTF-8");
        return response;
    }
    /**
     * 添加三师咨询日志
     *

+ 8 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/talk/TalkGroupService.java

@ -373,6 +373,11 @@ public class TalkGroupService extends BaseService {
       return talkGroup;
    }
    public WlyyTalkGroup findConsultTalkGroupByType(String consult,int type) throws Exception {
        WlyyTalkGroup talkGroup = discussionGroupDao.findByConsultAndType(consult,type);
        return talkGroup;
    }
    /**
     * 获取医生对应病人的讨论组纪录
     *
@ -1098,5 +1103,8 @@ public class TalkGroupService extends BaseService {
        return null;
    }
    public List<WlyyTalkGroup> findTalkGroupByConsult(String consult) {
        return discussionGroupDao.findByConsult(consult);
    }
}