package com.zhentao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhentao.entity.Activity;
import java.util.List;

/**
 * 活动服务接口
 */
public interface ActivityService {
    
    /**
     * 获取活动列表
     * 
     * @param type 活动类型（null表示全部）
     * @param status 活动状态（null表示全部）
     * @param keyword 搜索关键词（可选，用于活动名称模糊查询）
     * @param limit 限制数量（可选）
     * @return 活动列表
     */
    List<Activity> getActivityList(Integer type, Integer status, String keyword, Integer limit);
    
    /**
     * 分页获取活动列表
     * 
     * @param type 活动类型（null表示全部）
     * @param status 活动状态（null表示全部）
     * @param keyword 搜索关键词（可选，用于活动名称模糊查询）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    Page<Activity> getActivityPage(Integer type, Integer status, String keyword, Integer pageNum, Integer pageSize);
    
    /**
     * 获取活动详情
     * 
     * @param id 活动ID
     * @return 活动详情
     */
    Activity getActivityDetail(Integer id);
    
    /**
     * 获取热门活动列表
     * 
     * @param limit 限制数量
     * @return 活动列表
     */
    List<Activity> getHotActivities(Integer limit);
    
    /**
     * 报名活动
     * 
     * @param activityId 活动ID
     * @param userId 用户ID
     * @return 报名是否成功
     * @throws RuntimeException 报名失败时抛出异常，包含失败原因
     */
    boolean registerActivity(Integer activityId, Integer userId);
}


