package com.tanpu.community.util; import com.tanpu.common.auth.UserHolder; import com.tanpu.common.redis.RedisHelper; import com.tanpu.community.api.constants.RedisKeyConstant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpCookie; import org.springframework.stereotype.Service; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Optional; /** * @Description TODO * @Author wangyalei * @Date 2021/9/23 下午8:31 **/ @Slf4j @Service public class HttpServletHelper { @Resource private RedisHelper redisHelper; @Resource private UserHolder userHolder; public String getCurrentUserId() { // String userId = null; // HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); // String clientEnv = request.getHeader(RedisKeyConstant.ENV); // if (isAndroid(clientEnv) || isIOS(clientEnv) || isPc(clientEnv) || isMiniProgram(clientEnv)) { // // android,ios,pc,小程序用token // String token = request.getHeader(RedisKeyConstant.TAMP_TOKEN); // // redis获取的value,都带有 "",这里去掉 // userId = StringUtils.remove(redisHelper.get(RedisKeyConstant.REDIS_PREFIX_TOKEN + token), "\""); // } else { // // 用cookie // Cookie[] cookies = request.getCookies(); // if (cookies != null) { // Optional<Cookie> first = Arrays.stream(request.getCookies()) // .filter(cookie -> StringUtils.equalsIgnoreCase(RedisKeyConstant.SESSION_COOKIE_NAME, cookie.getName())) // .findFirst(); // if (first.isPresent()) { // userId = first.get().getValue(); // } // } // } String userId = userHolder.getUserId(); log.debug("当前登录用户Id: {}", userId); return userId; } public static boolean isAndroid(String clientEnv) { return "android".equalsIgnoreCase(clientEnv); } public static boolean isIOS(String clientEnv) { return "ios".equalsIgnoreCase(clientEnv); } public static boolean isPc(String clientEnv) { return "pc".equalsIgnoreCase(clientEnv); } public static boolean isMiniProgram(String clientEnv) { return "xcx".equalsIgnoreCase(clientEnv); } }