tokens实现

  1 package com.shengwei.businessschoolapi.service;
  2 
  3 import com.shengwei.businessschoolapi.dao.WxTokenDao;
  4 import com.shengwei.businessschoolapi.model.TokenEntity;
  5 import com.shengwei.businessschoolapi.util.TimeUtil;
  6 import org.springframework.beans.factory.annotation.Autowired;
  7 import org.springframework.stereotype.Service;
  8 
  9 import java.util.Date;
 10 import java.util.UUID;
 11 
 12 @Service
 13 public class TokenService {
 14 
 15     @Autowired
 16     private WxTokenDao tokenDao;
 17 
 18     //12小时后过期
 19     private final static int EXPIRE = 3600 * 12;
 20 
 21     /**
 22      * 根据用户id查询
 23      * @param id
 24      * @return
 25      */
 26     public TokenEntity queryByUserId(Long id) {
 27         return tokenDao.findOne(id);
 28     }
 29 
 30     /**
 31      * 根据token查询用户
 32      * @param token
 33      * @return
 34      */
 35     public TokenEntity queryByToken(String token) {
 36         return tokenDao.findByTokenNumber(token);
 37     }
 38 
 39     /**
 40      * 添加或修改
 41      * @param token
 42      */
 43     public void saveorUpdata(TokenEntity token) {
 44         tokenDao.save(token);
 45     }
 46 
 47 
 48     /**
 49      * 创建的一个token
 50      * @param userId
 51      * @return
 52      */
 53     public TokenEntity createToken(long userId) {
 54         //生成一个token
 55         String token = UUID.randomUUID().toString().replace("-", "");
 56         //当前时间
 57         Date now = new Date();
 58         //过期时间
 59         Date expireTime = new Date(now.getTime() + EXPIRE * 1000);
 60 
 61         //判断是否生成过token
 62         TokenEntity tokenEntity = queryByUserId(userId);
 63          if (tokenEntity == null) {
 64             tokenEntity = new TokenEntity();
 65             tokenEntity.setUserid(userId);
 66             tokenEntity.setTokenNumber(token);
 67             //转换数据库时间
 68             tokenEntity.setToUpdateTime(TimeUtil.getTimestamp(now));
 69             tokenEntity.setExpirationTime(TimeUtil.getTimestamp(expireTime));
 70             //保存token
 71             this.saveorUpdata(tokenEntity);
 72         } else {
 73             tokenEntity.setTokenNumber(token);
 74             tokenEntity.setToUpdateTime(TimeUtil.getTimestamp(now));
 75             tokenEntity.setExpirationTime(TimeUtil.getTimestamp(expireTime));
 76             //更新token
 77              this.saveorUpdata(tokenEntity);
 78         }
 79         return tokenEntity;
 80     }
 81 
 82     /**
 83      * 查询用户是否存在
 84      * @param token
 85      * @return
 86      */
 87     public Long getUserId(String token) {
 88         TokenEntity tokenEntity= tokenDao.findByTokenNumber(token);
 89         if (tokenEntity == null){
 90             return null;
 91         }
 92         if (tokenEntity.getExpirationTime().before(new Date())){
 93             return null;
 94         }
 95         return tokenEntity.getUserid();
 96     }
 97 
 98     /**
 99      * 拿到用户 sessionKey
100      * @param userId
101      * @return
102      */
103     public String getSessionKey(Integer userId) {
104         TokenEntity tokenEntity= queryByUserId(userId.longValue());
105         if (tokenEntity==null){
106             return null;
107         }
108         if (tokenEntity.getExpirationTime().before(new Date())){
109             return null;
110         }
111         return tokenEntity.getWxSessionkey();
112     }
113 }
TokenService

 提示:Dao层采用springDatajpa实现

猜你喜欢

转载自www.cnblogs.com/eplh/p/11933664.html
今日推荐