171 lines
4.2 KiB
TypeScript
171 lines
4.2 KiB
TypeScript
/**
|
|
* 设备管理相关 API
|
|
*/
|
|
|
|
import { BaseService } from '../BaseService'
|
|
import type {
|
|
Device,
|
|
DeviceQueryParams,
|
|
DeviceListResponse,
|
|
DeviceCardsResponse,
|
|
BindCardToDeviceRequest,
|
|
BindCardToDeviceResponse,
|
|
UnbindCardFromDeviceResponse,
|
|
AllocateDevicesRequest,
|
|
AllocateDevicesResponse,
|
|
RecallDevicesRequest,
|
|
RecallDevicesResponse,
|
|
ImportDeviceRequest,
|
|
ImportDeviceResponse,
|
|
DeviceImportTaskQueryParams,
|
|
DeviceImportTaskListResponse,
|
|
DeviceImportTaskDetail,
|
|
BaseResponse
|
|
} from '@/types/api'
|
|
|
|
export class DeviceService extends BaseService {
|
|
// ========== 设备基础管理 ==========
|
|
|
|
/**
|
|
* 获取设备列表
|
|
* @param params 查询参数
|
|
*/
|
|
static getDevices(params?: DeviceQueryParams): Promise<BaseResponse<DeviceListResponse>> {
|
|
return this.get<BaseResponse<DeviceListResponse>>('/api/admin/devices', params)
|
|
}
|
|
|
|
/**
|
|
* 获取设备详情
|
|
* @param id 设备ID
|
|
*/
|
|
static getDeviceById(id: number): Promise<BaseResponse<Device>> {
|
|
return this.getOne<Device>(`/api/admin/devices/${id}`)
|
|
}
|
|
|
|
/**
|
|
* 通过设备号查询设备详情
|
|
* @param imei 设备号(IMEI)
|
|
*/
|
|
static getDeviceByImei(imei: string): Promise<BaseResponse<Device>> {
|
|
return this.getOne<Device>(`/api/admin/devices/by-imei/${imei}`)
|
|
}
|
|
|
|
/**
|
|
* 删除设备
|
|
* @param id 设备ID
|
|
*/
|
|
static deleteDevice(id: number): Promise<BaseResponse> {
|
|
return this.remove(`/api/admin/devices/${id}`)
|
|
}
|
|
|
|
// ========== 设备卡绑定管理 ==========
|
|
|
|
/**
|
|
* 获取设备绑定的卡列表
|
|
* @param id 设备ID
|
|
*/
|
|
static getDeviceCards(id: number): Promise<BaseResponse<DeviceCardsResponse>> {
|
|
return this.getOne<DeviceCardsResponse>(`/api/admin/devices/${id}/cards`)
|
|
}
|
|
|
|
/**
|
|
* 绑定卡到设备
|
|
* @param id 设备ID
|
|
* @param data 绑定参数
|
|
*/
|
|
static bindCard(
|
|
id: number,
|
|
data: BindCardToDeviceRequest
|
|
): Promise<BaseResponse<BindCardToDeviceResponse>> {
|
|
return this.post<BaseResponse<BindCardToDeviceResponse>>(
|
|
`/api/admin/devices/${id}/cards`,
|
|
data
|
|
)
|
|
}
|
|
|
|
/**
|
|
* 解绑设备上的卡
|
|
* @param deviceId 设备ID
|
|
* @param cardId IoT卡ID
|
|
*/
|
|
static unbindCard(
|
|
deviceId: number,
|
|
cardId: number
|
|
): Promise<BaseResponse<UnbindCardFromDeviceResponse>> {
|
|
return this.delete<BaseResponse<UnbindCardFromDeviceResponse>>(
|
|
`/api/admin/devices/${deviceId}/cards/${cardId}`
|
|
)
|
|
}
|
|
|
|
// ========== 批量分配和回收 ==========
|
|
|
|
/**
|
|
* 批量分配设备
|
|
* @param data 分配参数
|
|
*/
|
|
static allocateDevices(
|
|
data: AllocateDevicesRequest
|
|
): Promise<BaseResponse<AllocateDevicesResponse>> {
|
|
return this.post<BaseResponse<AllocateDevicesResponse>>(
|
|
'/api/admin/devices/allocate',
|
|
data
|
|
)
|
|
}
|
|
|
|
/**
|
|
* 批量回收设备
|
|
* @param data 回收参数
|
|
*/
|
|
static recallDevices(
|
|
data: RecallDevicesRequest
|
|
): Promise<BaseResponse<RecallDevicesResponse>> {
|
|
return this.post<BaseResponse<RecallDevicesResponse>>('/api/admin/devices/recall', data)
|
|
}
|
|
|
|
// ========== 设备导入 ==========
|
|
|
|
/**
|
|
* 批量导入设备
|
|
* @param data 导入参数
|
|
*/
|
|
static importDevices(
|
|
data: ImportDeviceRequest
|
|
): Promise<BaseResponse<ImportDeviceResponse>> {
|
|
return this.post<BaseResponse<ImportDeviceResponse>>('/api/admin/devices/import', data)
|
|
}
|
|
|
|
/**
|
|
* 获取导入任务列表
|
|
* @param params 查询参数
|
|
*/
|
|
static getImportTasks(
|
|
params?: DeviceImportTaskQueryParams
|
|
): Promise<BaseResponse<DeviceImportTaskListResponse>> {
|
|
return this.get<BaseResponse<DeviceImportTaskListResponse>>(
|
|
'/api/admin/devices/import/tasks',
|
|
params
|
|
)
|
|
}
|
|
|
|
/**
|
|
* 获取导入任务详情
|
|
* @param id 任务ID
|
|
*/
|
|
static getImportTaskDetail(id: number): Promise<BaseResponse<DeviceImportTaskDetail>> {
|
|
return this.getOne<DeviceImportTaskDetail>(`/api/admin/devices/import/tasks/${id}`)
|
|
}
|
|
|
|
// ========== 批量设置设备的套餐系列绑定相关 ==========
|
|
|
|
/**
|
|
* 批量设置设备的套餐系列绑定
|
|
* @param data 请求参数
|
|
*/
|
|
static batchSetDeviceSeriesBinding(data: {
|
|
device_ids: number[]
|
|
series_allocation_id: number
|
|
}): Promise<BaseResponse<any>> {
|
|
return this.patch('/api/admin/devices/series-binding', data)
|
|
}
|
|
}
|