提交代码
This commit is contained in:
97
app/Admin/Actions/AllotCard.php
Normal file
97
app/Admin/Actions/AllotCard.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<?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>";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user