Files
feature-next-arch/lib/features/devices/domain/entities/device_entity.dart
2026-01-18 20:21:14 +08:00

66 lines
1.7 KiB
Dart

import 'package:equatable/equatable.dart';
class DeviceEntity extends Equatable {
final String deviceName;
final int productId;
final String productName;
final int tenantId;
final String tenantName;
final int status;
final String? activeTime;
final String? deviceAlias;
final int isBind; // 是否被绑定过
final int onlineStatus; // 在线状态
DeviceEntity({
required this.deviceName,
required this.productId,
required this.productName,
required this.tenantId,
required this.tenantName,
this.status = 0,
this.activeTime,
this.deviceAlias,
this.isBind = 0,
this.onlineStatus = 0,
});
// 方便从后端 JSON 转换
factory DeviceEntity.fromJson(Map<String, dynamic> json) {
return DeviceEntity(
deviceName: json['deviceName'],
productId: json['productId'] ?? -1,
productName: json['productName'] ?? "割草机产品MC700",
tenantId: json['tenantId'],
tenantName: json['tenantName'],
status: json['status'] ?? 0,
activeTime: json['activeTime'],
deviceAlias: json['deviceAlias'],
isBind: json['isBind'] ?? 0,
onlineStatus: json['onlineStatus'] ?? 0,
);
}
// 获取显示的名称(优先别名,没有则用设备名)
String get displayName => (deviceAlias != null && deviceAlias!.isNotEmpty)
? deviceAlias!
: (deviceName ?? "未知设备");
// 辅助方法:判断是否在线
bool get isOnline => onlineStatus == 1;
@override
List<Object?> get props => [
deviceName,
productId,
productName,
tenantId,
tenantName,
status,
activeTime,
deviceAlias,
isBind,
onlineStatus,
];
}