isSettled()) { throw new BizException('经销商收益还未结算'); } if (! $dealerEarning->isPending()) { throw new BizException('经销商收益状态不是待付款'); } switch (Relation::getMorphedModel($dealerEarning->earningable_type)) { // 管理津贴 case DealerManageSubsidy::class: if (! $dealerEarning->earningable->isPending()) { throw new BizException('管理津贴状态不是待付款'); } $dealerEarning->earningable->update([ 'status' => DealerManageSubsidyStatus::Completed, ]); (new WalletService())->changeBalance( $dealerEarning->user, $dealerEarning->total_earnings, DealerWalletAction::ManageSubsidyIn, '收入-管理津贴', $dealerEarning ); break; // 管理者津贴 case DealerManagerSubsidy::class: if (! $dealerEarning->earningable->isPending()) { throw new BizException('管理者津贴状态不是待付款'); } $dealerEarning->earningable->update([ 'status' => DealerManagerSubsidyStatus::Completed, ]); (new WalletService())->changeBalance( $dealerEarning->user, $dealerEarning->total_earnings, DealerWalletAction::ManagerSubsidyIn, '收入-管理者津贴', $dealerEarning ); break; // 管理者津贴 case DealerPurchaseSubsidy::class: if (! $dealerEarning->earningable->isPending()) { throw new BizException('进货补贴状态不是待付款'); } $dealerEarning->earningable->update([ 'status' => DealerPurchaseSubsidyStatus::Completed, ]); (new WalletService())->changeBalance( $dealerEarning->user, $dealerEarning->total_earnings, DealerWalletAction::PurchaseSubsidyIn, '收入-进货补贴', $dealerEarning ); break; case DealerChannelSubsidyLog::class: (new WalletService())->changeBalance( $dealerEarning->user, $dealerEarning->total_earnings, DealerWalletAction::ChannelSubsidyIn, '收入-渠道补贴', $dealerEarning ); break; default: throw new BizException('经销商收入异常'); break; } $dealerEarning->update([ 'pay_way' => DealerEarning::PAY_WAY_WALLET, 'pay_at' => now(), 'pay_info' => null, 'status' => DealerEarningStatus::Completed, ]); } }