package cn.ysk.cashier.service.shop;

import cn.ysk.cashier.dto.shop.TbShopRechargeListDto;
import cn.ysk.cashier.dto.shop.TbShopRechargeRespDto;
import cn.ysk.cashier.pojo.shop.TbShopUser;
import cn.ysk.cashier.dto.shop.TbShopUserDto;
import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;

/**
* @website https://eladmin.vip
* @description 服务接口
* @author lyf
* @date 2024-03-01
**/
public interface TbShopUserService {


    /**
     * 商家后台 用户管理
     * @param criteria 条件

     * @return Map<String,Object>
     */
    Map<String,Object> queryShopUser(TbShopUserQueryCriteria criteria);

    /**
    * 会员管理
    * @param criteria 条件
    * @param pageable 分页参数
    * @return Map<String,Object>
    */
    Map<String,Object> queryAll(TbShopUserQueryCriteria criteria, Pageable pageable);

    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<TbShopUserDto>
    */
    List<TbShopUserDto> queryAll(TbShopUserQueryCriteria criteria);

    /**
     * 根据ID查询
     * @param id ID
     * @return TbShopUserDto
     */
    TbShopUserDto findById(Integer id);

    /**
    * 创建
    * @param resources /
    * @return TbShopUserDto
    */
    TbShopUserDto create(TbShopUser resources);

    /**
    * 编辑
    * @param resources /
    */
    void update(TbShopUser resources);

    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(Integer[] ids);

    /**
    * 导出数据
    * @param all 待导出的数据
    * @param response /
    * @throws IOException /
    */
    void download(List<TbShopUserDto> all, HttpServletResponse response) throws IOException;

    /**
     * 充值记录
     * @param criteria 条件
     * @param pageable 分页参数
     * @return Map<String,Object>
     */
    IPage<TbShopRechargeRespDto> rechargeList(TbShopRechargeListDto criteria, Pageable pageable);

    void rechargeListDownload(HttpServletResponse response, TbShopRechargeListDto criteria) throws IOException;

    void modfiyAccount(Map<String,Object> map);

}
