You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
5.5 KiB
183 lines
5.5 KiB
<?php
|
|
/**
|
|
* 讀取 excel 內容
|
|
*/
|
|
require '../../composer/vendor/autoload.php';
|
|
require_once('../../conf/ProductEnum.php');
|
|
require_once('../../conf/ParametersException.php');
|
|
require_once('../../db/ProductDAO.php');
|
|
|
|
try{
|
|
// exit;
|
|
$dbDao = new ProductDAO();
|
|
$dbDao->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 '<br>';
|
|
$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 '<br>';
|
|
$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 '<br>';
|
|
$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 '<br>';
|
|
$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 '<br>';
|
|
$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();
|
|
}
|
|
}
|
|
|
|
|
|
?>
|