package org.springblade.modules.app.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.app.common.dto.UserDTO;
import org.springblade.modules.app.common.query.AdminUserQuery;
import org.springblade.modules.app.common.query.SlaughterHouseQuery;
import org.springblade.modules.app.common.query.UserQuery;
import org.springblade.modules.app.common.vo.SlaughterHouseVO;
import org.springblade.modules.app.entity.UserDO;

import java.util.List;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author fuxinsheng
 * @since 2021-11-05
 */
public interface IAppUserService extends IService<UserDO> {
    /**
     * 新增用户
     *
     * @param userDTO
     * @return
     */
    Long addUser(UserDTO userDTO);

    /**
     * 分页查询用户列表
     *
     * @param query
     * @return
     */
    Page<SlaughterHouseVO> getSlaughterHousePage(SlaughterHouseQuery query);

    /**
     * 查询指定ID的用户
     *
     * @param id
     * @return
     */
    UserDTO getUserById(Long id);

    /**
     * 更新用户
     *
     * @param copyTo
     * @return
     */
    Boolean updateUser(UserDTO copyTo);

    /**
     * 根据查询条件获取用户新消息
     *
     * @param userQuery
     * @return
     */
    UserDTO getOneUser(UserQuery userQuery);

    /**
     * 分页查询用户
     *
     * @param userQuery
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<org.springblade.modules.app.common.dto.UserDTO>
     * @author FUXINSHENG
     */
    Page<UserDTO> pageUser(AdminUserQuery userQuery);

    /**
     * 分页查询表数据
     *
     * @param userQuery
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<org.springblade.modules.app.common.dto.UserDTO>
     * @author FUXINSHENG
     * @date 2021/11/24 16:35
     * @describe
     */
    Page<UserDTO> pageRegisterUser(AdminUserQuery userQuery);

    /**
     * 查询用户集合
     *
     * @param userQuery
     * @return java.util.List<org.springblade.modules.app.common.dto.UserDTO>
     * @author FUXINSHENG
     */
    List<UserDTO> listUser(UserQuery userQuery);

    /**
     * 删除用户
     *
     * @param id
     * @return
     * @author huyinuo
     */
    Boolean deleteById(Long id);

    List<UserDTO> listByUserName(String userName);

    UserDTO getUserByIdAll(Long id);

    void updateSupplier();
}
