744 lines
19 KiB
Dart
744 lines
19 KiB
Dart
class SCVipResourceRes {
|
|
SCVipResourceRes({
|
|
String? resourceId,
|
|
String? name,
|
|
String? url,
|
|
String? sourceUrl,
|
|
String? resourceUrl,
|
|
String? cover,
|
|
String? coverUrl,
|
|
}) {
|
|
_resourceId = resourceId;
|
|
_name = name;
|
|
_url = url;
|
|
_sourceUrl = sourceUrl;
|
|
_resourceUrl = resourceUrl;
|
|
_cover = cover;
|
|
_coverUrl = coverUrl;
|
|
}
|
|
|
|
SCVipResourceRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_resourceId = _stringValue(map['resourceId']);
|
|
_name = _stringValue(map['name']);
|
|
_url = _stringValue(map['url']);
|
|
_sourceUrl = _stringValue(map['sourceUrl']);
|
|
_resourceUrl = _stringValue(map['resourceUrl']);
|
|
_cover = _stringValue(map['cover']);
|
|
_coverUrl = _stringValue(map['coverUrl']);
|
|
}
|
|
|
|
String? _resourceId;
|
|
String? _name;
|
|
String? _url;
|
|
String? _sourceUrl;
|
|
String? _resourceUrl;
|
|
String? _cover;
|
|
String? _coverUrl;
|
|
|
|
String? get resourceId => _resourceId;
|
|
|
|
String? get name => _name;
|
|
|
|
String? get url => _url;
|
|
|
|
String? get sourceUrl => _sourceUrl;
|
|
|
|
String? get resourceUrl => _resourceUrl;
|
|
|
|
String? get cover => _cover;
|
|
|
|
String? get coverUrl => _coverUrl;
|
|
|
|
String? get previewUrl {
|
|
final cover = _firstNonBlank([_coverUrl, _cover]);
|
|
if (cover != null) return cover;
|
|
|
|
final staticUrl = _firstNonBlank(
|
|
[_url, _resourceUrl, _sourceUrl].where((value) {
|
|
final text = value?.trim();
|
|
return text != null && text.isNotEmpty && !_isSvgaUrl(text);
|
|
}),
|
|
);
|
|
if (staticUrl != null) return staticUrl;
|
|
|
|
return _firstNonBlank([_url, _resourceUrl, _sourceUrl]);
|
|
}
|
|
|
|
String? get sourceResourceUrl =>
|
|
_firstNonBlank([_sourceUrl, _resourceUrl, _url]);
|
|
|
|
bool get hasIdentity {
|
|
final id = _resourceId?.trim();
|
|
return id != null && id.isNotEmpty && id != '0';
|
|
}
|
|
|
|
bool get hasAnyUrl =>
|
|
_firstNonBlank([_url, _sourceUrl, _resourceUrl, _cover, _coverUrl]) !=
|
|
null;
|
|
|
|
bool get hasPreviewUrl => previewUrl != null;
|
|
|
|
bool get hasSourceUrl => sourceResourceUrl != null;
|
|
|
|
bool get hasContent =>
|
|
hasAnyUrl || hasIdentity || (_name?.trim().isNotEmpty ?? false);
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['resourceId'] = _resourceId;
|
|
map['name'] = _name;
|
|
map['url'] = _url;
|
|
map['sourceUrl'] = _sourceUrl;
|
|
map['resourceUrl'] = _resourceUrl;
|
|
map['cover'] = _cover;
|
|
map['coverUrl'] = _coverUrl;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
class SCVipStatusRes {
|
|
SCVipStatusRes({
|
|
String? userId,
|
|
String? sysOrigin,
|
|
bool? active,
|
|
String? status,
|
|
num? level,
|
|
String? levelCode,
|
|
String? displayName,
|
|
String? startAt,
|
|
String? expireAt,
|
|
SCVipResourceRes? badge,
|
|
SCVipResourceRes? avatarFrame,
|
|
SCVipResourceRes? entryEffect,
|
|
SCVipResourceRes? chatBubble,
|
|
SCVipResourceRes? floatPicture,
|
|
}) {
|
|
_userId = userId;
|
|
_sysOrigin = sysOrigin;
|
|
_active = active;
|
|
_status = status;
|
|
_level = level;
|
|
_levelCode = levelCode;
|
|
_displayName = displayName;
|
|
_startAt = startAt;
|
|
_expireAt = expireAt;
|
|
_badge = badge;
|
|
_avatarFrame = avatarFrame;
|
|
_entryEffect = entryEffect;
|
|
_chatBubble = chatBubble;
|
|
_floatPicture = floatPicture;
|
|
}
|
|
|
|
SCVipStatusRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_userId = _stringValue(map['userId']);
|
|
_sysOrigin = _stringValue(map['sysOrigin']);
|
|
_active = _boolValue(map['active']);
|
|
_status = _stringValue(map['status']);
|
|
_level = _numValue(map['level']);
|
|
_levelCode = _stringValue(map['levelCode']);
|
|
_displayName = _stringValue(map['displayName']);
|
|
_startAt = _stringValue(map['startAt']);
|
|
_expireAt = _stringValue(map['expireAt']);
|
|
_badge = _resourceValue(map['badge']);
|
|
_avatarFrame = _resourceValue(map['avatarFrame']);
|
|
_entryEffect = _resourceValue(map['entryEffect']);
|
|
_chatBubble = _resourceValue(map['chatBubble']);
|
|
_floatPicture = _resourceValue(map['floatPicture']);
|
|
}
|
|
|
|
String? _userId;
|
|
String? _sysOrigin;
|
|
bool? _active;
|
|
String? _status;
|
|
num? _level;
|
|
String? _levelCode;
|
|
String? _displayName;
|
|
String? _startAt;
|
|
String? _expireAt;
|
|
SCVipResourceRes? _badge;
|
|
SCVipResourceRes? _avatarFrame;
|
|
SCVipResourceRes? _entryEffect;
|
|
SCVipResourceRes? _chatBubble;
|
|
SCVipResourceRes? _floatPicture;
|
|
|
|
String? get userId => _userId;
|
|
|
|
String? get sysOrigin => _sysOrigin;
|
|
|
|
bool? get active => _active;
|
|
|
|
String? get status => _status;
|
|
|
|
num? get level => _level;
|
|
|
|
String? get levelCode => _levelCode;
|
|
|
|
String? get displayName => _displayName;
|
|
|
|
String? get startAt => _startAt;
|
|
|
|
String? get expireAt => _expireAt;
|
|
|
|
SCVipResourceRes? get badge => _badge;
|
|
|
|
SCVipResourceRes? get avatarFrame => _avatarFrame;
|
|
|
|
SCVipResourceRes? get entryEffect => _entryEffect;
|
|
|
|
SCVipResourceRes? get chatBubble => _chatBubble;
|
|
|
|
SCVipResourceRes? get floatPicture => _floatPicture;
|
|
|
|
bool get isActive => _active == true && (_level ?? 0) > 0;
|
|
|
|
int get levelInt => (_level ?? 0).toInt();
|
|
|
|
String get displayNameText {
|
|
final name = _displayName?.trim();
|
|
if (name != null && name.isNotEmpty) return name;
|
|
final code = _levelCode?.trim();
|
|
if (code != null && code.isNotEmpty) return code;
|
|
return levelInt > 0 ? 'VIP $levelInt' : 'VIP';
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['userId'] = _userId;
|
|
map['sysOrigin'] = _sysOrigin;
|
|
map['active'] = _active;
|
|
map['status'] = _status;
|
|
map['level'] = _level;
|
|
map['levelCode'] = _levelCode;
|
|
map['displayName'] = _displayName;
|
|
map['startAt'] = _startAt;
|
|
map['expireAt'] = _expireAt;
|
|
if (_badge != null) map['badge'] = _badge?.toJson();
|
|
if (_avatarFrame != null) map['avatarFrame'] = _avatarFrame?.toJson();
|
|
if (_entryEffect != null) map['entryEffect'] = _entryEffect?.toJson();
|
|
if (_chatBubble != null) map['chatBubble'] = _chatBubble?.toJson();
|
|
if (_floatPicture != null) map['floatPicture'] = _floatPicture?.toJson();
|
|
return map;
|
|
}
|
|
}
|
|
|
|
class SCVipLevelConfigRes {
|
|
SCVipLevelConfigRes({
|
|
num? level,
|
|
String? levelCode,
|
|
String? displayName,
|
|
bool? enabled,
|
|
num? durationDays,
|
|
num? priceGold,
|
|
SCVipResourceRes? badge,
|
|
SCVipResourceRes? avatarFrame,
|
|
SCVipResourceRes? entryEffect,
|
|
SCVipResourceRes? chatBubble,
|
|
SCVipResourceRes? floatPicture,
|
|
bool? canPurchase,
|
|
num? payableGold,
|
|
}) {
|
|
_level = level;
|
|
_levelCode = levelCode;
|
|
_displayName = displayName;
|
|
_enabled = enabled;
|
|
_durationDays = durationDays;
|
|
_priceGold = priceGold;
|
|
_badge = badge;
|
|
_avatarFrame = avatarFrame;
|
|
_entryEffect = entryEffect;
|
|
_chatBubble = chatBubble;
|
|
_floatPicture = floatPicture;
|
|
_canPurchase = canPurchase;
|
|
_payableGold = payableGold;
|
|
}
|
|
|
|
SCVipLevelConfigRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_level = _numValue(map['level']);
|
|
_levelCode = _stringValue(map['levelCode']);
|
|
_displayName = _stringValue(map['displayName']);
|
|
_enabled = _boolValue(map['enabled']);
|
|
_durationDays = _numValue(map['durationDays']);
|
|
_priceGold = _numValue(map['priceGold']);
|
|
_badge = _resourceValue(map['badge']);
|
|
_avatarFrame = _resourceValue(map['avatarFrame']);
|
|
_entryEffect = _resourceValue(map['entryEffect']);
|
|
_chatBubble = _resourceValue(map['chatBubble']);
|
|
_floatPicture = _resourceValue(map['floatPicture']);
|
|
_canPurchase = _boolValue(map['canPurchase']);
|
|
_payableGold = _numValue(map['payableGold']);
|
|
}
|
|
|
|
num? _level;
|
|
String? _levelCode;
|
|
String? _displayName;
|
|
bool? _enabled;
|
|
num? _durationDays;
|
|
num? _priceGold;
|
|
SCVipResourceRes? _badge;
|
|
SCVipResourceRes? _avatarFrame;
|
|
SCVipResourceRes? _entryEffect;
|
|
SCVipResourceRes? _chatBubble;
|
|
SCVipResourceRes? _floatPicture;
|
|
bool? _canPurchase;
|
|
num? _payableGold;
|
|
|
|
num? get level => _level;
|
|
|
|
String? get levelCode => _levelCode;
|
|
|
|
String? get displayName => _displayName;
|
|
|
|
bool? get enabled => _enabled;
|
|
|
|
num? get durationDays => _durationDays;
|
|
|
|
num? get priceGold => _priceGold;
|
|
|
|
SCVipResourceRes? get badge => _badge;
|
|
|
|
SCVipResourceRes? get avatarFrame => _avatarFrame;
|
|
|
|
SCVipResourceRes? get entryEffect => _entryEffect;
|
|
|
|
SCVipResourceRes? get chatBubble => _chatBubble;
|
|
|
|
SCVipResourceRes? get floatPicture => _floatPicture;
|
|
|
|
bool? get canPurchase => _canPurchase;
|
|
|
|
num? get payableGold => _payableGold;
|
|
|
|
int get levelInt => (_level ?? 0).toInt();
|
|
|
|
String get displayNameText {
|
|
final name = _displayName?.trim();
|
|
if (name != null && name.isNotEmpty) return name;
|
|
final code = _levelCode?.trim();
|
|
if (code != null && code.isNotEmpty) return code;
|
|
return levelInt > 0 ? 'VIP$levelInt' : 'VIP';
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['level'] = _level;
|
|
map['levelCode'] = _levelCode;
|
|
map['displayName'] = _displayName;
|
|
map['enabled'] = _enabled;
|
|
map['durationDays'] = _durationDays;
|
|
map['priceGold'] = _priceGold;
|
|
if (_badge != null) map['badge'] = _badge?.toJson();
|
|
if (_avatarFrame != null) map['avatarFrame'] = _avatarFrame?.toJson();
|
|
if (_entryEffect != null) map['entryEffect'] = _entryEffect?.toJson();
|
|
if (_chatBubble != null) map['chatBubble'] = _chatBubble?.toJson();
|
|
if (_floatPicture != null) map['floatPicture'] = _floatPicture?.toJson();
|
|
map['canPurchase'] = _canPurchase;
|
|
map['payableGold'] = _payableGold;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
class SCVipHomeRes {
|
|
SCVipHomeRes({
|
|
String? userId,
|
|
String? sysOrigin,
|
|
bool? configured,
|
|
SCVipStatusRes? state,
|
|
List<SCVipLevelConfigRes>? levels,
|
|
}) {
|
|
_userId = userId;
|
|
_sysOrigin = sysOrigin;
|
|
_configured = configured;
|
|
_state = state;
|
|
_levels = levels;
|
|
}
|
|
|
|
SCVipHomeRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_userId = _stringValue(map['userId']);
|
|
_sysOrigin = _stringValue(map['sysOrigin']);
|
|
_configured = _boolValue(map['configured']);
|
|
final stateMap = _asMap(map['state']);
|
|
_state =
|
|
stateMap != null && stateMap.isNotEmpty
|
|
? SCVipStatusRes.fromJson(stateMap)
|
|
: null;
|
|
_levels =
|
|
_asList(
|
|
map['levels'],
|
|
).map((dynamic item) => SCVipLevelConfigRes.fromJson(item)).toList();
|
|
}
|
|
|
|
String? _userId;
|
|
String? _sysOrigin;
|
|
bool? _configured;
|
|
SCVipStatusRes? _state;
|
|
List<SCVipLevelConfigRes>? _levels;
|
|
|
|
String? get userId => _userId;
|
|
|
|
String? get sysOrigin => _sysOrigin;
|
|
|
|
bool? get configured => _configured;
|
|
|
|
SCVipStatusRes? get state => _state;
|
|
|
|
List<SCVipLevelConfigRes> get levels => _levels ?? <SCVipLevelConfigRes>[];
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['userId'] = _userId;
|
|
map['sysOrigin'] = _sysOrigin;
|
|
map['configured'] = _configured;
|
|
if (_state != null) map['state'] = _state?.toJson();
|
|
map['levels'] = levels.map((item) => item.toJson()).toList();
|
|
return map;
|
|
}
|
|
}
|
|
|
|
class SCVipPreviewRes {
|
|
SCVipPreviewRes({
|
|
String? userId,
|
|
String? sysOrigin,
|
|
String? orderType,
|
|
num? currentLevel,
|
|
num? targetLevel,
|
|
num? durationDays,
|
|
num? originalPriceGold,
|
|
num? payableGold,
|
|
String? startAt,
|
|
String? expireAt,
|
|
SCVipLevelConfigRes? targetConfig,
|
|
}) {
|
|
_userId = userId;
|
|
_sysOrigin = sysOrigin;
|
|
_orderType = orderType;
|
|
_currentLevel = currentLevel;
|
|
_targetLevel = targetLevel;
|
|
_durationDays = durationDays;
|
|
_originalPriceGold = originalPriceGold;
|
|
_payableGold = payableGold;
|
|
_startAt = startAt;
|
|
_expireAt = expireAt;
|
|
_targetConfig = targetConfig;
|
|
}
|
|
|
|
SCVipPreviewRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_userId = _stringValue(map['userId']);
|
|
_sysOrigin = _stringValue(map['sysOrigin']);
|
|
_orderType = _stringValue(map['orderType']);
|
|
_currentLevel = _numValue(map['currentLevel']);
|
|
_targetLevel = _numValue(map['targetLevel']);
|
|
_durationDays = _numValue(map['durationDays']);
|
|
_originalPriceGold = _numValue(map['originalPriceGold']);
|
|
_payableGold = _numValue(map['payableGold']);
|
|
_startAt = _stringValue(map['startAt']);
|
|
_expireAt = _stringValue(map['expireAt']);
|
|
final targetConfigMap = _asMap(map['targetConfig']);
|
|
_targetConfig =
|
|
targetConfigMap != null && targetConfigMap.isNotEmpty
|
|
? SCVipLevelConfigRes.fromJson(targetConfigMap)
|
|
: null;
|
|
}
|
|
|
|
String? _userId;
|
|
String? _sysOrigin;
|
|
String? _orderType;
|
|
num? _currentLevel;
|
|
num? _targetLevel;
|
|
num? _durationDays;
|
|
num? _originalPriceGold;
|
|
num? _payableGold;
|
|
String? _startAt;
|
|
String? _expireAt;
|
|
SCVipLevelConfigRes? _targetConfig;
|
|
|
|
String? get userId => _userId;
|
|
|
|
String? get sysOrigin => _sysOrigin;
|
|
|
|
String? get orderType => _orderType;
|
|
|
|
num? get currentLevel => _currentLevel;
|
|
|
|
num? get targetLevel => _targetLevel;
|
|
|
|
num? get durationDays => _durationDays;
|
|
|
|
num? get originalPriceGold => _originalPriceGold;
|
|
|
|
num? get payableGold => _payableGold;
|
|
|
|
String? get startAt => _startAt;
|
|
|
|
String? get expireAt => _expireAt;
|
|
|
|
SCVipLevelConfigRes? get targetConfig => _targetConfig;
|
|
|
|
int get targetLevelInt => (_targetLevel ?? 0).toInt();
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['userId'] = _userId;
|
|
map['sysOrigin'] = _sysOrigin;
|
|
map['orderType'] = _orderType;
|
|
map['currentLevel'] = _currentLevel;
|
|
map['targetLevel'] = _targetLevel;
|
|
map['durationDays'] = _durationDays;
|
|
map['originalPriceGold'] = _originalPriceGold;
|
|
map['payableGold'] = _payableGold;
|
|
map['startAt'] = _startAt;
|
|
map['expireAt'] = _expireAt;
|
|
if (_targetConfig != null) {
|
|
map['targetConfig'] = _targetConfig?.toJson();
|
|
}
|
|
return map;
|
|
}
|
|
}
|
|
|
|
class SCVipPurchaseRes {
|
|
SCVipPurchaseRes({
|
|
bool? success,
|
|
SCVipOrderRes? order,
|
|
SCVipStatusRes? state,
|
|
}) {
|
|
_success = success;
|
|
_order = order;
|
|
_state = state;
|
|
}
|
|
|
|
SCVipPurchaseRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_success = _boolValue(map['success']);
|
|
final orderMap = _asMap(map['order']);
|
|
_order =
|
|
orderMap != null && orderMap.isNotEmpty
|
|
? SCVipOrderRes.fromJson(orderMap)
|
|
: null;
|
|
final stateMap = _asMap(map['state']);
|
|
_state =
|
|
stateMap != null && stateMap.isNotEmpty
|
|
? SCVipStatusRes.fromJson(stateMap)
|
|
: null;
|
|
}
|
|
|
|
bool? _success;
|
|
SCVipOrderRes? _order;
|
|
SCVipStatusRes? _state;
|
|
|
|
bool? get success => _success;
|
|
|
|
SCVipOrderRes? get order => _order;
|
|
|
|
SCVipStatusRes? get state => _state;
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['success'] = _success;
|
|
if (_order != null) map['order'] = _order?.toJson();
|
|
if (_state != null) map['state'] = _state?.toJson();
|
|
return map;
|
|
}
|
|
}
|
|
|
|
class SCVipOrdersRes {
|
|
SCVipOrdersRes({List<SCVipOrderRes>? records, num? total}) {
|
|
_records = records;
|
|
_total = total;
|
|
}
|
|
|
|
SCVipOrdersRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_records =
|
|
_asList(
|
|
map['records'],
|
|
).map((dynamic item) => SCVipOrderRes.fromJson(item)).toList();
|
|
_total = _numValue(map['total']);
|
|
}
|
|
|
|
List<SCVipOrderRes>? _records;
|
|
num? _total;
|
|
|
|
List<SCVipOrderRes> get records => _records ?? <SCVipOrderRes>[];
|
|
|
|
num? get total => _total;
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['records'] = records.map((item) => item.toJson()).toList();
|
|
map['total'] = _total;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
class SCVipOrderRes {
|
|
SCVipOrderRes({
|
|
String? id,
|
|
String? eventId,
|
|
String? sysOrigin,
|
|
String? userId,
|
|
String? orderType,
|
|
num? fromLevel,
|
|
num? toLevel,
|
|
num? durationDays,
|
|
num? originalPriceGold,
|
|
num? paidGold,
|
|
String? status,
|
|
String? startAt,
|
|
String? expireAt,
|
|
}) {
|
|
_id = id;
|
|
_eventId = eventId;
|
|
_sysOrigin = sysOrigin;
|
|
_userId = userId;
|
|
_orderType = orderType;
|
|
_fromLevel = fromLevel;
|
|
_toLevel = toLevel;
|
|
_durationDays = durationDays;
|
|
_originalPriceGold = originalPriceGold;
|
|
_paidGold = paidGold;
|
|
_status = status;
|
|
_startAt = startAt;
|
|
_expireAt = expireAt;
|
|
}
|
|
|
|
SCVipOrderRes.fromJson(dynamic json) {
|
|
final map = _asMap(json);
|
|
if (map == null) return;
|
|
_id = _stringValue(map['id']);
|
|
_eventId = _stringValue(map['eventId']);
|
|
_sysOrigin = _stringValue(map['sysOrigin']);
|
|
_userId = _stringValue(map['userId']);
|
|
_orderType = _stringValue(map['orderType']);
|
|
_fromLevel = _numValue(map['fromLevel']);
|
|
_toLevel = _numValue(map['toLevel']);
|
|
_durationDays = _numValue(map['durationDays']);
|
|
_originalPriceGold = _numValue(map['originalPriceGold']);
|
|
_paidGold = _numValue(map['paidGold']);
|
|
_status = _stringValue(map['status']);
|
|
_startAt = _stringValue(map['startAt']);
|
|
_expireAt = _stringValue(map['expireAt']);
|
|
}
|
|
|
|
String? _id;
|
|
String? _eventId;
|
|
String? _sysOrigin;
|
|
String? _userId;
|
|
String? _orderType;
|
|
num? _fromLevel;
|
|
num? _toLevel;
|
|
num? _durationDays;
|
|
num? _originalPriceGold;
|
|
num? _paidGold;
|
|
String? _status;
|
|
String? _startAt;
|
|
String? _expireAt;
|
|
|
|
String? get id => _id;
|
|
|
|
String? get eventId => _eventId;
|
|
|
|
String? get sysOrigin => _sysOrigin;
|
|
|
|
String? get userId => _userId;
|
|
|
|
String? get orderType => _orderType;
|
|
|
|
num? get fromLevel => _fromLevel;
|
|
|
|
num? get toLevel => _toLevel;
|
|
|
|
num? get durationDays => _durationDays;
|
|
|
|
num? get originalPriceGold => _originalPriceGold;
|
|
|
|
num? get paidGold => _paidGold;
|
|
|
|
String? get status => _status;
|
|
|
|
String? get startAt => _startAt;
|
|
|
|
String? get expireAt => _expireAt;
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final map = <String, dynamic>{};
|
|
map['id'] = _id;
|
|
map['eventId'] = _eventId;
|
|
map['sysOrigin'] = _sysOrigin;
|
|
map['userId'] = _userId;
|
|
map['orderType'] = _orderType;
|
|
map['fromLevel'] = _fromLevel;
|
|
map['toLevel'] = _toLevel;
|
|
map['durationDays'] = _durationDays;
|
|
map['originalPriceGold'] = _originalPriceGold;
|
|
map['paidGold'] = _paidGold;
|
|
map['status'] = _status;
|
|
map['startAt'] = _startAt;
|
|
map['expireAt'] = _expireAt;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
Map<String, dynamic>? _asMap(dynamic value) {
|
|
if (value is Map<String, dynamic>) return value;
|
|
if (value is Map) return Map<String, dynamic>.from(value);
|
|
return null;
|
|
}
|
|
|
|
List<dynamic> _asList(dynamic value) {
|
|
if (value is List) return value;
|
|
return <dynamic>[];
|
|
}
|
|
|
|
SCVipResourceRes? _resourceValue(dynamic value) {
|
|
final map = _asMap(value);
|
|
if (map == null || map.isEmpty) return null;
|
|
return SCVipResourceRes.fromJson(map);
|
|
}
|
|
|
|
String? _stringValue(dynamic value) {
|
|
if (value == null) return null;
|
|
return value.toString();
|
|
}
|
|
|
|
num? _numValue(dynamic value) {
|
|
if (value == null) return null;
|
|
if (value is num) return value;
|
|
return num.tryParse(value.toString());
|
|
}
|
|
|
|
bool? _boolValue(dynamic value) {
|
|
if (value == null) return null;
|
|
if (value is bool) return value;
|
|
if (value is num) return value != 0;
|
|
final lower = value.toString().toLowerCase();
|
|
if (lower == 'true') return true;
|
|
if (lower == 'false') return false;
|
|
return null;
|
|
}
|
|
|
|
String? _firstNonBlank(Iterable<String?> values) {
|
|
for (final value in values) {
|
|
final text = value?.trim();
|
|
if (text != null && text.isNotEmpty) {
|
|
return text;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
bool _isSvgaUrl(String value) {
|
|
final lower = value.toLowerCase();
|
|
return lower.endsWith('.svga') || lower.contains('.svga?');
|
|
}
|