Commit 37a28dcce831e3165b29d360954d76fdbacac5bc
1 parent
27252b60
Exists in
master
1. F 授权接口调整,有重大的bug
2. F 版本管理代码被覆盖了
Showing
12 changed files
with
912 additions
and
113 deletions
Show diff stats
app-api/controllers/AuthDeviceController.php
@@ -72,16 +72,7 @@ class AuthDeviceController extends BaseController | @@ -72,16 +72,7 @@ class AuthDeviceController extends BaseController | ||
72 | $e->message = '签名有误'; | 72 | $e->message = '签名有误'; |
73 | return $e; | 73 | return $e; |
74 | } | 74 | } |
75 | - // 检测是否授权过了的设备 | ||
76 | - // 这里还得判读删除之后恢复的,状态是未授权 | ||
77 | - $deviceModel = DeviceRepository::findOne(['device_id' => $deviceId, 'is_delete' => 0]); | ||
78 | - if ($deviceModel && DeviceStatus::HAS_AUTH == $deviceModel->status) { | ||
79 | - $e->mac = $deviceModel->mac; | ||
80 | - $e->serial_no = $deviceModel->serial_no; | ||
81 | - $e->message = 'ok'; | ||
82 | - $e->status = 5; | ||
83 | - return $e; | ||
84 | - } | 75 | + |
85 | $authResult = Device::authDevice($deviceId, $manufactureNo, $projectNo, $modelNo, $productionNo); | 76 | $authResult = Device::authDevice($deviceId, $manufactureNo, $projectNo, $modelNo, $productionNo); |
86 | 77 | ||
87 | if ($authResult->success) { | 78 | if ($authResult->success) { |
@@ -93,6 +84,9 @@ class AuthDeviceController extends BaseController | @@ -93,6 +84,9 @@ class AuthDeviceController extends BaseController | ||
93 | $e->status = 4; | 84 | $e->status = 4; |
94 | $e->message = $authResult->message; | 85 | $e->message = $authResult->message; |
95 | } | 86 | } |
87 | + if ($authResult->status > 0) { | ||
88 | + $e->status = $authResult->status; | ||
89 | + } | ||
96 | 90 | ||
97 | return $e; | 91 | return $e; |
98 | } | 92 | } |
app-ht/modules/datas/views/device/device-list.php
@@ -61,7 +61,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -61,7 +61,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
61 | </div> | 61 | </div> |
62 | </div> | 62 | </div> |
63 | <div class="panel" style="margin-bottom: 0"> | 63 | <div class="panel" style="margin-bottom: 0"> |
64 | - <div style="padding:10px ;20px;box-sizing: border-box">><b>厂商:</b><?=$gets['manufacture']?> <b>项目:</b><?=$gets['project']?> <b>型号:</b><?=$gets['model']?> <b>生产日期:</b><?=$gets['production']?> | 64 | + <div style="padding:10px ;20px;box-sizing: border-box"><b>厂商:</b><?=$gets['manufacture']?> <b>项目:</b><?=$gets['project']?> <b>型号:</b><?=$gets['model']?> <b>生产日期:</b><?=$gets['production']?> |
65 | <b> 批次编号:</b><?=$gets['batch_no']?> | 65 | <b> 批次编号:</b><?=$gets['batch_no']?> |
66 | </div> | 66 | </div> |
67 | </div> | 67 | </div> |
app-ht/modules/device/controllers/DeviceController.php
@@ -28,6 +28,12 @@ class DeviceController extends BaseController | @@ -28,6 +28,12 @@ class DeviceController extends BaseController | ||
28 | */ | 28 | */ |
29 | public function actionIndex() | 29 | public function actionIndex() |
30 | { | 30 | { |
31 | + $params = $this->dataList(1); | ||
32 | + return $this->render('index', $params); | ||
33 | + } | ||
34 | + | ||
35 | + private function dataList($type) | ||
36 | + { | ||
31 | $request = Yii::$app->request; | 37 | $request = Yii::$app->request; |
32 | $serialNo = $request->get('serial_no'); | 38 | $serialNo = $request->get('serial_no'); |
33 | $mac = $request->get('mac'); | 39 | $mac = $request->get('mac'); |
@@ -95,11 +101,16 @@ class DeviceController extends BaseController | @@ -95,11 +101,16 @@ class DeviceController extends BaseController | ||
95 | if (0 >= $page) { | 101 | if (0 >= $page) { |
96 | $page = 1; | 102 | $page = 1; |
97 | } | 103 | } |
98 | - $pageSize = 20; | ||
99 | - $page = ($page -1) * $pageSize; | ||
100 | - // DeviceRepository::getList($where, $pageSize, $page); | ||
101 | - $deviceData = DeviceRepository::getList($where, $pageSize, $page); | ||
102 | - $pages = new Pagination(['totalCount' => DeviceRepository::getListCount($where), 'pageSize' => $pageSize]); | 104 | + if (1 == $type) { |
105 | + $pageSize = 20; | ||
106 | + $page = ($page -1) * $pageSize; | ||
107 | + $deviceData = DeviceRepository::getList($where, $pageSize, $page); | ||
108 | + $pages = new Pagination(['totalCount' => DeviceRepository::getListCount($where), 'pageSize' => $pageSize]); | ||
109 | + } else { | ||
110 | + $deviceData = DeviceRepository::getList($where, 0, 0); | ||
111 | + $pages = null; | ||
112 | + } | ||
113 | + | ||
103 | $statusList = DeviceStatus::statusLabels(); // | 114 | $statusList = DeviceStatus::statusLabels(); // |
104 | 115 | ||
105 | $params['statusList'] = $statusList; | 116 | $params['statusList'] = $statusList; |
@@ -121,7 +132,7 @@ class DeviceController extends BaseController | @@ -121,7 +132,7 @@ class DeviceController extends BaseController | ||
121 | 'status' => $status | 132 | 'status' => $status |
122 | ]; | 133 | ]; |
123 | 134 | ||
124 | - return $this->render('index', $params); | 135 | + return $params; |
125 | } | 136 | } |
126 | 137 | ||
127 | /** | 138 | /** |
@@ -319,16 +330,21 @@ class DeviceController extends BaseController | @@ -319,16 +330,21 @@ class DeviceController extends BaseController | ||
319 | 330 | ||
320 | return $this->renderJson($e); | 331 | return $this->renderJson($e); |
321 | } | 332 | } |
333 | + | ||
322 | /** | 334 | /** |
323 | - * 导出订单数据 | 335 | + * 导出数据 |
324 | * @return string | 336 | * @return string |
325 | */ | 337 | */ |
326 | - public function actionExportDa() | 338 | + public function actionExport() |
327 | { | 339 | { |
328 | - $request = Yii::$app->request; | 340 | + $params = $this->dataList(0); |
341 | + return $this->renderPartial('export', $params); | ||
329 | 342 | ||
330 | } | 343 | } |
331 | 344 | ||
345 | + /** | ||
346 | + * @return string | ||
347 | + */ | ||
332 | public function actionAuthFailIndex() | 348 | public function actionAuthFailIndex() |
333 | { | 349 | { |
334 | $request = Yii::$app->request; | 350 | $request = Yii::$app->request; |
@@ -429,6 +445,55 @@ class DeviceController extends BaseController | @@ -429,6 +445,55 @@ class DeviceController extends BaseController | ||
429 | return $this->renderJson($e); | 445 | return $this->renderJson($e); |
430 | } | 446 | } |
431 | 447 | ||
448 | + | ||
449 | + public function actionBatchAuthDevice() | ||
450 | + { | ||
451 | + $req = Yii::$app->request; | ||
452 | + $ids = $req->post('ids'); | ||
453 | + $e = new stdClass(); | ||
454 | + $e->success = false; | ||
455 | + $e->message = 'fail'; | ||
456 | + $ids = explode(',', $ids); | ||
457 | + $deviceModels = DeviceRepository::findAll(['id' => $ids]); | ||
458 | + if (empty($deviceModels)) { | ||
459 | + $e->message = '找不到该设备'; | ||
460 | + return $this->renderJson($e); | ||
461 | + } | ||
462 | + | ||
463 | + $isAuthCount = 0; | ||
464 | + $emptyDeviceIdCount = 0; | ||
465 | + $updateIds = []; | ||
466 | + foreach ($deviceModels as $k => $deviceModel ) { | ||
467 | + if(DeviceStatus::HAS_AUTH == $deviceModel->status) { | ||
468 | + $isAuthCount++; | ||
469 | + } | ||
470 | + if (empty($deviceModel->device_id)) { | ||
471 | + $emptyDeviceIdCount++; | ||
472 | + } | ||
473 | + if (DeviceStatus::HAS_AUTH != $deviceModel->status && $deviceModel->device_id) { | ||
474 | + $updateIds[] = $deviceModel->id; | ||
475 | + } | ||
476 | + } | ||
477 | + | ||
478 | + $tt = time(); | ||
479 | + if ($updateIds) { | ||
480 | + $attr = [ | ||
481 | + 'auth_at' => $tt, | ||
482 | + 'status' => DeviceStatus::HAS_AUTH | ||
483 | + ]; | ||
484 | + $condition = [ | ||
485 | + 'id' => $updateIds | ||
486 | + ]; | ||
487 | + DeviceModel::updateAll($attr, $condition); | ||
488 | + $e->success = true; | ||
489 | + $e->message = '成功授权'.count($updateIds).'个设备'; | ||
490 | + } else { | ||
491 | + $e->message = '设备ID都为空或部分设备已经授权过,授权失败'; | ||
492 | + } | ||
493 | + | ||
494 | + return $this->renderJson($e); | ||
495 | + } | ||
496 | + | ||
432 | /** | 497 | /** |
433 | * @return string | 498 | * @return string |
434 | */ | 499 | */ |
@@ -444,9 +509,11 @@ class DeviceController extends BaseController | @@ -444,9 +509,11 @@ class DeviceController extends BaseController | ||
444 | $e->message = '找不到该设备'; | 509 | $e->message = '找不到该设备'; |
445 | return $this->renderJson($e); | 510 | return $this->renderJson($e); |
446 | } | 511 | } |
447 | - | 512 | + if (empty($deviceModel->device_id) || DeviceStatus::HAS_AUTH != $deviceModel->status) { |
513 | + $e->message = '必须是授权成功且有设备ID的才能删除'; | ||
514 | + return $this->renderJson($e); | ||
515 | + } | ||
448 | $tt = time(); | 516 | $tt = time(); |
449 | - | ||
450 | $deviceModel->is_delete = 1; | 517 | $deviceModel->is_delete = 1; |
451 | $result = $deviceModel->save(); | 518 | $result = $deviceModel->save(); |
452 | if ($result) { | 519 | if ($result) { |
@@ -461,6 +528,50 @@ class DeviceController extends BaseController | @@ -461,6 +528,50 @@ class DeviceController extends BaseController | ||
461 | /** | 528 | /** |
462 | * @return string | 529 | * @return string |
463 | */ | 530 | */ |
531 | + public function actionBatchDelDevice() | ||
532 | + { | ||
533 | + $req = Yii::$app->request; | ||
534 | + $ids = $req->post('ids'); | ||
535 | + $e = new stdClass(); | ||
536 | + $e->success = false; | ||
537 | + $e->message = 'fail'; | ||
538 | + $ids = explode(',', $ids); | ||
539 | + $deviceModels = DeviceRepository::findAll(['id' => $ids]); | ||
540 | + if (empty($deviceModels)) { | ||
541 | + $e->message = '找不到该设备'; | ||
542 | + return $this->renderJson($e); | ||
543 | + } | ||
544 | + | ||
545 | + $tt = time(); | ||
546 | + $delCount = 0; | ||
547 | + $deleteIds = []; | ||
548 | + foreach ($deviceModels as $k => $deviceModel) { | ||
549 | + if ($deviceModel->device_id && DeviceStatus::HAS_AUTH == $deviceModel->status) { | ||
550 | + $deleteIds[] = $deviceModel->id; | ||
551 | + $delCount++; | ||
552 | + } | ||
553 | + } | ||
554 | + $attr = [ | ||
555 | + 'is_delete' => 1 | ||
556 | + ]; | ||
557 | + $condition = [ | ||
558 | + 'id' => $deleteIds | ||
559 | + ]; | ||
560 | + DeviceModel::updateAll($attr, $condition); | ||
561 | + | ||
562 | + if ($delCount > 0) { | ||
563 | + $e->message = '成功删除'.$delCount .'个设备'; | ||
564 | + $e->success = true; | ||
565 | + } else { | ||
566 | + $e->message = '必须是授权成功的设备才能删除,删除失败'; | ||
567 | + } | ||
568 | + | ||
569 | + return $this->renderJson($e); | ||
570 | + } | ||
571 | + | ||
572 | + /** | ||
573 | + * @return string | ||
574 | + */ | ||
464 | public function actionDoEdit() | 575 | public function actionDoEdit() |
465 | { | 576 | { |
466 | $req = Yii::$app->request; | 577 | $req = Yii::$app->request; |
@@ -564,11 +675,11 @@ class DeviceController extends BaseController | @@ -564,11 +675,11 @@ class DeviceController extends BaseController | ||
564 | $batchNo = Device::getBatchNo($deviceFailModel->manufacture_no, $deviceFailModel->project_no, $deviceFailModel->model_no, $deviceFailModel->production_no); | 675 | $batchNo = Device::getBatchNo($deviceFailModel->manufacture_no, $deviceFailModel->project_no, $deviceFailModel->model_no, $deviceFailModel->production_no); |
565 | $batchInfo = CreateBatchRepository::findOne(['batch_no' => $batchNo]); | 676 | $batchInfo = CreateBatchRepository::findOne(['batch_no' => $batchNo]); |
566 | if (empty($batchInfo)) { | 677 | if (empty($batchInfo)) { |
567 | - $e->message = '该厂商未生产过该批次的设备无法生成'; | 678 | + $e->message = '该厂商未生产过该批次的设备无法处理'; |
568 | return $this->renderJson($e); | 679 | return $this->renderJson($e); |
569 | } | 680 | } |
570 | $batchId = $batchInfo->id; | 681 | $batchId = $batchInfo->id; |
571 | - $deviceModel = DeviceRepository::findOne(['device_id' => $deviceFailModel->device_id]); | 682 | + $deviceModel = DeviceRepository::findOne(['device_id' => $deviceFailModel->device_id , 'is_delete' => 0]); |
572 | if ($deviceModel) { | 683 | if ($deviceModel) { |
573 | $e->message = '该设备已经授权过'; | 684 | $e->message = '该设备已经授权过'; |
574 | return $this->renderJson($e); | 685 | return $this->renderJson($e); |
@@ -576,71 +687,224 @@ class DeviceController extends BaseController | @@ -576,71 +687,224 @@ class DeviceController extends BaseController | ||
576 | $count = DeviceRepository::rowsCount(['batch_id' => $batchId, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); | 687 | $count = DeviceRepository::rowsCount(['batch_id' => $batchId, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); |
577 | 688 | ||
578 | if (($count *1) >= ($batchInfo->num * 1)) { | 689 | if (($count *1) >= ($batchInfo->num * 1)) { |
579 | - $exitDeviceModel = DeviceModel::find(); | ||
580 | - $exitDeviceModel->where(['batch_id' => $batchId]); | ||
581 | - $exitDeviceModel->orderBy('serial_no desc'); | ||
582 | - $exitDevice = $exitDeviceModel->one(); | ||
583 | - $serialNo = ''; | ||
584 | - if ($exitDevice) { | ||
585 | - $numNo = mb_substr($exitDevice->serial_no, -4); | ||
586 | - $no1 = hexdec($numNo); | ||
587 | - $no =($no1 * 1) + 1; | ||
588 | - $newNo = sprintf('%04X', $no); | ||
589 | - $serialNo = $batchNo.$newNo; | 690 | + $trans = Yii::$app->getDb()->beginTransaction(); |
691 | + try { | ||
692 | + | ||
693 | + Device::createWithMacSerialNo($batchId, $batchNo, $deviceFailModel->device_id, $deviceFailModel->apply_at, 1, DeviceStatus::HAS_AUTH); | ||
694 | + // 设备改为删除了 | ||
695 | + $deviceFailModel->is_delete = 1; | ||
696 | + $deviceFailModel->save(); | ||
697 | + $trans->commit(); | ||
698 | + $e->success = true; | ||
699 | + return $this->renderJson($e); | ||
700 | + } catch (Exception $exception) { | ||
701 | + $trans->rollBack(); | ||
702 | + $e->message = '处理失败,请再尝试一次'; | ||
703 | + return $this->renderJson($e); | ||
590 | } | 704 | } |
591 | 705 | ||
592 | - $macAddress = Utils::macGenerate(); | ||
593 | - $deviceFind = DeviceModel::find(); | ||
594 | - $deviceFind->where( | ||
595 | - [ | ||
596 | - 'or', | ||
597 | - ['=', 'serial_no', $serialNo], | ||
598 | - ['=', 'mac', $macAddress] | ||
599 | - ] | ||
600 | - ); | ||
601 | - $checkDevice = $deviceFind->one(); | ||
602 | - if ($checkDevice) { | ||
603 | - $e->message = 'MAC地址或序列号已经存在,请再授权一次'; | 706 | + } else { |
707 | + $newDeviceModel = DeviceRepository::findOne(['device_id'=> null, 'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | ||
708 | + if (!$newDeviceModel) { | ||
709 | + $trans = Yii::$app->getDb()->beginTransaction(); | ||
710 | + try { | ||
711 | + Device::createWithMacSerialNo($batchId, $batchNo, $deviceFailModel->device_id, $deviceFailModel->apply_at, 1, DeviceStatus::HAS_AUTH); | ||
712 | + $deviceFailModel->is_delete = 1; | ||
713 | + $deviceFailModel->save(); | ||
714 | + $trans->commit(); | ||
715 | + $e->success = true; | ||
716 | + $e->message = '处理成功'; | ||
717 | + } catch (Exception $exception) { | ||
718 | + $trans->rollBack(); | ||
719 | + $e->message = '处理失败, 生成的设备序列号用完,请再点击处理一次'; | ||
720 | + } | ||
604 | return $this->renderJson($e); | 721 | return $this->renderJson($e); |
605 | } | 722 | } |
723 | + | ||
606 | $trans = Yii::$app->getDb()->beginTransaction(); | 724 | $trans = Yii::$app->getDb()->beginTransaction(); |
607 | try { | 725 | try { |
608 | - $newDevice = new DeviceModel(); | ||
609 | - $newDevice->serial_no = $serialNo; | ||
610 | - $newDevice->mac = $macAddress; | ||
611 | - $newDevice->device_id = $deviceFailModel->device_id; | ||
612 | - $newDevice->batch_id = $batchId; | ||
613 | - $newDevice->status = DeviceStatus::HAS_AUTH; | ||
614 | - $newDevice->has_re_auth = 1; | ||
615 | - $newDevice->apply_at = time(); | ||
616 | - $newDevice->save(); | 726 | + $newDeviceModel->device_id = $deviceFailModel->device_id; |
727 | + $newDeviceModel->status = DeviceStatus::HAS_AUTH; | ||
728 | + $newDeviceModel->apply_at = $deviceFailModel->apply_at; | ||
729 | + $newDeviceModel->auth_at = time(); | ||
730 | + $newDeviceModel->status = DeviceStatus::HAS_AUTH; | ||
731 | + $newDeviceModel->save(); | ||
732 | + | ||
617 | $deviceFailModel->is_delete = 1; | 733 | $deviceFailModel->is_delete = 1; |
618 | $deviceFailModel->save(); | 734 | $deviceFailModel->save(); |
619 | $trans->commit(); | 735 | $trans->commit(); |
620 | $e->success = true; | 736 | $e->success = true; |
737 | + $e->message = '处理成功'; | ||
621 | return $this->renderJson($e); | 738 | return $this->renderJson($e); |
622 | - } catch (Exception $exception){ | ||
623 | - | 739 | + } catch (Exception $exception) { |
624 | $trans->rollBack(); | 740 | $trans->rollBack(); |
625 | - $e->message = '授权失败'; | 741 | + $e->message = '处理失败,系统错误'; |
626 | return $this->renderJson($e); | 742 | return $this->renderJson($e); |
627 | } | 743 | } |
744 | + } | ||
745 | + } | ||
628 | 746 | ||
629 | - } else { | ||
630 | - $newDeviceModel = DeviceRepository::findOne(['device_id'=> null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | ||
631 | - $newDeviceModel->device_id = $deviceFailModel->device_id; | ||
632 | - $newDeviceModel->status = DeviceStatus::HAS_AUTH; | ||
633 | - $newDeviceModel->apply_at = time(); | ||
634 | - $newDeviceModel->auth_at = time(); | ||
635 | - $newDeviceModel->status = DeviceStatus::HAS_AUTH; | ||
636 | - $saveResult = $newDeviceModel->save(); | ||
637 | - if ($saveResult) { | ||
638 | - $e->success = true; | 747 | + /** |
748 | + * @return string | ||
749 | + * @throws \yii\db\Exception | ||
750 | + */ | ||
751 | + public function actionBatchReAuth() | ||
752 | + { | ||
753 | + $req = Yii::$app->request; | ||
754 | + $ids = $req->post('ids'); | ||
755 | + $e = new stdClass(); | ||
756 | + $e->success = false; | ||
757 | + $e->message = 'fail'; | ||
758 | + $ids = explode(',', $ids); | ||
759 | + $deviceFailModels = DeviceAuthFailRepository::findAll(['id' => $ids, 'is_delete' => 0]); | ||
760 | + if (empty($deviceFailModels)) { | ||
761 | + $e->message = '未找到记录'; | ||
762 | + return $this->renderJson($e); | ||
763 | + } | ||
764 | + $exitCount = 0; | ||
765 | + $successCount = 0; | ||
766 | + $failCount = 0; | ||
767 | + $notExitCount = 0; | ||
768 | + $deviceExitCount = 0; | ||
769 | + foreach ($deviceFailModels as $k => $deviceFailModel) { | ||
770 | + $batchNo = Device::getBatchNo($deviceFailModel->manufacture_no, $deviceFailModel->project_no, $deviceFailModel->model_no, $deviceFailModel->production_no); | ||
771 | + | ||
772 | + $batchInfo = CreateBatchRepository::findOne(['batch_no' => $batchNo]); | ||
773 | + if (empty($batchInfo)) { | ||
774 | + //该厂商未生产过该批次的设备无法生成 | ||
775 | + $notExitCount++; | ||
776 | + continue; | ||
777 | + } | ||
778 | + $batchId = $batchInfo->id; | ||
779 | + $deviceModel = DeviceRepository::findOne(['device_id' => $deviceFailModel->device_id , 'is_delete' => 0]); | ||
780 | + if ($deviceModel) { | ||
781 | + //该设备已经授权过 | ||
782 | + $deviceExitCount++; | ||
783 | + continue; | ||
784 | + } | ||
785 | + $count = DeviceRepository::rowsCount(['batch_id' => $batchId, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); | ||
786 | + | ||
787 | + if (($count *1) >= ($batchInfo->num * 1)) { | ||
788 | + $exitDeviceModel = DeviceModel::find(); | ||
789 | + $exitDeviceModel->where(['batch_id' => $batchId]); | ||
790 | + $exitDeviceModel->orderBy('serial_no desc'); | ||
791 | + $exitDevice = $exitDeviceModel->one(); | ||
792 | + $serialNo = ''; | ||
793 | + if ($exitDevice) { | ||
794 | + $numNo = mb_substr($exitDevice->serial_no, -4); | ||
795 | + $no1 = hexdec($numNo); | ||
796 | + $no =($no1 * 1) + 1; | ||
797 | + $newNo = sprintf('%04X', $no); | ||
798 | + $serialNo = $batchNo.$newNo; | ||
799 | + } | ||
800 | + | ||
801 | + $macAddress = Utils::macGenerate(); | ||
802 | + $deviceFind = DeviceModel::find(); | ||
803 | + $deviceFind->where( | ||
804 | + [ | ||
805 | + 'or', | ||
806 | + ['=', 'serial_no', $serialNo], | ||
807 | + ['=', 'mac', $macAddress] | ||
808 | + ] | ||
809 | + ); | ||
810 | + $checkDevice = $deviceFind->one(); | ||
811 | + if ($checkDevice) { | ||
812 | + //'MAC地址或序列号已经存在,请再处理一次'; | ||
813 | + $exitCount++; | ||
814 | + continue; | ||
815 | + } | ||
816 | + | ||
817 | + $trans = Yii::$app->getDb()->beginTransaction(); | ||
818 | + try { | ||
819 | + $item = [ | ||
820 | + 'serial_no' => $serialNo, | ||
821 | + 'mac' => $macAddress, | ||
822 | + 'device_id' => $deviceFailModel->device_id, | ||
823 | + 'batch_id' => $batchId, | ||
824 | + 'status' => DeviceStatus::HAS_AUTH, | ||
825 | + 'has_re_auth' => 1, | ||
826 | + 'apply_at' => $deviceFailModel->apply_at, | ||
827 | + 'auth_at' => time(), | ||
828 | + ]; | ||
829 | + Device::create($item); | ||
830 | + // 设备改为删除了 | ||
831 | + $deviceFailModel->is_delete = 1; | ||
832 | + $deviceFailModel->save(); | ||
833 | + $trans->commit(); | ||
834 | + $successCount++; | ||
835 | + | ||
836 | + } catch (Exception $exception) { | ||
837 | + $trans->rollBack(); | ||
838 | + $failCount++; | ||
839 | + } | ||
639 | } else { | 840 | } else { |
640 | - $e->message = '授权失败'; | 841 | + |
842 | + $newDeviceModel = DeviceRepository::findOne(['device_id'=> null, 'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | ||
843 | + if (!$newDeviceModel) { | ||
844 | + | ||
845 | + $trans = Yii::$app->getDb()->beginTransaction(); | ||
846 | + try { | ||
847 | + Device::createWithMacSerialNo($batchId, $batchNo, $deviceFailModel->device_id, $deviceFailModel->apply_at, 1, DeviceStatus::HAS_AUTH); | ||
848 | + $deviceFailModel->is_delete = 1; | ||
849 | + $deviceFailModel->save(); | ||
850 | + $trans->commit(); | ||
851 | + $successCount++; | ||
852 | + } catch (Exception $exception) { | ||
853 | + $trans->rollBack(); | ||
854 | + $failCount++; | ||
855 | + } | ||
856 | + | ||
857 | + } else { | ||
858 | + $trans = Yii::$app->getDb()->beginTransaction(); | ||
859 | + try { | ||
860 | + $newDeviceModel->device_id = $deviceFailModel->device_id; | ||
861 | + $newDeviceModel->status = DeviceStatus::HAS_AUTH; | ||
862 | + $newDeviceModel->apply_at = $deviceFailModel->apply_at; | ||
863 | + $newDeviceModel->auth_at = time(); | ||
864 | + $newDeviceModel->status = DeviceStatus::HAS_AUTH; | ||
865 | + $newDeviceModel->save(); | ||
866 | + | ||
867 | + $deviceFailModel->is_delete = 1; | ||
868 | + $deviceFailModel->save(); | ||
869 | + $trans->commit(); | ||
870 | + $successCount++; | ||
871 | + } catch (Exception $exception) { | ||
872 | + $trans->rollBack(); | ||
873 | + $failCount++; | ||
874 | + } | ||
875 | + } | ||
876 | + | ||
641 | } | 877 | } |
642 | - return $this->renderJson($e); | ||
643 | } | 878 | } |
879 | + | ||
880 | + if ($successCount > 0) { | ||
881 | + $e->message = '成功处理了'.$successCount.'个设备。'; | ||
882 | + if ($failCount > 0) { | ||
883 | + $e->message = $e->message .'另外有'.$failCount.'个处理失败。'; | ||
884 | + } | ||
885 | + if ($exitCount > 0) { | ||
886 | + $e->message = '有'.$exitCount.'个生成序列号失败,请重试'; | ||
887 | + } | ||
888 | + $e->success = true; | ||
889 | + } else { | ||
890 | + $e->message = '处理失败。'; | ||
891 | + if ($failCount > 0) { | ||
892 | + $e->message = $e->message .'共有'.$failCount.'个处理失败'; | ||
893 | + } | ||
894 | + if ($notExitCount > 0) { | ||
895 | + $e->message = '发现有'.$notExitCount.'个没有厂商批次的设备。'; | ||
896 | + } | ||
897 | + if ($deviceExitCount > 0) { | ||
898 | + $e->message = '发现有'.$deviceExitCount.'个设备已经授权过了'; | ||
899 | + } | ||
900 | + //$exitCount | ||
901 | + if ($exitCount > 0) { | ||
902 | + $e->message = '有'.$exitCount.'个生成序列号失败,请重试'; | ||
903 | + } | ||
904 | + | ||
905 | + } | ||
906 | + | ||
907 | + return $this->renderJson($e); | ||
644 | } | 908 | } |
645 | 909 | ||
646 | /** | 910 | /** |
@@ -655,7 +919,100 @@ class DeviceController extends BaseController | @@ -655,7 +919,100 @@ class DeviceController extends BaseController | ||
655 | $e->success = false; | 919 | $e->success = false; |
656 | $e->message = 'fail'; | 920 | $e->message = 'fail'; |
657 | $delDevice = DeviceRepository::findOne(['id' => $id, 'is_delete' => 1]); | 921 | $delDevice = DeviceRepository::findOne(['id' => $id, 'is_delete' => 1]); |
922 | + if (!$delDevice) { | ||
923 | + $e->message = '未找到该设备'; | ||
924 | + return $this->renderJson($e); | ||
925 | + } | ||
926 | + // 检测当前批次是否已经满了,能否恢复 | ||
927 | + $batchModel = CreateBatchRepository::findOne(['id' => $delDevice->batch_id]); | ||
928 | + if (empty($batchModel)) { | ||
929 | + $e->message = '未找到厂商对应的批次无法恢复'; | ||
930 | + return $this->renderJson($e); | ||
931 | + } | ||
932 | + $count = DeviceRepository::rowsCount(['batch_id' => $batchModel->id, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); | ||
658 | 933 | ||
934 | + if (($count *1) >= ($batchModel->num * 1)) { | ||
935 | + $e->message = '该厂商的批次已经满了无法恢复该设备'; | ||
936 | + return $this->renderJson($e); | ||
937 | + } | ||
938 | + // 检测当前设备ID是否存在表里面 | ||
939 | + $exitDevice = DeviceRepository::findOne(['device_id' => $delDevice->device_id, 'is_delete' => 0]); | ||
940 | + if ($exitDevice) { | ||
941 | + $e->message = '该设备ID已经存在序列号表里面,无法恢复'; | ||
942 | + return $this->renderJson($e); | ||
943 | + } | ||
944 | + | ||
945 | + $delDevice->is_delete = 0; | ||
946 | + $delDevice->auth_at = null; | ||
947 | + $delDevice->status = DeviceStatus::NO_AUTH; | ||
948 | + $saveResult = $delDevice->save(); | ||
949 | + if ($saveResult) { | ||
950 | + $e->success = true; | ||
951 | + $e->message = '恢复成功'; | ||
952 | + } else { | ||
953 | + $e->message = '恢复失败'; | ||
954 | + } | ||
955 | + | ||
956 | + return $this->renderJson($e); | ||
957 | + } | ||
958 | + | ||
959 | + public function actionBatchRestoreDevice() | ||
960 | + { | ||
961 | + $req = Yii::$app->request; | ||
962 | + $ids = $req->post('ids'); | ||
963 | + $e = new stdClass(); | ||
964 | + $e->success = false; | ||
965 | + $e->message = 'fail'; | ||
966 | + $ids = explode(',', $ids); | ||
967 | + $delDevices = DeviceRepository::findAll(['id' => $ids, 'is_delete' => 1]); | ||
968 | + if (!$delDevices) { | ||
969 | + $e->message = '未找到设备'; | ||
970 | + return $this->renderJson($e); | ||
971 | + } | ||
972 | + $fullCount = 0; | ||
973 | + $exitCount = 0; | ||
974 | + $restoreArr = []; | ||
975 | + // 检测当前批次是否已经满了,能否恢复 | ||
976 | + foreach ($delDevices as $k => $delDevice) { | ||
977 | + $batchModel = CreateBatchRepository::findOne(['id' => $delDevice->batch_id]); | ||
978 | + if (empty($batchModel)) { | ||
979 | + continue; | ||
980 | + } | ||
981 | + $count = DeviceRepository::rowsCount(['batch_id' => $batchModel->id, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); | ||
982 | + if (($count *1) >= ($batchModel->num * 1)) { | ||
983 | + $fullCount++; | ||
984 | + } | ||
985 | + // 检测当前设备ID是否存在表里面 | ||
986 | + $exitDevice = DeviceRepository::findOne(['device_id' => $delDevice->device_id, 'is_delete' => 0]); | ||
987 | + if ($exitDevice) { | ||
988 | + $exitCount++; | ||
989 | + } | ||
990 | + if (!$exitDevice && ($count *1) < ($batchModel->num * 1)) { | ||
991 | + $restoreArr[] = $delDevice->id; | ||
992 | + } | ||
993 | + } | ||
994 | + $restoreArr = array_unique($restoreArr); | ||
995 | + if (!$restoreArr) { | ||
996 | + $e->message = '设备不满足恢复条件,无法恢复'; | ||
997 | + return $this->renderJson($e); | ||
998 | + } | ||
999 | + $attr = [ | ||
1000 | + 'is_delete' => 0, | ||
1001 | + 'auth_at' => null, | ||
1002 | + 'status' => DeviceStatus::NO_AUTH | ||
1003 | + ]; | ||
1004 | + | ||
1005 | + $condition = [ | ||
1006 | + 'id' => $restoreArr | ||
1007 | + ]; | ||
1008 | + $saveResult = DeviceModel::updateAll($attr, $condition); | ||
1009 | + | ||
1010 | + if ($saveResult) { | ||
1011 | + $e->success = true; | ||
1012 | + $e->message = '成功恢复'.count($restoreArr).'台设备'; | ||
1013 | + } else { | ||
1014 | + $e->message = '恢复失败,系统错误'; | ||
1015 | + } | ||
659 | 1016 | ||
660 | return $this->renderJson($e); | 1017 | return $this->renderJson($e); |
661 | } | 1018 | } |
app-ht/modules/device/views/device/auth-fail-index.php
1 | <?php | 1 | <?php |
2 | use yii\helpers\Url; | 2 | use yii\helpers\Url; |
3 | use app\ht\widgets\LinkPager; | 3 | use app\ht\widgets\LinkPager; |
4 | -use domain\device\DeviceStatus; | 4 | +use domain\device\Device; |
5 | 5 | ||
6 | $this->title = '授权失败管理'; | 6 | $this->title = '授权失败管理'; |
7 | $this->params['breadcrumbs'][] = '失败序列号管理'; | 7 | $this->params['breadcrumbs'][] = '失败序列号管理'; |
@@ -61,11 +61,12 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -61,11 +61,12 @@ $this->params['breadcrumbs'][] = $this->title; | ||
61 | <tr> | 61 | <tr> |
62 | <th width="4%"></th> | 62 | <th width="4%"></th> |
63 | <th width="5%">ID</th> | 63 | <th width="5%">ID</th> |
64 | - <th width="15%">厂商</th> | 64 | + <th width="10%">批次编码</th> |
65 | + <th width="10%">厂商</th> | ||
65 | <th width="6%">项目</th> | 66 | <th width="6%">项目</th> |
66 | <th width="8%">设备型号</th> | 67 | <th width="8%">设备型号</th> |
67 | <th width="8%">生产日期</th> | 68 | <th width="8%">生产日期</th> |
68 | - <th width="15%">设备ID</th> | 69 | + <th width="10%">设备ID</th> |
69 | <th width="10%">申请时间</th> | 70 | <th width="10%">申请时间</th> |
70 | <th width="20%">操作</th> | 71 | <th width="20%">操作</th> |
71 | </tr> | 72 | </tr> |
@@ -75,11 +76,13 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -75,11 +76,13 @@ $this->params['breadcrumbs'][] = $this->title; | ||
75 | <?php if ($deviceList) { ?> | 76 | <?php if ($deviceList) { ?> |
76 | <?php foreach ($deviceList as $item) : ?> | 77 | <?php foreach ($deviceList as $item) : ?> |
77 | <tr> | 78 | <tr> |
78 | - <td><input type="checkbox" class="check-cls" value="<?= $item['id'] ?>"/></td> | 79 | + <td><input type="checkbox" class="check-cls check-item" value="<?= $item['id'] ?>"/></td> |
79 | <td class="td-cls"> | 80 | <td class="td-cls"> |
80 | <?= $item['id'] ?> | 81 | <?= $item['id'] ?> |
81 | </td> | 82 | </td> |
82 | - | 83 | + <td class="td-cls"> |
84 | + <?= Device::getBatchNo($item['manufacture_no'], $item['project_no'], $item['model_no'], $item['production_no']) ?> | ||
85 | + </td> | ||
83 | <td class="td-cls"> | 86 | <td class="td-cls"> |
84 | <?= $item['manufacture'] ?> | 87 | <?= $item['manufacture'] ?> |
85 | </td> | 88 | </td> |
@@ -132,6 +135,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -132,6 +135,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
132 | 135 | ||
133 | <script> | 136 | <script> |
134 | var authURL = "<?=Url::toRoute('/device/device/re-auth')?>"; | 137 | var authURL = "<?=Url::toRoute('/device/device/re-auth')?>"; |
138 | + var batchReAuthURL = "<?=Url::toRoute('/device/device/batch-re-auth')?>"; | ||
135 | var delURL = "<?=Url::toRoute('/device/device/del-device')?>"; | 139 | var delURL = "<?=Url::toRoute('/device/device/del-device')?>"; |
136 | var doEditURL = "<?=Url::toRoute('/device/device/do-edit-fail')?>"; | 140 | var doEditURL = "<?=Url::toRoute('/device/device/do-edit-fail')?>"; |
137 | $(function () { | 141 | $(function () { |
@@ -183,5 +187,37 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -183,5 +187,37 @@ $this->params['breadcrumbs'][] = $this->title; | ||
183 | } | 187 | } |
184 | 188 | ||
185 | }) | 189 | }) |
190 | + | ||
191 | + $('.check-all').click(function(e) { | ||
192 | + var checkVal = $(this).prop('checked'); | ||
193 | + $('.check-item').prop('checked', checkVal) | ||
194 | + | ||
195 | + }) | ||
196 | + | ||
197 | + $('.btn_batch_auth').click(function(e) { | ||
198 | + var checkItems = $('.check-item:checked'); | ||
199 | + if ( 0 == checkItems.length) { | ||
200 | + alert('请选择要操作的行'); | ||
201 | + return false; | ||
202 | + } | ||
203 | + var ids = []; | ||
204 | + $.each(checkItems, function(i,n){ | ||
205 | + var id = $(n).val(); | ||
206 | + if ('' != id && 0 != id) { | ||
207 | + ids.push(id); | ||
208 | + } | ||
209 | + }) | ||
210 | + ids = ids.join(','); | ||
211 | + $.post(batchReAuthURL,{ids:ids},function(res){ | ||
212 | + if (res.success) { | ||
213 | + alert(res.message); | ||
214 | + var _body = window.parent; | ||
215 | + var _iframe1=_body.document.getElementById('x-iframe'); | ||
216 | + _iframe1.contentWindow.location.reload(true); | ||
217 | + } else { | ||
218 | + alert(res.message); | ||
219 | + } | ||
220 | + }, 'json') | ||
221 | + }) | ||
186 | }); | 222 | }); |
187 | </script> | 223 | </script> |
188 | \ No newline at end of file | 224 | \ No newline at end of file |
app-ht/modules/device/views/device/delete-index.php
@@ -148,7 +148,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -148,7 +148,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
148 | <?php endforeach; ?> | 148 | <?php endforeach; ?> |
149 | <?php } else { ?> | 149 | <?php } else { ?> |
150 | <tr> | 150 | <tr> |
151 | - <td colspan="12"> | 151 | + <td colspan="13"> |
152 | <center>暂无记录</center> | 152 | <center>暂无记录</center> |
153 | </td> | 153 | </td> |
154 | </tr> | 154 | </tr> |
@@ -174,6 +174,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -174,6 +174,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
174 | var authURL = "<?=Url::toRoute('/device/device/auth-device')?>"; | 174 | var authURL = "<?=Url::toRoute('/device/device/auth-device')?>"; |
175 | var delURL = "<?=Url::toRoute('/device/device/del-device')?>"; | 175 | var delURL = "<?=Url::toRoute('/device/device/del-device')?>"; |
176 | var restoreURL = "<?=Url::toRoute('/device/device/restore-device')?>"; | 176 | var restoreURL = "<?=Url::toRoute('/device/device/restore-device')?>"; |
177 | + var batchRestoreURL = "<?=Url::toRoute('/device/device/batch-restore-device')?>"; | ||
177 | var doEditURL = "<?=Url::toRoute('/device/device/do-edit')?>"; | 178 | var doEditURL = "<?=Url::toRoute('/device/device/do-edit')?>"; |
178 | $(function () { | 179 | $(function () { |
179 | 180 | ||
@@ -223,10 +224,50 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -223,10 +224,50 @@ $this->params['breadcrumbs'][] = $this->title; | ||
223 | 224 | ||
224 | }) | 225 | }) |
225 | 226 | ||
226 | - $('.btn_restore').click(function(){ | 227 | + $('.btn_restore').click(function() { |
228 | + var id = $(this).attr('aid'); | ||
229 | + $.post(restoreURL, {id:id} ,function(res) { | ||
230 | + if (res.success) { | ||
231 | + alert(res.message); | ||
232 | + var _body = window.parent; | ||
233 | + var _iframe1=_body.document.getElementById('x-iframe'); | ||
234 | + _iframe1.contentWindow.location.reload(true); | ||
235 | + } else { | ||
236 | + alert(res.message); | ||
237 | + } | ||
238 | + } , 'json') | ||
239 | + }) | ||
240 | + $('.check-all').click(function(e) { | ||
241 | + var checkVal = $(this).prop('checked'); | ||
242 | + $('.check-item').prop('checked', checkVal) | ||
227 | 243 | ||
228 | }) | 244 | }) |
229 | 245 | ||
246 | + $('.btn_batch_auth').click(function(){ | ||
247 | + var checkItems = $('.check-item:checked'); | ||
248 | + if ( 0 == checkItems.length) { | ||
249 | + alert('请选择要操作的行'); | ||
250 | + return false; | ||
251 | + } | ||
252 | + var ids = []; | ||
253 | + $.each(checkItems, function(i,n){ | ||
254 | + var id = $(n).val(); | ||
255 | + if ('' != id && 0 != id) { | ||
256 | + ids.push(id); | ||
257 | + } | ||
258 | + }) | ||
259 | + ids = ids.join(','); | ||
260 | + $.post(batchRestoreURL,{ids:ids},function(res){ | ||
261 | + if (res.success) { | ||
262 | + alert(res.message); | ||
263 | + var _body = window.parent; | ||
264 | + var _iframe1=_body.document.getElementById('x-iframe'); | ||
265 | + _iframe1.contentWindow.location.reload(true); | ||
266 | + } else { | ||
267 | + alert(res.message); | ||
268 | + } | ||
269 | + }, 'json') | ||
270 | + }) | ||
230 | 271 | ||
231 | }); | 272 | }); |
232 | </script> | 273 | </script> |
233 | \ No newline at end of file | 274 | \ No newline at end of file |
@@ -0,0 +1,91 @@ | @@ -0,0 +1,91 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +header('Content-Type: application/vnd.ms-excel;charset=utf-8'); | ||
4 | +$title = date('Y-m-d') . '_设备'; | ||
5 | +$name = $title . ".xls"; | ||
6 | +header('Content-Disposition: attachment;filename=' . $name . ''); | ||
7 | +header('Cache-Control: max-age=0'); | ||
8 | +$fp = fopen('php://output', 'a'); | ||
9 | +$limit = 10000; | ||
10 | +$cnt = 0; | ||
11 | + | ||
12 | +?> | ||
13 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||
14 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
15 | +<html xmlns:o="urn:schemas-microsoft-com:office:office" | ||
16 | + xmlns:x="urn:schemas-microsoft-com:office:excel" | ||
17 | + xmlns="http://www.w3.org/TR/REC-html40"> | ||
18 | + | ||
19 | +<head> | ||
20 | + <meta http-equiv=Content-Type content="text/html; charset=utf-8"> | ||
21 | + | ||
22 | +</head> | ||
23 | +<body> | ||
24 | +<div id="Classeur1_16681" align='center' x:publishsource="Excel"> | ||
25 | + <table x:str border='1' cellpadding='0' cellspacing='0' width='100%' style="border-collapse: collapse"> | ||
26 | + <thead> | ||
27 | + <tr> | ||
28 | + <th width="6%">ID</th> | ||
29 | + <th width="5%">序列号</th> | ||
30 | + <th width="8%">厂商</th> | ||
31 | + <th width="6%">项目</th> | ||
32 | + <th width="8%">设备型号</th> | ||
33 | + <th width="6%">生产日期</th> | ||
34 | + <th>MAC地址</th> | ||
35 | + <th width="7%">设备ID</th> | ||
36 | + <th width="7%">申请时间</th> | ||
37 | + <th width="7%">授权时间</th> | ||
38 | + <th width="7%">状态</th> | ||
39 | + </tr> | ||
40 | + </thead> | ||
41 | + <tbody> | ||
42 | + <?php foreach ($deviceList as $key => $item) : ?> | ||
43 | + <tr> | ||
44 | + <td class="td-cls"> | ||
45 | + <?= $item['id'] ?> | ||
46 | + </td> | ||
47 | + <td class="td-cls"> | ||
48 | + <div class="cell-cls"><?= $item['serial_no'] ?></div> | ||
49 | + </td> | ||
50 | + <td class="td-cls"> | ||
51 | + <?= $item['manufacture'] ?> | ||
52 | + </td> | ||
53 | + <td class="td-cls"> | ||
54 | + <?= $item['project'] ?> | ||
55 | + </td> | ||
56 | + <td class="td-cls"> | ||
57 | + <?= $item['model'] ?> | ||
58 | + </td> | ||
59 | + <td class="td-cls"> | ||
60 | + <?= $item['production'] ?> | ||
61 | + </td> | ||
62 | + <td class="td-cls"> | ||
63 | + <?= $item['mac'] ?> | ||
64 | + </td> | ||
65 | + <td class="td-cls"> | ||
66 | + <?= $item['device_id']? $item['device_id']:'暂无'?> | ||
67 | + </td> | ||
68 | + <td class="td-cls"> | ||
69 | + <?= $item['apply_at']?date('Y-m-d H:i:s', $item['apply_at']):'暂无' ?> | ||
70 | + </td> | ||
71 | + <td class="td-cls"> | ||
72 | + <?= $item['auth_at']? date('Y-m-d H:i:s', $item['auth_at']):'暂无' ?> | ||
73 | + </td> | ||
74 | + <td class="td-cls"> | ||
75 | + <?= $statusList[$item['status']] ?> | ||
76 | + </td> | ||
77 | + </tr> | ||
78 | + <?php | ||
79 | + $cnt++; | ||
80 | + if (1000 == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 | ||
81 | + ob_flush(); | ||
82 | + flush(); | ||
83 | + $cnt = 0; | ||
84 | + } | ||
85 | + ?> | ||
86 | + <?php endforeach; ?> | ||
87 | + </tbody> | ||
88 | + </table> | ||
89 | +</div> | ||
90 | +</body> | ||
91 | +</html> | ||
0 | \ No newline at end of file | 92 | \ No newline at end of file |
app-ht/modules/device/views/device/index.php
@@ -80,6 +80,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -80,6 +80,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
80 | 80 | ||
81 | <div class="form-group col-sm-12" style="text-align: center;"> | 81 | <div class="form-group col-sm-12" style="text-align: center;"> |
82 | <button type="submit" class="btn btn-primary font-1" id="submitFilterBtn">查询</button> | 82 | <button type="submit" class="btn btn-primary font-1" id="submitFilterBtn">查询</button> |
83 | + <a class="btn btn-default" style="float: right;" href="javascript:void(0)" id="btn-export"> 导出数据 </a> | ||
83 | </div> | 84 | </div> |
84 | </form> | 85 | </form> |
85 | </div> | 86 | </div> |
@@ -186,7 +187,9 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -186,7 +187,9 @@ $this->params['breadcrumbs'][] = $this->title; | ||
186 | 187 | ||
187 | <script> | 188 | <script> |
188 | var authURL = "<?=Url::toRoute('/device/device/auth-device')?>"; | 189 | var authURL = "<?=Url::toRoute('/device/device/auth-device')?>"; |
190 | + var batchAuthURL = "<?=Url::toRoute('/device/device/batch-auth-device')?>"; | ||
189 | var delURL = "<?=Url::toRoute('/device/device/del-device')?>"; | 191 | var delURL = "<?=Url::toRoute('/device/device/del-device')?>"; |
192 | + var batchDelURL = "<?=Url::toRoute('/device/device/batch-del-device')?>"; | ||
190 | var doEditURL = "<?=Url::toRoute('/device/device/do-edit')?>"; | 193 | var doEditURL = "<?=Url::toRoute('/device/device/do-edit')?>"; |
191 | $(function () { | 194 | $(function () { |
192 | $('.btn_auth').click(function(e) { | 195 | $('.btn_auth').click(function(e) { |
@@ -258,11 +261,89 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -258,11 +261,89 @@ $this->params['breadcrumbs'][] = $this->title; | ||
258 | 261 | ||
259 | }) | 262 | }) |
260 | 263 | ||
261 | - $('.check-all').click(function(e){ | 264 | + $('.check-all').click(function(e) { |
262 | var checkVal = $(this).prop('checked'); | 265 | var checkVal = $(this).prop('checked'); |
263 | $('.check-item').prop('checked', checkVal) | 266 | $('.check-item').prop('checked', checkVal) |
264 | 267 | ||
265 | }) | 268 | }) |
269 | + $('.btn_batch_auth').click(function() { | ||
270 | + var checkItems = $('.check-item:checked'); | ||
271 | + if ( 0 == checkItems.length) { | ||
272 | + alert('请选择要操作的行'); | ||
273 | + return false; | ||
274 | + } | ||
275 | + var ids = []; | ||
276 | + $.each(checkItems, function(i,n){ | ||
277 | + var id = $(n).val(); | ||
278 | + if ('' != id && 0 != id) { | ||
279 | + ids.push(id); | ||
280 | + } | ||
281 | + }) | ||
282 | + ids = ids.join(','); | ||
283 | + $.post(batchAuthURL,{ids:ids},function(res){ | ||
284 | + if (res.success) { | ||
285 | + alert(res.message); | ||
286 | + var _body = window.parent; | ||
287 | + var _iframe1=_body.document.getElementById('x-iframe'); | ||
288 | + _iframe1.contentWindow.location.reload(true); | ||
289 | + } else { | ||
290 | + alert(res.message); | ||
291 | + } | ||
292 | + }, 'json') | ||
293 | + }) | ||
294 | + //btn_batch_del | ||
295 | + $('.btn_batch_del').click(function() { | ||
296 | + if (!confirm('确定删除设备')){ | ||
297 | + return false; | ||
298 | + } | ||
299 | + var checkItems = $('.check-item:checked'); | ||
300 | + if ( 0 == checkItems.length) { | ||
301 | + alert('请选择要操作的行'); | ||
302 | + return false; | ||
303 | + } | ||
304 | + var ids = []; | ||
305 | + $.each(checkItems, function(i,n){ | ||
306 | + var id = $(n).val(); | ||
307 | + if ('' != id && 0 != id) { | ||
308 | + ids.push(id); | ||
309 | + } | ||
310 | + }) | ||
311 | + ids = ids.join(','); | ||
312 | + $.post(batchDelURL,{ids:ids},function(res){ | ||
313 | + if (res.success) { | ||
314 | + alert(res.message); | ||
315 | + var _body = window.parent; | ||
316 | + var _iframe1=_body.document.getElementById('x-iframe'); | ||
317 | + _iframe1.contentWindow.location.reload(true); | ||
318 | + } else { | ||
319 | + alert(res.message); | ||
320 | + } | ||
321 | + }, 'json') | ||
322 | + }) | ||
266 | 323 | ||
324 | + window.queryParams = function(params) { | ||
325 | + $("#search-form").find('input[name]').each(function () { | ||
326 | + var val = $(this).val(); | ||
327 | + var name = $(this).attr('name'); | ||
328 | + if(val){ | ||
329 | + params[name] = val; | ||
330 | + } | ||
331 | + }); | ||
332 | + return params; | ||
333 | + } | ||
334 | + $('#btn-export').click(function(e){ | ||
335 | + var params = {}; | ||
336 | + window.queryParams(params); | ||
337 | + | ||
338 | + $strQuery = "?"; | ||
339 | + if (params) { | ||
340 | + for (var p in params) { | ||
341 | + $strQuery += p + "=" + params[p] + "&"; | ||
342 | + } | ||
343 | + } | ||
344 | + $strQuery = $strQuery.substring(0, $strQuery.length-1); | ||
345 | + window.location.href = "export" + $strQuery; | ||
346 | + return false; | ||
347 | + }) | ||
267 | }); | 348 | }); |
268 | </script> | 349 | </script> |
269 | \ No newline at end of file | 350 | \ No newline at end of file |
app-ht/modules/upgrade/controllers/UpgradeController.php
@@ -159,10 +159,25 @@ class UpgradeController extends BaseController | @@ -159,10 +159,25 @@ class UpgradeController extends BaseController | ||
159 | $request = Yii::$app->request; | 159 | $request = Yii::$app->request; |
160 | $id = $request->post("id"); // | 160 | $id = $request->post("id"); // |
161 | $e = new stdClass(); | 161 | $e = new stdClass(); |
162 | + $e->success = false; | ||
163 | + $e->message = 'fail'; | ||
162 | if (empty($id)) { | 164 | if (empty($id)) { |
163 | - | 165 | + $e->message = 'ID为空'; |
166 | + return $this->renderJson($e); | ||
167 | + } | ||
168 | + $upgradeModel = UpgradeRepository::findOne(['id' => $id]); | ||
169 | + if (empty($upgradeModel)) { | ||
170 | + $e->message = '未找到版本记录'; | ||
164 | return $this->renderJson($e); | 171 | return $this->renderJson($e); |
165 | } | 172 | } |
173 | + $upgradeModel->status = UpgradeStatus::STATUS_WAIT; | ||
174 | + if ($upgradeModel->save()) { | ||
175 | + $e->success = true; | ||
176 | + } else { | ||
177 | + $e->message = '取消失败'; | ||
178 | + } | ||
179 | + | ||
180 | + return $this->renderJson($e); | ||
166 | 181 | ||
167 | } | 182 | } |
168 | 183 | ||
@@ -566,6 +581,14 @@ class UpgradeController extends BaseController | @@ -566,6 +581,14 @@ class UpgradeController extends BaseController | ||
566 | if (isset($manufacture["name"])) { | 581 | if (isset($manufacture["name"])) { |
567 | $info["manufacture_name"] = $manufacture["name"]; | 582 | $info["manufacture_name"] = $manufacture["name"]; |
568 | } | 583 | } |
584 | + $project = ProjectRepository::selectOne($info["project_id"]); | ||
585 | + if (isset($project["name"])) { | ||
586 | + $info["project_name"] = $project["name"]; | ||
587 | + } | ||
588 | + $model = ModelRepository::selectOne($info["model_id"]); | ||
589 | + if (isset($model["name"])) { | ||
590 | + $info["model_name"] = $model["name"]; | ||
591 | + } | ||
569 | } | 592 | } |
570 | return $this->render('push-app', ["info" => $info]); | 593 | return $this->render('push-app', ["info" => $info]); |
571 | } | 594 | } |
@@ -584,6 +607,14 @@ class UpgradeController extends BaseController | @@ -584,6 +607,14 @@ class UpgradeController extends BaseController | ||
584 | if (isset($manufacture["name"])) { | 607 | if (isset($manufacture["name"])) { |
585 | $info["manufacture_name"] = $manufacture["name"]; | 608 | $info["manufacture_name"] = $manufacture["name"]; |
586 | } | 609 | } |
610 | + $project = ProjectRepository::selectOne($info["project_id"]); | ||
611 | + if (isset($project["name"])) { | ||
612 | + $info["project_name"] = $project["name"]; | ||
613 | + } | ||
614 | + $model = ModelRepository::selectOne($info["model_id"]); | ||
615 | + if (isset($model["name"])) { | ||
616 | + $info["model_name"] = $model["name"]; | ||
617 | + } | ||
587 | } | 618 | } |
588 | return $this->render('push-ota', ["info" => $info]); | 619 | return $this->render('push-ota', ["info" => $info]); |
589 | } | 620 | } |
console/controllers/TestController.php
@@ -35,15 +35,15 @@ class TestController extends Controller | @@ -35,15 +35,15 @@ class TestController extends Controller | ||
35 | public function actionDeviceAuth() | 35 | public function actionDeviceAuth() |
36 | { | 36 | { |
37 | $url = 'http://kingb:8012/app-api/web/authDevice'; | 37 | $url = 'http://kingb:8012/app-api/web/authDevice'; |
38 | - $manufactureNo = '0002'; | ||
39 | - $device_id = 'SZDEVICE000037'; | ||
40 | - $projectNo = '002'; | ||
41 | - $modelNo = '002'; | ||
42 | - $productionNo = '0001'; | ||
43 | - | 38 | + //$url = 'http://47.107.95.101/app-api/web/authDevice'; |
39 | + $manufactureNo = '0003'; | ||
40 | + $device_id = 'HZ5DEVICE00007'; | ||
41 | + $projectNo = '0003'; | ||
42 | + $modelNo = '0003'; | ||
43 | + $productionNo = '0003'; | ||
44 | $timestamp = time(); | 44 | $timestamp = time(); |
45 | $salt = 13456; | 45 | $salt = 13456; |
46 | - $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp . $salt); | 46 | + $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt); |
47 | $params = [ | 47 | $params = [ |
48 | 'manufacture' => $manufactureNo, | 48 | 'manufacture' => $manufactureNo, |
49 | 'device_id' => $device_id, | 49 | 'device_id' => $device_id, |
@@ -54,7 +54,7 @@ class TestController extends Controller | @@ -54,7 +54,7 @@ class TestController extends Controller | ||
54 | 'sign' => $sign, | 54 | 'sign' => $sign, |
55 | ]; | 55 | ]; |
56 | $params = json_encode($params); | 56 | $params = json_encode($params); |
57 | - $params = '{"manufacture":"0001","device_id":"4705BF36C376","project":"0001","model":"0001","production":"0001","timestamp":"1500000000","sign":"f16b3f969714a400e155e04e0ea29938"}'; | 57 | + //$params = '{"manufacture":"0002","device_id":"6705BF36C37F","project":"0002","model":"0003","production":"0002","timestamp":"1500000000","sign":"2b67361ba972020496f1a1b3df388499"}'; |
58 | $postResult = Http::POST($url, $params); | 58 | $postResult = Http::POST($url, $params); |
59 | echo $postResult; | 59 | echo $postResult; |
60 | 60 |
domain/device/Device.php
@@ -2,9 +2,73 @@ | @@ -2,9 +2,73 @@ | ||
2 | 2 | ||
3 | namespace domain\device; | 3 | namespace domain\device; |
4 | 4 | ||
5 | +use Yii; | ||
6 | +use common\helpers\Utils; | ||
7 | +use domain\device\models\Device as DeviceModel; | ||
5 | use stdClass; | 8 | use stdClass; |
9 | + | ||
6 | class Device | 10 | class Device |
7 | { | 11 | { |
12 | + | ||
13 | + | ||
14 | + /** | ||
15 | + * @param $item | ||
16 | + * @return DeviceModel | ||
17 | + */ | ||
18 | + static function create($item) | ||
19 | + { | ||
20 | + $newDevice = new DeviceModel(); | ||
21 | + $newDevice->serial_no = $item['serial_no']; | ||
22 | + $newDevice->mac = $item['mac']; | ||
23 | + $newDevice->device_id = $item['device_id']; | ||
24 | + $newDevice->batch_id = $item['batch_id']; | ||
25 | + $newDevice->status = $item['status']; | ||
26 | + $newDevice->has_re_auth = $item['has_re_auth']; | ||
27 | + $newDevice->apply_at = $item['apply_at']; | ||
28 | + $newDevice->auth_at = $item['auth_at']; | ||
29 | + $newDevice->save(); | ||
30 | + | ||
31 | + return $newDevice; | ||
32 | + } | ||
33 | + | ||
34 | + /** | ||
35 | + * @param $batchId | ||
36 | + * @param $batchNo | ||
37 | + * @param $deviceId | ||
38 | + * @param $applyAt | ||
39 | + * @param $hasReAuth | ||
40 | + * @return DeviceModel | ||
41 | + */ | ||
42 | + static function createWithMacSerialNo($batchId, $batchNo, $deviceId, $applyAt, $hasReAuth, $status) | ||
43 | + { | ||
44 | + $exitDeviceModel = DeviceModel::find(); | ||
45 | + $exitDeviceModel->where(['batch_id' => $batchId]); | ||
46 | + $exitDeviceModel->orderBy('serial_no desc'); | ||
47 | + $exitDevice = $exitDeviceModel->one(); | ||
48 | + $serialNo = ''; | ||
49 | + if ($exitDevice) { | ||
50 | + $numNo = mb_substr($exitDevice->serial_no, -4); | ||
51 | + $no1 = hexdec($numNo); | ||
52 | + $no =($no1 * 1) + 1; | ||
53 | + $newNo = sprintf('%04X', $no); | ||
54 | + $serialNo = $batchNo.$newNo; | ||
55 | + } | ||
56 | + | ||
57 | + $macAddress = Utils::macGenerate(); | ||
58 | + $item = [ | ||
59 | + 'serial_no' => $serialNo, | ||
60 | + 'mac' => $macAddress, | ||
61 | + 'device_id' => $deviceId, | ||
62 | + 'batch_id' => $batchId, | ||
63 | + 'status' => $status, | ||
64 | + 'has_re_auth' => $hasReAuth, | ||
65 | + 'apply_at' => $applyAt, | ||
66 | + 'auth_at' => time(), | ||
67 | + ]; | ||
68 | + | ||
69 | + return self::create($item); | ||
70 | + } | ||
71 | + | ||
8 | /** | 72 | /** |
9 | * 序列号前缀,也是batchNo | 73 | * 序列号前缀,也是batchNo |
10 | * @param $manufacture | 74 | * @param $manufacture |
@@ -49,6 +113,7 @@ class Device | @@ -49,6 +113,7 @@ class Device | ||
49 | $e->message = ''; | 113 | $e->message = ''; |
50 | $e->serial_no = ''; | 114 | $e->serial_no = ''; |
51 | $e->mac = ''; | 115 | $e->mac = ''; |
116 | + $e->status = 0; | ||
52 | $tt = time(); | 117 | $tt = time(); |
53 | $batchNo = self::getBatchNo($manufactureNo, $projectNo, $modelNo, $productionNo); | 118 | $batchNo = self::getBatchNo($manufactureNo, $projectNo, $modelNo, $productionNo); |
54 | $batchModel = CreateBatchRepository::findOne(['batch_no' => $batchNo]); | 119 | $batchModel = CreateBatchRepository::findOne(['batch_no' => $batchNo]); |
@@ -57,11 +122,34 @@ class Device | @@ -57,11 +122,34 @@ class Device | ||
57 | return $e; | 122 | return $e; |
58 | } | 123 | } |
59 | $batchId = $batchModel->id; | 124 | $batchId = $batchModel->id; |
60 | - $count = DeviceRepository::rowsCount(['batch_id' => $batchId, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); | ||
61 | 125 | ||
62 | - if (($count *1) >= ($batchModel->num * 1)) { | 126 | + $deviceModel = DeviceRepository::findOne(['device_id' => $deviceId, 'batch_id' => $batchId, 'is_delete' => 0]); |
127 | + if ($deviceModel) { | ||
128 | + if (DeviceStatus::HAS_AUTH == $deviceModel->status) { | ||
129 | + $e->mac = $deviceModel->mac; | ||
130 | + $e->serial_no = $deviceModel->serial_no; | ||
131 | + $e->message = '授权成功'; | ||
132 | + $e->success = true; | ||
133 | + $e->status = 5; | ||
134 | + } elseif(DeviceStatus::NO_AUTH == $deviceModel->status) { | ||
135 | + $deviceModel->status = DeviceStatus::HAS_AUTH; | ||
136 | + $deviceModel->auth_at = time(); | ||
137 | + $deviceModel->save(); | ||
138 | + $e->mac = $deviceModel->mac; | ||
139 | + $e->serial_no = $deviceModel->serial_no; | ||
140 | + $e->message = '授权成功'; | ||
141 | + $e->success = true; | ||
142 | + $e->status = 5; | ||
143 | + } else { | ||
144 | + $e->message = '授权失败'; | ||
145 | + } | ||
146 | + | ||
147 | + return $e; | ||
148 | + } | ||
149 | + $needRecord = DeviceRepository::checkNeedRecordFailRecord($batchId, $batchModel->num); | ||
150 | + | ||
151 | + if ($needRecord) { | ||
63 | // 超过了限制数,记录到另外一个表里面 | 152 | // 超过了限制数,记录到另外一个表里面 |
64 | - // to do 记录到表里面 | ||
65 | $failRecord = DeviceAuthFailRepository::findOne(['device_id' => $deviceId, 'is_delete' => 0]); | 153 | $failRecord = DeviceAuthFailRepository::findOne(['device_id' => $deviceId, 'is_delete' => 0]); |
66 | if (!$failRecord) { | 154 | if (!$failRecord) { |
67 | $item = [ | 155 | $item = [ |
@@ -73,14 +161,32 @@ class Device | @@ -73,14 +161,32 @@ class Device | ||
73 | ]; | 161 | ]; |
74 | DeviceAuthFail::create($item); | 162 | DeviceAuthFail::create($item); |
75 | } | 163 | } |
164 | + | ||
76 | $e->message = '授权失败'; | 165 | $e->message = '授权失败'; |
77 | return $e; | 166 | return $e; |
78 | } | 167 | } |
79 | 168 | ||
80 | - | ||
81 | - $deviceModel = DeviceRepository::findOne(['device_id' => $deviceId, 'batch_id' => $batchId, 'is_delete' => 0]); | ||
82 | if (empty($deviceModel)) { | 169 | if (empty($deviceModel)) { |
83 | - $newDeviceModel = DeviceRepository::findOne(['device_id'=> null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | 170 | + $needGen = DeviceRepository::checkNeedAutoGen($batchId, $batchModel->num); |
171 | + if ($needGen) { | ||
172 | + $genDeviceModel = Device::createWithMacSerialNo($batchId, $batchNo, $deviceId, $tt, 0, DeviceStatus::HAS_AUTH); | ||
173 | + if ($genDeviceModel) { | ||
174 | + $e->message = '授权成功'; | ||
175 | + $e->success = true; | ||
176 | + $e->serial_no = $genDeviceModel->serial_no; | ||
177 | + $e->mac = $genDeviceModel->mac; | ||
178 | + } else { | ||
179 | + $e->message = '授权失败, 下次重试授权!'; | ||
180 | + $e->success = false; | ||
181 | + } | ||
182 | + return $e; | ||
183 | + } | ||
184 | + // 找到未空白未绑定的设备序列号 | ||
185 | + $newDeviceModel = DeviceRepository::findOne(['device_id' => null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | ||
186 | + if (empty($newDeviceModel)) { | ||
187 | + $e->message = '授权失败,系统参数有误'; | ||
188 | + return $e; | ||
189 | + } | ||
84 | $newDeviceModel->device_id = $deviceId; | 190 | $newDeviceModel->device_id = $deviceId; |
85 | $newDeviceModel->status = DeviceStatus::HAS_AUTH; | 191 | $newDeviceModel->status = DeviceStatus::HAS_AUTH; |
86 | $newDeviceModel->apply_at = $tt ; | 192 | $newDeviceModel->apply_at = $tt ; |
@@ -93,26 +199,9 @@ class Device | @@ -93,26 +199,9 @@ class Device | ||
93 | 199 | ||
94 | return $e; | 200 | return $e; |
95 | } | 201 | } |
96 | - if (DeviceStatus::HAS_AUTH == $deviceModel->status) { | ||
97 | - $e->message = '授权成功'; | ||
98 | - $e->success = true; | ||
99 | - $e->serial_no = $deviceModel->serial_no; | ||
100 | - $e->mac = $deviceModel->mac; | ||
101 | - } elseif (DeviceStatus::FAIL_AUTH == $deviceModel->status) { | ||
102 | - $e->message = '授权失败'; | ||
103 | - } elseif (DeviceStatus::NO_AUTH == $deviceModel->status) { | ||
104 | - // 删除之后恢复的数据 | ||
105 | - $deviceModel->status = DeviceStatus::HAS_AUTH; | ||
106 | - $deviceModel->auth_at = $tt; | ||
107 | - $deviceModel->save(); | ||
108 | - $e->message = '授权成功'; | ||
109 | - $e->success = true; | ||
110 | - $e->serial_no = $deviceModel->serial_no; | ||
111 | - $e->mac = $deviceModel->mac; | ||
112 | - } else { | ||
113 | - $e->message = '授权失败!'; | ||
114 | - } | ||
115 | 202 | ||
116 | return $e; | 203 | return $e; |
117 | } | 204 | } |
205 | + | ||
206 | + | ||
118 | } | 207 | } |
119 | \ No newline at end of file | 208 | \ No newline at end of file |
domain/device/DeviceAuthFailRepository.php
@@ -62,4 +62,17 @@ class DeviceAuthFailRepository | @@ -62,4 +62,17 @@ class DeviceAuthFailRepository | ||
62 | 62 | ||
63 | return $all; | 63 | return $all; |
64 | } | 64 | } |
65 | + | ||
66 | + /** | ||
67 | + * @param $condition | ||
68 | + * @return array|\yii\db\ActiveRecord[] | ||
69 | + */ | ||
70 | + static function findAll($condition) | ||
71 | + { | ||
72 | + $deviceModel = DeviceAuthFailModel::find(); | ||
73 | + $deviceModel->where($condition); | ||
74 | + $list = $deviceModel->all(); | ||
75 | + | ||
76 | + return $list; | ||
77 | + } | ||
65 | } | 78 | } |
66 | \ No newline at end of file | 79 | \ No newline at end of file |
domain/device/DeviceRepository.php
@@ -2,11 +2,21 @@ | @@ -2,11 +2,21 @@ | ||
2 | 2 | ||
3 | namespace domain\device; | 3 | namespace domain\device; |
4 | 4 | ||
5 | +use common\helpers\Log as AppLog; | ||
5 | use domain\device\models\CreateBatch as CreateBatchModel; | 6 | use domain\device\models\CreateBatch as CreateBatchModel; |
6 | use domain\device\models\Device as DeviceModel; | 7 | use domain\device\models\Device as DeviceModel; |
8 | +use domain\device\models\DeviceStats; | ||
7 | 9 | ||
8 | class DeviceRepository | 10 | class DeviceRepository |
9 | { | 11 | { |
12 | + const DEBUG = true; | ||
13 | + private static function myLog($str) | ||
14 | + { | ||
15 | + if (false == self::DEBUG) { | ||
16 | + return ''; | ||
17 | + } | ||
18 | + AppLog::DEBUG($str); | ||
19 | + } | ||
10 | /** | 20 | /** |
11 | * @param $where | 21 | * @param $where |
12 | * @return array|\yii\db\ActiveRecord[] | 22 | * @return array|\yii\db\ActiveRecord[] |
@@ -85,6 +95,62 @@ class DeviceRepository | @@ -85,6 +95,62 @@ class DeviceRepository | ||
85 | $deviceModel = DeviceModel::find(); | 95 | $deviceModel = DeviceModel::find(); |
86 | $deviceModel->where($condition); | 96 | $deviceModel->where($condition); |
87 | $count = $deviceModel->count(); | 97 | $count = $deviceModel->count(); |
98 | + self::myLog('SQL:'.$deviceModel->createCommand()->rawSql); | ||
88 | return $count; | 99 | return $count; |
89 | } | 100 | } |
101 | + | ||
102 | + /** | ||
103 | + * 判断是否要登记到授权失败表 | ||
104 | + * @param $batchId | ||
105 | + * @param $batchNum | ||
106 | + * @return bool | ||
107 | + */ | ||
108 | + static function checkNeedRecordFailRecord($batchId, $batchNum) | ||
109 | + { | ||
110 | + // 第1个情况,全部授权满了 | ||
111 | + $authCount = self::rowsCount(['batch_id' => $batchId, 'status' => DeviceStatus::HAS_AUTH, 'is_delete' => 0]); | ||
112 | + | ||
113 | + if (($authCount *1) >= ($batchNum * 1)) { | ||
114 | + return true; | ||
115 | + } | ||
116 | + | ||
117 | + // 第2个情况,授权数目 + 删除后恢复数满了 | ||
118 | + $where = ['and', | ||
119 | + ['=', 'batch_id', $batchId], | ||
120 | + ['is not', 'device_id', null], | ||
121 | + ['in', 'status', [DeviceStatus::NO_AUTH, DeviceStatus::FAIL_AUTH]], | ||
122 | + ['=', 'is_delete', 0], | ||
123 | + ]; | ||
124 | + $restoreCount = self::rowsCount($where); | ||
125 | + if (($restoreCount *1 + $authCount) >= ($batchNum * 1)) { | ||
126 | + return true; | ||
127 | + } | ||
128 | + | ||
129 | + return false; | ||
130 | + } | ||
131 | + | ||
132 | + /** | ||
133 | + * 判断是否要自动产生序列号 | ||
134 | + * @param $batchId | ||
135 | + * @param $batchNum | ||
136 | + * @return bool | ||
137 | + */ | ||
138 | + static function checkNeedAutoGen($batchId, $batchNum) | ||
139 | + { | ||
140 | + $where = [ | ||
141 | + 'and', | ||
142 | + ['=', 'batch_id' ,$batchId], | ||
143 | + ['=', 'is_delete', 0], | ||
144 | + ['=', 'status', DeviceStatus::NO_AUTH], | ||
145 | + ['is', 'device_id', null] | ||
146 | + ]; | ||
147 | + | ||
148 | + $authCount = self::rowsCount($where); | ||
149 | + self::myLog('checkNeedAutoGen data:'.$authCount.' __'. $batchNum); | ||
150 | + if (empty($authCount)) { | ||
151 | + return true; | ||
152 | + } | ||
153 | + | ||
154 | + return false; | ||
155 | + } | ||
90 | } | 156 | } |
91 | \ No newline at end of file | 157 | \ No newline at end of file |