diff --git a/addons/shopro/library/split/SplitCalculator.php b/addons/shopro/library/split/SplitCalculator.php index ec71564..9bc0120 100644 --- a/addons/shopro/library/split/SplitCalculator.php +++ b/addons/shopro/library/split/SplitCalculator.php @@ -81,11 +81,11 @@ class SplitCalculator $payFee = floatval($order['pay_fee']); $commissionRewards = CommissionReward::where('order_id', $orderId)->where('status', '>=', 0)->select(); - if ($commissionRewards->isEmpty()) { + if ($this->isEmptyResult($commissionRewards)) { $issues[] = '该订单无分销佣金记录(未产生推广关系或未参与分销)'; } - foreach ($commissionRewards as $reward) { + foreach ($this->toResultList($commissionRewards) as $reward) { $userId = intval($reward['agent_id']); $amount = floatval($reward['commission']); if ($userId <= 0) { @@ -108,7 +108,7 @@ class SplitCalculator } $regionalRewards = $this->getRegionalRewardsByOrderId($orderId); - foreach ($regionalRewards as $reward) { + foreach ($this->toResultList($regionalRewards) as $reward) { $uid = intval($reward['agent_user_id']); $amount = floatval($reward['commission']); if ($uid <= 0 || $amount <= 0) { @@ -144,6 +144,28 @@ class SplitCalculator ]; } + protected function isEmptyResult($result) + { + if (is_array($result)) { + return count($result) === 0; + } + if (is_object($result) && method_exists($result, 'isEmpty')) { + return $result->isEmpty(); + } + return empty($result); + } + + protected function toResultList($result) + { + if (is_array($result)) { + return $result; + } + if (is_object($result) && method_exists($result, 'all')) { + return $result->all(); + } + return $result ? (array) $result : []; + } + protected function getRegionalRewardsByOrderId($orderId) { try {