拦截器-->controller-->service-->dao
package com.atguigu.gulimall.cart.interceptor;
import com.atguigu.gulimall.cart.dto.UserInfoDTO;
import com.atguli.common.constant.AuthServerConstant;
import com.atguli.common.constant.CartConstant;
import com.atguli.common.vo.MemberRespVO;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Objects;
/**
* User: ldj
* Date: 2022/10/1
* Time: 10:17
* Description: 在执行目标方法之前,做某事
*/
@Component
public class CartInterceptor implements HandlerInterceptor {
/**
* 目标方法执行前拦截
* HttpServletRequest 是springSession包装
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
UserInfoDTO userInfoDTO = new UserInfoDTO();
MemberRespVO memberRespVO = (MemberRespVO) request.getSession().getAttribute(AuthServerConstant.LOGIN_USER);
//用户已登录,有用户id
if (Objects.nonNull(memberRespVO)) {
userInfoDTO.setUserId(memberRespVO.getId());
}
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
if(CartConstant.TEMP_USER_COOKIE_NAME.equals(name)){
userInfoDTO.setUserKey(cookie.getValue());
}
}
}
return true;
}
}