package com.landtool.lanbase.modules.sys.service.impl;
|
|
import java.io.IOException;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.landtool.lanbase.common.shiro.TokenGenerator;
|
import com.landtool.lanbase.common.utils.HttpOperateUtils;
|
import com.landtool.lanbase.config.SysTemPropertyConfig;
|
import com.landtool.lanbase.modules.sys.dao.SysUserTokenDao;
|
import com.landtool.lanbase.modules.sys.entity.SysUserToken;
|
import com.landtool.lanbase.modules.sys.redis.SysUserTokenRedis;
|
import com.landtool.lanbase.modules.sys.service.SysUserTokenService;
|
|
|
|
@Service("sysUserTokenService")
|
public class SysUserTokenServiceImpl implements SysUserTokenService {
|
|
@Autowired
|
private SysUserTokenRedis sysUserTokenRedis;
|
|
@Autowired
|
private SysUserTokenDao sysUserTokenDao;
|
|
@Autowired
|
private SysTemPropertyConfig tokenConfig;
|
|
// 24小时后过期
|
private final static int EXPIRE = 86400;
|
|
//@Override
|
public SysUserToken queryByUserId(Long userId) {
|
SysUserToken sysUserToken = null;
|
try {
|
String url = tokenConfig.getApiServer() + "/api/sys/usertoken/getInfoByUserId/" + userId;
|
sysUserToken = (SysUserToken) HttpOperateUtils.getJsonObject(url, SysUserToken.class);
|
if (sysUserToken != null && sysUserToken.getToken() != null)
|
sysUserTokenRedis.saveOrUpdate(sysUserToken);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
return sysUserToken;
|
}
|
|
@Override
|
public SysUserToken queryByToken(String token) {
|
SysUserToken sysUserToken = sysUserTokenRedis.get(token);
|
if (sysUserToken == null) {
|
try {
|
String url = tokenConfig.getApiServer() + "/api/sys/usertoken/getInfoByToken/" + token;
|
sysUserToken = (SysUserToken) HttpOperateUtils.getJsonObject(url, SysUserToken.class);
|
if (sysUserToken != null && sysUserToken.getToken() != null)
|
sysUserTokenRedis.saveOrUpdate(sysUserToken);
|
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
sysUserTokenRedis.saveOrUpdate(sysUserToken);
|
}
|
return sysUserToken;
|
}
|
|
//@Override
|
public void save(SysUserToken token) {
|
String url = tokenConfig.getApiServer() + "/api/sys/usertoken/addUserToken";
|
try {
|
HttpOperateUtils.httpPost(url, token);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
sysUserTokenRedis.saveOrUpdate(token);
|
}
|
|
//@Override
|
public void update(SysUserToken token) {
|
sysUserTokenRedis.delete(token);
|
String url = tokenConfig.getApiServer() + "/api/sys/usertoken/updateUserToken";
|
try {
|
HttpOperateUtils.httpPost(url, token);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Override
|
public Map<String, Object> createToken(long userId) {
|
// 生成一个token
|
String token = TokenGenerator.generateValue();
|
|
// 当前时间
|
Date now = new Date();
|
// 过期时间
|
Date expireTime = new Date(now.getTime() + EXPIRE * 1000);
|
|
// 判断是否生成过token
|
SysUserToken tokenEntity = queryByUserId(userId);
|
if (tokenEntity == null) {
|
tokenEntity = new SysUserToken();
|
tokenEntity.setUserId(userId);
|
tokenEntity.setToken(token);
|
tokenEntity.setUpdateTime(now);
|
tokenEntity.setExpireTime(expireTime);
|
|
// 保存token
|
save(tokenEntity);
|
} else {
|
tokenEntity.setToken(token);
|
tokenEntity.setUpdateTime(now);
|
tokenEntity.setExpireTime(expireTime);
|
|
// 更新token
|
update(tokenEntity);
|
}
|
|
Map<String, Object> result = new HashMap<>();
|
result.put("token", token);
|
result.put("expire", EXPIRE);
|
return result;
|
}
|
|
@Override
|
public void logout(long userId) {
|
// 生成一个token
|
String token = TokenGenerator.generateValue();
|
|
// 修改token
|
SysUserToken tokenEntity = new SysUserToken();
|
tokenEntity.setUserId(userId);
|
tokenEntity.setToken(token);
|
update(tokenEntity);
|
}
|
|
}
|