85 lines
1.9 KiB
Dart
85 lines
1.9 KiB
Dart
|
|
/// 系统角色模型。
|
||
|
|
///
|
||
|
|
/// 对应后端 /sys/role/* 接口的角色实体。
|
||
|
|
class SysRole {
|
||
|
|
const SysRole({
|
||
|
|
required this.roleId,
|
||
|
|
required this.roleName,
|
||
|
|
required this.remark,
|
||
|
|
required this.createTime,
|
||
|
|
});
|
||
|
|
|
||
|
|
/// 角色 ID。
|
||
|
|
final String roleId;
|
||
|
|
|
||
|
|
/// 角色名称。
|
||
|
|
final String roleName;
|
||
|
|
|
||
|
|
/// 备注。
|
||
|
|
final String remark;
|
||
|
|
|
||
|
|
/// 创建时间。
|
||
|
|
final DateTime? createTime;
|
||
|
|
|
||
|
|
factory SysRole.fromJson(Map<String, dynamic> json) {
|
||
|
|
return SysRole(
|
||
|
|
roleId: (json['roleId'] ?? json['id'])?.toString() ?? '',
|
||
|
|
roleName: json['roleName']?.toString() ?? '',
|
||
|
|
remark: json['remark']?.toString() ?? '',
|
||
|
|
createTime: _parseDateTime(json['createTime']),
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// 兼容 `yyyy-MM-dd HH:mm:ss` 与 ISO 8601 两种时间格式。
|
||
|
|
static DateTime? _parseDateTime(dynamic value) {
|
||
|
|
if (value == null) return null;
|
||
|
|
final text = value.toString().trim();
|
||
|
|
if (text.isEmpty) return null;
|
||
|
|
return DateTime.tryParse(text) ??
|
||
|
|
DateTime.tryParse(text.replaceFirst(' ', 'T'));
|
||
|
|
}
|
||
|
|
|
||
|
|
Map<String, dynamic> toJson() {
|
||
|
|
return {
|
||
|
|
'roleId': roleId,
|
||
|
|
'roleName': roleName,
|
||
|
|
'remark': remark,
|
||
|
|
'createTime': createTime?.toIso8601String(),
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// 角色-菜单关联模型(用于角色权限分配)。
|
||
|
|
class RoleMenu {
|
||
|
|
const RoleMenu({
|
||
|
|
required this.id,
|
||
|
|
required this.roleId,
|
||
|
|
required this.menuId,
|
||
|
|
});
|
||
|
|
|
||
|
|
/// 主键 ID。
|
||
|
|
final String id;
|
||
|
|
|
||
|
|
/// 角色 ID。
|
||
|
|
final String roleId;
|
||
|
|
|
||
|
|
/// 菜单 ID。
|
||
|
|
final String menuId;
|
||
|
|
|
||
|
|
factory RoleMenu.fromJson(Map<String, dynamic> json) {
|
||
|
|
return RoleMenu(
|
||
|
|
id: json['id']?.toString() ?? '',
|
||
|
|
roleId: json['roleId']?.toString() ?? '',
|
||
|
|
menuId: json['menuId']?.toString() ?? '',
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
Map<String, dynamic> toJson() {
|
||
|
|
return {
|
||
|
|
'id': id,
|
||
|
|
'roleId': roleId,
|
||
|
|
'menuId': menuId,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|