Files
flutterApp/lib/features/devices/data/models/device_model.dart
2026-09-15 08:51:44 +08:00

79 lines
2.4 KiB
Dart

import 'package:maibu_satabot_v2/core/data/base_model.dart';
import 'package:maibu_satabot_v2/core/utils/json_safe.dart';
import 'package:maibu_satabot_v2/features/devices/domain/entities/device_entity.dart';
class DeviceModel extends DeviceEntity implements BaseModel {
DeviceModel({
required super.deviceName,
required super.productId,
required super.productName,
required super.tenantId,
required super.tenantName,
required super.status,
required super.activeTime,
required super.deviceAlias,
required super.isBind,
required super.onlineStatus,
});
factory DeviceModel.fromJson(Map<String, dynamic> json) {
return DeviceModel(
deviceName: JsonSafe.asString(json['deviceName']),
productId: JsonSafe.asInt(json['productId'], -1),
productName: JsonSafe.asString(json['productName'], "割草机产品MC700"),
tenantId: JsonSafe.asInt(json['tenantId']),
tenantName: JsonSafe.asString(json['tenantName']),
status: JsonSafe.asInt(json['status']),
activeTime: JsonSafe.asStringOrNull(json['activeTime']),
deviceAlias: JsonSafe.asStringOrNull(json['deviceAlias']),
isBind: JsonSafe.asInt(json['isBind']),
onlineStatus: JsonSafe.asInt(json['onlineStatus']),
);
}
Map<String, dynamic> toJson() {
return {
'deviceName': deviceName,
'productId': productId,
'productName': productName,
'tenantId': tenantId,
'tenantName': tenantName,
'status': status,
'activeTime': activeTime,
'deviceAlias': deviceAlias,
'isBind': isBind,
'onlineStatus': onlineStatus,
};
}
toEntity() {
return DeviceEntity(
deviceName: deviceName,
productId: productId,
productName: productName,
tenantId: tenantId,
tenantName: tenantName,
status: status,
activeTime: activeTime,
deviceAlias: deviceAlias,
isBind: isBind,
onlineStatus: onlineStatus,
);
}
factory DeviceModel.fromEntity(DeviceEntity entity) {
return DeviceModel(
deviceName: entity.deviceName,
productId: entity.productId,
productName: entity.productName,
tenantId: entity.tenantId,
tenantName: entity.tenantName,
status: entity.status,
activeTime: entity.activeTime,
deviceAlias: entity.deviceAlias,
isBind: entity.isBind,
onlineStatus: entity.onlineStatus,
);
}
}