@Service
public class UserServiceImpl implements UserService{
private Jedis jedisClient=new Jedis("localhost");
@Autowired
UserMapper userMapper;
int SESSION_EXPIRE=18000;
public e3Result login(String username, String password) {
Jedis jedisClient = new Jedis("localhost");
String user_account;
// 1、判断用户名密码是否正确。
//查询用户信息
List<User> list = userMapper.selectByExample(username,password);
if (list == null || list.size() == 0) {
return e3Result.build(400, "用户名或密码错误");
}
User user = list.get(0);
//校验密码
// 2、登录成功后生成token。Token相当于原来的jsessionid,字符串,可以使用uuid。
String token = UUID.randomUUID().toString();
// 3、把用户信息保存到redis。Key就是token,value就是TbUser对象转换成json。
// 4、使用String类型保存Session信息。可以使用“前缀:token”为key
user.setPassword(null);
user_account=user.getAccount();
//userMapper.insertToken(user_stuId, token);//用mysql数据库保存cookie
addRedisMessage(user_account, token);//用redis缓存cookie
return e3Result.ok(token);
}
public String checkCookie(String token)
{
//String stuId=userMapper.checkToken(token);//去数据库检查是否存在cookie
String account=checkRedis(token);
if(account==null||account=="")
{
return "failed";
}
return account;
}
public String logout(String account,String token)
{
//int flag=userMapper.logout(stuId, token);
return deleteRedis(account,token);
}
public void addRedisMessage(String stuId,String token)
{
jedisClient.set(token,stuId);
jedisClient.expire(token, SESSION_EXPIRE);//用redis保存cookie
}
public String checkRedis(String token)
{
String stuId=jedisClient.get(token);
if(stuId!=null)//更新token有效时间
{
jedisClient.expire(token, SESSION_EXPIRE);
}
return stuId;
}
public String deleteRedis(String account,String token)
{
if(checkRedis(token).equals(account))
{
jedisClient.del(token);
return "success";
}
return "failed";
}
public String addSubSystemAdmin(User user,int systemId){
// TODO Auto-generated method stub
//判断是否已经存入过 数据库
int userId=userMapper.selectUserInfo(user);//得到管理员用户Id
List flag=userMapper.checkUserIsAdmin(user, systemId);//判断是否此用户已经是该系统管理员
if(flag.size()>0)
{
return "bein";
}
else
{
//构造管理员特征码
UUID conCode = UUID.randomUUID();
if(userMapper.insertSubSystemAndUserId(user,systemId,conCode.toString())>0)
return "success";
else
return "failed";
}
}
}