package com.sandu.ximon.admin.security.wxOpenId; import cn.hutool.core.util.StrUtil; import com.sandu.common.enums.ResponseStatusEnums; import com.sandu.common.execption.BusinessException; import com.sandu.common.util.AesUtil; import org.springframework.core.MethodParameter; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; import java.util.ArrayList; import java.util.List; /** * @author LiuHaoNan * @date 2022/6/30 */ public class WxOpenIdHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { static final String OPENID = "openId"; public static final String SPLIT = ";"; @Override public boolean supportsParameter(MethodParameter parameter) { return parameter.getParameterType().isAssignableFrom(OpenId.class) ; } @Override public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer , NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception { String openId = nativeWebRequest.getHeader(OPENID); if (StrUtil.isBlank(openId)) { throw new BusinessException("openId不能为空"); } openId = AesUtil.decrypt(openId); return openId; } }