|
|
@ -3,8 +3,12 @@ |
|
|
namespace App\AdminAgent\Extensions\Grid; |
|
|
namespace App\AdminAgent\Extensions\Grid; |
|
|
use App\Common\OrderStatus; |
|
|
use App\Common\OrderStatus; |
|
|
use App\Models\Order; |
|
|
use App\Models\Order; |
|
|
|
|
|
use App\Models\Agent; |
|
|
|
|
|
use App\Models\OrderProductItem; |
|
|
|
|
|
use App\Models\Supplier; |
|
|
use Dcat\Admin\Admin; |
|
|
use Dcat\Admin\Admin; |
|
|
use Dcat\Admin\Grid\RowAction; |
|
|
use Dcat\Admin\Grid\RowAction; |
|
|
|
|
|
use Illuminate\Support\Facades\DB; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 改变订单状态 |
|
|
* 改变订单状态 |
|
|
@ -25,17 +29,35 @@ class ChangeOrderStatus extends RowAction |
|
|
|
|
|
|
|
|
public function handle() |
|
|
public function handle() |
|
|
{ |
|
|
{ |
|
|
|
|
|
DB::beginTransaction(); |
|
|
try { |
|
|
try { |
|
|
$order = Order::firstWhere(['id' => $this->getKey(), 'agent_id' => Admin::user()->id, 'status' => OrderStatus::OFFLINE_UNPAID]); |
|
|
$order = Order::firstWhere(['id' => $this->getKey(), 'agent_id' => Admin::user()->id, 'status' => OrderStatus::OFFLINE_UNPAID]); |
|
|
if (!$order) { |
|
|
if (!$order) { |
|
|
return $this->response()->error("订单不存在或已处理过了")->refresh(); |
|
|
return $this->response()->error("订单不存在或已处理过了")->refresh(); |
|
|
} |
|
|
} |
|
|
|
|
|
$agent = Agent::query()->where('id', Admin::user()->id)->lockForUpdate()->first(); |
|
|
|
|
|
if ($agent->balance < $order->price) { |
|
|
|
|
|
return $this->response()->error("账户余额不足,请先进行充值")->refresh(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
$order->status = OrderStatus::OFFLINE_PAID; |
|
|
$order->status = OrderStatus::OFFLINE_PAID; |
|
|
$order->verify_code = uniqid(); //生成核销码
|
|
|
$order->verify_code = uniqid(); //生成核销码
|
|
|
$order->save(); |
|
|
$order->save(); |
|
|
|
|
|
//扣供应商余额
|
|
|
|
|
|
$agent->balance = bcsub($agent->balance,$order->price,6); |
|
|
|
|
|
$agent->save(); |
|
|
|
|
|
|
|
|
|
|
|
$orderItem = OrderProductItem::query()->where('order_id',$order->id)->get(); |
|
|
|
|
|
|
|
|
|
|
|
foreach ($orderItem as $item) { |
|
|
|
|
|
$supplier = Supplier::query()->where('id',$item->supplier_id)->lockForUpdate()->first(); |
|
|
|
|
|
$supplier->balance = bcadd($supplier->balance,$item->price,6); |
|
|
|
|
|
$supplier->save(); |
|
|
|
|
|
} |
|
|
|
|
|
DB::commit(); |
|
|
return $this->response()->success("操作成功,已设置为“线下已付款”")->refresh(); |
|
|
return $this->response()->success("操作成功,已设置为“线下已付款”")->refresh(); |
|
|
} catch (\Exception $e) { |
|
|
} catch (\Exception $e) { |
|
|
|
|
|
DB::rollBack(); |
|
|
return $this->response()->error($e->getMessage()); |
|
|
return $this->response()->error($e->getMessage()); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|