@pisell/pisellos 2.1.27 → 2.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -677,7 +677,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
677
677
  value: (function () {
678
678
  var _updateLocalOrderAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(params) {
679
679
  var _params$orderData6, _params$orderData7, _params$cartSummary2, _params$totalInfo5, _params$totalInfo6, _params$totalInfo7, _params$totalInfo8;
680
- var validation, amountInfo, customerInfo, allOrders, existingOrder, _updated$payment, totalAmount, activePayments, paidAmount, remaining, _isNeedDeposit, updated, syncedAmount, remainingExpectAmount, isNeedDeposit, created;
680
+ var validation, amountInfo, customerInfo, allOrders, existingOrder, _updated$payment, totalAmount, activePayments, paidAmount, remaining, _isNeedDeposit, updated, syncedAmount, remainingExpectAmount, depositDiffAmount, isNeedDeposit, created;
681
681
  return _regeneratorRuntime().wrap(function _callee10$(_context10) {
682
682
  while (1) switch (_context10.prev = _context10.next) {
683
683
  case 0:
@@ -730,7 +730,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
730
730
  return String(o.id) === String(params.orderId) || String(o.order_id) === String(params.orderId);
731
731
  });
732
732
  if (!existingOrder) {
733
- _context10.next = 42;
733
+ _context10.next = 44;
734
734
  break;
735
735
  }
736
736
  // 基于现有支付项计算新的 expect_amount
@@ -740,7 +740,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
740
740
  });
741
741
  paidAmount = activePayments.reduce(function (sum, p) {
742
742
  var amt = new Decimal(p.amount || '0');
743
- var rounding = new Decimal(p.rounding_amount || '0').abs();
743
+ var rounding = new Decimal(Number(p.rounding_amount) > 0 ? 0 : p.rounding_amount || '0').abs();
744
744
  return sum.plus(amt).plus(rounding);
745
745
  }, new Decimal(0));
746
746
  remaining = Decimal.max(0, totalAmount.minus(paidAmount)).toFixed(2); // 计算是否需要支付定金,如果需要默认切换到定金模式,以及记录定金总金额,并把当前默认待付金额调整为定金总金额
@@ -795,18 +795,22 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
795
795
  // 需要减去已经同步给后端的支付过的钱
796
796
  syncedAmount = activePayments.reduce(function (sum, p) {
797
797
  var amt = new Decimal(p.amount || '0');
798
- var rounding = new Decimal(p.rounding_amount || '0').abs();
798
+ var rounding = new Decimal(Number(p.rounding_amount) > 0 ? 0 : p.rounding_amount || '0').abs();
799
799
  return sum.plus(amt).plus(rounding);
800
800
  }, new Decimal(0));
801
- remainingExpectAmount = Decimal.max(0, totalAmount.minus(syncedAmount)).toFixed(2);
801
+ remainingExpectAmount = Decimal.max(0, totalAmount.minus(syncedAmount)).toFixed(2); // 要计算一个总价的差值和一个定金的差值,如果定金的差值>0,则需要使用定金的差值,否则使用总价的差值
802
+ depositDiffAmount = new Decimal(0).toFixed(2);
803
+ if (updated.is_deposit === 1) {
804
+ depositDiffAmount = new Decimal(updated.deposit_amount).minus(syncedAmount).toFixed(2);
805
+ }
802
806
  this.initWalletData({
803
- order_wait_pay_amount: Number(remainingExpectAmount)
807
+ order_wait_pay_amount: Number(depositDiffAmount) > 0 ? Number(depositDiffAmount) : Number(remainingExpectAmount)
804
808
  });
805
809
  return _context10.abrupt("return", updated);
806
- case 42:
810
+ case 44:
807
811
  // 计算是否需要支付定金,如果需要默认切换到定金模式,以及记录定金总金额,并把当前默认待付金额调整为定金总金额
808
812
  isNeedDeposit = this.checkIsNeedDepositAsync(params.orderData.bookings, params.orderData.relation_products); // 没找到现有订单时,回退为创建逻辑(用于异常兜底)
809
- _context10.next = 45;
813
+ _context10.next = 47;
810
814
  return this.payment.createPaymentOrderAsync({
811
815
  order_id: String(params.orderId),
812
816
  total_amount: amountInfo.totalAmount,
@@ -823,12 +827,12 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
823
827
  amount_breakdown: amountInfo
824
828
  }
825
829
  });
826
- case 45:
830
+ case 47:
827
831
  created = _context10.sent;
828
832
  this.store.currentOrder = created;
829
833
  this.initWalletData();
830
834
  return _context10.abrupt("return", created);
831
- case 49:
835
+ case 51:
832
836
  case "end":
833
837
  return _context10.stop();
834
838
  }
@@ -1675,7 +1679,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
1675
1679
  console.log('[Checkout] 定金状态无变化,跳过更新');
1676
1680
  return _context19.abrupt("return");
1677
1681
  case 10:
1678
- deposit_amount = newDepositValue === 1 ? this.store.currentOrder.deposit_amount : '0.00'; // 如果原来没有 deposit_amount,则默认把待付金额置为 deposit_amount
1682
+ deposit_amount = this.store.currentOrder.deposit_amount || '0.00'; // 如果原来没有 deposit_amount,则默认把待付金额置为 deposit_amount
1679
1683
  if (!deposit_amount || Number(deposit_amount) === 0) {
1680
1684
  deposit_amount = this.store.currentOrder.expect_amount;
1681
1685
  }
@@ -2773,7 +2777,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
2773
2777
  // 使用 Decimal.js 计算实际支付有效金额:
2774
2778
  // 当 rounding_amount 为负数时,表示抹掉的金额,应该按绝对值加到实际支付中
2775
2779
  // 例如:amount=15, rounding_amount=-0.2,实际相当于支付了15.2(抹掉了0.2元的零头)
2776
- var effectiveAmount = amount.add(roundingAmount.abs());
2780
+ var effectiveAmount = amount.add(roundingAmount.isNegative() ? roundingAmount.abs() : 0);
2777
2781
  console.log("[Checkout] \u8BA1\u7B97\u652F\u4ED8\u9879: ".concat(payment.code), {
2778
2782
  originalAmount: amount.toFixed(2),
2779
2783
  roundingAmount: roundingAmount.toFixed(2),
@@ -2856,60 +2860,107 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
2856
2860
  return calculateRemainingAmountAsync;
2857
2861
  }()
2858
2862
  /**
2859
- * 更新 balanceDueAmount 为当前剩余未支付金额(系统内部计算)
2863
+ * 计算剩余未支付金额(排除定金计算,始终使用订单总金额)
2860
2864
  */
2861
2865
  )
