package com.zhentao.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhentao.entity.MyResource;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author Administrator
* @description 针对表【my_resource(红娘资源表
)】的数据库操作Service
* @createDate 2025-12-08 15:38:21
*/
public interface MyResourceService extends IService<MyResource> {
    
    /**
     * 添加资源信息
     * @param myResource 资源信息
     * @param tagIds 标签ID列表（可选）
     * @return 是否成功
     */
    boolean addResource(MyResource myResource, List<Integer> tagIds);
    
    /**
     * 更新资源信息（包括标签）
     * @param myResource 资源信息
     * @param tagIds 标签ID列表（可选）
     * @return 是否成功
     */
    boolean updateResource(MyResource myResource, List<Integer> tagIds);
    
    /**
     * 分页查询资源列表
     * @param matchmakerId 红娘ID
     * @param keyword 搜索关键词
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页数据
     */
    Page<MyResource> getResourceList(Integer matchmakerId, String keyword, Integer pageNum, Integer pageSize);
    
    /**
     * 分页查询资源列表（包含用户头像）
     * @param matchmakerId 红娘ID
     * @param keyword 搜索关键词
     * @param isUser 用户注册状态筛选（可选）：1-已注册用户，0-未注册用户（线索），null-全部
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页数据（包含头像）
     */
    Page<com.zhentao.vo.MyResourceVO> getResourceListWithAvatar(Integer matchmakerId, String keyword, Integer isUser, Integer pageNum, Integer pageSize);
    
    /**
     * 根据手机号查询资源列表
     * @param phone 手机号
     * @return 资源列表
     */
    List<MyResource> getResourceByPhone(String phone);
    
    /**
     * 根据资源ID获取客户详情（包含择偶要求）
     * @param resourceId 资源ID
     * @return 客户详情
     */
    com.zhentao.vo.ClientDetailVO getClientDetail(Integer resourceId);
    
    /**
     * 根据手机号更新资源的注册状态
     * 当用户注册时，如果my_resource表中存在相同手机号的资源记录，自动更新is_user和user_id
     * @param phone 手机号
     * @param userId 用户ID
     * @return 是否成功更新
     */
    boolean updateResourceStatusByPhone(String phone, Integer userId);
    
    /**
     * 精准匹配
     * 根据资源用户的择偶要求，匹配推荐异性用户
     * @param resourceId 资源ID
     * @return 匹配结果列表（最多3个，按匹配度降序）
     */
    java.util.List<com.zhentao.vo.MatchResultVO> preciseMatch(Integer resourceId);
    
    /**
     * 根据标签名称分页查询资源列表（包含用户头像）
     * @param tagName 标签名称
     * @param keyword 搜索关键词
     * @param excludeMatchmakerId 要排除的红娘ID（如果提供，则排除该红娘已拥有的资源）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页数据（包含头像）
     */
    Page<com.zhentao.vo.MyResourceVO> getResourceListByTagName(String tagName, String keyword, Integer excludeMatchmakerId, Integer pageNum, Integer pageSize);
    
    /**
     * 根据资源ID获取标签ID列表
     * @param resourceId 资源ID
     * @return 标签ID列表
     */
    List<Integer> getTagIdsByResourceId(Integer resourceId);

    /**
     * 搜索资源（按姓名或手机号）
     * 用于撮合成功审核页面的下拉搜索
     * @param matchmakerId 红娘ID
     * @param keyword 搜索关键词（姓名或手机号）
     * @param gender 性别筛选（1-男，2-女，可选）
     * @return 匹配的资源列表
     */
    java.util.List<com.zhentao.vo.MyResourceVO> searchResources(Integer matchmakerId, String keyword, Integer gender);

    /**
     * 批量检查并更新线索用户的注册状态
     * 检查所有线索用户（is_user=0或null）的手机号是否在users表中已注册
     * 如果已注册，则更新is_user=1和user_id
     * @param matchmakerId 红娘ID（可选，如果提供则只检查该红娘的线索）
     * @return 更新的资源数量
     */
    int batchCheckAndUpdateClueRegistrationStatus(Integer matchmakerId);
}
