```
feat(split): 新增分账接收方明细功能 新增 SplitOrderHelper 类用于同步分账接收方明细数据,包括接收方角色、 姓名、账户和金额等信息。优化管理后台分账订单列表页面,显示详细的 接收方信息和失败原因,提升分账流程的可视化和可追溯性。 ```
这个提交包含在:
@@ -3,6 +3,7 @@
|
||||
namespace addons\shopro\library\split;
|
||||
|
||||
use addons\shopro\model\Order;
|
||||
use addons\shopro\library\split\SplitOrderHelper;
|
||||
use addons\shopro\model\split\SplitOrder;
|
||||
use addons\shopro\model\split\SplitOrderReceiver;
|
||||
use think\Db;
|
||||
@@ -224,5 +225,6 @@ class SplitExecutor
|
||||
$splitOrder->next_retry_time = time() + $this->config->getRetryInterval();
|
||||
$splitOrder->save();
|
||||
}
|
||||
SplitOrderHelper::syncReceivers($splitOrder->id, $items);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace addons\shopro\library\split;
|
||||
|
||||
use addons\shopro\model\split\SplitOrderReceiver;
|
||||
|
||||
/**
|
||||
* 分账订单明细写入(成功/失败均需落库,便于后台展示)
|
||||
*/
|
||||
class SplitOrderHelper
|
||||
{
|
||||
public static function syncReceivers($splitOrderId, array $items, $replace = false)
|
||||
{
|
||||
if (!$splitOrderId || empty($items)) {
|
||||
return;
|
||||
}
|
||||
if ($replace) {
|
||||
SplitOrderReceiver::where('split_order_id', $splitOrderId)->delete();
|
||||
}
|
||||
$exists = SplitOrderReceiver::where('split_order_id', $splitOrderId)->count();
|
||||
if ($exists > 0 && !$replace) {
|
||||
return;
|
||||
}
|
||||
foreach ($items as $item) {
|
||||
$amount = floatval($item['amount'] ?? 0);
|
||||
if ($amount <= 0) {
|
||||
continue;
|
||||
}
|
||||
SplitOrderReceiver::create([
|
||||
'split_order_id' => $splitOrderId,
|
||||
'receiver_id' => intval($item['receiver_id'] ?? 0),
|
||||
'role_type' => $item['role_type'] ?? '',
|
||||
'amount' => round($amount, 2),
|
||||
'description' => $item['description'] ?? '',
|
||||
'status' => 0,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,4 +8,9 @@ class SplitOrderReceiver extends Model
|
||||
{
|
||||
protected $name = 'shopro_split_order_receiver';
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
public function receiverConfig()
|
||||
{
|
||||
return $this->belongsTo(Receiver::class, 'receiver_id', 'id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace addons\shopro_huifu\library;
|
||||
|
||||
use addons\shopro\library\split\SplitCalculator;
|
||||
use addons\shopro\library\split\SplitOrderHelper;
|
||||
use addons\shopro\library\split\Config as SplitConfig;
|
||||
use addons\shopro\model\Order;
|
||||
use addons\shopro\model\split\SplitOrder;
|
||||
@@ -469,7 +470,7 @@ class HuifuSplitService
|
||||
$splitOrder = SplitOrder::where('order_id', $orderId)->where('channel', 'huifu')->find();
|
||||
$splitConfig = new SplitConfig();
|
||||
if (!$splitOrder) {
|
||||
SplitOrder::create([
|
||||
$splitOrder = SplitOrder::create([
|
||||
'order_id' => $orderId,
|
||||
'order_sn' => $order['order_sn'],
|
||||
'channel' => 'huifu',
|
||||
@@ -489,5 +490,6 @@ class HuifuSplitService
|
||||
$splitOrder->next_retry_time = time() + $splitConfig->getRetryInterval();
|
||||
$splitOrder->save();
|
||||
}
|
||||
SplitOrderHelper::syncReceivers($splitOrder->id, $items);
|
||||
}
|
||||
}
|
||||
|
||||
在新工单中引用
屏蔽一个用户