dataList(1); return $this->render('index', $params); } private function dataList($type) { $request = Yii::$app->request; $serialNo = $request->get('serial_no'); $mac = $request->get('mac'); $project = $request->get('project'); $model = $request->get('model'); $production = $request->get('production'); $manufacture = $request->get('manufacture'); $deviceId = $request->get('device_id'); $status = $request->get('status'); $startApplyAt = $request->get('start_apply_at'); $endApplyAt = $request->get('end_apply_at'); $startAuthAt = $request->get('start_auth_at'); $endAuthAt = $request->get('end_auth_at'); $has_re_auth = $request->get('has_re_auth'); $page = $request->get('page'); $where = [ 'and', ['=','a.is_delete', 0] ]; if (!empty($serialNo)) { $where[] = ['like', 'a.serial_no', $serialNo]; } if (!empty($project)) { $where[] = ['like', 'p.name', $project]; } if (!empty($model)) { $where[] = ['like', 'mo.name', $model]; } if (!empty($production)) { $where[] = ['like', 'pd.name', $production]; } if (!empty($mac)) { $where[] = ['like', 'a.mac', $mac]; } if (!empty($manufacture)) { $where[] = ['like', 'm.name', $manufacture]; } if (!empty($deviceId)) { $where[] = ['like', 'a.device_id', $deviceId]; } if ($startApplyAt) { $where[] = ['>=', 'a.apply_at', strtotime($startApplyAt)]; } if ($endApplyAt) { $where[] = ['<=', 'a.apply_at', strtotime($endApplyAt) + 86400]; } if ($startAuthAt) { $where[] = ['>=', 'a.auth_at', strtotime($startAuthAt)]; } if ($endAuthAt) { $where[] = ['>=', 'a.auth_at', strtotime($endAuthAt) + 86400]; } if ($has_re_auth) { $where[] = ['=', 'a.has_re_auth', $has_re_auth]; } if (isset($_GET['status']) && -1 != $status) { $where[] = ['=', 'a.status', $status]; } else { $status = -1; } if (0 >= $page) { $page = 1; } if (1 == $type) { $pageSize = 20; $page = ($page -1) * $pageSize; $deviceData = DeviceRepository::getList($where, $pageSize, $page); $pages = new Pagination(['totalCount' => DeviceRepository::getListCount($where), 'pageSize' => $pageSize]); } else { $deviceData = DeviceRepository::getList($where, 0, 0); $pages = null; } $statusList = DeviceStatus::statusLabels(); // $params['statusList'] = $statusList; $params['deviceList'] = $deviceData; $params['pages'] = $pages; $params["gets"] = [ 'serial_no' => $serialNo, 'mac' => $mac, 'project' => $project, 'model' => $model, 'device_id' => $deviceId, 'production' => $production, 'manufacture' => $manufacture, 'start_apply_at' => $startApplyAt, 'end_apply_at' => $endApplyAt, 'start_auth_at' => $startAuthAt, 'end_auth_at' => $endAuthAt, 'has_re_auth' => $has_re_auth, 'status' => $status ]; return $params; } /** * @return string */ public function actionDeleteIndex() { $request = Yii::$app->request; $serialNo = $request->get('serial_no'); $mac = $request->get('mac'); $project = $request->get('project'); $model = $request->get('model'); $production = $request->get('production'); $manufacture = $request->get('manufacture'); $deviceId = $request->get('device_id'); $status = $request->get('status'); $startApplyAt = $request->get('start_apply_at'); $endApplyAt = $request->get('end_apply_at'); $startAuthAt = $request->get('start_auth_at'); $endAuthAt = $request->get('end_auth_at'); $page = $request->get('page'); $where = [ 'and', ['=','a.is_delete', 1] ]; if (!empty($serialNo)) { $where[] = ['like', 'a.serial_no', $serialNo]; } if (!empty($project)) { $where[] = ['like', 'p.name', $project]; } if (!empty($model)) { $where[] = ['like', 'mo.name', $model]; } if (!empty($production)) { $where[] = ['like', 'pd.name', $production]; } if (!empty($mac)) { $where[] = ['like', 'a.mac', $mac]; } if (!empty($manufacture)) { $where[] = ['like', 'm.name', $manufacture]; } if (!empty($deviceId)) { $where[] = ['like', 'a.device_id', $deviceId]; } if ($startApplyAt) { $where[] = ['>=', 'a.apply_at', strtotime($startApplyAt)]; } if ($endApplyAt) { $where[] = ['<=', 'a.apply_at', strtotime($endApplyAt) + 86400]; } if ($startAuthAt) { $where[] = ['>=', 'a.auth_at', strtotime($startAuthAt)]; } if ($endAuthAt) { $where[] = ['<=', 'a.auth_at', strtotime($endAuthAt) + 86400]; } if (isset($_GET['status']) && -1 != $status) { $where[] = ['=', 'a.status', $status]; } else { $status = -1; } if (0 >= $page) { $page = 1; } $pageSize = 20; $page = ($page -1) * $pageSize; // DeviceRepository::getList($where, $pageSize, $page); $deviceData = DeviceRepository::getList($where, $pageSize, $page); $pages = new Pagination(['totalCount' => DeviceRepository::getListCount($where), 'pageSize' => $pageSize]); $statusList = DeviceStatus::statusLabels(); // $params['statusList'] = $statusList; $params['deviceList'] = $deviceData; $params['pages'] = $pages; $params["gets"] = [ 'serial_no' => $serialNo, 'mac' => $mac, 'project' => $project, 'model' => $model, 'device_id' => $deviceId, 'production' => $production, 'manufacture' => $manufacture, 'start_apply_at' => $startApplyAt, 'end_apply_at' => $endApplyAt, 'start_auth_at' => $startAuthAt, 'end_auth_at' => $endAuthAt, 'status' => $status ]; return $this->render('delete-index', $params); } /** * @return string */ public function actionCreateDevice() { return $this->render('createDevice'); } /** * @return string * @throws \yii\db\Exception */ public function actionDoCreateDevice() { $req = Yii::$app->request; $manufactureId = $req->post('manufactureId'); $projectId = $req->post('projectId'); $modelId = $req->post('modelId'); $productionId = $req->post('productionId'); $manufactureNo = $req->post('manufactureNo'); $projectNo = $req->post('projectNo'); $modelNo = $req->post('modelNo'); $productionNo = $req->post('productionNo'); $num = $req->post('num'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; if (empty($num)) { $e->message = '数量不能为0'; return $this->renderJson($e); } if (1 * $num > 30000) { $e->message = '数量不能超过3万0'; return $this->renderJson($e); } $batchNo = strtoupper(Device::getBatchNo($manufactureNo, $projectNo, $modelNo, $productionNo)); $batchModel = CreateBatchRepository::findOne(['batch_no' => $batchNo]); if ($batchModel) { $e->message = '已经创建过这个批次序列号'; return $this->renderJson($e); } $item = [ 'batch_no' => $batchNo, 'manufacture_id' => $manufactureId, 'project_id' => $projectId, 'model_id' => $modelId, 'num' => $num, 'production_id' => $productionId, ]; $transaction = Yii::$app->db->beginTransaction(); try { $newBatchModel = CreateBatch::create($item); $saveData = []; $tt = time(); for ($i = 1 ; $i <= $num; $i++) { $saveData[] = [ strtoupper($batchNo.sprintf('%04x', $i)), Utils::macGenerate(), 0, $newBatchModel->id, 0, 0, 0, 0, $tt, $tt ]; } $res = Yii::$app->db->createCommand()->batchInsert(DeviceModel::tableName(), array('serial_no','mac','status','batch_id','is_delete','has_re_auth','apply_at','auth_at','created_at','updated_at'), $saveData)->execute();//执行批量添加 $transaction->commit(); $e->success = true; } catch (Exception $exception) { $transaction->rollBack(); $e->message = '创建失败'; } return $this->renderJson($e); } /** * @return string */ public function actionBatchItem() { $req = Yii::$app->request; $type = $req->post('type'); $keyword = $req->post('query'); $e = new stdClass(); $list = CreateBatchRepository::getSerialNoComponent($type, $keyword); $e->list = $list; return $this->renderJson($e); } /** * 导出数据 * @return string */ public function actionExport() { $params = $this->dataList(0); return $this->renderPartial('export', $params); } /** * @return string */ public function actionAuthFailIndex() { $request = Yii::$app->request; $serialNo = $request->get('serial_no'); $mac = $request->get('mac'); $project = $request->get('project'); $model = $request->get('model'); $production = $request->get('production'); $manufacture = $request->get('manufacture'); $deviceId = $request->get('device_id'); $status = $request->get('status'); $page = $request->get('page'); $where = [ 'and', ['=','a.is_delete', 0] ]; if (!empty($serialNo)) { $where[] = ['like', 'a.serial_no', $serialNo]; } if (!empty($project)) { $where[] = ['like', 'p.name', $project]; } if (!empty($model)) { $where[] = ['like', 'mo.name', $model]; } if (!empty($production)) { $where[] = ['like', 'pd.name', $production]; } if (!empty($mac)) { $where[] = ['like', 'a.mac', $mac]; } if (!empty($manufacture)) { $where[] = ['like', 'm.name', $manufacture]; } if (!empty($deviceId)) { $where[] = ['like', 'a.device_id', $deviceId]; } if (isset($_GET['status']) && -1 != $status) { $where[] = ['=', 'a.status', $status]; } if (0 >= $page) { $page = 1; } $pageSize = 20; $page = ($page -1) * $pageSize; // DeviceRepository::getList($where, $pageSize, $page); $deviceData = DeviceAuthFailRepository::getList($where, $pageSize, $page); $pages = new Pagination(['totalCount' => DeviceAuthFailRepository::getListCount($where), 'pageSize' => $pageSize]); $params['deviceList'] = $deviceData; $params['pages'] = $pages; $params["gets"] = [ 'project' => $project, 'model' => $model, 'device_id' => $deviceId, 'production' => $production, 'manufacture' => $manufacture, ]; return $this->render('auth-fail-index', $params); } /** * @return string */ public function actionAuthDevice() { $req = Yii::$app->request; $id = $req->post('id'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $deviceModel = DeviceRepository::findOne(['id' => $id]); if (empty($deviceModel)) { $e->message = '找不到该设备'; return $this->renderJson($e); } if(DeviceStatus::HAS_AUTH == $deviceModel->status) { $e->message = '设备已经授权了'; return $this->renderJson($e); } if (empty($deviceModel->device_id)) { $e->message = '设备ID为空,不能授权'; return $this->renderJson($e); } $tt = time(); $deviceModel->apply_at = $tt; $deviceModel->auth_at = $tt; $deviceModel->status = DeviceStatus::HAS_AUTH; $result = $deviceModel->save(); if ($result) { $e->success = true; } else { $e->message = '授权失败'; } return $this->renderJson($e); } public function actionBatchAuthDevice() { $req = Yii::$app->request; $ids = $req->post('ids'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $ids = explode(',', $ids); $deviceModels = DeviceRepository::findAll(['id' => $ids]); if (empty($deviceModels)) { $e->message = '找不到该设备'; return $this->renderJson($e); } $isAuthCount = 0; $emptyDeviceIdCount = 0; $updateIds = []; foreach ($deviceModels as $k => $deviceModel ) { if(DeviceStatus::HAS_AUTH == $deviceModel->status) { $isAuthCount++; } if (empty($deviceModel->device_id)) { $emptyDeviceIdCount++; } if (DeviceStatus::HAS_AUTH != $deviceModel->status && $deviceModel->device_id) { $updateIds[] = $deviceModel->id; } } $tt = time(); if ($updateIds) { $attr = [ 'auth_at' => $tt, 'status' => DeviceStatus::HAS_AUTH ]; $condition = [ 'id' => $updateIds ]; DeviceModel::updateAll($attr, $condition); $e->success = true; $e->message = '成功授权'.count($updateIds).'个设备'; } else { $e->message = '设备ID都为空或部分设备已经授权过,授权失败'; } return $this->renderJson($e); } /** * @return string */ public function actionDelDevice() { $req = Yii::$app->request; $id = $req->post('id'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $deviceModel = DeviceRepository::findOne(['id' => $id]); if (empty($deviceModel)) { $e->message = '找不到该设备'; return $this->renderJson($e); } if (empty($deviceModel->device_id) || DeviceStatus::HAS_AUTH != $deviceModel->status) { $e->message = '必须是授权成功且有设备ID的才能删除'; return $this->renderJson($e); } $tt = time(); $deviceModel->is_delete = 1; $result = $deviceModel->save(); if ($result) { $e->success = true; } else { $e->message = '删除失败'; } return $this->renderJson($e); } /** * @return string */ public function actionBatchDelDevice() { $req = Yii::$app->request; $ids = $req->post('ids'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $ids = explode(',', $ids); $deviceModels = DeviceRepository::findAll(['id' => $ids]); if (empty($deviceModels)) { $e->message = '找不到该设备'; return $this->renderJson($e); } $tt = time(); $delCount = 0; $deleteIds = []; foreach ($deviceModels as $k => $deviceModel) { if ($deviceModel->device_id && DeviceStatus::HAS_AUTH == $deviceModel->status) { $deleteIds[] = $deviceModel->id; $delCount++; } } $attr = [ 'is_delete' => 1 ]; $condition = [ 'id' => $deleteIds ]; DeviceModel::updateAll($attr, $condition); if ($delCount > 0) { $e->message = '成功删除'.$delCount .'个设备'; $e->success = true; } else { $e->message = '必须是授权成功的设备才能删除,删除失败'; } return $this->renderJson($e); } /** * @return string */ public function actionDoEdit() { $req = Yii::$app->request; $id = $req->post('id'); $mac = $req->post('mac'); $deviceId = $req->post('deviceId'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; if (empty($deviceId) || empty($mac)) { $e->message = 'mac地址和设备ID不能为空'; return $this->renderJson($e); } $deviceFind = DeviceModel::find(); $deviceFind->where([ 'or', ['=', 'device_id', $deviceId], ['=', 'mac', $mac] ]); $deviceFind->andWhere(['<>', 'id', $id]); $rows = $deviceFind->all(); if ($rows) { $e->message = '已经存在mac地址或设备ID'; return $this->renderJson($e); } $deviceModel = DeviceRepository::findOne(['id' => $id]); if (empty($deviceModel)) { $e->message = '未找到记录'; return $this->renderJson($e); } $deviceModel->mac = $mac; $deviceModel->device_id = $deviceId; if ($deviceModel->save()) { $e->success = true; return $this->renderJson($e); } else { $e->message = '保存失败'; return $this->renderJson($e); } } /** * @return string */ public function actionDoEditFail() { $req = Yii::$app->request; $id = $req->post('id'); $deviceId = $req->post('deviceId'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; if (empty($deviceId)) { $e->message = '设备ID不能为空'; return $this->renderJson($e); } $deviceFind = DeviceAuthFailModel::find(); $deviceFind->where([ 'or', ['=', 'device_id', $deviceId], ]); $deviceFind->andWhere(['<>', 'id', $id]); $rows = $deviceFind->all(); if ($rows) { $e->message = '设备ID已经存在'; return $this->renderJson($e); } $deviceModel = DeviceAuthFailRepository::findOne(['id' => $id]); if (empty($deviceModel)) { $e->message = '未找到记录'; return $this->renderJson($e); } $deviceModel->device_id = $deviceId; if ($deviceModel->save()) { $e->success = true; return $this->renderJson($e); } else { $e->message = '保存失败'; return $this->renderJson($e); } } /** * @return string * @throws \yii\db\Exception */ public function actionReAuth() { $req = Yii::$app->request; $id = $req->post('id'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $deviceFailModel = DeviceAuthFailRepository::findOne(['id' => $id, 'is_delete' => 0]); if (empty($deviceFailModel)) { $e->message = '未找到记录'; return $this->renderJson($e); } $batchNo = Device::getBatchNo($deviceFailModel->manufacture_no, $deviceFailModel->project_no, $deviceFailModel->model_no, $deviceFailModel->production_no); $deviceId = $deviceFailModel->device_id; $tt = time(); $batchInfo = CreateBatchRepository::findOne(['batch_no' => $batchNo]); if (empty($batchInfo)) { $e->message = '该厂商未生产过该批次的设备无法处理'; return $this->renderJson($e); } $batchId = $batchInfo->id; $deviceModel = DeviceRepository::findOne(['device_id' => $deviceFailModel->device_id , 'is_delete' => 0]); if ($deviceModel) { if (DeviceStatus::HAS_AUTH == $deviceModel->status) { $e->mac = $deviceModel->mac; $e->message = '已经存在该授权设备'; $e->success = false; } elseif(DeviceStatus::NO_AUTH == $deviceModel->status) { $deviceModel->status = DeviceStatus::HAS_AUTH; $deviceModel->auth_at = time(); $deviceModel->save(); $e->message = '已经存在该授权设备'; $e->success = false; } else { $e->message = '处理失败'; } return $this->renderJson($e); } $needGen = DeviceRepository::checkNeedAutoGen($batchId, $batchInfo->num); if ($needGen) { $trans = Yii::$app->getDb()->beginTransaction(); try { $genDeviceModel = Device::createWithMacSerialNo($batchId, $batchNo, $deviceId, $tt, 0, DeviceStatus::HAS_AUTH); $deviceFailModel->is_delete = 1; $deviceFailModel->save(); $trans->commit(); $e->message = '处理成功'; $e->success = true; } catch(Exception $exception) { $trans->rollBack(); $e->message = '处理失败, 请再次重处理!'; $e->success = false; } return $this->renderJson($e); } // 找到未空白未绑定的设备序列号 $newDeviceModel = DeviceRepository::findOne(['device_id' => null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); if (empty($newDeviceModel)) { $e->message = '处理失败,系统参数有误'; return $this->renderJson($e); } $trans = Yii::$app->getDb()->beginTransaction(); try { $newDeviceModel->device_id = $deviceId; $newDeviceModel->status = DeviceStatus::HAS_AUTH; $newDeviceModel->apply_at = $tt ; $newDeviceModel->auth_at = $tt; $newDeviceModel->save(); $deviceFailModel->is_delete = 1; $deviceFailModel->save(); $trans->commit(); $e->message = '处理成功'; $e->success = true; } catch (Exception $exception) { $trans->rollBack(); $e->message = '处理失败'; $e->success = false; } return $this->renderJson($e); } /** * @return string * @throws \yii\db\Exception */ public function actionBatchReAuth() { $req = Yii::$app->request; $ids = $req->post('ids'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $ids = explode(',', $ids); $deviceFailModels = DeviceAuthFailRepository::findAll(['id' => $ids, 'is_delete' => 0]); if (empty($deviceFailModels)) { $e->message = '未找到记录'; return $this->renderJson($e); } $tt = time(); $exitCount = 0; $successCount = 0; $failCount = 0; $notExitCount = 0; $deviceExitCount = 0; foreach ($deviceFailModels as $k => $deviceFailModel) { $batchNo = Device::getBatchNo($deviceFailModel->manufacture_no, $deviceFailModel->project_no, $deviceFailModel->model_no, $deviceFailModel->production_no); $deviceId = $deviceFailModel->device_id ; $batchInfo = CreateBatchRepository::findOne(['batch_no' => $batchNo]); if (empty($batchInfo)) { //该厂商未生产过该批次的设备无法生成 $notExitCount++; continue; } $batchId = $batchInfo->id; $deviceModel = DeviceRepository::findOne(['device_id' => $deviceId, 'is_delete' => 0]); if ($deviceModel) { //该设备已经授权过 if (DeviceStatus::HAS_AUTH == $deviceModel->status) { $deviceExitCount++; } elseif(DeviceStatus::NO_AUTH == $deviceModel->status) { $deviceModel->status = DeviceStatus::HAS_AUTH; $deviceModel->auth_at = time(); $deviceModel->save(); $deviceExitCount++; } else { $deviceExitCount++; } continue; } $needGen = DeviceRepository::checkNeedAutoGen($batchId, $batchInfo->num); if ($needGen) { $trans = Yii::$app->getDb()->beginTransaction(); try { $genDeviceModel = Device::createWithMacSerialNo($batchId, $batchNo, $deviceId, $tt, 0, DeviceStatus::HAS_AUTH); $deviceFailModel->is_delete = 1; $deviceFailModel->save(); $trans->commit(); $successCount++; } catch(Exception $exception) { $trans->rollBack(); $failCount++; } } else { $newDeviceModel = DeviceRepository::findOne(['device_id' => null, 'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); if (empty($newDeviceModel)) { $failCount++; continue; } $trans = Yii::$app->getDb()->beginTransaction(); try { $newDeviceModel->device_id = $deviceId; $newDeviceModel->status = DeviceStatus::HAS_AUTH; $newDeviceModel->apply_at = $tt ; $newDeviceModel->auth_at = $tt; $newDeviceModel->save(); $deviceFailModel->is_delete = 1; $deviceFailModel->save(); $trans->commit(); $successCount++; } catch (Exception $exception) { $trans->rollBack(); $failCount++; } } } if ($successCount > 0) { $e->message = '成功处理了'.$successCount.'个设备。'; if ($failCount > 0) { $e->message = $e->message .'另外有'.$failCount.'个处理失败。'; } if ($exitCount > 0) { $e->message = '有'.$exitCount.'个生成序列号失败,请重试'; } $e->success = true; } else { $e->message = '处理失败。'; if ($failCount > 0) { $e->message = $e->message .'共有'.$failCount.'个处理失败'; } if ($notExitCount > 0) { $e->message = '发现有'.$notExitCount.'个没有厂商批次的设备。'; } if ($deviceExitCount > 0) { $e->message = '发现有'.$deviceExitCount.'个设备已经授权过了'; } //$exitCount if ($exitCount > 0) { $e->message = '有'.$exitCount.'个生成序列号失败,请重试'; } } return $this->renderJson($e); } /** * 恢复删除的设备 * @return string */ public function actionRestoreDevice() { $req = Yii::$app->request; $id = $req->post('id'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $delDevice = DeviceRepository::findOne(['id' => $id, 'is_delete' => 1]); if (!$delDevice) { $e->message = '未找到该设备'; return $this->renderJson($e); } // 检测当前批次是否已经满了,能否恢复 $batchModel = CreateBatchRepository::findOne(['id' => $delDevice->batch_id]); if (empty($batchModel)) { $e->message = '未找到厂商对应的批次无法恢复'; return $this->renderJson($e); } $where = [ 'and', ['=', 'batch_id' , $batchModel->id], ['=', 'is_delete', 0], ['is not', 'device_id', Null] ]; $count = DeviceRepository::rowsCount($where); if (($count *1) >= ($batchModel->num * 1)) { $e->message = '该厂商的批次已满,无法恢复该设备'; return $this->renderJson($e); } // 检测当前设备ID是否存在表里面 $exitDevice = DeviceRepository::findOne(['device_id' => $delDevice->device_id, 'is_delete' => 0]); if ($exitDevice) { $e->message = '该设备ID已经存在序列号表里面,无法恢复'; return $this->renderJson($e); } $delDevice->is_delete = 0; $delDevice->auth_at = null; $delDevice->status = DeviceStatus::NO_AUTH; $saveResult = $delDevice->save(); if ($saveResult) { $e->success = true; $e->message = '恢复成功'; } else { $e->message = '恢复失败'; } return $this->renderJson($e); } /** * @return string */ public function actionBatchRestoreDevice() { $req = Yii::$app->request; $ids = $req->post('ids'); $e = new stdClass(); $e->success = false; $e->message = 'fail'; $ids = explode(',', $ids); $delDevices = DeviceRepository::findAll(['id' => $ids, 'is_delete' => 1]); if (!$delDevices) { $e->message = '未找到设备'; return $this->renderJson($e); } $fullCount = 0; $exitCount = 0; $restoreArr = []; // 检测当前批次是否已经满了,能否恢复 foreach ($delDevices as $k => $delDevice) { $batchModel = CreateBatchRepository::findOne(['id' => $delDevice->batch_id]); if (empty($batchModel)) { continue; } $where = [ 'and', ['=', 'batch_id' , $delDevice->batch_id], ['=', 'is_delete', 0], ['is not', 'device_id', Null] ]; $count = DeviceRepository::rowsCount($where); if (($count *1) >= ($batchModel->num * 1)) { $fullCount++; continue; } // 检测当前设备ID是否存在表里面 $exitDevice = DeviceRepository::findOne(['device_id' => $delDevice->device_id, 'is_delete' => 0]); if ($exitDevice) { $exitCount++; } if (!$exitDevice && ($count *1) < ($batchModel->num * 1)) { $restoreArr[] = $delDevice->id; } } $restoreArr = array_unique($restoreArr); if (!$restoreArr) { $e->message = '设备不满足恢复条件,无法恢复'; return $this->renderJson($e); } $attr = [ 'is_delete' => 0, 'auth_at' => null, 'status' => DeviceStatus::NO_AUTH ]; $condition = [ 'id' => $restoreArr ]; $saveResult = DeviceModel::updateAll($attr, $condition); if ($saveResult) { $e->success = true; $e->message = '成功恢复'.count($restoreArr).'台设备'; } else { $e->message = '恢复失败,系统错误'; } return $this->renderJson($e); } public function actionBatchIndex() { return $this->render('batch-index'); } }