提示:以下是本篇文章正文内容,下面案例可供参考
使用步骤
1.调用网易七鱼接口
代码如下:
private static final int timeoutMills = 3000;//设置请求超时
@Override
public List<OnlineSessionRecord> queryOnlineSessionRecords(String personID, String appKey, String appSecret) throws Exception {
String content = "{\"uid\":\""+ personID +"\"}";//请求Header里放personID 对应 七鱼的uid
String nonce = QiyuUtil.MD5encryption(content);
String time = Long.toString(Calendar.getInstance().getTimeInMillis() / 1000);
String checksum = QiyuUtil.encode(appSecret, nonce, time);
QiyuResult qiyuResult = new QiyuResult();
RequestConfig requestConfig= RequestConfig.custom().setConnectTimeout(timeoutMills).build();
HttpPost req = new HttpPost("七鱼要访问的链接");
req.setEntity(new StringEntity(content, ContentType.create("application/json", "utf-8")));
req.setConfig(requestConfig);
HttpClientUtil.handleWithoutVerifySSL(req, new QiyuHandler(qiyuResult));
String message = qiyuResult.getMessage();//请求返回的结果
QiYuEntity qiYuEntity = JSON.parseObject(message, QiYuEntity.class);//结果转实体
if(200 == (qiYuEntity.getCode()) && "success".equals(qiYuEntity.getMessage())) {
List<OnlineSessionRecord> onlineSessionRecordList = qiYuEntity.getResult();//返回的结果是一个List
return onlineSessionRecordList;
} else {
return new ArrayList<>();
}
}
@Data
public static class QiYuEntity{
private Integer code;
private String message;
private ArrayList<OnlineSessionRecord> result;
private Integer total;
}
2.调用第三方接口
代码如下:
@Override
public List<OnlineAIClinicalRecord> queryOnlineAIClinicalRecords(String personID) throws Exception {
String url = "第三方的url";
ArrayList<OnlineAIClinicalRecord> onlineAIClinicalRecordList = new ArrayList<>();
String result = HttpClientUtil.doGet(url);
if (null != result) {
AIEntity aiEntity = JSON.parseObject(result, AIEntity.class);
onlineAIClinicalRecordList = aiEntity.getData();
}
return onlineAIClinicalRecordList;
}
@Data
public static class AIEntity{
private ArrayList<OnlineAIClinicalRecord> data;
private Integer total;
}
3.将两个List合并到一个
代码如下:
@Override
public List<OnlineCommonVo> queryOnlineCommonVos(String personID, String appKey, String appSecret) throws Exception {
Person person = personService.findPersonById(personID);
if (null == person){
return new ArrayList<>();
}
//new 一个新的List 将两个list放入
ArrayList<OnlineCommonVo> onlineCommonVoList = new ArrayList<>();
//调用方法
List<OnlineSessionRecord> onlineSessionRecords = queryOnlineSessionRecords(personID, appKey, appSecret);
List<OnlineAIClinicalRecord> onlineAIClinicalRecords = queryOnlineAIClinicalRecords(personID);
//返回的List遍历 放入 new的List中
onlineSessionRecords.forEach(onlineSessionRecord -> {
OnlineCommonVo onlineCommonVo = new OnlineCommonVo();
onlineCommonVo.setTime(DateUtil.format(new Date(onlineSessionRecord.getStartTime()),"yyyy-MM-dd HH:mm:ss"));
onlineCommonVo.setMobile(onlineSessionRecord.getMobile());
onlineCommonVo.setType("类型1");
onlineCommonVoList.add(onlineCommonVo);
});
onlineAIClinicalRecords.forEach(onlineAIClinicalRecord -> {
OnlineCommonVo onlineCommonVo = new OnlineCommonVo();
onlineCommonVo.setTime(formatDate(onlineAIClinicalRecord.getUpdated_at()));//处理带有区域的时间格式
onlineCommonVo.setMobile(person.getMobile());
onlineCommonVo.setType("类型2");
onlineCommonVoList.add(onlineCommonVo);
});
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将合并的List 按时间排序, 也可以按其他类型排序
Collections.sort(onlineCommonVoList,new Comparator<OnlineCommonVo>(){ //排序
@Override
public int compare(OnlineCommonVo o1, OnlineCommonVo o2) {
String time1 = o1.getTime();
String time2 = o2.getTime();
Date date1 = null;
Date date2 = null;
try {
date1 = simpleDateFormat.parse(time1);
date2 = simpleDateFormat.parse(time2);
} catch (ParseException e) {
e.printStackTrace();
}
return date2.compareTo(date1);//倒序
}
});
return onlineCommonVoList;
}
private String formatDate(String time){
if("null".equals(time) || "".equals(time)||time==null){
return null;
}
//更新时的时间格式
try {
return DateUtil.format(new Timestamp(DateUtil.getDate(new Long(time)).getTime()),"yyyy-MM-dd HH:mm:ss");
} catch(Exception e) {
System.out.println(time+" 时间格式为: yyyy-MM-dd'T'HH:mm:ss.SSS Z" );
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z");
String str = time.replace("Z", " UTC");
try {
return DateUtil.format(new Timestamp(format.parse(str).getTime()),"yyyy-MM-dd HH:mm:ss");
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}