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

import com.jeesharp.business.modules.member.entity.MemberVip;
import com.jeesharp.business.modules.member.vo.MemberVipQueryVO;
import com.jeesharp.framework.mybatis.core.service.BaseInterface;
import com.jeesharp.framework.pojo.Page;

import java.util.List;

/**
 * 会员付费开通服务接口
 *
 * @author jeesharp
 * @version 2026-03-19
 */
public interface MemberVipService extends BaseInterface<MemberVip, MemberVipQueryVO> {

    /**
     * 获取会员当前有效付费记录（status=1 且 expire_date > now）
     *
     * @param memberId 会员ID
     * @return 有效付费记录，取到期时间最晚的一条；无则返回 null
     */
    MemberVip getActiveVip(String memberId);

    /**
     * 开通付费会员
     *
     * @param entity 付费开通记录
     * @return 开通记录
     */
    MemberVip openVip(MemberVip entity);

    /**
     * 取消付费开通
     *
     * @param id 记录ID
     */
    void cancelVip(String id);

    /**
     * 同步会员表付费冗余字段（根据当前有效记录更新 app_member）
     *
     * @param memberId 会员ID
     */
    void syncMemberVipFields(String memberId);

    /**
     * 分页查询
     */
    Page<MemberVip> findPage(Page<MemberVip> page, MemberVipQueryVO query);

    /**
     * 查询某会员的开通历史
     */
    List<MemberVip> listByMemberId(String memberId);
}
