feat: 实现用户画像、占卜历史与后端用户管理模块
This commit is contained in:
@@ -60,6 +60,21 @@ class DivinationParams {
|
||||
};
|
||||
}
|
||||
|
||||
factory DivinationParams.fromPayload(Map<String, dynamic> payload) {
|
||||
return DivinationParams(
|
||||
method: divinationMethodFromName(_requiredString(payload, 'method')),
|
||||
questionType: questionTypeFromName(
|
||||
_requiredString(payload, 'questionType'),
|
||||
),
|
||||
question: _requiredString(payload, 'question'),
|
||||
divinationTime: DateTime.parse(
|
||||
_requiredString(payload, 'divinationTime'),
|
||||
),
|
||||
coinBalance: _requiredInt(payload, 'coinBalance'),
|
||||
userId: _requiredString(payload, 'userId'),
|
||||
);
|
||||
}
|
||||
|
||||
String toBinary(List<YaoType> yaoStates) {
|
||||
return yaoStates
|
||||
.map(
|
||||
@@ -85,3 +100,43 @@ class DivinationParams {
|
||||
.join();
|
||||
}
|
||||
}
|
||||
|
||||
DivinationMethod divinationMethodFromName(String raw) {
|
||||
return DivinationMethod.values.firstWhere(
|
||||
(value) => value.name == raw,
|
||||
orElse: () => DivinationMethod.manual,
|
||||
);
|
||||
}
|
||||
|
||||
QuestionType questionTypeFromName(String raw) {
|
||||
return QuestionType.values.firstWhere(
|
||||
(value) => value.name == raw,
|
||||
orElse: () => QuestionType.other,
|
||||
);
|
||||
}
|
||||
|
||||
YaoType yaoTypeFromName(String raw) {
|
||||
return YaoType.values.firstWhere(
|
||||
(value) => value.name == raw,
|
||||
orElse: () => YaoType.undetermined,
|
||||
);
|
||||
}
|
||||
|
||||
String _requiredString(Map<String, dynamic> json, String key) {
|
||||
final value = json[key];
|
||||
if (value is! String || value.isEmpty) {
|
||||
throw FormatException('Missing required string: $key');
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
int _requiredInt(Map<String, dynamic> json, String key) {
|
||||
final value = json[key];
|
||||
if (value is int) {
|
||||
return value;
|
||||
}
|
||||
if (value is num) {
|
||||
return value.toInt();
|
||||
}
|
||||
throw FormatException('Missing required int: $key');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user