package com.enterprise.manage.modules.system.service;

import com.enterprise.manage.common.base.BaseIService;
import com.enterprise.manage.modules.system.domain.po.Menu;
import com.enterprise.manage.modules.system.domain.po.User;

import java.io.Serializable;
import java.util.List;

/**
 * system user service interface
 *
 * @author PeiZhi Guo
 * 2021-2-18 14:09
 */
public interface IUserService extends BaseIService<User> {

    @Override
    boolean save(User user);

    @Override
    boolean update(User user);

    @Override
    boolean removeById(Serializable id);

    /**
     * 获取用户权限：递归获取用户菜单
     *
     * Param menus
     * Param parentId
     * Return List<Menu>
     */
    List<Menu> toUserMenu(List<Menu> menus, Integer parentId);

    /**
     * 用户查询：根据用户账号查询用户信息。
     *
     * Param username
     * Return User
     */
    User queryByUsername(String username);

    /**
     * 用户唯一校验：根据用户账号以及用户主键查询用户是否已存在。
     *
     * Param username
     * Param id
     * Return boolean
     */
    boolean usernameUniqueCheck(String username, Long id);

    /**
     * 禁用|启用：根据用户主键以及禁用|启用状态进行状态变更。
     *
     * Param id
     * Param enable
     * Return boolean
     */
    boolean updateEnable(Long id, boolean enable);

}
