import 'package:dio/dio.dart'; import '../core/api/api_client.dart'; import '../core/exceptions.dart'; import '../core/models/page_result.dart'; import '../models/inventory.dart'; class InventoryRepository { final ApiClient _client; const InventoryRepository(this._client); Future> listInventory({ int? warehouseId, String? keyword, int page = 1, int pageSize = 50, }) async { try { final params = { 'page': page, 'page_size': pageSize, if (warehouseId != null) 'warehouse_id': warehouseId, if (keyword != null && keyword.isNotEmpty) 'keyword': keyword, }; final resp = await _client.get('/inventory', params: params); return PageResult.fromJson( resp.data as Map, Inventory.fromJson, ); } on DioException catch (e) { throw AppException( e.response?.data?['error'] as String? ?? '获取库存失败', statusCode: e.response?.statusCode, ); } } Future> listLogs({ int? warehouseId, int? productId, int page = 1, int pageSize = 50, }) async { try { final params = { 'page': page, 'page_size': pageSize, if (warehouseId != null) 'warehouse_id': warehouseId, if (productId != null) 'product_id': productId, }; final resp = await _client.get('/inventory/logs', params: params); return PageResult.fromJson( resp.data as Map, InventoryLog.fromJson, ); } on DioException catch (e) { throw AppException( e.response?.data?['error'] as String? ?? '获取流水失败', statusCode: e.response?.statusCode, ); } } }