package com.terra.common.service; import com.terra.common.entity.all.RedisCacheKey; import com.terra.common.entity.lf.TokenPo; import com.terra.common.entity.lf.UserPo; import com.terra.common.helper.StringHelper; import com.terra.common.helper.WebHelper; import com.terra.common.mapper.OperatePoMapper; import org.springframework.stereotype.Component; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.concurrent.TimeUnit; /** * 令牌帮助类 * @author WWW */ @Component public class TokenHelper { @Resource RedisService redisService; @Resource OperatePoMapper mapper; public static Integer getCurrentUserId(HttpServletRequest req) { String token = WebHelper.getToken(req); return null; } public UserPo getUserByToken(String token) { if (StringHelper.isNull(token)) { return null; } // redis String userKey = RedisCacheKey.signUserKey(token); Object obj = redisService.get(userKey); if (obj instanceof UserPo) { return (UserPo) obj; } // db UserPo po = mapper.selectByToken(token); if (null != po) { getEntityByToken(token); } return po; } public TokenPo getEntityByToken(String token) { String tokenKey = RedisCacheKey.signTokenKey(token); // redis Object obj = redisService.get(tokenKey); if (obj instanceof TokenPo) { return (TokenPo) obj; } // db TokenPo te = mapper.selectOneByToken(token); if (null != te) { long min = StringHelper.getMinuteDifference(te.getExpire()); if (min > 0) { redisService.put(tokenKey, te, min, TimeUnit.MINUTES); } } return te; } public static String getCurrentUserName() { return null; } }