diff --git a/backend/services/trading-service/src/application/services/c2c.service.ts b/backend/services/trading-service/src/application/services/c2c.service.ts index af0c0773..9f3efd84 100644 --- a/backend/services/trading-service/src/application/services/c2c.service.ts +++ b/backend/services/trading-service/src/application/services/c2c.service.ts @@ -318,12 +318,17 @@ export class C2cService { paymentDeadline, }; - // 如果是买单,接单方提供收款信息 + // 如果是买单,接单方(卖方)提供收款信息 if (order.type === C2C_ORDER_TYPE.BUY) { updateData.paymentMethod = options?.paymentMethod; updateData.paymentAccount = options?.paymentAccount; updateData.paymentQrCode = options?.paymentQrCode; updateData.paymentRealName = options?.paymentRealName; + // 获取卖方(taker)Kava 地址,买方需要用它来转绿积分 + const takerKavaAddress = await this.identityClient.getUserKavaAddress(takerAccountSequence); + if (takerKavaAddress) { + updateData.sellerKavaAddress = takerKavaAddress; + } } const updatedOrder = await this.c2cOrderRepository.updateStatus(orderNo, C2C_ORDER_STATUS.MATCHED as any, updateData); diff --git a/frontend/mining-app/lib/data/models/c2c_order_model.dart b/frontend/mining-app/lib/data/models/c2c_order_model.dart index 8d96d4b6..1d8a9c4f 100644 --- a/frontend/mining-app/lib/data/models/c2c_order_model.dart +++ b/frontend/mining-app/lib/data/models/c2c_order_model.dart @@ -16,9 +16,10 @@ enum C2cOrderStatus { /// C2C收款方式 enum C2cPaymentMethod { - alipay, // 支付宝 - wechat, // 微信 - bank, // 银行卡 + greenPoints, // 绿积分 + alipay, // 支付宝 + wechat, // 微信 + bank, // 银行卡 } /// C2C订单模型 @@ -164,7 +165,11 @@ class C2cOrderModel { static C2cPaymentMethod? _parsePaymentMethod(String? method) { if (method == null) return null; - switch (method.toUpperCase()) { + // 支持逗号分隔的多种支付方式(如 "GREEN_POINTS,ALIPAY"),取第一个作为主要方式 + final primary = method.split(',').first.trim().toUpperCase(); + switch (primary) { + case 'GREEN_POINTS': + return C2cPaymentMethod.greenPoints; case 'ALIPAY': return C2cPaymentMethod.alipay; case 'WECHAT': @@ -209,6 +214,8 @@ class C2cOrderModel { /// 收款方式文本 String get paymentMethodText { switch (paymentMethod) { + case C2cPaymentMethod.greenPoints: + return '绿积分'; case C2cPaymentMethod.alipay: return '支付宝'; case C2cPaymentMethod.wechat: diff --git a/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart b/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart index b54f0a07..26fc9bf6 100644 --- a/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart +++ b/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart @@ -403,6 +403,14 @@ class _C2cOrderDetailPageState extends ConsumerState { value: order.paymentRealName!, ), + // 卖家 Kava 地址(绿积分转账目标地址) + if (order.sellerKavaAddress != null && isBuyer) + _buildPaymentInfoRow( + label: 'Kava 地址', + value: order.sellerKavaAddress!, + canCopy: true, + ), + // 付款金额 const SizedBox(height: 12), Container( @@ -660,6 +668,8 @@ class _C2cOrderDetailPageState extends ConsumerState { IconData _getPaymentIcon(C2cPaymentMethod? method) { switch (method) { + case C2cPaymentMethod.greenPoints: + return Icons.eco; case C2cPaymentMethod.alipay: return Icons.account_balance_wallet; case C2cPaymentMethod.wechat: