package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.ReturnFeeDto;
import com.ym.mec.biz.dal.entity.ActivityUserMapper;
import com.ym.mec.biz.dal.enums.GroupType;
import com.ym.mec.common.entity.HttpResponseResult;

import java.math.BigDecimal;

/**
 * @Author Joburgess
 * @Date 2020/2/17
 **/
public interface GroupClassService {

    /**
     * @describe 删除课程组信息
     * @author Joburgess
     * @date 2020/2/17
     * @param groupId: 课程组编号
     * @param groupType: 课程组类型
     * @return boolean
     */
    boolean deleteAllGroupInfo(String groupId, GroupType groupType);

    /**
     * @describe 删除课程组信息
     * @author Joburgess
     * @date 2020/2/17
     * @param groupId: 课程组编号
     * @param groupType: 课程组类型
     * @return boolean
     */
    boolean deleteGroupOtherInfo(String groupId, GroupType groupType);

    /**
     * @describe 清理课程组相关信息
     * @author Joburgess
     * @date 2020/2/17
     * @param groupId: 课程组编号
     * @param groupType: 课程组类型
     * @return boolean
     */
    boolean cleanGroupInfo(String groupId, GroupType groupType);

    /**
     * @describe 隐藏课程组相关信息
     * @author Joburgess
     * @date 2020/2/17
     * @param groupId: 课程组编号
     * @param groupType: 课程组类型
     * @return boolean
     */
    boolean hideGroupInfo(String groupId, GroupType groupType);

    /**
     * @describe 关闭课程组
     * @author Joburgess
     * @date 2020/3/4
     * @param groupId: 课程组编号
     * @param groupType: 课程组类型
     * @param refundAmount: 退款金额
     * @return void
     */
    HttpResponseResult cancelGroup(ReturnFeeDto returnFeeDto);

    /**
    * @description: OA审批关闭课程组
     * @param returnFeeDto
    * @return void
    * @author zx
    * @date 2021/11/30 11:16
    */
    void cancelGroupOa(ReturnFeeDto returnFeeDto);

    /**
    * @description: 校验OA审批关闭课程组参数
     * @param returnFeeDto
    * @return void
    * @author zx
    * @date 2021/11/30 11:16
    */
    void checkCancelGroupOa(ReturnFeeDto returnFeeDto);

    /**
    * @description: 退还活动相关赠送
     * @param activityUserMapper
     * @param confirmReturnActivityGive
    * @return com.ym.mec.common.entity.HttpResponseResult
    * @author zx
    * @date 2021/10/13 13:59
    */
    HttpResponseResult quitActivityGive(ActivityUserMapper activityUserMapper, boolean confirmReturnActivityGive,Long groupId,GroupType groupType);

}
