package com.cool.bang.modules.system.service;

import com.cool.bang.modules.system.domain.po.User;
import com.cool.bang.modules.system.domain.vo.Token;

/**
 * system token service interface
 *
 * @author PeiZhi Guo
 * 2022-4-13 16:11
 */
public interface ITokenService {

    /**
     * 把用户缓存到redis，并返回生成的jwt对象。
     *
     * Param User
     * Return Token
     */
    Token cacheAndReturnToken(User sysUser);

    /**
     * jwt解析token，并查询redis返回登录用户。
     *
     * Param Token
     * Return User
     */
    User querySysUserByAccessToken(String token);

    /**
     * 刷新登录时间，当超期时间大于当前10分钟，则默认刷新最大登录时间。
     *
     * Param User
     * Return
     */
    void refreshCacheToken(User user);

    /**
     * 登出时，需要删除redis用户信息。
     *
     * Param token
     * Return boolean
     */
    boolean deleteCacheToken(String token);
}