2862
2866
  }, {
2863
- key: "updateBalanceDueAmount",
2867
+ key: "calculateRemainingTotalAmountAsync",
2864
2868
  value: (function () {
2865
- var _updateBalanceDueAmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {
2866
- var remainingAmount, currentBalanceDueAmount;
2869
+ var _calculateRemainingTotalAmountAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {
2870
+ var totalAmount, paidAmountStr, paidAmount, remainingAmount, result;
2867
2871
  return _regeneratorRuntime().wrap(function _callee33$(_context33) {
2868
2872
  while (1) switch (_context33.prev = _context33.next) {
2869
2873
  case 0:
2870
- _context33.prev = 0;
2871
- _context33.next = 3;
2874
+ if (this.store.currentOrder) {
2875
+ _context33.next = 3;
2876
+ break;
2877
+ }
2878
+ this.logWarning('calculateRemainingTotalAmountAsync: 没有当前订单');
2879
+ return _context33.abrupt("return", '0.00');
2880
+ case 3:
2881
+ // 使用 Decimal.js 进行安全的金额计算
2882
+ // 始终使用订单总金额,不进行定金相关的计算
2883
+ totalAmount = new Decimal(this.store.currentOrder.total_amount || '0');
2884
+ _context33.next = 6;
2885
+ return this.calculatePaidAmountAsync();
2886
+ case 6:
2887
+ paidAmountStr = _context33.sent;
2888
+ paidAmount = new Decimal(paidAmountStr);
2889
+ remainingAmount = totalAmount.sub(paidAmount); // 确保剩余金额不为负数
2890
+ result = Decimal.max(0, remainingAmount).toFixed(2);
2891
+ this.logInfo('calculateRemainingTotalAmountAsync: 计算=', result);
2892
+ return _context33.abrupt("return", result);
2893
+ case 12:
2894
+ case "end":
2895
+ return _context33.stop();
2896
+ }
2897
+ }, _callee33, this);
2898
+ }));
2899
+ function calculateRemainingTotalAmountAsync() {
2900
+ return _calculateRemainingTotalAmountAsync.apply(this, arguments);
2901
+ }
2902
+ return calculateRemainingTotalAmountAsync;
2903
+ }()
2904
+ /**
2905
+ * 更新 balanceDueAmount 为当前剩余未支付金额(系统内部计算)
2906
+ */
2907
+ )
2908
+ }, {
2909
+ key: "updateBalanceDueAmount",
2910
+ value: (function () {
2911
+ var _updateBalanceDueAmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {
2912
+ var remainingAmount, remainingTotalAmount, currentBalanceDueAmount;
2913
+ return _regeneratorRuntime().wrap(function _callee34$(_context34) {
2914
+ while (1) switch (_context34.prev = _context34.next) {
2915
+ case 0:
2916
+ _context34.prev = 0;
2917
+ _context34.next = 3;
2872
2918
  return this.calculateRemainingAmountAsync();
2873
2919
  case 3:
2874
- remainingAmount = _context33.sent;
2920
+ remainingAmount = _context34.sent;
2921
+ _context34.next = 6;
2922
+ return this.calculateRemainingTotalAmountAsync();
2923
+ case 6:
2924
+ remainingTotalAmount = _context34.sent;
2875
2925
  currentBalanceDueAmount = this.store.balanceDueAmount; // 只有当剩余金额与当前 balanceDueAmount 不同时才更新
2876
2926
  if (!(remainingAmount !== currentBalanceDueAmount)) {
2877
- _context33.next = 12;
2927
+ _context34.next = 15;
2878
2928
  break;
2879
2929
  }
2880
2930
  this.store.balanceDueAmount = remainingAmount;
2881
2931
 
2882
2932
  // 发出 balanceDueAmount 变更事件
2883
- _context33.next = 9;
2933
+ _context34.next = 12;
2884
2934
  return this.core.effects.emit(CheckoutHooks.OnBalanceDueAmountChanged, {
2885
2935
  oldAmount: currentBalanceDueAmount,
2886
2936
  newAmount: remainingAmount,
2887
- timestamp: Date.now()
2937
+ timestamp: Date.now(),
2938
+ totalAmount: remainingTotalAmount
2888
2939
  });
2889
- case 9:
2940
+ case 12:
2890
2941
  this.logInfo('balanceDueAmount 已自动更新:', {
2891
2942
  oldAmount: currentBalanceDueAmount,
2892
2943
  newAmount: remainingAmount
2893
2944
  });
2894
- _context33.next = 13;
2945
+ _context34.next = 16;
2895
2946
  break;
2896
- case 12:
2947
+ case 15:
2897
2948
  this.logInfo('balanceDueAmount 无需更新,当前值已是最新:', {
2898
2949
  balanceDueAmount: currentBalanceDueAmount,
2899
2950
  remainingAmount: remainingAmount
2900
2951
  });
2901
- case 13:
2902
- _context33.next = 18;
2952
+ case 16:
2953
+ _context34.next = 21;
2903
2954
  break;
2904
- case 15:
2905
- _context33.prev = 15;
2906
- _context33.t0 = _context33["catch"](0);
2907
- this.logError('更新 balanceDueAmount 失败:', _context33.t0);
2908
2955
  case 18:
2956
+ _context34.prev = 18;
2957
+ _context34.t0 = _context34["catch"](0);
2958
+ this.logError('更新 balanceDueAmount 失败:', _context34.t0);
2959
+ case 21:
2909
2960
  case "end":
2910
- return _context33.stop();
2961
+ return _context34.stop();
2911
2962
  }
2912
- }, _callee33, this, [[0, 15]]);
2963
+ }, _callee34, this, [[0, 18]]);
2913
2964
  }));
