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();
}
}
?>