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]; } 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, 'status' => $status ]; return $this->render('index', $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'); $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 (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, '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 actionSearchItem() { $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 actionExportDa() { $request = Yii::$app->request; } 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); } /** * @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); } $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 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); $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]); if ($deviceModel) { $e->message = '该设备已经授权过'; return $this->renderJson($e); } $count = DeviceRepository::rowsCount(['batch_id' => $batchId, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); if (($count *1) >= ($batchInfo->num * 1)) { $exitDeviceModel = DeviceModel::find(); $exitDeviceModel->where(['batch_id' => $batchId]); $exitDeviceModel->orderBy('serial_no desc'); $exitDevice = $exitDeviceModel->one(); $serialNo = ''; if ($exitDevice) { $numNo = mb_substr($exitDevice->serial_no, -4); $no1 = hexdec($numNo); $no =($no1 * 1) + 1; $newNo = sprintf('%04X', $no); $serialNo = $batchNo.$newNo; } $macAddress = Utils::macGenerate(); $deviceFind = DeviceModel::find(); $deviceFind->where( [ 'or', ['=', 'serial_no', $serialNo], ['=', 'mac', $macAddress] ] ); $checkDevice = $deviceFind->one(); if ($checkDevice) { $e->message = 'MAC地址或序列号已经存在,请再授权一次'; return $this->renderJson($e); } $trans = Yii::$app->getDb()->beginTransaction(); try { $newDevice = new DeviceModel(); $newDevice->serial_no = $serialNo; $newDevice->mac = $macAddress; $newDevice->device_id = $deviceFailModel->device_id; $newDevice->batch_id = $batchId; $newDevice->status = DeviceStatus::HAS_AUTH; $newDevice->has_re_auth = 1; $newDevice->apply_at = time(); $newDevice->save(); $deviceFailModel->is_delete = 1; $deviceFailModel->save(); $trans->commit(); $e->success = true; return $this->renderJson($e); } catch (Exception $exception){ $trans->rollBack(); $e->message = '授权失败'; return $this->renderJson($e); } } else { $newDeviceModel = DeviceRepository::findOne(['device_id'=> null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); $newDeviceModel->device_id = $deviceFailModel->device_id; $newDeviceModel->status = DeviceStatus::HAS_AUTH; $newDeviceModel->apply_at = time(); $newDeviceModel->auth_at = time(); $newDeviceModel->status = DeviceStatus::HAS_AUTH; $saveResult = $newDeviceModel->save(); if ($saveResult) { $e->success = true; } else { $e->message = '授权失败'; } return $this->renderJson($e); } } public function actionBatchIndex() { return $this->render('batch-index'); } }