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.
		
		
		
		
			
				
					73 lines
				
				2.2 KiB
			
		
		
			
		
	
	
					73 lines
				
				2.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								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);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |