You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
41 lines
1.3 KiB
import '../../../data/models/goods.dart';
|
|
import '../../../data/services/network/api.dart';
|
|
import 'goods_base_controller.dart';
|
|
|
|
class GoodsvipController extends GoodsBaseController {
|
|
@override
|
|
Future<List<DBGoods>> fetchProducts() async {
|
|
final types = [
|
|
UsageType.AI,
|
|
UsageType.Meet,
|
|
UsageType.Translation,
|
|
UsageType.Vip,
|
|
];
|
|
final Map<String, DBGoods> all = {};
|
|
for (final t in types) {
|
|
final resp = await Api.getGoods({'usagetype': t.toInt});
|
|
if (resp == null || resp is! Map) continue;
|
|
if (resp.containsKey('error') || resp.containsKey('msg')) {
|
|
final msg = resp['error'] ?? resp['msg'] ?? '服务器错误';
|
|
throw Exception(msg);
|
|
}
|
|
final container =
|
|
(resp is Map && resp['data'] is Map) ? resp['data'] : resp;
|
|
final data = (container is Map)
|
|
? (container['goodss'] ?? container['goodes'] ?? container['goods'])
|
|
: null;
|
|
if (data is List) {
|
|
final list = data
|
|
.whereType<Map<String, dynamic>>()
|
|
.map(DBGoods.fromJson)
|
|
.toList();
|
|
for (final g in list) {
|
|
all[g.id] = g;
|
|
}
|
|
}
|
|
}
|
|
return all.values.toList();
|
|
}
|
|
|
|
// Future<void> purchase(DBGoods item) async => super.purchase(item);
|
|
}
|
|
|