From 510d566fdf497856e8c7fab29e9f327650bbc8ac Mon Sep 17 00:00:00 2001 From: liapples Date: Wed, 27 Oct 2021 12:20:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=A0=B8=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.php | 7 +- .../Extensions/Grid/IndustryOrderAudit.php | 5 +- .../Extensions/Grid/VerificationOrder.php | 60 ++++++++++++ app/Http/Controllers/Api/TestController.php | 98 ------------------- 4 files changed, 67 insertions(+), 103 deletions(-) create mode 100644 app/AdminSupplier/Extensions/Grid/VerificationOrder.php diff --git a/app/AdminSupplier/Controllers/OrderController.php b/app/AdminSupplier/Controllers/OrderController.php index 0878f9e..88bc3a7 100644 --- a/app/AdminSupplier/Controllers/OrderController.php +++ b/app/AdminSupplier/Controllers/OrderController.php @@ -2,6 +2,7 @@ namespace App\AdminSupplier\Controllers; +use App\AdminSupplier\Extensions\Grid\VerificationOrder; use App\AdminSupplier\Repositories\Order; use App\Common\OrderStatus; use App\Common\PayType; @@ -63,7 +64,11 @@ class OrderController extends AdminController }, $info); return Table::make([], $info); })->xl(); - $grid->column('status', '订单状态')->using(OrderStatus::array()); + $grid->column('status', '订单状态') + ->if(fn() => in_array($this->status, [OrderStatus::PAID, OrderStatus::PAID_RETAINAGE, OrderStatus::OFFLINE_PAID, OrderStatus::REFUSED_REFUND])) + ->action(new VerificationOrder()) + ->else() + ->using(OrderStatus::array()); $grid->column('pay_type')->using(PayType::array()); $grid->column('price'); $grid->column('paid_money'); diff --git a/app/AdminSupplier/Extensions/Grid/IndustryOrderAudit.php b/app/AdminSupplier/Extensions/Grid/IndustryOrderAudit.php index 159d985..f2fb852 100644 --- a/app/AdminSupplier/Extensions/Grid/IndustryOrderAudit.php +++ b/app/AdminSupplier/Extensions/Grid/IndustryOrderAudit.php @@ -2,15 +2,12 @@ namespace App\AdminSupplier\Extensions\Grid; -use App\Common\OrderStatus; use App\Models\IndustryOrder; -use App\Models\IndustryProduct; use Dcat\Admin\Grid\RowAction; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; /** - * 供应商审核 + * 行业订单审核 * Class AuditSupplier * @package App\Admin\Extensions\Grid */ diff --git a/app/AdminSupplier/Extensions/Grid/VerificationOrder.php b/app/AdminSupplier/Extensions/Grid/VerificationOrder.php new file mode 100644 index 0000000..dce576d --- /dev/null +++ b/app/AdminSupplier/Extensions/Grid/VerificationOrder.php @@ -0,0 +1,60 @@ +appendHtmlAttribute('class', $class); + $this->defaultHtmlAttribute('href', 'javascript:;'); + + return "formatHtmlAttributes()}>{$this->title}"; + } + + public function handle(Request $request) + { + $id = $this->getKey(); + try { + $order = Order::whereIn('status', [OrderStatus::PAID, OrderStatus::PAID_RETAINAGE, OrderStatus::OFFLINE_PAID, OrderStatus::REFUSED_REFUND]) + ->find($id); + if (!$order) { + throw new \Exception('订单不存在或已经核销过了'); + } + + $order->status = OrderStatus::SUCCESS; + if ($order->save()) { + //分账 + //线下订单不分账 + if ($order->pay_type != PayType::OFFLINE) { + (new VerificationController)->fund($order); + } + } + + return $this->response()->success('操作成功')->refresh(); + } catch (\Exception $e) { + return $this->response()->error($e->getMessage())->refresh(); + } + } + + public function confirm() + { + return ['确定要核销该订单吗?', '']; + } +} diff --git a/app/Http/Controllers/Api/TestController.php b/app/Http/Controllers/Api/TestController.php index cf60c25..48bfb89 100644 --- a/app/Http/Controllers/Api/TestController.php +++ b/app/Http/Controllers/Api/TestController.php @@ -2,15 +2,7 @@ namespace App\Http\Controllers\Api; -use App\Common\StatementType; -use App\Models\Agent; -use App\Models\Guide; use App\Models\Order; -use App\Models\OrderProductItem; -use App\Models\Supplier; -use App\Service\WithdrawalService; -use App\Traits\DemandTraits; -use App\Traits\StatementTraits; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; @@ -26,96 +18,6 @@ class TestController dd($this->fund(Order::find(221))); } - public function fund($order) - { - $service = new WithdrawalService(); - DB::beginTransaction(); - try { - //最后批量插入 - $statementCreate = []; - $cost = 0; - //如果有地接价格 分帐给地接 - if ($order->guide_price > 0) { - $guidePrice = $order->guide_price; - $cost = bcadd($cost, $order->guide_price, 6); - //成本价 加上地接价格 - $statementCreate[] = $service->createByOrder( - $order->guide_price, - StatementType::ORDER, - $order->guide->id, - DemandTraits::$col[2], - $order->id, - StatementTraits::$type[0] - ); - //抽成 - $guide = Guide::query()->where('id', $order->guide->id)->lockForUpdate()->first(); - $guide->balance = bcadd($guide->balance, $guidePrice, 6); - $guide->save(); - } - - //分账给供应商 - $orderItem = OrderProductItem::query() - ->where('order_id', $order->id) - ->with('supplier') - ->select('*') - ->selectRaw('sum(price) as sum_price,sum(single_deposit * num) as sum_persons') - ->groupBy('supplier_id') - ->get(); - foreach ($orderItem as $v) { - - $cost = bcadd($cost, $v->sum_price, 6); - $supplierPrice = $v->sum_price; - $statementCreate[] = $service->createByOrder( - $v->sum_price, - StatementType::ORDER, - $v->supplier_id, - DemandTraits::$col[1], - $order->id, - StatementTraits::$type[0] - ); - - $supplier = Supplier::query()->where('id', $v->supplier_id)->lockForUpdate()->first(); - //处理交易金 - if ($v->sum_persons > 0) { - //计算交易金 - $deposit = $v->sum_persons; - //流水 - //扣 - $supplier->trade_balance = bcsub($supplier->trade_balance,$deposit,6); - } - - $supplier->balance = bcadd($supplier->balance, $supplierPrice, 6); - $supplier->save(); - } - - //分账给代理商 - //成本价 加上地接价格 - $agentPrice = bcsub($order->price, $cost, 2); - - $statementCreate[] = $service->createByOrder( - $agentPrice, - StatementType::ORDER, - $order->agent_id, - DemandTraits::$col[0], - $order->id, - StatementTraits::$type[0] - ); - - $agent = Agent::query()->where('id', $order->agent->id)->lockForUpdate()->first(); - $agent->balance = bcadd($agent->balance, $agentPrice, 6); - $agent->save(); - - if (!empty($statementCreate)) { - $order->statement()->createMany($statementCreate); - } - DB::commit(); - } catch (\Exception $e) { - DB::rollBack(); - return $this->error($e->getMessage()); - } - } - - /** * 模拟登录 * @param $user_id