package com.hzs.activity.pick.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.activity.pick.param.AcPickQueryParam;
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 org.apache.ibatis.annotations.Param;

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

/**
 * 提货基础表 Mapper 接口
 *
 * @author hzs
 * @since 2023-04-21
 */
public interface AcPickMapper extends BaseMapper<AcPick> {

    /**
     * 更新提货数量
     *
     * @param pickType     提货类型
     * @param pkBaseConfig 活动配置ID（非必传）
     * @param pkDataId     对应数据ID（产品为产品ID，活动为规则ID）
     * @param pkMember     会员ID
     * @param quantity     变动数量
     * @param pkPostage    邮费模板
     * @param receiveTime  到期时间
     * @param pkModified   操作人ID
     * @return
     */
    int addQuantityByActivity(@Param("pickType") Integer pickType,
                              @Param("pkBaseConfig") Long pkBaseConfig,
                              @Param("pkDataId") Long pkDataId,
                              @Param("pkMember") Long pkMember,
                              @Param("quantity") Integer quantity,
                              @Param("pkPostage") Integer pkPostage,
                              @Param("receiveTime") Date receiveTime,
                              @Param("pkModified") Long pkModified);

    /**
     * 根据会员和活动类型回退使用数量
     *
     * @param pkMember     会员ID
     * @param pickType     提货类型
     * @param pkBaseConfig 活动配置ID（产品时为0） -- 可为null
     * @param pkDataId     数据ID（产品为产品ID，活动为活动ID） -- 可为null
     * @param quantity     数量
     * @param pkModified   操作人
     * @return
     */
    int updatePickUsableByMemberAndActivityType(@Param("pkMember") Long pkMember,
                                                @Param("pickType") Integer pickType,
                                                @Param("pkBaseConfig") Long pkBaseConfig,
                                                @Param("pkDataId") Long pkDataId,
                                                @Param("quantity") Integer quantity,
                                                @Param("pkModified") Long pkModified);

    /**
     * 根据主键更新提货数据
     *
     * @param acPick
     * @return
     */
    int updatePickByPkId(@Param("acPick") AcPick acPick);

    /**
     * @description: 删除充值提货卡
     * @author: zhang jing
     * @date: 2023/10/26 13:45
     * @param: [acPick]
     * @return: boolean
     **/
    boolean removePickByPkId(@Param("acPick") AcPick acPick);

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

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

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

}
