package com.xinyilu.system.mapper.sysuserclassrelation;


import com.xinyilu.system.domain.sysuserclassrelation.SysUserClassRelation;
import com.xinyilu.system.domain.vo.ClassInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户所属班级关系Mapper接口
 *
 * @author xinyilu
 * @date 2023-07-31
 */
public interface SysUserClassRelationMapper {
    /**
     * 查询用户所属班级关系
     *
     * @param id 用户所属班级关系主键
     * @return 用户所属班级关系
     */
    public SysUserClassRelation selectSysUserClassRelationById(Long id);

    /**
     * 查询用户所属班级关系列表
     *
     * @param sysUserClassRelation 用户所属班级关系
     * @return 用户所属班级关系集合
     */
    List<SysUserClassRelation> selectSysUserClassRelationList(SysUserClassRelation sysUserClassRelation);

    /**
     * 新增用户所属班级关系
     *
     * @param sysUserClassRelation 用户所属班级关系
     * @return 结果
     */
    int insertSysUserClassRelation(SysUserClassRelation sysUserClassRelation);

    /**
     * 修改用户所属班级关系
     *
     * @param sysUserClassRelation 用户所属班级关系
     * @return 结果
     */
    int updateSysUserClassRelation(SysUserClassRelation sysUserClassRelation);

    /**
     * 删除用户所属班级关系
     *
     * @param id 用户所属班级关系主键
     * @return 结果
     */
    int deleteSysUserClassRelationById(Long id);

    /**
     * 批量删除用户所属班级关系
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteSysUserClassRelationByIds(Long[] ids);

    /**
     * 查询用户所属班级关系列表
     *
     * @param userId 用户id
     * @return 用户所属班级关系集合
     */
    List<SysUserClassRelation> getSysUserClassRelationList(Long userId);

    /**
     * 查询用户所属班级名称
     *
     * @param userId 用户id
     * @return 用户所属班级关系集合
     */
    List<ClassInfoVO> getSysUserClassInfoList(Long userId);

    /**
     * 批量插入系统用户类关系列表
     *
     * @param sysUserClassRelationList 系统用户类关系列表
     * @return int
     */
    int insertSysUserClassRelationList(List<SysUserClassRelation> sysUserClassRelationList);

    /**
     * 逻辑删除用户id所属班级关系
     *
     * @param userId 用户所属班级关系主键
     * @return 结果
     */
    int updateSysUserClassRelationByUserId(Long userId);

    /**
     * 逻辑删除用户id所属班级关系
     *
     * @param userIdList 用户所属班级关系主键
     * @return 结果
     */
    int updateSysUserClassRelationByUserIdList(Long[] userIdList);

    /**
     * 删除系统用户类通过id
     * 删除用户所属班级关系
     *
     * @param userId  用户id
     * @param classId 班级id
     * @return 结果
     */
    int deleteSysUserClassById(@Param("userId") Long userId, @Param("classId") Long classId);
}
