微信后端代码
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

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 + "&regFlag=" + 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 + "&regFlag=" + 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);
}
}
}