You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					
					
						
							174 lines
						
					
					
						
							7.4 KiB
						
					
					
				
			
		
		
	
	
							174 lines
						
					
					
						
							7.4 KiB
						
					
					
				| 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<Dept> 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<Dept> 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);
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 |