1
0
Files
lkafu/app/Admin/Actions/AllotCard.php
2020-08-06 14:45:56 +08:00

98 lines
3.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Admin\Actions;
use App\Models\Card;
use App\Models\CardOrder;
use App\Models\User;
use Encore\Admin\Actions\Action;
use Illuminate\Http\Request;
class AllotCard extends Action
{
protected $selector = '.report-posts';
public function handle(Request $request)
{
$request->validate([
'startNum' => 'required|integer|min:1|lte:endNum',
'endNum' => 'required|integer|min:1',
], [
'startNum.required' => '开始号码必须填写',
'startNum.integer' => '开始号码必须是整数',
'startNum.min' => '开始号码最小为1',
'startNum.lte' => '开始号码要小于结束号码',
'endNum.required' => '结束号码必须填写',
'endNum.integer' => '结束号码必须是整数',
'endNum.min' => '结束号码最小为1',
]);
$response = $this->response();
$startNum = $request->startNum ?: 0;
$endNum = $request->endNum ?: 0;
$order_id = $request->order_id ?: 0;
$company = $request->company;
$number = $request->number;
$order = CardOrder::where('status', 1)->find($order_id);
if (!$order) {
$response->status = false;
return $response->error('订单不存在或状态不正确');
}
$startNum = sprintf("%'.08d", $startNum);
$endNum = sprintf("%'.08d", $endNum);
$count = Card::whereBetween('code', [$startNum, $endNum])->count();
if ($order->num != $count) {
$response->status = false;
return $response->error('调拨数量与订单数量不匹配');
}
$isActive = Card::whereBetween('code', [$startNum, $endNum])->where('status', '!=', 1)->value('code');
if ($isActive) {
$response->status = false;
return $response->error($isActive . '卡号状态不正确');
}
if (!$order->user) {
$response->status = false;
return $response->error('用户不存在');
} elseif ($order->user->identity->identity_id < 2) {
$response->status = false;
return $response->error($order->user->username . '用户不是代理');
}
$order->status = 2;
$order->save();
$order->deliver($company, $number);
Card::whereBetween('code', [$startNum, $endNum])->update([
'user_id' => $order->user_id,
'order_id' => $order->id,
'status' => 3,
]);
return $response->success('卡分配完毕')->refresh();
}
public function form()
{
$orders = CardOrder::where('status', 1)->get();
$orderData = array();
foreach ($orders as $key => $order) {
$orderData[$order->id] = '单号:' . $order->order_id . '(用户账号:' . $order->user->username . ',数量:' . $order->num . '';
}
$options = deliver_list();
$this->select('order_id', '订单号')->options($orderData)->rules('required');
$this->text('startNum', '开始')->rules('required|integer|min:1');
$this->text('endNum', '结束')->rules('required|integer|min:1');
$this->select('company', '物流名称')->options($options)->required();
$this->text('number', '物流单号')->required();
}
public function html()
{
return "<a class='report-posts btn btn-sm btn-danger'><i class='fa fa-info-circle'></i>分配卡</a>";
}
}