package com.qmth.sop.business.cache;

import com.qmth.sop.business.bean.auth.AuthBean;
import com.qmth.sop.business.bean.result.FormWidgetResult;
import com.qmth.sop.business.bean.result.MenuResult;
import com.qmth.sop.business.entity.*;
import com.qmth.sop.common.enums.PrivilegePropertyEnum;

import java.util.List;
import java.util.Set;

/**
 * @Description: 缓存操作service
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2021/3/25
 */
public interface CommonCacheService {

    /**
     * 添加用户缓存
     *
     * @param userId
     * @return
     */
    public SysUser userCache(Long userId);

    /**
     * 修改用户缓存
     *
     * @param userId
     * @return
     */
    public SysUser updateUserCache(Long userId);

    /**
     * 删除用户缓存
     *
     * @param userId
     */
    public void removeUserCache(Long userId);

    /**
     * 添加系统参数缓存
     *
     * @param key
     * @return
     */
    public SysConfig addSysConfigCache(String key);

    /**
     * 更新系统参数缓存
     *
     * @param key
     * @return
     */
    public SysConfig updateSysConfigCache(String key);

    /**
     * 删除系统参数缓存
     *
     * @param key
     */
    public void removeSysConfigCache(String key);

    /**
     * 更新系统参数缓存
     *
     * @param key
     * @param sysConfig
     */
    public void updateSysConfigCacheForDb(String key, SysConfig sysConfig);

    /**
     * 添加系统参数缓存
     *
     * @param orgId
     * @param key
     * @return
     */
    public SysConfig addSysConfigCache(Long orgId, String key);

    /**
     * 更新系统参数缓存
     *
     * @param orgId
     * @param key
     * @return
     */
    public SysConfig updateSysConfigCache(Long orgId, String key);

    /**
     * 删除系统参数缓存
     *
     * @param orgId
     * @param key
     */
    public void removeSysConfigCache(Long orgId, String key);

    /**
     * 设置用户session信息
     *
     * @param sessionId
     * @param o
     */
    public void setUserSession(String sessionId, Object o);

    /**
     * 获取用户会话信息
     *
     * @param sessionId
     * @return
     */
    public Object getUserSession(String sessionId);

    /**
     * 删除用户会话缓存
     *
     * @param sessionId
     */
    public void deleteUserSession(String sessionId);

    /**
     * 添加用户鉴权缓存
     *
     * @param userId
     * @return
     */
    public AuthBean userAuthCache(Long userId);

    /**
     * 修改用户鉴权缓存
     *
     * @param userId
     * @return
     */
    public AuthBean updateUserAuthCache(Long userId);

    /**
     * 删除用户鉴权缓存
     *
     * @param userId
     */
    public void removeUserAuthCache(Long userId);

    /**
     * 添加用户角色权限缓存
     *
     * @param userId
     * @return
     */
    public List<SysUserRole> userRolePrivilegeCache(Long userId);

    /**
     * 修改用户角色权限缓存
     *
     * @param userId
     * @return
     */
    public List<SysUserRole> updateUserRolePrivilegeCache(Long userId);

    /**
     * 删除用户角色权限缓存
     *
     * @param userId
     */
    public void removeUserRolePrivilegeCache(Long userId);

    /**
     * 添加机构缓存
     *
     * @param orgId
     * @return
     */
    public SysOrg orgCache(Long orgId);

    /**
     * 更新机构缓存
     *
     * @param orgId
     * @return
     */
    public SysOrg updateOrgCache(Long orgId);

    /**
     * 删除机构缓存
     *
     * @param orgId
     */
    public void removeOrgCache(Long orgId);

    /**
     * 添加角色权限缓存
     *
     * @param roleId
     * @return
     */
    public List<SysRolePrivilege> rolePrivilegeCache(Long roleId);

    /**
     * 修改角色权限缓存
     *
     * @param roleId
     * @return
     */
    public List<SysRolePrivilege> updateRolePrivilegeCache(Long roleId);

    /**
     * 删除角色权限缓存
     *
     * @param roleId
     */
    public void removeRolePrivilegeCache(Long roleId);

    /**
     * 获取鉴权url
     *
     * @param privilegePropertyEnum
     * @return
     */
    public Set<String> privilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum);

    /**
     * 修改鉴权url
     *
     * @param privilegePropertyEnum
     * @return
     */
    public Set<String> updatePrivilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum);


    /**
     * 删除鉴权url
     *
     * @param privilegePropertyEnum
     */
    public void removePrivilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum);

    /**
     * 添加控件缓存
     *
     * @return
     */
    public List<FormWidgetResult> formWidgetCache();

    /**
     * 修改控件缓存
     *
     * @return
     */
    public List<FormWidgetResult> updateFormWidgetCache();

    /**
     * 删除控件缓存
     */
    public void removeFormWidgetCache();

    /**
     * 添加控件缓存
     *
     * @param id
     * @return
     */
    public TDFormWidget formWidgetCache(Long id);

    /**
     * 修改控件缓存
     *
     * @param id
     * @return
     */
    public TDFormWidget updateFormWidgetCache(Long id);

    /**
     * 删除控件缓存
     *
     * @param id
     */
    public void removeFormWidgetCache(Long id);

    /**
     * 添加表格属性缓存
     *
     * @param widgetId
     * @return
     */
    public List<TDTableProp> tablePropCache(Long widgetId);

    /**
     * 修改表格属性缓存
     *
     * @param widgetId
     * @return
     */
    public List<TDTableProp> updateTablePropCache(Long widgetId);

    /**
     * 删除表格属性缓存
     *
     * @param widgetId
     */
    public void removeTablePropCache(Long widgetId);

    /**
     * 添加用户菜单缓存
     *
     * @param userId
     * @return
     */
    public MenuResult userMenuCache(Long userId);

    /**
     * 修改用户菜单缓存
     *
     * @param userId
     * @return
     */
    public MenuResult updateUserMenuCache(Long userId);

    /**
     * 删除用户菜单缓存
     *
     * @param userId
     */
    public void removeUserMenuCache(Long userId);

    /**
     * 添加角色缓存
     *
     * @param roleId
     * @return
     */
    public SysRole roleCache(Long roleId);

    /**
     * 修改角色缓存
     *
     * @param roleId
     * @return
     */
    public SysRole updateRoleCache(Long roleId);


    /**
     * 删除角色缓存
     *
     * @param roleId
     */
    public void removeRoleCache(Long roleId);

    /**
     * 添加学校缓存
     *
     * @param schoolId
     * @return
     */
    public BasicSchool schoolCache(Long schoolId);

    /**
     * 添加学校缓存
     *
     * @param code
     * @return
     */
    public BasicSchool schoolCache(String code);

    /**
     * 更新学校缓存
     *
     * @param schoolId
     * @return
     */
    public BasicSchool updateSchoolCache(Long schoolId);

    /**
     * 更新学校缓存
     *
     * @param code
     * @return
     */
    public BasicSchool updateSchoolCache(String code);

    /**
     * 删除学校缓存
     *
     * @param schoolId
     */
    public void removeSchoolCache(Long schoolId);

    /**
     * 删除学校缓存
     *
     * @param code
     */
    public void removeSchoolCache(String code);

    /**
     * 删除学校缓存
     */
    public void removeSchoolIdCache();

    /**
     * 删除学校缓存
     */
    public void removeSchoolCodeCache();
}
