package com.kxs.system.biz.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kxs.common.core.util.R;
import com.kxs.system.api.dto.admin.GetByBcqtPageDTO;
import com.kxs.system.api.dto.kxsapp.camp.CampAddBcqtTeamDTO;
import com.kxs.system.api.dto.kxsapp.camp.CampOpenActivityDTO;
import com.kxs.system.api.dto.kxsapp.camp.CampReturnTeamDTO;
import com.kxs.system.api.model.KxsBcqtTeam;
import com.kxs.system.api.model.KxsBcqtTeamDetail;

import java.util.List;

/**
 * 百城千团团队表(KxsBcqtTeam)表服务接口
 *
 * @author 系统
 * @since 2024-05-22 14:29:03
 */
public interface KxsBcqtTeamService extends IService<KxsBcqtTeam> {

    /**
     * 百城千团-获取列表
     *
     * @param page 分页对象
     * @param keyword 查询关键字
     * @return 百城千团-获取列表
     */
    R getBcqtList(Page<KxsBcqtTeam> page, String keyword);
    /**
     * 百城千团-获取我的参团记录
     *
     * @param page 分页对象
     * @return 百城千团-获取我的参团记录
     */
    R getMyBcqtList(Page<KxsBcqtTeam> page);
    /**
     * 百城千团-创建团队
     *
     * @param param 实体对象
     * @return 百城千团-创建团队
     */
    R addBcqtTeam(CampAddBcqtTeamDTO param);
    /**
     * 百城千团-创建团队校验
     *
     * @param param 实体对象
     * @return 百城千团-创建团队
     */
    R verifyAddTeam(CampAddBcqtTeamDTO param);
    /**
     * 百城千团-退出团队
     *
     * @param param 实体对象
     * @return 百城千团-退出团队
     */
    R returnTeam(CampReturnTeamDTO param);
    /**
     * 百城千团-开启活动
     *
     * @param param 实体对象
     * @return 百城千团-开启活动
     */
    R openActivity(CampOpenActivityDTO param);
    /**
     * 百城千团-业绩查看
     *
     * @param id 主键ID
     * @return 百城千团-业绩查看
     */
    R getBcqtDetail(Integer id);
    /**
     * 定时统计活动期间人员激活  定时任务
     *
     */
    void setUserActivityTimeStat();

    /**
     * 关闭结束活动team
     */
    void setUserActiviteStatus();
    /**
     * 训练营-百城千团列表
     *
     * @param page 分页对象
     * @param param 查询实体
     * @return 训练营-百城千团列表
     */
    R getByBcqtPage(Page<KxsBcqtTeam> page, GetByBcqtPageDTO param);
    /**
     * 修改团名
     * @param kxsBcqtTeam  实体
     * @return
     */
    void updateBcqt(KxsBcqtTeam kxsBcqtTeam);
    /**
     * 训练营-百城千团列表-激活统计
     *
     * @param id 查询团队id
     * @return 训练营-百城千团列表
     */
    R bcqtGetDetail(Long id);

    /**
     * 百城千团 - 加入团队
     * @param id
     * @return
     */
    R joinTheTeam(long id);
}

