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

82 lines
2.6 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;
// 密钥token
public final static String TOKEN;
public final static String PARTNER_ID;
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);
TOKEN = IS_DEV ? config.getString("dev_token") : config.getString("token");
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, TOKEN);
return signature.equals(cacheSign);
}
}