package com.ynxbd.wx.config; import com.ynxbd.common.helper.ProperHelper; import com.ynxbd.common.helper.common.HMACHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import javax.servlet.http.HttpServletRequest; /** * 智能导诊 */ @Slf4j public class AIGuidanceConfig { private AIGuidanceConfig() { } final public static boolean IS_ENABLE; //配置文件读取项 final public static String HOS_ID; // 密钥 final public static String KEY; final public static String PARTNER_ID; final public static String HOS_NAME; final public static String HOS_ADDRESS; final public static String HOS_INTRO; final public static String HOS_LEVEL; final public static String HOS_TELEPHONE; static { ProperHelper config = new ProperHelper().read("ai-guidance.properties"); IS_ENABLE = config.getBoolean("ai.is_enable", false); config.setIsEnable(IS_ENABLE); PARTNER_ID = config.getString("ai.partner_id"); KEY = config.getString("ai.key"); HOS_ID = config.getString("ai.hos_id"); HOS_NAME = config.getString("ai.hos_name"); HOS_ADDRESS = config.getString("ai.hos_address"); HOS_INTRO = config.getString("ai.hos_intro"); HOS_LEVEL = config.getString("ai.hos_level"); HOS_TELEPHONE = config.getString("ai.hos_telephone"); if (PARTNER_ID == null) { log.error("读取AI配置文件失败"); } } /** * 验签 * * @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, KEY); return signature.equals(cacheSign); } }