package com.kxs.store.biz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kxs.store.api.dto.kxsapp.storeRecycle.StoreRecycleMachineListDTO;
import com.kxs.store.api.model.KxsMachineRecycle;
import com.kxs.store.api.model.KxsMachineRecycleInfo;
import com.kxs.store.api.vo.kxsapp.storeRecycle.NeedConfirmRecycleVO;
import com.kxs.store.api.vo.kxsapp.storeRecycle.RecycleUserListVO;
import com.kxs.store.api.vo.kxsapp.storeRecycle.StoreRecycleMachineListVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 客小爽仓库机具回收申请表(KxsMachineRecycle)表数据库访问层
 *
 * @author 系统
 * @since 2024-01-08 09:46:02
 */
@Mapper
public interface KxsMachineRecycleMapper extends BaseMapper<KxsMachineRecycle> {


    /**
     * app分页
     *
     * @param start 开始
     * @param size  大小
     * @param param 参数
     * @return {@link IPage}<{@link StoreRecycleMachineListVO}>
     */
    List<StoreRecycleMachineListVO> getByPage(@Param("start") long start, @Param("size") long size, @Param("query") StoreRecycleMachineListDTO param);


    /**
     * 用户寄回记录
     *
     * @param start  开始
     * @param size   大小
     * @param userId
     * @return {@link IPage}<{@link RecycleUserListVO}>
     */
    List<RecycleUserListVO> userList(@Param("start") long start, @Param("size") long size, @Param("userId") Long userId);

    /**
     * 需要确认列表
     *
     * @param page    页
     * @param userId  用户 ID
     * @param brandId 品牌 ID
     * @return {@link IPage}<{@link NeedConfirmRecycleVO}>
     */
    IPage<NeedConfirmRecycleVO> needConfirmList(Page<NeedConfirmRecycleVO> page, @Param("userId") Long userId, @Param("brandId") Integer brandId);

    /**
     * 可回收数量接口
     *
     * @param userId 用户 ID
     * @return {@link Integer}
     */
    Integer recoverableData(Long userId);

    /**
     * 仓库待确认数量
     *
     * @param warehouseUserId 用户 ID
     * @return {@link Long}
     */
    Integer storeRecoverableData(@Param("warehouseUserId") Integer warehouseUserId, @Param("status") Integer status);

    /**
     * 用户机具回收列表
     *
     * @param userId 用户 ID
     * @return {@link List}<{@link KxsMachineRecycleInfo}>
     */
    List<String> recycleUserSnList(Long userId);
}

