package com.cico.nest.lcdp.boot.core.system.dal.redis;


import com.cico.nest.lcdp.boot.core.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;

/**
 * System Redis Key 枚举类
 *
 * @author zws
 */
public interface RedisKeyConstants {

    /**
     * 指定部门的所有子部门编号数组的缓存
     * <p>
     * KEY 格式：dept_children_ids:{id}
     * VALUE 数据类型：String 子部门编号集合
     */
    String DEPT_CHILDREN_ID_LIST = "nest:system:dept_children_ids:";

    /**
     * 角色的缓存
     * <p>
     * KEY 格式：role:{id}
     * VALUE 数据类型：String 角色信息
     */
    String ROLE = "nest:system:role:";

    /**
     * 用户拥有的角色编号的缓存
     * <p>
     * KEY 格式：user_role_ids:{userId}
     * VALUE 数据类型：String 角色编号集合
     */
    String USER_ROLE_ID_LIST = "nest:system:user_role_ids:";

    /**
     * 拥有指定菜单的角色编号的缓存
     * <p>
     * KEY 格式：menu_role_ids:{menuId}
     * VALUE 数据类型：String 角色编号集合
     */
    String MENU_ROLE_ID_LIST = "nest:system:menu_role_ids:";

    /**
     * 拥有权限对应的菜单编号数组的缓存
     * <p>
     * KEY 格式：permission_menu_ids:{permission}
     * VALUE 数据类型：String 菜单编号数组
     */
    String PERMISSION_MENU_ID_LIST = "nest:system:permission_menu_ids:";

    /**
     * OAuth2 客户端的缓存
     * <p>
     * KEY 格式：oauth_client:{id}
     * VALUE 数据类型：String 客户端信息
     */
    String OAUTH_CLIENT = "nest:system:oauth_client:";

    /**
     * 访问令牌的缓存
     * <p>
     * KEY 格式：oauth2_access_token:{token}
     * VALUE 数据类型：String 访问令牌信息 {@link OAuth2AccessTokenDO}
     * <p>
     * 由于动态过期时间，使用 RedisTemplate 操作
     */
    String OAUTH2_ACCESS_TOKEN = "nest:system:oauth2_access_token:%s";

    /**
     * 站内信模版的缓存
     * <p>
     * KEY 格式：notify_template:{code}
     * VALUE 数据格式：String 模版信息
     */
    String NOTIFY_TEMPLATE = "nest:system:notify_template:";

    /**
     * 邮件账号的缓存
     * <p>
     * KEY 格式：mail_account:{id}
     * VALUE 数据格式：String 账号信息
     */
    String MAIL_ACCOUNT = "nest:system:mail_account:";

    /**
     * 邮件模版的缓存
     * <p>
     * KEY 格式：mail_template:{code}
     * VALUE 数据格式：String 模版信息
     */
    String MAIL_TEMPLATE = "nest:system:mail_template:";

    /**
     * 短信模版的缓存
     * <p>
     * KEY 格式：sms_template:{id}
     * VALUE 数据格式：String 模版信息
     */
    String SMS_TEMPLATE = "nest:system:sms_template:";

    /**
     * 开发配置的缓存
     * <p>
     * KEY 格式：config:{key}
     * VALUE 数据格式：String 配置信息
     */
    String CONFIG_KEY = "nest:system:config:";

    /**
     * 全部字典的缓存
     * <p>
     * KEY 格式：dict_all
     * VALUE 数据格式：String 字典信息
     */
    String DICT_ALL = "nest:system:dict_all:";

    /**
     * 全部字典的缓存
     * <p>
     * KEY 格式：dict_all
     * VALUE 数据格式：String 字典信息
     */
    String DEPT_BY_ID = "nest:system:dept_by_id:";

    /**
     * 用户详情信息
     * <p>
     * KEY 格式：dict_all
     * VALUE 数据格式：String 字典信息
     */
    String USER_INFO_BY_ID = "nest:system:user:id:";
}
