package com.zhentao.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhentao.vo.RecommendUserVO;
import com.zhentao.dto.UserSearchQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface RecommendMapper {

    List<RecommendUserVO> selectRecommendedUsers(
            @Param("userId") Integer userId,
            @Param("oppoOnly") Integer oppoOnly,
            @Param("limit") Integer limit
    );

    List<RecommendUserVO> selectByRules(@Param("q") UserSearchQuery q,
                                        @Param("birthMin") String birthMin,
                                        @Param("birthMax") String birthMax,
                                        @Param("hobbyJson") String hobbyJson,
                                        @Param("excludeIds") List<Integer> excludeIds,
                                        @Param("limit") Integer limit,
                                        @Param("offset") Integer offset);

    // provinces
    List<com.zhentao.pojo.Province> selectAllProvinces();

    // cities
    List<com.zhentao.pojo.City> selectAllCities();

    // cities by provinceId
    List<com.zhentao.pojo.City> selectCitiesByProvince(@Param("provinceId") Integer provinceId);

    // areas by cityId
    List<com.zhentao.pojo.Area> selectAreasByCity(@Param("cityId") Integer cityId);
    
    // 插入用户喜欢记录
    int insertUserLike(@Param("userId") Integer userId, @Param("likeUserId") Integer likeUserId);
    
    // 删除用户喜欢记录
    int deleteUserLike(@Param("userId") Integer userId, @Param("likeUserId") Integer likeUserId);
    
    // 查询用户喜欢的列表
    List<RecommendUserVO> selectLikedUsers(@Param("userId") Integer userId, @Param("offset") Integer offset, @Param("limit") Integer limit);
    
    // 查询用户喜欢的用户数量
    Integer countLikedUsers(@Param("userId") Integer userId);
    
    // 查询喜欢当前用户的用户列表
    List<RecommendUserVO> selectUsersWhoLikedMe(@Param("userId") Integer userId, @Param("offset") Integer offset, @Param("limit") Integer limit);
    
    // 统计喜欢当前用户的用户数量
    Integer countUsersWhoLikedMe(@Param("userId") Integer userId);
}


