package com.ynxbd.ali.helper; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayClient; import com.alipay.api.request.AlipayCommerceMedicalIndustrydataDepartmentUploadRequest; import com.alipay.api.request.AlipayCommerceMedicalIndustrydataHospitalUploadRequest; import com.alipay.api.response.AlipayCommerceMedicalIndustrydataDepartmentUploadResponse; import com.alipay.api.response.AlipayCommerceMedicalIndustrydataHospitalUploadResponse; import com.ynxbd.ali.config.AliConfig; import com.ynxbd.common.bean.Dept; import com.ynxbd.common.helper.common.ErrorHelper; import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.wx.config.WeChatConfig; import lombok.extern.slf4j.Slf4j; import java.net.URLEncoder; import java.util.List; import java.util.UUID; @Slf4j public class AliUploadHelper { /** * 上传医院信息 */ public static void uploadHosp() { AlipayClient alipayClient = AliHelper.getAliClient(); AlipayCommerceMedicalIndustrydataHospitalUploadRequest request = new AlipayCommerceMedicalIndustrydataHospitalUploadRequest(); JSONObject reqJson = new JSONObject(); reqJson.put("isv_pid", AliConfig.ISV_PARTNER_ID); reqJson.put("request_id", UUID.randomUUID().toString()); JSONArray hospArr = new JSONArray(); JSONObject hospInfoJson = new JSONObject(); hospInfoJson.put("hospital_name", AliConfig.HOSP_NAME); hospInfoJson.put("hospital_id", AliConfig.HOSP_ID); hospInfoJson.put("hospital_alias", AliConfig.HOSP_ALIAS); hospInfoJson.put("hospital_province", AliConfig.HOSP_PROVINCE); hospInfoJson.put("hospital_city", AliConfig.HOSP_CITY); hospInfoJson.put("hospital_district", AliConfig.HOSP_DISTRICT); hospInfoJson.put("hospital_addr", AliConfig.HOSP_ADDR); hospInfoJson.put("hospital_lgt", AliConfig.HOSP_LGT); hospInfoJson.put("hospital_lat", AliConfig.HOSP_LAT); hospInfoJson.put("hospital_type", AliConfig.HOSP_TYPE); hospInfoJson.put("hospital_grade", AliConfig.HOSP_GRADE); hospInfoJson.put("hospital_logo", WeChatConfig.getHttpsBaseUrl() + "images/logo.png"); // logo hospArr.add(hospInfoJson); reqJson.put("hospital_list", hospArr); log.info("[支付宝-医院信息]上传req={}", JsonHelper.toJsonString(reqJson)); request.setBizContent(JsonHelper.toJsonString(reqJson)); try { AlipayCommerceMedicalIndustrydataHospitalUploadResponse response = alipayClient.execute(request); log.info("[支付宝-医院信息]上传resp={}", JsonHelper.toJsonString(response)); if (!response.isSuccess()) { log.error("[支付宝医院信息]上传失败 code={}, msg={}, subMsg={}", response.getCode(), response.getMsg(), response.getSubMsg()); } else { log.error("[支付宝医院信息]上传成功"); } } catch (Exception e) { ErrorHelper.println(e); } } public static void uploadDept(List deptList, boolean isReserve) { if (deptList == null || deptList.size() == 0) { return; } if (!AliConfig.IS_PUSH_MSG) { return; } String regFlag = isReserve ? "1" : "0"; // 0:今日挂号;1:预约挂号 JSONArray deptArr = new JSONArray(); JSONObject deptInfoJson; String url; String deptCode, deptName; String subDeptCode, subDeptName; List children; for (Dept dept : deptList) { deptCode = dept.getDeptCode(); deptName = dept.getDeptName(); if (deptCode == null || deptName == null) { continue; } deptInfoJson = new JSONObject(); url = "deptCode=" + deptCode + "&deptName=" + deptName + "®Flag=" + regFlag; try { url = URLEncoder.encode(url, "UTF-8"); } catch (Exception e) { ErrorHelper.println(e); } deptInfoJson.put("department_id", deptCode); deptInfoJson.put("department_name", deptName); deptInfoJson.put("department_type", "一级科室"); deptInfoJson.put("hospital_name", AliConfig.HOSP_NAME); deptInfoJson.put("department_url", AliHelper.getLink("pages/home/department/department?" + url, null)); // 科室挂号服务跳转 deptArr.add(deptInfoJson); if (deptArr.size() > 90) { uploadDept(deptArr); deptArr.clear(); } children = dept.getChildren(); if (children == null || children.size() == 0) { continue; } for (Dept childDept : children) { deptInfoJson = new JSONObject(); subDeptCode = childDept.getDeptCode(); subDeptName = childDept.getDeptName(); if (subDeptCode == null || subDeptName == null) { continue; } url = "deptCode=" + deptCode + "&subDeptCode=" + subDeptCode + "&deptName=" + deptName + "&subDeptName=" + subDeptName + "®Flag=" + regFlag; try { url = URLEncoder.encode(url, "UTF-8"); } catch (Exception e) { ErrorHelper.println(e); } deptInfoJson.put("department_id", deptCode + subDeptCode); deptInfoJson.put("department_name", subDeptName); deptInfoJson.put("department_type", "二级科室"); deptInfoJson.put("hospital_name", AliConfig.HOSP_NAME); deptInfoJson.put("department_url", AliHelper.getLink("pages/home/department/department?" + url, null)); // 科室挂号服务跳转 deptArr.add(deptInfoJson); if (deptArr.size() > 90) { uploadDept(deptArr); deptArr.clear(); } } } } private static void uploadDept(JSONArray deptJson) { if (deptJson == null || deptJson.size() == 0) { return; } AlipayClient alipayClient = AliHelper.getAliClient(); AlipayCommerceMedicalIndustrydataDepartmentUploadRequest request = new AlipayCommerceMedicalIndustrydataDepartmentUploadRequest(); JSONObject reqJson = new JSONObject(); reqJson.put("isv_pid", AliConfig.ISV_PARTNER_ID); reqJson.put("request_id", UUID.randomUUID().toString().replace("-", "")); reqJson.put("department_list", deptJson); if (AliConfig.IS_LOG) { log.info("[支付宝-科室信息]上传入参:{}", JsonHelper.toJsonString(reqJson)); } request.setBizContent(JsonHelper.toJsonString(reqJson)); try { AlipayCommerceMedicalIndustrydataDepartmentUploadResponse response = alipayClient.execute(request); if (!response.isSuccess()) { log.error("[支付宝-科室信息]上传失败 code={}, msg={}, subMsg={}", response.getCode(), response.getMsg(), response.getSubMsg()); } else { log.info("[支付宝-科室信息]上传成功"); } } catch (Exception e) { ErrorHelper.println(e); } } }