package jnpf.personnels.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fantaibao.permission.annotation.DataScope;
import jnpf.model.personnels.po.FtbPersonnelsTransferManage;
import jnpf.model.personnels.req.transfer.FtbHandleTransferQueryDTO;
import jnpf.model.personnels.vo.transfer.FtbHandleTransferDetailsVO;
import jnpf.model.personnels.vo.transfer.FtbHandleTransferPageVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface FtbPersonnelsTransferManageMapper extends BaseMapper<FtbPersonnelsTransferManage> {

    /**
     * 获取处理转让管理列表
     * <p>
     * 该方法用于处理转让管理页面的查询请求，根据查询参数获取相应的转让信息列表，并进行分页处理
     *
     * @param page                      分页对象，用于封装分页信息和查询结果
     * @param ftbHandleTransferQueryDTO 查询参数对象，包含了一系列查询条件，如转让状态、转让时间等
     * @return 返回一个分页对象，其中包含符合查询条件的转让信息列表
     */
    @DataScope(tableAlias = "a")
    Page<FtbHandleTransferPageVO> transferManageList(@Param("page") Page<FtbHandleTransferPageVO> page, @Param("params") FtbHandleTransferQueryDTO ftbHandleTransferQueryDTO);

    /**
     * 查询用户间的转账记录列表（适用于App应用）
     * 该方法通过接收一个用户ID列表来筛选出相关的转账记录，并将结果分页返回
     *
     * @param page   分页对象，包含分页查询所需的信息，如当前页码、页面大小等
     * @param userId 用户ID列表，用于筛选转账记录，只包含指定用户间的转账记录
     * @return 返回一个分页的转账记录列表，每个记录都封装在FtbHandleTransferPageVO对象中
     */
    Page<FtbHandleTransferPageVO> transferListApp(@Param("page") Page<FtbHandleTransferPageVO> page, @Param("userIds") List<String> userId, @Param("keyWord") String keyWord);

    /**
     * 根据ID获取转让详情信息
     *
     * @param id 转让详情的唯一标识符
     * @return 返回转让详情的对象，包含具体的转让信息
     */
    FtbHandleTransferDetailsVO transferDetails(@Param("id") String id);

    /**
     * 更新转让管理信息
     * <p>
     * 该方法用于更新转让管理的相关信息，可能涉及到转让申请的审核、转让状态的更新等
     * 由于方法的实现细节未提供，这里仅做大致的功能描述
     *
     * @return 成功更新的记录数如果返回值为null，可能表示没有可更新的记录或者更新过程中遇到了错误
     */
    Integer updateTransferManage();


}