/** * 设备管理相关 API */ import { BaseService } from '../BaseService' import type { Device, DeviceQueryParams, DeviceListResponse, DeviceCardsResponse, BindCardToDeviceRequest, BindCardToDeviceResponse, UnbindCardFromDeviceResponse, AllocateDevicesRequest, AllocateDevicesResponse, RecallDevicesRequest, RecallDevicesResponse, ImportDeviceRequest, ImportDeviceResponse, DeviceImportTaskQueryParams, DeviceImportTaskListResponse, DeviceImportTaskDetail, BaseResponse, SetSpeedLimitRequest, SwitchCardRequest, SetWiFiRequest, DeviceOperationResponse } from '@/types/api' export class DeviceService extends BaseService { // ========== 设备基础管理 ========== /** * 获取设备列表 * @param params 查询参数 */ static getDevices(params?: DeviceQueryParams): Promise> { return this.get>('/api/admin/devices', params) } /** * 获取设备详情 * @param id 设备ID */ static getDeviceById(id: number): Promise> { return this.getOne(`/api/admin/devices/${id}`) } /** * 通过ICCID查询设备详情 * @param iccid ICCID */ static getDeviceByIccid(iccid: string): Promise> { return this.getOne(`/api/admin/devices/by-iccid/${iccid}`) } /** * 删除设备 * @param virtualNo 设备虚拟号 */ static deleteDevice(virtualNo: string): Promise { return this.remove(`/api/admin/devices/${virtualNo}`) } // ========== 设备卡绑定管理 ========== /** * 获取设备绑定的卡列表 * @param virtualNo 设备虚拟号 */ static getDeviceCards(virtualNo: string): Promise> { return this.getOne(`/api/admin/devices/${virtualNo}/cards`) } /** * 绑定卡到设备 * @param virtualNo 设备虚拟号 * @param data 绑定参数 */ static bindCard( virtualNo: string, data: BindCardToDeviceRequest ): Promise> { return this.post>( `/api/admin/devices/${virtualNo}/cards`, data ) } /** * 解绑设备上的卡 * @param virtualNo 设备虚拟号 * @param iccid 卡ICCID */ static unbindCard( virtualNo: string, iccid: string ): Promise> { return this.delete>( `/api/admin/devices/${virtualNo}/cards/${iccid}` ) } // ========== 批量分配和回收 ========== /** * 批量分配设备 * @param data 分配参数 */ static allocateDevices( data: AllocateDevicesRequest ): Promise> { return this.post>('/api/admin/devices/allocate', data) } /** * 批量回收设备 * @param data 回收参数 */ static recallDevices(data: RecallDevicesRequest): Promise> { return this.post>('/api/admin/devices/recall', data) } // ========== 设备导入 ========== /** * 批量导入设备 * @param data 导入参数 */ static importDevices(data: ImportDeviceRequest): Promise> { return this.post>('/api/admin/devices/import', data) } /** * 获取导入任务列表 * @param params 查询参数 */ static getImportTasks( params?: DeviceImportTaskQueryParams ): Promise> { return this.get>( '/api/admin/devices/import/tasks', params ) } /** * 获取导入任务详情 * @param id 任务ID */ static getImportTaskDetail(id: number): Promise> { return this.getOne(`/api/admin/devices/import/tasks/${id}`) } // ========== 批量设置设备的套餐系列绑定相关 ========== /** * 批量设置设备的套餐系列绑定 * @param data 请求参数 */ static batchSetDeviceSeriesBinding(data: { device_ids: number[] series_id: number }): Promise> { return this.patch('/api/admin/devices/series-binding', data) } // ========== 设备操作相关 ========== /** * 重启设备 * @param imei 设备号(IMEI) */ static rebootDevice(imei: string): Promise> { return this.post>( `/api/admin/devices/by-identifier/${imei}/reboot`, {} ) } /** * 恢复出厂设置 * @param imei 设备号(IMEI) */ static resetDevice(imei: string): Promise> { return this.post>( `/api/admin/devices/by-identifier/${imei}/reset`, {} ) } /** * 设置限速 * @param imei 设备号(IMEI) * @param data 限速参数 */ static setSpeedLimit( imei: string, data: SetSpeedLimitRequest ): Promise> { return this.put>( `/api/admin/devices/by-identifier/${imei}/speed-limit`, data ) } /** * 切换SIM卡 * @param imei 设备号(IMEI) * @param data 切卡参数 */ static switchCard( imei: string, data: SwitchCardRequest ): Promise> { return this.post>( `/api/admin/devices/by-identifier/${imei}/switch-card`, data ) } /** * 设置WiFi * @param imei 设备号(IMEI) * @param data WiFi参数 */ static setWiFi( imei: string, data: SetWiFiRequest ): Promise> { return this.put>( `/api/admin/devices/by-identifier/${imei}/wifi`, data ) } /** * 设置切卡模式 * @param identifier 设备标识(虚拟号 / IMEI / SN) * @param switchMode 切卡模式(0=自动切卡,1=手动切卡) */ static setSwitchMode( identifier: string, data: { iot_card_id: number; switch_mode: 0 | 1 } ): Promise> { return this.post>( `/api/admin/devices/by-identifier/${identifier}/switch-mode`, data ) } }