package org.xyzh.system.mapper.user;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.api.system.vo.SysUserVO;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.dto.sys.TbSysUserDTO;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * @description    系统用户Mapper接口
 * @filename    TbSysUserMapper.java
 * @author    yslg
 * @copyright yslg
 * @since 2025-11-07
 */
@Mapper
public interface TbSysUserMapper extends BaseMapper<TbSysUserDTO> {


    /**
     * @description    插入系统用户
     * @param    userDTO    系统用户DTO
     * @return    int    插入结果
     * @author    yslg
     * @since 2025-11-07
     */
    int insertUser(TbSysUserDTO userDTO);

    /**
     * @description    更新系统用户
     * @param    userDTO    系统用户DTO
     * @return    int    更新结果
     * @author    yslg
     * @since 2025-11-07
     */
    int updateUser(TbSysUserDTO userDTO);

    /**
     * @description    删除系统用户
     * @param    userDTO    系统用户DTO
     * @return    int    删除结果
     * @author    yslg
     * @since 2025-11-07
     */
    int deleteUser(TbSysUserDTO userDTO);

    /**
     * @description    根据用户ID查询系统用户
     * @param    userId    用户ID
     * @return    SysUserVO    系统用户VO
     * @author    yslg
     * @since 2025-11-07
     */
    SysUserVO getUserById(String userId);

    /**
     * @description    根据条件查询系统用户列表
     * @param    filter    系统用户DTO
     * @return    List<SysUserVO>    系统用户VO列表
     * @author    yslg
     * @since 2025-11-07
     */
    List<SysUserVO> getUserByFilter(@Param("filter") SysUserVO filter);

    /**
     * @description    根据条件查询系统用户分页列表
     * @param    filter    系统用户DTO
     * @param    pageParam    分页参数
     * @return    List<SysUserVO>    系统用户VO列表
     * @author    yslg
     * @since 2025-11-07
     */
    List<SysUserVO> getUserPageByFilter(@Param("filter") TbSysUserDTO filter, @Param("pageParam") PageParam pageParam);
    
    /**
     * @description    根据条件查询系统用户数量
     * @param    filter    系统用户DTO
     * @return    int    系统用户数量
     * @author    yslg
     * @since 2025-11-07
     */
    int getUserCount(TbSysUserDTO filter);
}
