package com.fuyuanshen.app.service.equipment;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fuyuanshen.app.domain.APPDevice;
import com.fuyuanshen.app.domain.APPDeviceType;
import com.fuyuanshen.app.domain.dto.APPReNameDTO;
import com.fuyuanshen.app.domain.dto.APPUnbindDTO;
import com.fuyuanshen.app.domain.query.APPDeviceQueryCriteria;
import com.fuyuanshen.app.domain.vo.APPDeviceTypeVo;
import com.fuyuanshen.app.domain.vo.AppDeviceDetailVo;
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
import com.fuyuanshen.equipment.domain.dto.AppDeviceBo;
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;

import java.util.List;

/**
 * @Description:
 * @Author: WY
 * @Date: 2025/5/16
 **/
public interface APPDeviceService extends IService<APPDevice> {

    /**
     * APP用户设备列表
     *
     * @param criteria
     */
    TableDataInfo<APPDevice> appDeviceList(Page<APPDevice> page, APPDeviceQueryCriteria criteria);


    /**
     * APP用户设备类型列表
     *
     * @param criteria
     * @return
     */
    List<APPDeviceType> appTypeList(APPDeviceQueryCriteria criteria);

    /**
     * APP/小程序用户设备绑定
     *
     * @param criteria
     */
    void appBindDevice(APPDeviceQueryCriteria criteria);

    /**
     * 分页查询APP/小程序设备绑定
     *
     * @param criteria
     * @param page
     * @return
     */
    TableDataInfo<APPDevice> queryAll(Page<APPDevice> page, APPDeviceQueryCriteria criteria);

    /**
     * APP/小程序用户设备解绑
     *
     * @param deviceForm
     */
    void unbindAPPDevice(APPUnbindDTO deviceForm);


    List<APPDeviceTypeVo> getTypeList();

    void reName(APPReNameDTO reNameDTO);

    /**
     * WEB端查看APP客户设备绑定
     *
     * @param criteria
     * @return
     */
    TableDataInfo<APPDevice> queryAppDeviceList(DeviceQueryCriteria criteria);


    int sendMessage(AppDeviceBo bo);
}
