package com.zhentao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhentao.entity.MyResource;
import com.zhentao.vo.MyResourceVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Map;

/**
* @author Administrator
* @description 针对表【my_resource(红娘资源表
)】的数据库操作Mapper
* @createDate 2025-12-08 15:38:21
* @Entity com.zhentao.entity.MyResource
*/
@Mapper
public interface MyResourceMapper extends BaseMapper<MyResource> {
    
    /**
     * 自定义插入方法，确保所有字段（包括null值）都被插入
     * 
     * @param myResource 资源对象
     * @return 插入结果
     */
    int insertWithNulls(MyResource myResource);
    
    /**
     * 分页查询资源列表（关联users表获取头像）
     * 
     * @param page 分页对象
     * @param matchmakerId 红娘ID
     * @param keyword 搜索关键词
     * @param isUser 用户注册状态筛选（可选）：1-已注册用户，0-未注册用户（线索），null-全部
     * @return 资源VO分页数据
     */
    Page<MyResourceVO> selectResourceListWithAvatar(
            Page<MyResourceVO> page,
            @Param("matchmakerId") Integer matchmakerId,
            @Param("keyword") String keyword,
            @Param("isUser") Integer isUser
    );
    
    /**
     * 根据用户ID查询用户资料信息
     * 
     * @param userId 用户ID
     * @return 用户资料Map
     */
    @Select("SELECT up.height, up.weight, up.marital_status, up.house, up.car, " +
            "up.education_level, up.salary_range, up.job_title, up.company, " +
            "u.birth_date " +
            "FROM user_profile up " +
            "LEFT JOIN users u ON up.user_id = u.user_id " +
            "WHERE up.user_id = #{userId}")
    Map<String, Object> selectUserProfileByUserId(@Param("userId") Integer userId);
    
    /**
     * 根据标签名称分页查询资源列表（关联users表获取头像）
     * 
     * @param page 分页对象
     * @param tagName 标签名称
     * @param keyword 搜索关键词
     * @param excludeMatchmakerId 要排除的红娘ID（如果提供，则排除该红娘已拥有的资源）
     * @return 资源VO分页数据
     */
    Page<MyResourceVO> selectResourceListByTagName(
            Page<MyResourceVO> page,
            @Param("tagName") String tagName,
            @Param("keyword") String keyword,
            @Param("excludeMatchmakerId") Integer excludeMatchmakerId
    );
}




