package com.ruoyi.ss.vip.service;

import java.util.List;

import com.ruoyi.ss.store.domain.StoreVo;
import com.ruoyi.ss.user.domain.SmUserVO;
import com.ruoyi.ss.vip.domain.Vip;
import com.ruoyi.ss.vip.domain.VipVO;

/**
 * @author wjh
 * 2024/12/9
 */
public interface VipValidator {

    /**
     * 新增、更新前校验
     */
    void beforeCheck(Vip data);

    /**
     * 新增、更新后校验
     */
    void afterCheck(VipVO vo);

    /**
     * 是否允许查看
     */
    boolean canView(VipVO vo, Long userId);

    /**
     * 是否允许操作所有会员
     */
    boolean canOperateAll(List<VipVO> vipList, Long userId);

    /**
     * 是否允许使用在当前店铺
     */
    boolean isStore(VipVO vip, StoreVo store);

    /**
     * 是否允许使用在当前用户
     */
    boolean isUser(VipVO vip, SmUserVO user);

    /**
     * 是否在有效期内
     */
    boolean isInValid(VipVO vip);
}
