현장확인매물 상세 페이지 기능 수정

This commit is contained in:
2026-03-05 18:17:31 +09:00
parent 353df045d8
commit 9d9df394c5
9 changed files with 2507 additions and 2161 deletions

View File

@@ -202,7 +202,8 @@ class Receipt extends BaseController
log_message('info', '[Receipt::detail] getDetail {ms}ms', ['ms' => (int) ((microtime(true) - $t3) * 1000)]);
$t4 = microtime(true);
$history = $this->model->getHistory($id);
// rcpt_sq를 사용하여 이력 조회
$history = $this->model->getHistory($data['rcpt_sq'] ?? $id);
log_message('info', '[Receipt::detail] getHistory {ms}ms', ['ms' => (int) ((microtime(true) - $t4) * 1000)]);
$t5 = microtime(true);
@@ -346,23 +347,52 @@ class Receipt extends BaseController
$this->model->saveResDB($rcpt_sq, $rsrv_sq, $res_yn, $dbUsageAgrYn);
$receipt = $this->getDetail($rcpt_key);
$receipt = $this->model->getDetail($rcpt_key);
if ($res_yn == 'Y') {
$isResidentsExist = true;
} else {
$isResidentsExist = false;
}
$api_result = $naver->residentsExistence($rcpt_key, $isResidentsExist);
$updateData = [
'residentsExistence' => $isResidentsExist
];
$charger = session('usr_id');
if (!isset($api_result['result'])) {
throw new \Exception('API 통신오류입니다.\n다시 저장하여 주십시요.');
log_message('info', '[resDbYn] 네이버 API 호출 시작 - rcpt_key: ' . $rcpt_key . ', charger: ' . $charger . ', updateData: ' . json_encode($updateData, JSON_UNESCAPED_UNICODE));
$api_result = $naver->updateArticleInfo($rcpt_key, $updateData, $charger);
log_message('info', '[resDbYn] 네이버 API 응답 - result: ' . json_encode($api_result, JSON_UNESCAPED_UNICODE) . ' (type: ' . gettype($api_result) . ')');
// API 호출 실패 체크
if (isset($api_result['error']) && $api_result['error'] === true) {
// 에러 정보를 상세하게 표시
if ($api_result['error_type'] === 'CURL_ERROR') {
$errorMsg = "네이버 API 통신 실패 (CURL 오류)\n";
$errorMsg .= "오류코드: {$api_result['curl_errno']}\n";
$errorMsg .= "오류내용: {$api_result['curl_error']}\n";
$errorMsg .= "URL: {$api_result['url']}";
} else {
$errorMsg = "네이버 API 응답 오류 (HTTP {$api_result['http_code']})\n";
$errorMsg .= "응답내용: {$api_result['response']}\n";
$errorMsg .= "URL: {$api_result['url']}";
}
throw new \Exception($errorMsg);
}
// 정상 응답이지만 성공이 아닌 경우
if (!isset($api_result['code']) || $api_result['code'] !== 'success') {
$errorMsg = "네이버 API 응답 오류\n";
$errorMsg .= "응답: " . json_encode($api_result, JSON_UNESCAPED_UNICODE);
throw new \Exception($errorMsg);
}
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
'msg' => 'success',
'debug_api_result' => $api_result // 디버그용 (확인 후 제거)
]);
} catch (\Exception $e) {
@@ -425,7 +455,7 @@ class Receipt extends BaseController
$na_result = $naver->reserveSuccess($rcpt_key, 'Y', $bonbuInfo['dept_nm'], $deptInfo['dept_nm'], $userInfo['usr_nm'], $userInfo['usr_tel1'], $rsrv_date, $rsrv_tm_ap);
/*** 네이버 연동[e] ***/
if (array_key_exists('result', $na_result)) { //네이버연동 상태변경 완료
if (isset($na_result['code']) && $na_result['code'] === 'success') { //네이버연동 상태변경 완료
$result = $this->model->assignRegist($rcpt_sq, $rsrv_date, $rsrv_tm_ap, $rsrv_tm_hour, $dept_sq, $usr_sq, $receipt);
return $this->response->setJSON([
@@ -433,7 +463,7 @@ class Receipt extends BaseController
'msg' => 'success'
]);
} else {
throw new \Exception($na_result['message']);
throw new \Exception($na_result['message'] ?? '네이버 API 연동 실패');
}
@@ -530,11 +560,11 @@ class Receipt extends BaseController
}
/*** 네이버 연동[e] ***/
if (array_key_exists('result', $na_result)) { //네이버연동 상태변경 완료
if (isset($na_result['code']) && $na_result['code'] === 'success') { //네이버연동 상태변경 완료
$result = $this->model->rsrvcancel($rcpt_sq, $rsrv_sq, $result_cd2, $result_cd3, $result_msg, $receipt);
} else {
throw new \Exception($na_result['message']);
throw new \Exception($na_result['message'] ?? '네이버 API 연동 실패');
}
return $this->response->setJSON([
@@ -644,7 +674,6 @@ class Receipt extends BaseController
$lib = new MyUpload();
try {
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rcpt_key = $this->request->getPost('rcpt_key');
$rsrv_sq = $this->request->getPost('rsrv_sq');
@@ -657,8 +686,6 @@ class Receipt extends BaseController
$rec_nm = $this->request->getPost('rec_nm');
$rec_remark = $this->request->getPost('rec_remark');
$file = $this->request->getFile('rec_file');
$data = [
'rcpt_sq' => $rcpt_sq,
'rsrv_sq' => $rsrv_sq,
@@ -668,43 +695,101 @@ class Receipt extends BaseController
'rec_remark' => $rec_remark,
];
// 파일 업로드 처리
$file = $this->request->getFile('rec_file');
if ($file && $file->isValid() && !$file->hasMoved()) {
$uploadPath = "/upload/result/" . $rsrv_sq . "/";
$uploadData = $lib->do_upload2($file, $uploadPath);
$arrUploadfile = [];
if ($file->isValid() && !$file->hasMoved()) {
$uploadData = $lib->do_upload2($file, $uploadPath);
if ($uploadData !== false) {
$arrUploadfile[] = $uploadData;
}
if ($uploadData !== false && is_array($uploadData)) {
// do_upload2 반환값 구조: object_key, object_storage_url, origin_name, file_name, base_name, ext
$data['file'] = [
'upload_path' => $uploadPath,
'file_name' => isset($uploadData['file_name']) ? $uploadData['file_name'] : '',
'origin_name' => isset($uploadData['origin_name']) ? $uploadData['origin_name'] : '',
'ext' => isset($uploadData['ext']) ? $uploadData['ext'] : '',
'size' => $file->getSize(),
];
} else {
throw new \Exception('파일 업로드에 실패했습니다.');
}
if (!empty($arrUploadfile)) {
foreach ($arrUploadfile as $key => $uploadFile) {
$data['file'] = [
'orig_name' => $uploadFile['origin_name'],
'new_name' => $uploadFile['file_name'],
'file_path' => $uploadPath, // 필요에 따라 상대경로로만 저장
'ext' => '.' . $uploadFile['ext'],
'size' => $file->getSize(),
];
}
}
}
$this->model->saveRecInfo($data);
$result = $this->model->saveRecInfo($data);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
'msg' => 'success',
'data' => [
'rec_tel' => $result['rec_tel'] ?? '',
'rec_nm' => $result['rec_nm'] ?? '',
'remark' => $result['remark'] ?? '',
'record' => $result['record'] ?? null
]
]);
} catch (\Exception $e) {
log_message('error', '[Receipt::saveRecInfo] Error: ' . $e->getMessage());
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 거주인 정보 조회
public function getRecInfo()
{
try {
$rcpt_sq = $this->request->getGet('rcpt_sq');
if (empty($rcpt_sq)) {
throw new \Exception('rcpt_sq가 필요합니다.');
}
// 거주인 정보 조회
$recInfo = $this->model->getRecInfoByRcptSq($rcpt_sq);
if (empty($recInfo)) {
throw new \Exception('거주인 정보를 찾을 수 없습니다.');
}
return $this->response->setJSON([
'code' => '0',
'msg' => 'success',
'data' => $recInfo
]);
} catch (\Exception $e) {
log_message('error', '[Receipt::getRecInfo] Error: ' . $e->getMessage());
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 정보변경 이력 조회
public function getHistory()
{
try {
$rcpt_sq = $this->request->getGet('rcpt_sq');
if (empty($rcpt_sq)) {
throw new \Exception('rcpt_sq가 필요합니다.');
}
// 정보변경 이력 조회
$history = $this->model->getHistory($rcpt_sq);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success',
'data' => $history ?? []
]);
} catch (\Exception $e) {
log_message('error', '[Receipt::getHistory] Error: ' . $e->getMessage());
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),