package com.yc.ship.module.resource.service.machine;


import com.yc.ship.framework.common.pojo.CommonResult;
import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.resource.api.dto.CheckMachineDTO;
import com.yc.ship.module.resource.controller.admin.machine.vo.ScenicMachinePageReqVO;
import com.yc.ship.module.resource.controller.admin.machine.vo.ScenicMachineSaveReqVO;
import com.yc.ship.module.resource.dal.dataobject.machine.ScenicMachineDO;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * 设备 Service 接口
 *
 * @author 管理员
 */
public interface ScenicMachineService {

    /**
     * 创建设备
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createScenicMachine(@Valid ScenicMachineSaveReqVO createReqVO);

    /**
     * 更新设备
     *
     * @param updateReqVO 更新信息
     */
    void updateScenicMachine(@Valid ScenicMachineSaveReqVO updateReqVO);

    /**
     * 删除设备
     *
     * @param id 编号
     */
    void deleteScenicMachine(Long id);

    /**
     * 获得设备
     *
     * @param id 编号
     * @return 设备
     */
    ScenicMachineDO getScenicMachine(Long id);

    /**
     * 获得设备分页
     *
     * @param pageReqVO 分页查询
     * @return 设备分页
     */
    PageResult<ScenicMachineDO> getScenicMachinePage(ScenicMachinePageReqVO pageReqVO);

    /**
     * 获得检票设备
     *
     * @param machineId 设备编码
     * @param type 设备类型
     * @param tenantId 租户
     * @return 设备
     */
    CheckMachineDTO getCheckMachine(String machineId, Integer type, Long tenantId);

    List<Map<String, Object>> getMachineSiteInfos(String machineId, Integer siteType, Long tenantId);


    CommonResult<?> changeCheckSiteChannel(Integer machineType, Long channelId, String machineId);

    Map<String, Object> getMachineInfo(Integer siteType,String machineId);
}
