fix(c2c): 修复买方待付款页面灰色无法操作问题
根因: c2c_order_model.dart 的 _parsePaymentMethod 不识别 GREEN_POINTS, 导致 paymentMethod=null → hasPaymentInfo=false → 收款信息卡片隐藏 → 页面不可操作 前端修复: - C2cPaymentMethod 枚举增加 greenPoints,解析器支持 GREEN_POINTS - 支持逗号分隔的多支付方式字符串(取第一个作为主要方式) - 订单详情页增加绿积分图标和卖方 Kava 地址显示(买方可复制) 后端修复: - takeOrder() 接买单时自动获取卖方 Kava 地址写入 sellerKavaAddress - 买方在订单详情页可看到卖方 Kava 地址用于转绿积分 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f167f1227c
commit
8c31dee000
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -403,6 +403,14 @@ class _C2cOrderDetailPageState extends ConsumerState<C2cOrderDetailPage> {
|
|||
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<C2cOrderDetailPage> {
|
|||
|
||||
IconData _getPaymentIcon(C2cPaymentMethod? method) {
|
||||
switch (method) {
|
||||
case C2cPaymentMethod.greenPoints:
|
||||
return Icons.eco;
|
||||
case C2cPaymentMethod.alipay:
|
||||
return Icons.account_balance_wallet;
|
||||
case C2cPaymentMethod.wechat:
|
||||
|
|
|
|||
Loading…
Reference in New Issue