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 "分配卡"; } }