transaction(); $levelArr = array(); $returnArr = array(); $nowDatetime = date("Y-m-d H:i:s"); $inputFileName = '../../../prod-excel/prodExcel.xlsx'; $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); //抓 excel 資料 $reader->setReadDataOnly(true); $spreadsheet = $reader->load($inputFileName); $sheet = $spreadsheet->getSheet($spreadsheet->getFirstSheetIndex()); $data = $sheet->toArray(); for ( $i = 1; $i <= count($data); $i++ ){ if ( !isset($data[$i][0]) || is_null($data[$i][0]) ){ break; } //第一層 $levelTitle = trim($data[$i][0]); $levelResult = $dbDao->getLevelDataByName(0, $levelTitle); if ( !is_array($levelResult) || count($levelResult) <= 0 ){ //寫入資料 echo '寫入:'.$levelTitle; echo '
'; $insArr = array(); $insArr['level'] = 0; $insArr['upper_level'] = 0; $insArr['title'] = $levelTitle; $insArr['create_date'] = $nowDatetime; $insArr['update_date'] = $nowDatetime; $dbDao->addProdData($insArr); } $levelData = $dbDao->getLevelDataByName(0, $levelTitle); if ( !is_array($levelData) || count($levelData) != 1 ){ throw new ParametersException('取得第一層資料錯誤'); } if ( !isset($levelData[0]['uuid']) ){ throw new ParametersException('取得第一層資料 ID 錯誤'); } $levelOneId = $levelData[0]['uuid']; //第二層 $levelTitle = trim($data[$i][6]); $levelResult = $dbDao->getLevelDataByName(1, $levelTitle); if ( !is_array($levelResult) || count($levelResult) <= 0 ){ //寫入資料 echo '寫入:'.$levelTitle; echo '
'; $insArr = array(); $insArr['level'] = 1; $insArr['upper_level'] = $levelOneId; $insArr['title'] = $levelTitle; $insArr['image_url'] = trim($data[$i][3]); $insArr['image_alt'] = trim($data[$i][4]); $insArr['create_date'] = $nowDatetime; $insArr['update_date'] = $nowDatetime; $dbDao->addProdData($insArr); } $levelData = $dbDao->getLevelDataByName(1, $levelTitle); if ( !is_array($levelData) || count($levelData) != 1 ){ throw new ParametersException('取得第二層資料錯誤'); } if ( !isset($levelData[0]['uuid']) ){ throw new ParametersException('取得第二層資料 ID 錯誤'); } $levelTwoId = $levelData[0]['uuid']; //第三層 標配 or 選配 $levelTitle = trim($data[$i][1]); $levelResult = $dbDao->getLevelDataByName(2, $levelTitle); if ( !is_array($levelResult) || count($levelResult) <= 0 ){ //寫入資料 echo '寫入:'.$levelTitle; echo '
'; $insArr = array(); $insArr['level'] = 2; $insArr['upper_level'] = $levelTwoId; $insArr['title'] = $levelTitle; $insArr['create_date'] = $nowDatetime; $insArr['update_date'] = $nowDatetime; $dbDao->addProdData($insArr); } $levelData = $dbDao->getLevelDataByName(2, $levelTitle); if ( !is_array($levelData) || count($levelData) != 1 ){ throw new ParametersException('取得第三層資料錯誤'); } if ( !isset($levelData[0]['uuid']) ){ throw new ParametersException('取得第三層資料 ID 錯誤'); } $levelThreeId = $levelData[0]['uuid']; //第四層 $levelTitle = trim($data[$i][5]); $levelResult = $dbDao->getLevelDataByName(3, $levelTitle); if ( !is_array($levelResult) || count($levelResult) <= 0 ){ //寫入資料 echo '寫入:'.$levelTitle; echo '
'; $insArr = array(); $insArr['level'] = 3; $insArr['upper_level'] = $levelThreeId; $insArr['title'] = $levelTitle; $insArr['image_url'] = trim($data[$i][7]); $insArr['image_alt'] = trim($data[$i][8]); $insArr['create_date'] = $nowDatetime; $insArr['update_date'] = $nowDatetime; $dbDao->addProdData($insArr); } $levelData = $dbDao->getLevelDataByName(3, $levelTitle); if ( !is_array($levelData) || count($levelData) != 1 ){ throw new ParametersException('取得第四層資料錯誤'); } if ( !isset($levelData[0]['uuid']) ){ throw new ParametersException('取得第四層資料 ID 錯誤'); } $levelFourId = $levelData[0]['uuid']; //第五層 產品內容 $levelTitle = trim($data[$i][5]); $levelResult = $dbDao->getLevelDataByName(4, $levelTitle); if ( !is_array($levelResult) || count($levelResult) <= 0 ){ //寫入資料 echo '寫入:'.$levelTitle; echo '
'; $insArr = array(); $insArr['level'] = 4; $insArr['upper_level'] = $levelFourId; $insArr['title'] = $levelTitle; $insArr['image_url'] = trim($data[$i][9]); $insArr['image_alt'] = trim($data[$i][10]); $insArr['content'] = trim($data[$i][11]); $insArr['create_date'] = $nowDatetime; $insArr['update_date'] = $nowDatetime; $dbDao->addProdData($insArr); } $levelData = $dbDao->getLevelDataByName(3, $levelTitle); if ( !is_array($levelData) || count($levelData) != 1 ){ throw new ParametersException('取得第五層資料錯誤'); } if ( !isset($levelData[0]['uuid']) ){ throw new ParametersException('取得第五層資料 ID 錯誤'); } $levelFiveId = $levelData[0]['uuid']; } $dbDao->commitDB(); http_response_code(200); } catch ( ParametersException $pe ){ $returnArr['errMsg'] = $pe->getMessage(); http_response_code(400); } catch ( Exception $e ){ $returnArr['errMsg'] = $e->getMessage(); if($dbDao != null) { $dbDao->rollbackDB(); } http_response_code(500); } finally { echo json_encode($returnArr, JSON_UNESCAPED_UNICODE); if($dbDao != null) { $dbDao->closeDB(); } } ?>