package com.hzs.activity.recoilGive.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.base.param.ActivityParam;
import com.hzs.activity.base.param.QueryActivityParam;
import com.hzs.activity.base.vo.BaseConfigVo;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.common.domain.activity.base.AcBaseConfig;
import com.hzs.common.domain.activity.recoilGive.AcRecoilGiveConfig;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;

import java.util.List;

/**
 * 复消币赠送活动配置 服务类
 *
 * @author hzs
 * @since 2024-07-18
 */
public interface IAcRecoilGiveConfigService extends IService<AcRecoilGiveConfig> {

    /**
     * 新增复消币活动配置
     *
     * @param activityParam
     */
    Long saveRecoilGiveConfig(ActivityParam activityParam);

    /**
     * 复消币活动配置新增
     *
     * @param activityParam
     * @param baseConfig
     */
    void createRecoilGiveConfig(ActivityParam activityParam, AcBaseConfig baseConfig);

    /**
     * 签呈提交
     *
     * @param recommendParam
     */
    void onLinePetition(AcRecommendParam recommendParam);

    /**
     * 复消币活动签呈审核通过
     *
     * @param approvalBusinessResultDTO
     */
    String ApprovalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO);

    /**
     * 复消币活动配置修改
     *
     * @param activityParam
     */
    Long updateRecoilGiveConfig(ActivityParam activityParam);

    /**
     * 删除复消币活动配置
     *
     * @param pkBaseId
     */
    void removeRecoilGiveConfig(Long pkBaseId);

    /**
     * 复消币赠送活动驳回
     *
     * @param approvalBusinessResultDTO
     */
    String ApprovalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO);

    /**
     * 查询复消币赠送活动列表
     *
     * @param queryActivityParam
     * @return
     */
    List<BaseConfigVo> queryList(QueryActivityParam queryActivityParam);

    /**
     * 复消币赠送处理
     *
     * @param saOrderExt 订单信息
     * @return
     */
    String recoilGiveHandle(SaOrderExt saOrderExt);

    /**
     * 复消币赠送撤单处理
     *
     * @param saOrderExt 订单信息
     * @return
     */
    String recoilGiveCancelHandle(SaOrderExt saOrderExt);

}