2914
2965
  function updateBalanceDueAmount() {
2915
2966
  return _updateBalanceDueAmount.apply(this, arguments);
@@ -2923,7 +2974,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
2923
2974
  }, {
2924
2975
  key: "updateStateAmountToRemaining",
2925
2976
  value: (function () {
2926
- var _updateStateAmountToRemaining = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {
2977
+ var _updateStateAmountToRemaining = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {
2927
2978
  var checkOrder,
2928
2979
  _this$store$currentOr23,
2929
2980
  _this$store$currentOr24,
@@ -2932,21 +2983,22 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
2932
2983
  depositPaidAmount,
2933
2984
  _this$store$currentOr26,
2934
2985
  remainingAmount,
2986
+ remainingTotalAmount,
2935
2987
  currentStateAmount,
2936
- _args34 = arguments;
2937
- return _regeneratorRuntime().wrap(function _callee34$(_context34) {
2938
- while (1) switch (_context34.prev = _context34.next) {
2988
+ _args35 = arguments;
2989
+ return _regeneratorRuntime().wrap(function _callee35$(_context35) {
2990
+ while (1) switch (_context35.prev = _context35.next) {
2939
2991
  case 0:
2940
- checkOrder = _args34.length > 0 && _args34[0] !== undefined ? _args34[0] : true;
2941
- _context34.prev = 1;
2992
+ checkOrder = _args35.length > 0 && _args35[0] !== undefined ? _args35[0] : true;
2993
+ _context35.prev = 1;
2942
2994
  if (!(((_this$store$currentOr23 = this.store.currentOrder) === null || _this$store$currentOr23 === void 0 ? void 0 : _this$store$currentOr23.is_deposit) === 1)) {
2943
- _context34.next = 11;
2995
+ _context35.next = 11;
2944
2996
  break;
2945
2997
  }
2946
- _context34.next = 5;
2998
+ _context35.next = 5;
2947
2999
  return this.payment.getPaymentItemsAsync((_this$store$currentOr24 = this.store.currentOrder) === null || _this$store$currentOr24 === void 0 ? void 0 : _this$store$currentOr24.uuid);
2948
3000
  case 5:
2949
- paymentItems = _context34.sent;
3001
+ paymentItems = _context35.sent;
2950
3002
  depositPaidAmount = paymentItems.filter(function (item) {
2951
3003
  return item.order_payment_type === 'deposit' && item.status !== 'voided';
2952
3004
  }).reduce(function (sum, item) {
@@ -2956,24 +3008,28 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
2956
3008
  }
2957
3009
  var amount = new Decimal(item.amount || '0');
2958
3010
  var roundingAmount = new Decimal(item.rounding_amount || '0');
2959
- return sum.add(amount.add(roundingAmount.abs()));
3011
+ return sum.add(amount.add(roundingAmount.isNegative() ? roundingAmount.abs() : 0));
2960
3012
  }, new Decimal(0));
2961
3013
  if (!depositPaidAmount.gte((_this$store$currentOr25 = this.store.currentOrder) === null || _this$store$currentOr25 === void 0 ? void 0 : _this$store$currentOr25.deposit_amount)) {
2962
- _context34.next = 11;
3014
+ _context35.next = 11;
2963
3015
  break;
2964
3016
  }
2965
3017
  this.store.currentOrder = _objectSpread(_objectSpread({}, this.store.currentOrder), {}, {
2966
3018
  is_deposit: 0
2967
3019
  });
2968
- _context34.next = 11;
3020
+ _context35.next = 11;
2969
3021
  return this.payment.updateOrderAsync((_this$store$currentOr26 = this.store.currentOrder) === null || _this$store$currentOr26 === void 0 ? void 0 : _this$store$currentOr26.uuid, {
2970
3022
  is_deposit: 0
2971
3023
  });
2972
3024
  case 11:
2973
- _context34.next = 13;
3025
+ _context35.next = 13;
2974
3026
  return this.calculateRemainingAmountAsync();
2975
3027
  case 13:
2976
- remainingAmount = _context34.sent;
3028
+ remainingAmount = _context35.sent;
3029
+ _context35.next = 16;
3030
+ return this.calculateRemainingTotalAmountAsync();
3031
+ case 16:
3032
+ remainingTotalAmount = _context35.sent;
2977
3033
  currentStateAmount = this.store.stateAmount; // 只有当剩余金额与当前 stateAmount 不同时才更新
2978
3034
  if (remainingAmount !== currentStateAmount) {
2979
3035
  this.store.stateAmount = remainingAmount;
@@ -2982,7 +3038,8 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
2982
3038
  this.core.effects.emit(CheckoutHooks.OnStateAmountChanged, {
2983
3039
  oldAmount: currentStateAmount,
2984
3040
  newAmount: remainingAmount,
2985
- timestamp: Date.now()
3041
+ timestamp: Date.now(),
3042
+ totalAmount: remainingTotalAmount
2986
3043
  });
2987
3044
  this.logInfo('stateAmount 已自动更新为剩余金额:', {
2988
3045
  oldAmount: currentStateAmount,
@@ -2995,32 +3052,32 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
2995
3052
  });
2996
3053
  }
2997
3054
  // 同步更新系统内部的 balanceDueAmount
2998
- _context34.next = 18;
3055
+ _context35.next = 21;
2999
3056
  return this.updateBalanceDueAmount();
3000
- case 18:
3057
+ case 21:
3001
3058
  if (!checkOrder) {
3002
- _context34.next = 23;
3059
+ _context35.next = 26;
3003
3060
  break;
3004
3061
  }
3005
- _context34.next = 21;
3062
+ _context35.next = 24;
3006
3063
  return this.checkOrderPaymentCompletion();
3007
- case 21:
3008
- _context34.next = 24;
3009
- break;
3010
- case 23:
3011
- this.logInfo('外部传入无需 checkOrder,不执行订单支付完成检测和同步');
3012
3064
  case 24:
3013
- _context34.next = 29;
3065
+ _context35.next = 27;
3014
3066
  break;
3015
3067
  case 26:
3016
- _context34.prev = 26;
3017
- _context34.t0 = _context34["catch"](1);
3018
- this.logError('更新 stateAmount 为剩余金额失败:', _context34.t0);
3068
+ this.logInfo('外部传入无需 checkOrder,不执行订单支付完成检测和同步');
3069
+ case 27:
3070
+ _context35.next = 32;
3071
+ break;
3019
3072
  case 29:
3073
+ _context35.prev = 29;
3074
+ _context35.t0 = _context35["catch"](1);
3075
+ this.logError('更新 stateAmount 为剩余金额失败:', _context35.t0);
3076
+ case 32:
3020
3077
  case "end":
3021
- return _context34.stop();
3078
+ return _context35.stop();
3022
3079
  }
3023
- }, _callee34, this, [[1, 26]]);
3080
+ }, _callee35, this, [[1, 29]]);
3024
3081
  }));
3025
3082
  function updateStateAmountToRemaining() {
3026
3083
  return _updateStateAmountToRemaining.apply(this, arguments);
@@ -3036,32 +3093,32 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3036
3093
  }, {
3037
3094
  key: "checkOrderPaymentCompletion",
3038
3095
  value: (function () {
3039
- var _checkOrderPaymentCompletion = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {
3096
+ var _checkOrderPaymentCompletion = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {
3040
3097
  var remainingAmount, remainingValue, totalAmount, paidAmount, currentPayments, hasPaymentItems, allPaymentsHaveVoucherId, shouldAutoSync;
3041
- return _regeneratorRuntime().wrap(function _callee35$(_context35) {
3042
- while (1) switch (_context35.prev = _context35.next) {
3098
+ return _regeneratorRuntime().wrap(function _callee36$(_context36) {
3099
+ while (1) switch (_context36.prev = _context36.next) {
3043
3100
  case 0:
3044
- _context35.prev = 0;
3101
+ _context36.prev = 0;
3045
3102
  if (this.store.currentOrder) {
3046
- _context35.next = 3;
3103
+ _context36.next = 3;
3047
3104
  break;
3048
3105
  }
3049
- return _context35.abrupt("return");
3106
+ return _context36.abrupt("return");
3050
3107
  case 3:
3051
- _context35.next = 5;
3108
+ _context36.next = 5;
3052
3109
  return this.calculateRemainingAmountAsync();
3053
3110
  case 5:
3054
- remainingAmount = _context35.sent;
3111
+ remainingAmount = _context36.sent;
3055
3112
  remainingValue = new Decimal(remainingAmount); // 当剩余金额小于等于0时,认为订单已完成支付
3056
3113
  if (!remainingValue.lte(0)) {
3057
- _context35.next = 29;
3114
+ _context36.next = 29;
3058
3115
  break;
3059
3116
  }
3060
3117
  totalAmount = this.store.currentOrder.total_amount;
3061
- _context35.next = 11;
3118
+ _context36.next = 11;
3062
3119
  return this.calculatePaidAmountAsync();
3063
3120
  case 11:
3064
- paidAmount = _context35.sent;
3121
+ paidAmount = _context36.sent;
3065
3122
  this.logInfo('检测到订单支付完成:', {
3066
3123
  orderUuid: this.store.currentOrder.uuid,
3067
3124
  orderId: this.store.currentOrder.order_id,
@@ -3072,11 +3129,11 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3072
3129
  });
3073
3130
 
3074
3131
  // 从 Payment 模块获取最新支付项,检查自动同步条件
3075
- _context35.next = 15;
3132
+ _context36.next = 15;
3076
3133
  return this.payment.getPaymentItemsAsync(this.store.currentOrder.uuid, false // 不包括已撤销的支付项
3077
3134
  );
3078
3135
  case 15:
3079
- currentPayments = _context35.sent;
3136
+ currentPayments = _context36.sent;
3080
3137
  // 检查自动同步条件:
3081
3138
  // 1. 待付金额为 0 ✓ (已在上面检查)
3082
3139
  // 2. 需要有支付项
@@ -3103,21 +3160,21 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3103
3160
  code: p.code,
3104
3161
  amount: p.amount,
3105
3162
  rounding_amount: p.rounding_amount,
3106
- effective_amount: (parseFloat(p.amount || '0') + Math.abs(parseFloat(p.rounding_amount || '0'))).toFixed(2),
3163
+ effective_amount: (parseFloat(p.amount || '0') + Math.abs(parseFloat(Number(p.rounding_amount) > 0 ? '0' : p.rounding_amount || '0'))).toFixed(2),
3107
3164
  voucher_id: p.voucher_id,
3108
3165
  status: p.status
3109
3166
  };
3110
3167
  })
3111
3168
  });
3112
3169
  if (!shouldAutoSync) {
3113
- _context35.next = 26;
3170
+ _context36.next = 26;
3114
3171
  break;
3115
3172
  }
3116
3173
  this.logInfo('满足自动同步条件,开始同步订单到后端...');
3117
- _context35.next = 24;
3174
+ _context36.next = 24;
3118
3175
  return this.syncOrderToBackendWithReturn(false);
3119
3176
  case 24:
3120
- _context35.next = 27;
3177
+ _context36.next = 27;
3121
3178
  break;
3122
3179
  case 26:
3123
3180
  if (!hasPaymentItems) {
@@ -3126,7 +3183,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3126
3183
  this.logInfo('所有支付项均为代金券类型,跳过订单同步');
3127
3184
  }
3128
3185
  case 27:
3129
- _context35.next = 29;
3186
+ _context36.next = 29;
3130
3187
  return this.core.effects.emit(CheckoutHooks.OnOrderPaymentCompleted, {
3131
3188
  orderUuid: this.store.currentOrder.uuid,
3132
3189
  orderId: this.store.currentOrder.order_id,
@@ -3136,17 +3193,17 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3136
3193
  timestamp: Date.now()
3137
3194
  });
3138
3195
  case 29:
3139
- _context35.next = 34;
3196
+ _context36.next = 34;
3140
3197
  break;
3141
3198
  case 31:
3142
- _context35.prev = 31;
3143
- _context35.t0 = _context35["catch"](0);
3144
- this.logError('检查订单支付完成状态失败:', _context35.t0);
3199
+ _context36.prev = 31;
3200
+ _context36.t0 = _context36["catch"](0);
3201
+ this.logError('检查订单支付完成状态失败:', _context36.t0);
3145
3202
  case 34:
3146
3203
  case "end":
3147
- return _context35.stop();
3204
+ return _context36.stop();
3148
3205
  }
3149
- }, _callee35, this, [[0, 31]]);
3206
+ }, _callee36, this, [[0, 31]]);
3150
3207
  }));
