package org.dromara.zhishu.service;

import org.dromara.zhishu.domain.TInviteCode;
import org.dromara.zhishu.domain.bo.InviteCodeBo;
import org.dromara.zhishu.domain.vo.InviteCodeVo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;

import java.util.List;

/**
 * 邀请码 Service 接口
 */
public interface ITInviteCodeService {

    /**
     * 查询邀请码
     *
     * @param id 邀请码主键
     * @return 邀请码
     */
    InviteCodeVo queryById(Long id);

    /**
     * 查询邀请码列表
     *
     * @param userId 用户ID
     * @return 邀请码列表
     */
    List<InviteCodeVo> queryListByUserId(Long userId);

    /**
     * 查询邀请码分页列表
     *
     * @param bo 查询条件
     * @param pageQuery 分页参数
     * @return 邀请码分页列表
     */
    TableDataInfo<InviteCodeVo> queryPageList(InviteCodeBo bo, PageQuery pageQuery);

    /**
     * 生成邀请码
     *
     * @param bo 邀请码信息
     * @return 邀请码
     */
    int generateInviteCode(InviteCodeBo bo);

    /**
     * 验证邀请码
     *
     * @param code 邀请码
     * @return 邀请码信息，如果无效则返回null
     */
    TInviteCode validateInviteCode(String code);

    /**
     * 使用邀请码
     *
     * @param code 邀请码
     * @param inviteeId 被邀请人ID
     * @return 是否使用成功
     */
    boolean useInviteCode(String code, Long inviteeId);
} 