package shop.alien.second.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.second.SecondEntrustUser;
import shop.alien.entity.second.vo.SecondEntrustUserDTO;
import shop.alien.entity.second.vo.SecondEntrustUserDetailVo;
import shop.alien.entity.second.vo.SecondEntrustUserQueryVo;
import shop.alien.entity.second.vo.SecondEntrustUserResultVo;

import java.util.List;

/**
 * <p>
 * 二手委托人信息表 服务类
 * </p>
 *
 * @author ssk
 * @since 2025-11-21
 */
public interface SecondEntrustUserService extends IService<SecondEntrustUser> {

    /**
     * 创建委托人信息
     *
     * @param dto 委托人信息DTO
     * @return 是否创建成功
     */
    boolean createEntrustUser(SecondEntrustUserDTO dto);

    /**
     * 根据交易ID获取委托人信息
     *
     * @param entrustTradeId 交易ID
     * @return 委托人信息
     */
    SecondEntrustUser getByTradeId(Integer entrustTradeId);

    /**
     * 根据交易编号获取委托人信息
     *
     * @param entrustTradeNo 交易编号
     * @return 委托人信息
     */
    SecondEntrustUser getByTradeNo(String entrustTradeNo);

    /**
     * 更新委托人信息
     *
     * @param id 委托人ID
     * @param dto 委托人信息DTO
     * @return 是否更新成功
     */
    boolean updateEntrustUser(Integer id, SecondEntrustUserDTO dto);

    /**
     * 删除委托人信息
     *
     * @param id 委托人ID
     * @return 是否删除成功
     */
    boolean deleteEntrustUser(Integer id);

    /**
     * 根据用户电话查询委托人信息列表
     *
     * @param entrustUserPhone 用户电话
     * @return 委托人信息列表
     */
    List<SecondEntrustUser> getByUserPhone(String entrustUserPhone);

    /**
     * 分页查询委托人信息列表（以姓名+身份证号为维度）
     *
     * @param queryVo 查询条件
     * @return 委托人信息分页列表
     */
    IPage<SecondEntrustUserResultVo> getEntrustUserPage(SecondEntrustUserQueryVo queryVo);

    /**
     * 根据姓名和身份证号获取委托人详情（包含该人所有委托记录的交易信息）
     *
     * @param entrustUserName 委托人姓名
     * @param entrustIdCard 委托人身份证号
     * @return 委托人详情
     */
    SecondEntrustUserDetailVo getEntrustUserDetail(String entrustUserName, String entrustIdCard) throws Exception;

}

