| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /**
- * Copyright (c) 2018 人人开源 All rights reserved.
- *
- * https://www.renren.io
- *
- * 版权所有,侵权必究!
- */
-
- package io.renren.service.impl;
-
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import io.renren.common.service.impl.BaseServiceImpl;
- import io.renren.dao.TokenDao;
- import io.renren.entity.TokenEntity;
- import io.renren.service.TokenService;
- import org.springframework.stereotype.Service;
- import org.springframework.util.CollectionUtils;
-
- import java.util.Date;
- import java.util.List;
- import java.util.UUID;
-
-
- @Service
- public class TokenServiceImpl extends BaseServiceImpl<TokenDao, TokenEntity> implements TokenService {
- /**
- * 12小时后过期
- */
- private final static int EXPIRE = 3600 * 12;
-
- @Override
- public TokenEntity getByToken(String token) {
- return baseDao.getByToken(token);
- }
-
- @Override
- public TokenEntity createToken(Long userId) {
- //当前时间
- Date now = new Date();
- //过期时间
- Date expireTime = new Date(now.getTime() + EXPIRE * 1000);
-
- //用户token
- String token;
-
- //判断是否生成过token
- TokenEntity tokenEntity = baseDao.getByUserId(userId);
- if(tokenEntity == null){
- //生成一个token
- token = generateToken();
-
- tokenEntity = new TokenEntity();
- tokenEntity.setUserId(userId);
- tokenEntity.setToken(token);
- tokenEntity.setUpdateDate(now);
- tokenEntity.setExpireDate(expireTime);
-
- //保存token
- this.insert(tokenEntity);
- }else{
- //判断token是否过期
- if(tokenEntity.getExpireDate().getTime() < System.currentTimeMillis()){
- //token过期,重新生成token
- token = generateToken();
- }else {
- token = tokenEntity.getToken();
- }
-
- tokenEntity.setToken(token);
- tokenEntity.setUpdateDate(now);
- tokenEntity.setExpireDate(expireTime);
-
- //更新token
- this.updateById(tokenEntity);
- }
-
- return tokenEntity;
- }
-
- @Override
- public void expireTokenByUserId(Long userId){
- Date now = new Date();
-
- TokenEntity tokenEntity = new TokenEntity();
- tokenEntity.setUserId(userId);
- tokenEntity.setUpdateDate(now);
- tokenEntity.setExpireDate(now);
-
- this.updateById(tokenEntity);
- }
-
- @Override
- public void expireToken(String token){
- Date now = new Date();
-
- List<TokenEntity> tokenEntities = baseDao.selectList(new QueryWrapper<TokenEntity>().eq("token",token));
- if(!CollectionUtils.isEmpty(tokenEntities)){
- for(TokenEntity tokenEntity:tokenEntities){
- tokenEntity.setUpdateDate(now);
- tokenEntity.setExpireDate(now);
- baseDao.updateById(tokenEntity);
- }
- }
- }
-
- private String generateToken(){
- return UUID.randomUUID().toString().replace("-", "");
- }
- }
|