package com.hzs.activity.pick.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.pick.param.AcPickQueryParam;
import com.hzs.activity.pick.param.AcPickSaveParam;
import com.hzs.activity.pick.vo.ApiPickListVO;
import com.hzs.common.domain.activity.pick.AcPick;
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.LoginUser;

import java.util.Date;
import java.util.List;

/**
 * 提货基础表 服务类
 */
public interface IAcPickService extends IService<AcPick> {

    /**
     * 添加提货数据
     *
     * @param pkMember       添加会员ID
     * @param pickType       提货类型（保持与EPickType枚举值一样）
     * @param pkBaseConfig   活动配置ID（非必传）
     * @param pkDataId       活动规则ID
     * @param usableQuantity 可提数量
     * @param pickCover      提货封面
     * @param receiveTime    领取截止时间（为空传null）
     * @param pkPostage      邮费模板（包邮传null）
     * @param pkCreator      创建人
     * @param pkCountry      所属国家
     * @param pkBaseId       活动ID（活动必填，非活动可传null）
     * @return
     */
    boolean addPickByActivity(Long pkMember, Integer pickType, Long pkBaseConfig, Long pkDataId,
                              Integer usableQuantity, String pickCover, Date receiveTime, Integer pkPostage,
                              Long pkCreator, Integer pkCountry, Long pkBaseId);

    /**
     * 更新提货使用数量
     *
     * @param pickType     提货类型
     * @param pkBaseConfig 活动配置ID（非必传）
     * @param pkDataId     对应数据ID（产品为产品ID，活动为规则ID）
     * @param pkMember     会员ID
     * @param quantity     使用数量
     * @param pkModified   操作人ID
     * @return
     */
    boolean updatePickUse(Integer pickType, Long pkBaseConfig, Long pkDataId, Long pkMember, Integer quantity, Long pkModified);

    /**
     * 查询提货列表
     *
     * @param param     查询参数
     * @param pkCountry 所属国家
     * @return
     */
    List<AcPickExt> queryList(AcPickQueryParam param, Integer pkCountry);

    /**
     * 查询提货ID
     *
     * @param pkId 提货ID
     * @param pkId 所属国家
     * @return
     */
    AcPickExt queryDetail(Long pkId, Integer pkCountry);

    /**
     * 提货变动提交
     *
     * @param param     提货入参
     * @param loginUser 当前用户
     * @return
     */
    String pickSubmit(AcPickSaveParam param, LoginUser loginUser);

    /**
     * 提货变动审批通过
     *
     * @param resultDTO
     * @return
     */
    String pickApprovalAgree(ApprovalBusinessResultDTO resultDTO);

    /**
     * 提货变动审批驳回
     *
     * @param resultDTO
     * @return
     */
    String pickApprovalReject(ApprovalBusinessResultDTO resultDTO);

    /**
     * 会员提货列表
     *
     * @param pkMember  会员ID
     * @param pkCountry 所属国家
     * @return
     */
    List<ApiPickListVO> pickList(Long pkMember, Integer pkCountry);

    /**
     * 提货订单回调处理
     *
     * @param pkMember  会员ID
     * @param orderCode 订单编号
     * @return
     */
    boolean callbackPickOrder(Long pkMember, String orderCode);

}
