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_KEY; 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; 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_KEY = config.getString(IS_DEV ? "dev_partner_key" : "partner_key"); PARTNER_ID = config.getString("partner_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_KEY); return signature.equals(cacheSign); } }