package com.ym.mec.biz.service;


import com.ym.mec.auth.api.entity.SysUser;
import com.ym.mec.biz.dal.dto.*;
import com.ym.mec.biz.dal.entity.ChildrenDayReserve;
import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
import com.ym.mec.biz.dal.enums.YesOrNoEnum;
import com.ym.mec.biz.dal.page.ChildrenReserveQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

import java.util.List;
import java.util.Map;

public interface ChildrenDayReserveService extends BaseService<Integer, ChildrenDayReserve> {

    /**
     * 填加占位
     *
     * @param user
     * @param status
     * @return
     */
    ChildrenDayReserve addReserve(SysUser user, YesOrNoEnum status);


    /**
     * 获取用户的占位信息
     *
     * @param userId
     * @return
     */
    ChildrenDayReserve getUserReserve(Integer userId);

    PageInfo<ChildrenStatisticsDto> queryStatisticsPage(ChildrenReserveQueryInfo queryInfo);

    /**
     * 获取活动的费用信息
     *
     * @param organId
     * @return
     */
    DegreeFeeDto getFeeInfo(Integer organId);

    /**
     * 获取后台考级活动详情列表
     *
     * @param queryInfo
     * @return
     */
    PageInfo<ChildrenStatisticsDetailDto> queryStatisticsDetailPage(ChildrenReserveQueryInfo queryInfo);

    /**
     * 6.1考级活动支付
     *
     * @return
     * @throws Exception
     */
    Map pay(DegreePayDto degreePayDto) throws Exception;

    /**
     * 支付回调处理
     *
     * @param studentPaymentOrder
     * @return
     */
    Boolean orderCallback(StudentPaymentOrder studentPaymentOrder);

    /**
     * 导出详情
     * @param queryInfo
     * @return
     */
    List<ChildrenStatisticsDetailDto> exportStatisticsDetail(ChildrenReserveQueryInfo queryInfo);

    /**
     * 发送短信和推送
     *
     * @param msgDtos
     * @return
     */
    Boolean sendMsg(List<ChildrenDayMsgDto> msgDtos);
}