3151
3208
  function checkOrderPaymentCompletion() {
3152
3209
  return _checkOrderPaymentCompletion.apply(this, arguments);
@@ -3164,7 +3221,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3164
3221
  }, {
3165
3222
  key: "syncOrderToBackendWithReturn",
3166
3223
  value: (function () {
3167
- var _syncOrderToBackendWithReturn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {
3224
+ var _syncOrderToBackendWithReturn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {
3168
3225
  var _this4 = this,
3169
3226
  _this$store$currentOr27,
3170
3227
  _this$store$currentOr28,
@@ -3204,14 +3261,14 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3204
3261
  _iterator3,
3205
3262
  _step3,
3206
3263
  paymentUuid,
3207
- _args36 = arguments;
3208
- return _regeneratorRuntime().wrap(function _callee36$(_context36) {
3209
- while (1) switch (_context36.prev = _context36.next) {
3264
+ _args37 = arguments;
3265
+ return _regeneratorRuntime().wrap(function _callee37$(_context37) {
3266
+ while (1) switch (_context37.prev = _context37.next) {
3210
3267
  case 0:
3211
- isManual = _args36.length > 0 && _args36[0] !== undefined ? _args36[0] : false;
3212
- customPaymentItems = _args36.length > 1 ? _args36[1] : undefined;
3268
+ isManual = _args37.length > 0 && _args37[0] !== undefined ? _args37[0] : false;
3269
+ customPaymentItems = _args37.length > 1 ? _args37[1] : undefined;
3213
3270
  if (!(!this.store.localOrderData || !this.store.currentOrder)) {
3214
- _context36.next = 4;
3271
+ _context37.next = 4;
3215
3272
  break;
3216
3273
  }
3217
3274
  throw new Error('缺少必要的订单数据,无法同步到后端');
@@ -3230,17 +3287,17 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3230
3287
  });
3231
3288
 
3232
3289
  // 获取当前订单的支付项
3233
- _context36.t0 = customPaymentItems;
3234
- if (_context36.t0) {
3235
- _context36.next = 13;
3290
+ _context37.t0 = customPaymentItems;
3291
+ if (_context37.t0) {
3292
+ _context37.next = 13;
3236
3293
  break;
3237
3294
  }
3238
- _context36.next = 12;
3295
+ _context37.next = 12;
3239
3296
  return this.payment.getPaymentItemsAsync(this.store.currentOrder.uuid);
3240
3297
  case 12:
3241
- _context36.t0 = _context36.sent;
3298
+ _context37.t0 = _context37.sent;
3242
3299
  case 13:
3243
- paymentItems = _context36.t0;
3300
+ paymentItems = _context37.t0;
3244
3301
  // 处理支付项数据,确保包含完整的 metadata
3245
3302
  processedPaymentItems = paymentItems.map(function (item) {
3246
3303
  var _item$metadata, _item$metadata2;
@@ -3268,6 +3325,35 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3268
3325
  reason: '手动设置和计算值均为0'
3269
3326
  });
3270
3327
  }
3328
+ // 如果此时是普通支付状态,并且要同步的支付项里一个定金支付的都没有,则 is_deposit 和 deposit_amount 都置为 0
3329
+ if (this.store.currentOrder.is_deposit === 0 && processedPaymentItems.every(function (item) {
3330
+ return item.order_payment_type !== 'deposit';
3331
+ })) {
3332
+ finalDepositAmount = '0.00';
3333
+ this.store.currentOrder.is_deposit = 0;
3334
+ }
3335
+ // 如果此时是普通支付,并且有普通支付项进来了,则提交给后端的 deposit_amount 只能是支付项里已经支付的order_payment_type = deposit 的金额
3336
+ if (this.store.currentOrder.is_deposit === 0 && processedPaymentItems.some(function (item) {
3337
+ return item.order_payment_type === 'deposit';
3338
+ })) {
3339
+ finalDepositAmount = processedPaymentItems.filter(function (item) {
3340
+ return item.status !== 'voided' && item.order_payment_type === 'deposit';
3341
+ }).reduce(function (sum, item) {
3342
+ var amt = new Decimal(item.amount || '0');
3343
+ var rounding = new Decimal(item.rounding_amount || '0');
3344
+ return sum.plus(amt).sub(rounding);
3345
+ }, new Decimal(0)).toFixed(2);
3346
+ }
3347
+ // 如果当前是定金支付,并且定金额度已经大于等于了订单总计,则 finalDepositAmount 为实际付出去的定金金额
3348
+ if (this.store.currentOrder.is_deposit === 1 && new Decimal(finalDepositAmount).gte(new Decimal(this.store.currentOrder.total_amount))) {
3349
+ finalDepositAmount = processedPaymentItems.filter(function (item) {
3350
+ return item.status !== 'voided' && item.order_payment_type === 'deposit';
3351
+ }).reduce(function (sum, item) {
3352
+ var amt = new Decimal(item.amount || '0');
3353
+ var rounding = new Decimal(item.rounding_amount || '0');
3354
+ return sum.plus(amt).sub(rounding);
3355
+ }, new Decimal(0)).toFixed(2);
3356
+ }
3271
3357
  this.logInfo('定金金额确定结果', {
3272
3358
  depositPaymentItemsCount: processedPaymentItems.length,
3273
3359
  depositPaymentItems: processedPaymentItems.map(function (item) {
@@ -3335,7 +3421,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3335
3421
 
3336
3422
  // 发送下单接口请求开始事件
3337
3423
  startTime = Date.now();
3338
- _context36.next = 24;
3424
+ _context37.next = 27;
3339
3425
  return this.core.effects.emit(CheckoutHooks.OnOrderSubmitStart, {
3340
3426
  orderUuid: this.store.currentOrder.uuid,
3341
3427
  operation: isUpdateOperation ? 'update' : 'create',
@@ -3343,9 +3429,9 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3343
3429
  paymentItemCount: paymentItems.length,
3344
3430
  timestamp: startTime
3345
3431
  });
3346
- case 24:
3432
+ case 27:
3347
3433
  submitSuccess = false;
3348
- _context36.prev = 25;
3434
+ _context37.prev = 28;
3349
3435
  // 记录接口调用参数
3350
3436
  this.logInfo('Calling backend checkout API', _objectSpread({
3351
3437
  url: '/order/checkout',
@@ -3353,23 +3439,23 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3353
3439
  }, orderParams));
3354
3440
 
3355
3441
  // 调用 Order 模块的专用 createOrderByCheckout 方法
3356
- _context36.next = 29;
3442
+ _context37.next = 32;
3357
3443
  return this.order.createOrderByCheckout(orderParams);
3358
- case 29:
3359
- checkoutResponse = _context36.sent;
3444
+ case 32:
3445
+ checkoutResponse = _context37.sent;
3360
3446
  submitSuccess = true;
3361
3447
  this.logInfo('下单接口调用成功', checkoutResponse);
3362
- _context36.next = 42;
3448
+ _context37.next = 45;
3363
3449
  break;
3364
- case 34:
3365
- _context36.prev = 34;
3366
- _context36.t1 = _context36["catch"](25);
3450
+ case 37:
3451
+ _context37.prev = 37;
3452
+ _context37.t1 = _context37["catch"](28);
3367
3453
  submitSuccess = false;
3368
- submitError = _context36.t1 instanceof Error ? _context36.t1.message : String(_context36.t1);
3454
+ submitError = _context37.t1 instanceof Error ? _context37.t1.message : String(_context37.t1);
3369
3455
  this.logError('下单接口调用失败:', submitError);
3370
3456
 
3371
3457
  // 发送订单同步失败事件(网络错误或请求失败)
3372
- _context36.next = 41;
3458
+ _context37.next = 44;
3373
3459
  return this.core.effects.emit(CheckoutHooks.OnOrderSyncFailed, {
3374
3460
  orderUuid: this.store.currentOrder.uuid,
3375
3461
  operation: isUpdateOperation ? 'update' : 'create',
@@ -3379,11 +3465,11 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3379
3465
  duration: Date.now() - startTime,
3380
3466
  timestamp: Date.now()
3381
3467
  });
3382
- case 41:
3383
- throw _context36.t1;
3384
- case 42:
3385
- _context36.prev = 42;
3386
- _context36.next = 45;
3468
+ case 44:
3469
+ throw _context37.t1;
3470
+ case 45:
3471
+ _context37.prev = 45;
3472
+ _context37.next = 48;
3387
3473
  return this.core.effects.emit(CheckoutHooks.OnOrderSubmitEnd, {
3388
3474
  success: submitSuccess,
3389
3475
  orderUuid: this.store.currentOrder.uuid,
@@ -3394,18 +3480,18 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3394
3480
  duration: Date.now() - startTime,
3395
3481
  timestamp: Date.now()
3396
3482
  });
3397
- case 45:
3398
- return _context36.finish(42);
3399
- case 46:
3483
+ case 48:
3484
+ return _context37.finish(45);
3485
+ case 49:
3400
3486
  // 检查响应状态是否为成功状态
3401
3487
  responseStatus = (_checkoutResponse3 = checkoutResponse) === null || _checkoutResponse3 === void 0 ? void 0 : _checkoutResponse3.status;
3402
3488
  isSuccessResponse = responseStatus === true || responseStatus === 200 || responseStatus === 'success' || responseStatus === 1 && ((_checkoutResponse4 = checkoutResponse) === null || _checkoutResponse4 === void 0 ? void 0 : _checkoutResponse4.code) === 200;
3403
3489
  if (isSuccessResponse) {
3404
- _context36.next = 53;
3490
+ _context37.next = 56;
3405
3491
  break;
3406
3492
  }
3407
3493
  errorMessage = ((_checkoutResponse5 = checkoutResponse) === null || _checkoutResponse5 === void 0 ? void 0 : _checkoutResponse5.message) || '订单同步失败,后端返回非成功状态'; // 发送订单同步失败事件
3408
- _context36.next = 52;
3494
+ _context37.next = 55;
3409
3495
  return this.core.effects.emit(CheckoutHooks.OnOrderSyncFailed, {
3410
3496
  orderUuid: this.store.currentOrder.uuid,
3411
3497
  operation: isUpdateOperation ? 'update' : 'create',
@@ -3416,18 +3502,18 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3416
3502
  duration: Date.now() - startTime,
3417
3503
  timestamp: Date.now()
3418
3504
  });
3419
- case 52:
3505
+ case 55:
3420
3506
  throw new Error(errorMessage);
3421
- case 53:
3507
+ case 56:
3422
3508
  if (!isUpdateOperation) {
3423
- _context36.next = 57;
3509
+ _context37.next = 60;
3424
3510
  break;
3425
3511
  }
3426
3512
  // 更新操作:使用现有的订单ID
3427
3513
  realOrderId = currentOrderId;
3428
- _context36.next = 76;
3514
+ _context37.next = 79;
3429
3515
  break;
3430
- case 57:
3516
+ case 60:
3431
3517
  // 创建操作:从响应中提取新的订单ID
3432
3518
  extractedOrderId = (_checkoutResponse6 = checkoutResponse) === null || _checkoutResponse6 === void 0 || (_checkoutResponse6 = _checkoutResponse6.data) === null || _checkoutResponse6 === void 0 ? void 0 : _checkoutResponse6.order_id; // 如果data.order_id不存在,尝试直接从根级获取
3433
3519
  if (!extractedOrderId) {
@@ -3449,11 +3535,11 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3449
3535
  oldOrderId: this.store.currentOrder.order_id,
3450
3536
  newOrderId: realOrderId
3451
3537
  });
3452
- _context36.prev = 63;
3453
- _context36.next = 66;
3538
+ _context37.prev = 66;
3539
+ _context37.next = 69;
3454
3540
  return this.payment.replaceOrderIdByUuidAsync(this.store.currentOrder.uuid, realOrderId);
3455
- case 66:
3456
- updatedOrder = _context36.sent;
3541
+ case 69:
3542
+ updatedOrder = _context37.sent;
3457
3543
  this.logInfo('Payment模块替换订单ID结果:', {
3458
3544
  wasSuccessful: !!updatedOrder,
3459
3545
  returnedOrderId: updatedOrder === null || updatedOrder === void 0 ? void 0 : updatedOrder.order_id,
@@ -3479,66 +3565,66 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3479
3565
  目标ID: realOrderId
3480
3566
  });
3481
3567
  }
3482
- _context36.next = 76;
3568
+ _context37.next = 79;
3483
3569
  break;
3484
- case 71:
3485
- _context36.prev = 71;
3486
- _context36.t2 = _context36["catch"](63);
3487
- this.logError('调用Payment模块替换订单ID时发生错误:', _context36.t2);
3570
+ case 74:
3571
+ _context37.prev = 74;
3572
+ _context37.t2 = _context37["catch"](66);
3573
+ this.logError('调用Payment模块替换订单ID时发生错误:', _context37.t2);
3488
3574
 
3489
3575
  // 发生错误时也进行手动替换
3490
3576
  this.store.currentOrder.order_id = realOrderId;
3491
3577
  this.logInfo('错误恢复:手动设置订单ID:', realOrderId);
3492
- case 76:
3493
- _context36.prev = 76;
3578
+ case 79:
3579
+ _context37.prev = 79;
3494
3580
  syncedPaymentUuids = processedPaymentItems.filter(function (item) {
3495
3581
  return item.status !== 'voided';
3496
3582
  }).map(function (item) {
3497
3583
  return item.uuid;
3498
3584
  }).filter(Boolean);
3499
3585
  _iterator3 = _createForOfIteratorHelper(syncedPaymentUuids);
3500
- _context36.prev = 79;
3586
+ _context37.prev = 82;
3501
3587
  _iterator3.s();
3502
- case 81:
3588
+ case 84:
3503
3589
  if ((_step3 = _iterator3.n()).done) {
3504
- _context36.next = 87;
3590
+ _context37.next = 90;
3505
3591
  break;
3506
3592
  }
3507
3593
  paymentUuid = _step3.value;
3508
- _context36.next = 85;
3594
+ _context37.next = 88;
3509
3595
  return this.payment.updatePaymentAsync(this.store.currentOrder.uuid, paymentUuid, {
3510
3596
  isSynced: true,
3511
3597
  syncError: undefined
3512
3598
  });
3513
- case 85:
3514
- _context36.next = 81;
3599
+ case 88:
3600
+ _context37.next = 84;
3515
3601
  break;
3516
- case 87:
3517
- _context36.next = 92;
3602
+ case 90:
3603
+ _context37.next = 95;
3518
3604
  break;
3519
- case 89:
3520
- _context36.prev = 89;
3521
- _context36.t3 = _context36["catch"](79);
3522
- _iterator3.e(_context36.t3);
3523
3605
  case 92:
3524
- _context36.prev = 92;
3525
- _iterator3.f();
3526
- return _context36.finish(92);
3606
+ _context37.prev = 92;
3607
+ _context37.t3 = _context37["catch"](82);
3608
+ _iterator3.e(_context37.t3);
3527
3609
  case 95:
3528
- _context36.next = 100;
3610
+ _context37.prev = 95;
3611
+ _iterator3.f();
3612
+ return _context37.finish(95);
3613
+ case 98:
3614
+ _context37.next = 103;
3529
3615
  break;
3530
- case 97:
3531
- _context36.prev = 97;
3532
- _context36.t4 = _context36["catch"](76);
3616
+ case 100:
3617
+ _context37.prev = 100;
3618
+ _context37.t4 = _context37["catch"](79);
3533
3619
  this.logWarning('标记支付项已同步失败(不阻塞主流程)', {
3534
- error: _context36.t4
3620
+ error: _context37.t4
3535
3621
  });
3536
- case 100:
3622
+ case 103:
3537
3623
  // 标记订单已同步
3538
3624
  this.store.isOrderSynced = true;
3539
3625
 
3540
3626
  // 触发订单同步完成事件
3541
- _context36.next = 103;
3627
+ _context37.next = 106;
3542
3628
  return this.core.effects.emit(CheckoutHooks.OnOrderSynced, {
3543
3629
  orderUuid: this.store.currentOrder.uuid,
3544
3630
  realOrderId: realOrderId,
@@ -3547,18 +3633,18 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3547
3633
  isManual: isManual,
3548
3634
  response: checkoutResponse
3549
3635
  });
3550
- case 103:
3551
- return _context36.abrupt("return", {
3636
+ case 106:
3637
+ return _context37.abrupt("return", {
3552
3638
  success: true,
3553
3639
  orderId: realOrderId,
3554
3640
  orderUuid: this.store.currentOrder.uuid,
3555
3641
  response: checkoutResponse
3556
3642
  });
3557
- case 104:
3643
+ case 107:
3558
3644
  case "end":
3559
- return _context36.stop();
3645
+ return _context37.stop();
3560
3646
  }
3561
- }, _callee36, this, [[25, 34, 42, 46], [63, 71], [76, 97], [79, 89, 92, 95]]);
3647
+ }, _callee37, this, [[28, 37, 45, 49], [66, 74], [79, 100], [82, 92, 95, 98]]);
3562
3648
  }));
3563
3649
  function syncOrderToBackendWithReturn() {
3564
3650
  return _syncOrderToBackendWithReturn.apply(this, arguments);
@@ -3568,15 +3654,15 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3568
3654
  }, {
3569
3655
  key: "setOtherParams",
3570
3656
  value: function () {
3571
- var _setOtherParams = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee37(params) {
3657
+ var _setOtherParams = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee38(params) {
3572
3658
  var _ref5,
3573
3659
  _ref5$cover,
3574
3660
  cover,
3575
- _args37 = arguments;
3576
- return _regeneratorRuntime().wrap(function _callee37$(_context37) {
3577
- while (1) switch (_context37.prev = _context37.next) {
3661
+ _args38 = arguments;
3662
+ return _regeneratorRuntime().wrap(function _callee38$(_context38) {
3663
+ while (1) switch (_context38.prev = _context38.next) {
3578
3664
  case 0:
3579
- _ref5 = _args37.length > 1 && _args37[1] !== undefined ? _args37[1] : {}, _ref5$cover = _ref5.cover, cover = _ref5$cover === void 0 ? false : _ref5$cover;
3665
+ _ref5 = _args38.length > 1 && _args38[1] !== undefined ? _args38[1] : {}, _ref5$cover = _ref5.cover, cover = _ref5$cover === void 0 ? false : _ref5$cover;
3580
3666
  if (cover) {
3581
3667
  this.otherParams = params;
3582
3668
  } else {
@@ -3584,9 +3670,9 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3584
3670
  }
3585
3671
  case 2:
3586
3672
  case "end":
3587
- return _context37.stop();
3673
+ return _context38.stop();
3588
3674
  }
3589
- }, _callee37, this);
3675
+ }, _callee38, this);
3590
3676
  }));
3591
3677
  function setOtherParams(_x27) {
3592
3678
  return _setOtherParams.apply(this, arguments);
@@ -3605,22 +3691,22 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3605
3691
  }, {
3606
3692
  key: "editOrderNoteByOrderIdAsync",
3607
3693
  value: (function () {
3608
- var _editOrderNoteByOrderIdAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee38(orderId, note) {
3694
+ var _editOrderNoteByOrderIdAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee39(orderId, note) {
3609
3695
  var response, previousNote, errorMessage, _errorMessage;
3610
- return _regeneratorRuntime().wrap(function _callee38$(_context38) {
3611
- while (1) switch (_context38.prev = _context38.next) {
3696
+ return _regeneratorRuntime().wrap(function _callee39$(_context39) {
3697
+ while (1) switch (_context39.prev = _context39.next) {
3612
3698
  case 0:
3613
3699
  this.logInfo('editOrderNoteByOrderIdAsync called', {
3614
3700
  orderId: orderId,
3615
3701
  note: note,
3616
3702
  noteLength: note.length
3617
3703
  });
3618
- _context38.prev = 1;
3704
+ _context39.prev = 1;
3619
3705
  if (orderId) {
3620
- _context38.next = 4;
3706
+ _context39.next = 4;
3621
3707
  break;
3622
3708
  }
3623
- return _context38.abrupt("return", {
3709
+ return _context39.abrupt("return", {
3624
3710
  success: false,
3625
3711
  message: '订单ID不能为空',
3626
3712
  orderId: orderId
@@ -3636,12 +3722,12 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3636
3722
  });
3637
3723
 
3638
3724
  // 调用后端API修改订单备注
3639
- _context38.next = 7;
3725
+ _context39.next = 7;
3640
3726
  return this.request.put("/order/order/".concat(orderId, "/note"), {
3641
3727
  note: note
3642
3728
  });
3643
3729
  case 7:
3644
- response = _context38.sent;
3730
+ response = _context39.sent;
3645
3731
  this.logInfo('订单备注编辑响应:', {
3646
3732
  orderId: orderId,
3647
3733
  status: response.status,
@@ -3651,11 +3737,11 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3651
3737
 
3652
3738
  // 检查响应状态
3653
3739
  if (!(response.status === true || response.status === 200)) {
3654
- _context38.next = 18;
3740
+ _context39.next = 18;
3655
3741
  break;
3656
3742
  }
3657
3743
  if (!(this.store.currentOrder && (String(this.store.currentOrder.order_id) === String(orderId) || String(this.store.currentOrder.id) === String(orderId)))) {
3658
- _context38.next = 15;
3744
+ _context39.next = 15;
3659
3745
  break;
3660
3746
  }
3661
3747
  // 获取修改前的备注用于事件
@@ -3665,7 +3751,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3665
3751
  }
3666
3752
 
3667
3753
  // 触发订单备注变更事件
3668
- _context38.next = 15;
3754
+ _context39.next = 15;
3669
3755
  return this.core.effects.emit(CheckoutHooks.OnOrderNoteChanged, {
3670
3756
  orderUuid: this.store.currentOrder.uuid,
3671
3757
  oldNote: previousNote,
@@ -3673,7 +3759,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3673
3759
  timestamp: Date.now()
3674
3760
  });
3675
3761
  case 15:
3676
- return _context38.abrupt("return", {
3762
+ return _context39.abrupt("return", {
3677
3763
  success: true,
3678
3764
  message: response.message || '订单备注修改成功',
3679
3765
  orderId: orderId
@@ -3682,29 +3768,29 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3682
3768
  // API返回失败状态
3683
3769
  errorMessage = response.message || '订单备注修改失败';
3684
3770
  this.logError("\u8BA2\u5355 ".concat(orderId, " \u5907\u6CE8\u4FEE\u6539\u5931\u8D25:"), errorMessage);
3685
- return _context38.abrupt("return", {
3771
+ return _context39.abrupt("return", {
3686
3772
  success: false,
3687
3773
  message: errorMessage,
3688
3774
  orderId: orderId
3689
3775
  });
3690
3776
  case 21:
3691
- _context38.next = 28;
3777
+ _context39.next = 28;
3692
3778
  break;
3693
3779
  case 23:
3694
- _context38.prev = 23;
3695
- _context38.t0 = _context38["catch"](1);
3696
- this.logError('编辑订单备注失败:', _context38.t0);
3697
- _errorMessage = _context38.t0 instanceof Error ? _context38.t0.message : '网络错误或服务器异常';
3698
- return _context38.abrupt("return", {
3780
+ _context39.prev = 23;
3781
+ _context39.t0 = _context39["catch"](1);
3782
+ this.logError('编辑订单备注失败:', _context39.t0);
3783
+ _errorMessage = _context39.t0 instanceof Error ? _context39.t0.message : '网络错误或服务器异常';
3784
+ return _context39.abrupt("return", {
3699
3785
  success: false,
3700
3786
  message: "\u7F16\u8F91\u8BA2\u5355\u5907\u6CE8\u5931\u8D25: ".concat(_errorMessage),
3701
3787
  orderId: orderId
3702
3788
  });
3703
3789
  case 28:
3704
3790
  case "end":
3705
- return _context38.stop();
3791
+ return _context39.stop();
3706
3792
  }
3707
- }, _callee38, this, [[1, 23]]);
3793
+ }, _callee39, this, [[1, 23]]);
3708
3794
  }));
3709
3795
  function editOrderNoteByOrderIdAsync(_x28, _x29) {
3710
3796
  return _editOrderNoteByOrderIdAsync.apply(this, arguments);
@@ -3723,11 +3809,11 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3723
3809
  }, {
3724
3810
  key: "sendCustomerPayLinkAsync",
3725
3811
  value: (function () {
3726
- var _sendCustomerPayLinkAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee39(params) {
3812
+ var _sendCustomerPayLinkAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee40(params) {
3727
3813
  var _params$order_ids, _params$emails;
3728
3814
  var emailRegex, invalidEmails, requestBody, response, errorMessage, _errorMessage2;
3729
- return _regeneratorRuntime().wrap(function _callee39$(_context39) {
3730
- while (1) switch (_context39.prev = _context39.next) {
3815
+ return _regeneratorRuntime().wrap(function _callee40$(_context40) {
3816
+ while (1) switch (_context40.prev = _context40.next) {
3731
3817
  case 0:
3732
3818
  this.logInfo('sendCustomerPayLinkAsync called', {
3733
3819
  orderIds: params.order_ids,
@@ -3736,21 +3822,21 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3736
3822
  emailsCount: ((_params$emails = params.emails) === null || _params$emails === void 0 ? void 0 : _params$emails.length) || 0,
3737
3823
  notifyAction: params.notify_action || 'order_payment_reminder'
3738
3824
  });
3739
- _context39.prev = 1;
3825
+ _context40.prev = 1;
3740
3826
  if (!(!params.order_ids || params.order_ids.length === 0)) {
3741
- _context39.next = 4;
3827
+ _context40.next = 4;
3742
3828
  break;
3743
3829
  }
3744
- return _context39.abrupt("return", {
3830
+ return _context40.abrupt("return", {
3745
3831
  success: false,
3746
3832
  message: '订单ID列表不能为空'
3747
3833
  });
3748
3834
  case 4:
3749
3835
  if (!(!params.emails || params.emails.length === 0)) {
3750
- _context39.next = 6;
3836
+ _context40.next = 6;
3751
3837
  break;
3752
3838
  }
3753
- return _context39.abrupt("return", {
3839
+ return _context40.abrupt("return", {
3754
3840
  success: false,
3755
3841
  message: '邮箱地址列表不能为空'
3756
3842
  });
@@ -3761,10 +3847,10 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3761
3847
  return !emailRegex.test(email);
3762
3848
  });
3763
3849
  if (!(invalidEmails.length > 0)) {
3764
- _context39.next = 10;
3850
+ _context40.next = 10;
3765
3851
  break;
3766
3852
  }
3767
- return _context39.abrupt("return", {
3853
+ return _context40.abrupt("return", {
3768
3854
  success: false,
3769
3855
  message: "\u90AE\u7BB1\u683C\u5F0F\u65E0\u6548: ".concat(invalidEmails.join(', '))
3770
3856
  });
@@ -3780,10 +3866,10 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3780
3866
  }, requestBody));
3781
3867
 
3782
3868
  // 调用后端API发送邮件
3783
- _context39.next = 14;
3869
+ _context40.next = 14;
3784
3870
  return this.request.post('/order/batch-email', requestBody);
3785
3871
  case 14:
3786
- response = _context39.sent;
3872
+ response = _context40.sent;
3787
3873
  this.logInfo('支付链接邮件发送响应:', {
3788
3874
  status: response.status,
3789
3875
  message: response.message,
@@ -3793,10 +3879,10 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3793
3879
 
3794
3880
  // 检查响应状态
3795
3881
  if (!(response.status === true || response.status === 200)) {
3796
- _context39.next = 20;
3882
+ _context40.next = 20;
3797
3883
  break;
3798
3884
  }
3799
- return _context39.abrupt("return", {
3885
+ return _context40.abrupt("return", {
3800
3886
  success: true,
3801
3887
  message: response.message || '支付链接邮件发送成功'
3802
3888
  });
@@ -3804,27 +3890,27 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3804
3890
  // API返回失败状态
3805
3891
  errorMessage = response.message || '支付链接邮件发送失败';
3806
3892
  console.error('[Checkout] 支付链接邮件发送失败:', errorMessage);
3807
- return _context39.abrupt("return", {
3893
+ return _context40.abrupt("return", {
3808
3894
  success: false,
3809
3895
  message: errorMessage
3810
3896
  });
3811
3897
  case 23:
3812
- _context39.next = 30;
3898
+ _context40.next = 30;
3813
3899
  break;
3814
3900
  case 25:
3815
- _context39.prev = 25;
3816
- _context39.t0 = _context39["catch"](1);
3817
- this.logError('发送客户支付链接邮件失败:', _context39.t0);
3818
- _errorMessage2 = _context39.t0 instanceof Error ? _context39.t0.message : '网络错误或服务器异常';
3819
- return _context39.abrupt("return", {
3901
+ _context40.prev = 25;
3902
+ _context40.t0 = _context40["catch"](1);
3903
+ this.logError('发送客户支付链接邮件失败:', _context40.t0);
3904
+ _errorMessage2 = _context40.t0 instanceof Error ? _context40.t0.message : '网络错误或服务器异常';
3905
+ return _context40.abrupt("return", {
3820
3906
  success: false,
3821
3907
  message: "\u53D1\u9001\u652F\u4ED8\u94FE\u63A5\u90AE\u4EF6\u5931\u8D25: ".concat(_errorMessage2)
3822
3908
  });
3823
3909
  case 30:
3824
3910
  case "end":
3825
- return _context39.stop();
3911
+ return _context40.stop();
3826
3912
  }
3827
- }, _callee39, this, [[1, 25]]);
3913
+ }, _callee40, this, [[1, 25]]);
3828
3914
  }));
3829
3915
  function sendCustomerPayLinkAsync(_x30) {
3830
3916
  return _sendCustomerPayLinkAsync.apply(this, arguments);
@@ -3841,22 +3927,36 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3841
3927
  }, {
3842
3928
  key: "roundAmountAsync",
3843
3929
  value: (function () {
3844
- var _roundAmountAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee40(amount) {
3845
- var _this$otherParams$ord, _this$otherParams$ord2;
3846
- var result;
3847
- return _regeneratorRuntime().wrap(function _callee40$(_context40) {
3848
- while (1) switch (_context40.prev = _context40.next) {
3930
+ var _roundAmountAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee41(amount) {
3931
+ var _cashManualPayment$me, _this$otherParams$ord, _this$otherParams$ord2;
3932
+ var cashManualPayment, result;
3933
+ return _regeneratorRuntime().wrap(function _callee41$(_context41) {
3934
+ while (1) switch (_context41.prev = _context41.next) {
3849
3935
  case 0:
3850
- _context40.next = 2;
3936
+ // 检查 CASHMANUAL 的支付项是否开启了舍入,如果没开直接返回 amount
3937
+ cashManualPayment = this.store.paymentMethods.find(function (p) {
3938
+ return p.code === 'CASHMANUAL';
3939
+ });
3940
+ if (cashManualPayment !== null && cashManualPayment !== void 0 && (_cashManualPayment$me = cashManualPayment.metadata) !== null && _cashManualPayment$me !== void 0 && _cashManualPayment$me.order_rounding_switch) {
3941
+ _context41.next = 3;
3942
+ break;
3943
+ }
3944
+ return _context41.abrupt("return", {
3945
+ originalAmount: amount.toString(),
3946
+ roundedAmount: amount.toString(),
3947
+ roundingDifference: '0.00'
3948
+ });
3949
+ case 3:
3950
+ _context41.next = 5;
3851
3951
  return this.payment.roundAmountAsync(amount, (_this$otherParams$ord = this.otherParams.order_rounding_setting) === null || _this$otherParams$ord === void 0 ? void 0 : _this$otherParams$ord.interval, (_this$otherParams$ord2 = this.otherParams.order_rounding_setting) === null || _this$otherParams$ord2 === void 0 ? void 0 : _this$otherParams$ord2.type);
3852
- case 2:
3853
- result = _context40.sent;
3854
- return _context40.abrupt("return", result);
3855
- case 4:
3952
+ case 5:
3953
+ result = _context41.sent;
3954
+ return _context41.abrupt("return", result);
3955
+ case 7:
3856
3956
  case "end":
3857
- return _context40.stop();
3957
+ return _context41.stop();
3858
3958
  }
3859
- }, _callee40, this);
3959
+ }, _callee41, this);
3860
3960
  }));
3861
3961
  function roundAmountAsync(_x31) {
3862
3962
  return _roundAmountAsync.apply(this, arguments);
@@ -3866,10 +3966,10 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3866
3966
  }, {
3867
3967
  key: "destroy",
3868
3968
  value: function () {
3869
- var _destroy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee41() {
3969
+ var _destroy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee42() {
3870
3970
  var _this$order, _this$order$destroy, _this$payment, _this$payment$destroy;
3871
- return _regeneratorRuntime().wrap(function _callee41$(_context41) {
3872
- while (1) switch (_context41.prev = _context41.next) {
3971
+ return _regeneratorRuntime().wrap(function _callee42$(_context42) {
3972
+ while (1) switch (_context42.prev = _context42.next) {
3873
3973
  case 0:
3874
3974
  // 清理钱包模块的所有缓存数据
3875
3975
  this.payment.wallet.clearAllCache();
@@ -3878,10 +3978,10 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3878
3978
  this.core.effects.offByModuleDestroy(this.name);
3879
3979
 
3880
3980
  // 销毁子模块
3881
- _context41.next = 4;
3981
+ _context42.next = 4;
3882
3982
  return (_this$order = this.order) === null || _this$order === void 0 || (_this$order$destroy = _this$order.destroy) === null || _this$order$destroy === void 0 ? void 0 : _this$order$destroy.call(_this$order);
3883
3983
  case 4:
3884
- _context41.next = 6;
3984
+ _context42.next = 6;
3885
3985
  return (_this$payment = this.payment) === null || _this$payment === void 0 || (_this$payment$destroy = _this$payment.destroy) === null || _this$payment$destroy === void 0 ? void 0 : _this$payment$destroy.call(_this$payment);
3886
3986
  case 6:
3887
3987
  // 取消注册模块
@@ -3889,9 +3989,9 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3889
3989
  console.log('[Checkout] 已销毁');
3890
3990
  case 8:
3891
3991
  case "end":
3892
- return _context41.stop();
3992
+ return _context42.stop();
3893
3993
  }
3894
- }, _callee41, this);
3994
+ }, _callee42, this);
3895
3995
  }));
3896
3996
  function destroy() {
3897
3997
  return _destroy.apply(this, arguments);
@@ -3906,12 +4006,12 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3906
4006
  }, {
3907
4007
  key: "resetStoreStateAsync",
3908
4008
  value: (function () {
3909
- var _resetStoreStateAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee42() {
4009
+ var _resetStoreStateAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee43() {
3910
4010
  var prevOrderInfo;
3911
- return _regeneratorRuntime().wrap(function _callee42$(_context42) {
3912
- while (1) switch (_context42.prev = _context42.next) {
4011
+ return _regeneratorRuntime().wrap(function _callee43$(_context43) {
4012
+ while (1) switch (_context43.prev = _context43.next) {
3913
4013
  case 0:
3914
- _context42.prev = 0;
4014
+ _context43.prev = 0;
3915
4015
  prevOrderInfo = this.store.currentOrder ? {
3916
4016
  uuid: this.store.currentOrder.uuid,
3917
4017
  orderId: this.store.currentOrder.order_id
@@ -3940,26 +4040,26 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
3940
4040
 
3941
4041
  // 触发订单清理事件(如果之前有订单)
3942
4042
  if (!prevOrderInfo) {
3943
- _context42.next = 17;
4043
+ _context43.next = 17;
3944
4044
  break;
3945
4045
  }
3946
- _context42.next = 17;
4046
+ _context43.next = 17;
3947
4047
  return this.core.effects.emit(CheckoutHooks.OnOrderCleared, {
3948
4048
  previousOrder: prevOrderInfo,
3949
4049
  timestamp: Date.now()
3950
4050
  });
3951
4051
  case 17:
3952
- _context42.next = 22;
4052
+ _context43.next = 22;
3953
4053
  break;
3954
4054
  case 19:
3955
- _context42.prev = 19;
3956
- _context42.t0 = _context42["catch"](0);
3957
- console.error('[Checkout] 重置 store 状态失败:', _context42.t0);
4055
+ _context43.prev = 19;
4056
+ _context43.t0 = _context43["catch"](0);
4057
+ console.error('[Checkout] 重置 store 状态失败:', _context43.t0);
3958
4058
  case 22:
3959
4059
  case "end":
3960
- return _context42.stop();
4060
+ return _context43.stop();
3961
4061
  }
3962
- }, _callee42, this, [[0, 19]]);
4062
+ }, _callee43, this, [[0, 19]]);
3963
4063
  }));
3964
4064
  function resetStoreStateAsync() {
3965
4065
  return _resetStoreStateAsync.apply(this, arguments);