createOrder static method
创建订单
Implementation
static Future<CreateOrderResponse> createOrder(CreateOrderRequest request) async {
final url = '${EnvironmentConfig.baseUrl}$_createOrderPath';
print('');
print('========== 📤 创建订单请求 ==========');
print('🔗 请求地址: $url');
print('📋 订单信息:');
print(' 收货人: ${request.consigneeName}');
print(' 手机号: ${request.consigneeMobile}');
print(' 地址: ${request.consigneeAddress}');
print(' 商品数量: ${request.items.length}');
try {
final requestBody = request.toJson();
final requestBodyStr = json.encode(requestBody);
if (EnvironmentConfig.enableDebugLog) {
print('📦 请求体:');
print(const JsonEncoder.withIndent(' ').convert(requestBody));
}
final response = await http.post(
Uri.parse(url),
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
body: requestBodyStr,
).timeout(
Duration(seconds: EnvironmentConfig.apiTimeout),
onTimeout: () {
throw Exception('请求超时:创建订单响应时间过长');
},
);
print('📥 响应状态码: ${response.statusCode}');
if (response.statusCode == 200) {
final Map<String, dynamic> responseData = json.decode(utf8.decode(response.bodyBytes));
if (EnvironmentConfig.enableDebugLog) {
print('📦 响应数据:');
print(const JsonEncoder.withIndent(' ').convert(responseData));
}
final result = CreateOrderResponse.fromJson(responseData);
if (result.success) {
print('✅ 订单创建成功');
print(' 订单ID: ${result.orderId}');
print(' 订单编号: ${result.orderSn}');
print(' 外部订单号: ${result.outOrderSn}');
print(' 订单金额: \$${result.totalAmount?.toStringAsFixed(2)}');
print(' 商品数量: ${result.totalQuantity}');
} else {
print('❌ 订单创建失败: ${result.message}');
}
print('=====================================');
print('');
return result;
} else {
print('❌ 请求失败,状态码: ${response.statusCode}');
print(' 响应内容: ${response.body}');
print('=====================================');
print('');
// 尝试解析错误消息
try {
final errorData = json.decode(utf8.decode(response.bodyBytes));
return CreateOrderResponse(
success: false,
message: errorData['message'] as String? ?? '创建订单失败(HTTP ${response.statusCode})',
);
} catch (e) {
return CreateOrderResponse(
success: false,
message: '创建订单失败(HTTP ${response.statusCode})',
);
}
}
} catch (e, stackTrace) {
print('❌ 创建订单异常: $e');
if (EnvironmentConfig.enableDebugLog) {
print('堆栈跟踪: $stackTrace');
}
print('=====================================');
print('');
return CreateOrderResponse(
success: false,
message: '创建订单失败: $e',
);
}
}