package com.jeesharp.business.modules.member.mapper;

import com.jeesharp.business.modules.member.entity.Member;
import com.jeesharp.business.modules.member.vo.MemberQueryVO;
import com.jeesharp.framework.mybatis.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 会员 Mapper 接口
 *
 * @author jeesharp
 * @version 2024-01-24
 */
@Mapper
public interface MemberMapper extends BaseMapper<Member, MemberQueryVO> {

    /**
     * 更新会员付费冗余字段
     *
     * @param member 会员（需包含 id、vipLevelCode、vipExpireDate、isVip）
     */
    void updateVipFields(Member member);

    /**
     * 按主键批量查询会员（须带租户编码，不走 findList 的 dataScope 注入）
     */
    List<Member> selectByIds(@Param("tenantCode") String tenantCode, @Param("ids") List<String> ids);

    /**
     * 按主键批量查询会员（管理端订单/预约单展示补全；与 {@link #get(String)} 一致，不按 tenant_code 过滤）
     */
    List<Member> selectByIdsForDisplay(@Param("ids") List<String> ids);

    /**
     * 按关键词模糊匹配会员主键（须带租户编码）
     */
    List<String> selectIdsByKeyword(@Param("tenantCode") String tenantCode, @Param("keyword") String keyword);

    /**
     * 按关键词模糊匹配会员主键（不限租户；发券等运营场景）
     */
    List<String> selectIdsByKeywordWithoutTenant(@Param("keyword") String keyword);
}
