package com.ycwl.basic.service.printer;

import com.ycwl.basic.model.mobile.order.PriceObj;
import com.ycwl.basic.model.pc.printer.entity.PrinterEntity;
import com.ycwl.basic.model.pc.printer.resp.MemberPrintResp;
import com.ycwl.basic.model.pc.printer.resp.PrinterResp;
import com.ycwl.basic.model.printer.req.FromSourceReq;
import com.ycwl.basic.model.printer.req.PrinterSyncReq;
import com.ycwl.basic.model.printer.resp.PrintTaskResp;
import com.ycwl.basic.model.printer.req.WorkerAuthReqVo;
import com.ycwl.basic.utils.ApiResponse;

import java.util.List;
import java.util.Map;

public interface PrinterService {
    List<PrinterResp> listByScenicId(Long scenicId);

    ApiResponse<List<PrinterEntity>> list(PrinterEntity condition);
    
    ApiResponse<PrinterEntity> get(Integer id);
    
    ApiResponse<Integer> add(PrinterEntity entity);
    
    ApiResponse<Integer> update(PrinterEntity entity);
    
    ApiResponse<Integer> delete(Integer id);

    List<PrintTaskResp> sync(PrinterSyncReq req);

    void taskSuccess(Integer taskId, WorkerAuthReqVo req);

    void taskFail(Integer taskId, WorkerAuthReqVo req);

    List<MemberPrintResp> getUserPhotoList(Long userId, Long scenicId);

    List<MemberPrintResp> getUserPhotoListByOrderId(Long orderId);

    boolean deleteUserPhoto(Long memberId, Long scenicId, Long relationId);

    boolean addUserPhoto(Long memberId, Long scenicId, String url);

    MemberPrintResp getUserPhoto(Long memberId, Long scenicId, Long id);

    int setPhotoCropped(Long memberId, Long scenicId, Long id, String url);

    int setPhotoQuantity(Long memberId, Long scenicId, Long id, Integer quantity);

    PriceObj queryPrice(Long memberId, Long scenicId);

    boolean addUserPhotoFromSource(Long memberId, Long scenicId, FromSourceReq req);

    Map<String, Object> createOrder(Long memberId, Long scenicId, Integer printerId);

    void batchSetUserPhotoListToPrinter(Long memberId, Long scenicId, Integer printerId);

    void setUserIsBuyItem(Long memberId, Long id, Long orderId);
}