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.
40 lines
1.4 KiB
40 lines
1.4 KiB
import 'dart:convert';
|
|
import 'dart:developer' as developer;
|
|
|
|
import 'package:get/get.dart';
|
|
import '../../../routes/app_routes.dart';
|
|
import '../../../data/models/goods.dart';
|
|
import '../../../data/services/network/api.dart';
|
|
import 'goods_base_controller.dart';
|
|
// ... existing code ...
|
|
|
|
class GoodsaiController extends GoodsBaseController {
|
|
@override
|
|
Future<List<DBGoods>> fetchProducts() async {
|
|
final resp = await Api.getGoods({'usagetype': UsageType.AI.toInt});
|
|
// 输出完整响应,便于调试接口结构
|
|
try {
|
|
developer.log('getGoods(AI) resp: ${jsonEncode(resp)}');
|
|
} catch (_) {
|
|
developer.log('getGoods(AI) resp (raw): $resp');
|
|
}
|
|
if (resp == null || resp is! Map) return [];
|
|
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']) : null;
|
|
if (data is List) {
|
|
final list =
|
|
data.whereType<Map<String, dynamic>>().map(DBGoods.fromJson).toList();
|
|
// 兜底过滤确保展示 AI 类型
|
|
return list.where((g) => g.usagetype == UsageType.AI).toList();
|
|
}
|
|
return [];
|
|
}
|
|
|
|
// 如需自定义跳转逻辑,可保留重写调用父类
|
|
// Future<void> purchase(DBGoods item) async => super.purchase(item);
|
|
}
|
|
|