package com.alatus.mall.cart.interceptor;
import com.alatus.common.constant.AuthServerConstant;
import com.alatus.common.constant.CartConstant;
import com.alatus.common.vo.MemberRespVo;
import com.alatus.mall.cart.vo.UserInfoTo;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@Component
public class CartInterceptor implements HandlerInterceptor {
public static ThreadLocal<UserInfoTo> threadLocal = new ThreadLocal<>();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
UserInfoTo userInfoTo = new UserInfoTo();
HttpSession session = request.getSession();
MemberRespVo memberRespVo = (MemberRespVo) session.getAttribute(AuthServerConstant.LOGIN_USER);
if(memberRespVo!=null){
userInfoTo.setUserId(memberRespVo.getId());
}
Cookie[] cookies = request.getCookies();
if(cookies!=null&&cookies.length>0){
for (Cookie cookie : cookies) {
if(CartConstant.TEMP_USER_COOKIE_NAME.equals(cookie.getName())){
userInfoTo.setUserKey(cookie.getValue());
}
}
}
threadLocal.set(userInfoTo);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
package com.alatus.mall.cart.interceptor;
import com.alatus.common.constant.AuthServerConstant;
import com.alatus.common.constant.CartConstant;
import com.alatus.common.vo.MemberRespVo;
import com.alatus.mall.cart.vo.UserInfoTo;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@Component
public class CartInterceptor implements HandlerInterceptor {
public static ThreadLocal<UserInfoTo> threadLocal = new ThreadLocal<>();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
UserInfoTo userInfoTo = new UserInfoTo();
HttpSession session = request.getSession();
MemberRespVo memberRespVo = (MemberRespVo) session.getAttribute(AuthServerConstant.LOGIN_USER);
if(memberRespVo!=null){
userInfoTo.setUserId(memberRespVo.getId());
}
Cookie[] cookies = request.getCookies();
if(cookies!=null&&cookies.length>0){
for (Cookie cookie : cookies) {
if(CartConstant.TEMP_USER_COOKIE_NAME.equals(cookie.getName())){
userInfoTo.setUserKey(cookie.getValue());
}
}
}
threadLocal.set(userInfoTo);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
package com.alatus.common.constant;
public class CartConstant {
public static final String TEMP_USER_COOKIE_NAME = "user-key";
}
package com.alatus.common.constant;
public class CartConstant {
public static final String TEMP_USER_COOKIE_NAME = "user-key";
}
package com.alatus.mall.cart.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
@Configuration
@EnableRedisHttpSession
public class SessionConfig {
@Bean
public CookieSerializer cookieSerializer(){
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setDomainName("alatusmall.com");
cookieSerializer.setCookieName("MALLSESSION");
return cookieSerializer;
}
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer(){
return new GenericJackson2JsonRedisSerializer();
}
}
package com.alatus.mall.cart.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
@Configuration
@EnableRedisHttpSession
public class SessionConfig {
@Bean
public CookieSerializer cookieSerializer(){
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setDomainName("alatusmall.com");
cookieSerializer.setCookieName("MALLSESSION");
return cookieSerializer;
}
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer(){
return new GenericJackson2JsonRedisSerializer();
}
}
package com.alatus.mall.cart.vo;
import lombok.Data;
@Data
public class UserInfoTo {
private Long userId;
private String userKey;
}
package com.alatus.mall.cart.vo;
import lombok.Data;
@Data
public class UserInfoTo {
private Long userId;
private String userKey;
}
package com.alatus.mall.cart.web;
import com.alatus.mall.cart.interceptor.CartInterceptor;
import com.alatus.mall.cart.vo.UserInfoTo;
import org.springframework.web.bind.annotation.GetMapping;
public class CartController {
@GetMapping("/cart.html")
public String cartListPage(){
UserInfoTo userInfoTo = CartInterceptor.threadLocal.get();
return "cartList";
}
}
package com.alatus.mall.cart.web;
import com.alatus.mall.cart.interceptor.CartInterceptor;
import com.alatus.mall.cart.vo.UserInfoTo;
import org.springframework.web.bind.annotation.GetMapping;
public class CartController {
@GetMapping("/cart.html")
public String cartListPage(){
UserInfoTo userInfoTo = CartInterceptor.threadLocal.get();
return "cartList";
}
}
package com.alatus.mall.cart.service.impl;
import com.alatus.mall.cart.service.CartService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class CartServiceImpl implements CartService {
@Autowired
private StringRedisTemplate redisTemplate;
}
package com.alatus.mall.cart.service.impl;
import com.alatus.mall.cart.service.CartService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class CartServiceImpl implements CartService {
@Autowired
private StringRedisTemplate redisTemplate;
}
package com.alatus.mall.cart.service;
public interface CartService {
}
package com.alatus.mall.cart.service;
public interface CartService {
}