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.
95 lines
3.0 KiB
95 lines
3.0 KiB
package com.ynxbd.common.config.healthcard;
|
|
|
|
import com.ynxbd.common.helper.common.HMACHelper;
|
|
import com.ynxbd.common.helper.common.XmlConfigHelper;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
// 智能导诊
|
|
|
|
@Slf4j
|
|
public class HCAIGuidanceConfig {
|
|
public final static boolean IS_ENABLE;
|
|
// 是否为测试环境
|
|
public final static boolean IS_DEV;
|
|
// 是否为调试
|
|
public final static boolean IS_DEBUG;
|
|
// 是否为分时段挂号
|
|
public final static boolean IS_SPLIT_TIME_REG;
|
|
// 配置文件读取项
|
|
public final static String HOSP_ID;
|
|
|
|
/**
|
|
* AI版:电子健康卡AppId(管理>开发商接入)
|
|
* 旧版:合作方ID(腾讯提供)
|
|
*/
|
|
public final static String PARTNER_ID;
|
|
|
|
/**
|
|
* AI版:电子健康卡AppSecret(管理>开发商接入)
|
|
* 旧版:Token(腾讯提供)
|
|
*/
|
|
public final static String PARTNER_SECRET;
|
|
|
|
public final static String HOSP_NAME;
|
|
|
|
public final static String HOSP_ADDRESS;
|
|
|
|
public final static String HOSP_INTRO;
|
|
|
|
public final static String HOSP_LEVEL;
|
|
|
|
public final static String HOSP_TEL;
|
|
|
|
public final static String BRANCH_ID;
|
|
|
|
static {
|
|
XmlConfigHelper config = new XmlConfigHelper().read("hc-config.xml", "ai_guidance");
|
|
IS_ENABLE = config.getBoolean("is_enable", false);
|
|
config.setIsEnable(IS_ENABLE);
|
|
|
|
IS_DEV = config.getBoolean("is_dev", false);
|
|
IS_DEBUG = config.getBoolean("is_debug", false);
|
|
IS_SPLIT_TIME_REG = config.getBoolean("is_split_time_reg", true);
|
|
|
|
PARTNER_SECRET = config.getString(IS_DEV ? "dev_partner_secret" : "partner_secret");
|
|
PARTNER_ID = config.getString("partner_id");
|
|
|
|
BRANCH_ID = config.getString("branch_id");
|
|
|
|
HOSP_ID = config.getString("hosp_id");
|
|
HOSP_NAME = config.getString("hosp_name");
|
|
HOSP_ADDRESS = config.getString("hosp_address", "");
|
|
HOSP_INTRO = config.getString("hosp_intro", "");
|
|
HOSP_LEVEL = config.getString("hosp_level", "");
|
|
HOSP_TEL = config.getString("hosp_tel", "");
|
|
|
|
if (PARTNER_ID == null) {
|
|
log.error("[智能导诊]读取配置文件失败 | 功能未开启");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 验签
|
|
*
|
|
* @param request 请求
|
|
* @return 是否通过
|
|
*/
|
|
public static boolean isVerifySign(HttpServletRequest request) {
|
|
if (!IS_ENABLE) {
|
|
return false;
|
|
}
|
|
String signature = request.getHeader("god-portal-signature"); // 签名
|
|
if (ObjectUtils.isEmpty(signature)) {
|
|
return false;
|
|
}
|
|
String timestamp = request.getHeader("god-portal-timestamp"); // 时间戳
|
|
|
|
log.info("[智能导诊]验签 timestamp={}, signature={}", timestamp, signature);
|
|
String str = PARTNER_ID + timestamp;
|
|
String cacheSign = HMACHelper.sha256(str, PARTNER_SECRET);
|
|
return signature.equals(cacheSign);
|
|
}
|
|
}
|
|
|