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

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

@@ -1309,17 +1309,29 @@ class ReceiptModel extends Model
// 정보변경이력
public function getHistory($id)
{
$sql = "SELECT rcpt_sq FROM receipt WHERE rcpt_key = ?";
$query = $query = $this->db->query($sql, [$id]);
$rcpt_sq = $query->getRow()->rcpt_sq;
// $id가 숫자면 rcpt_sq로 간주, 아니면 rcpt_key로 간주
if (is_numeric($id) && strpos($id, '-') === false) {
// 순수 숫자면 rcpt_sq로 직접 사용
$rcpt_sq = $id;
} else {
// rcpt_key로 간주하고 rcpt_sq 조회
$sql = "SELECT rcpt_sq FROM receipt WHERE rcpt_key = ?";
$query = $this->db->query($sql, [$id]);
$row = $query->getRow();
if ($row) {
$rcpt_sq = $row->rcpt_sq;
} else {
log_message('warning', "[ReceiptModel::getHistory] rcpt_key '{$id}'에 해당하는 receipt를 찾을 수 없습니다.");
return [];
}
}
$sql = "SELECT seq" .
" ,rcpt_sq" .
" ,rcpt_stat" .
" ,get_code_name('RECEIPT_STATUS3', rcpt_stat) AS rcpt_stat_nm" .
" ,rcpt_stat" .
" ,get_code_name('CHANGED_TYPE', changed_type) AS changed_type_nm" .
" ,changed_type" .
" ,get_code_name('CHANGED_TYPE', changed_type) AS changed_type_nm" .
" ,changed_id" .
" ,remark" .
" ,DATE_FORMAT(changed_tm, '%Y.%m.%d %H:%i:%s') as changed_tm" .
@@ -1434,12 +1446,14 @@ class ReceiptModel extends Model
// 녹취파일정보
public function getRecordInfo($rsrv_sq)
{
$sql = "SELECT record_sq, rsrv_sq, use_yn, record_path, record_filenm, record_orignm, record_size, record_tel, record_nm, record_dt, remark, insert_usr, insert_tm, update_usr, update_tm" .
$sql = "SELECT record_sq, rsrv_sq, use_yn, record_path, record_filenm, record_orignm, record_size, record_tel, record_nm, record_dt, remark, insert_usr, DATE_FORMAT(insert_tm, '%Y-%m-%d %H:%i') as insert_tm, update_usr, update_tm" .
" FROM result_record" .
" WHERE rsrv_sq = ?" .
" AND use_yn = 'Y'" .
" AND record_sq = (SELECT MAX(record_sq)" .
" FROM result_record" .
" WHERE rsrv_sq = ?)";
" WHERE rsrv_sq = ?" .
" AND use_yn = 'Y')";
$data = array(
$rsrv_sq,
$rsrv_sq
@@ -1489,7 +1503,11 @@ class ReceiptModel extends Model
$this->db->transStart();
$usr_id = session('usr_id');
$sql = "SELECT result_cd3, resYn, dbUsageAgrYn FROM result WHERE rsrv_sq = ?";
// 변경 전 데이터와 현재 상태 조회
$sql = "SELECT r.result_cd3, r.resYn, r.dbUsageAgrYn, rc.rcpt_stat
FROM result r
LEFT JOIN receipt rc ON rc.rcpt_sq = r.rcpt_sq
WHERE r.rsrv_sq = ?";
$data = array($rsrv_sq);
$query = $this->db->query($sql, $data);
$row = $query->getRowArray();
@@ -1508,7 +1526,13 @@ class ReceiptModel extends Model
];
}
$this->saveChangedHistory($rcpt_sq, $row['result_cd3'], 'C24', $usr_id, $row['resYn'] . "|" . $row['dbUsageAgrYn']);
// 정보변경 이력 저장 (변경 전 → 변경 후)
$before = "거주:" . ($row['resYn'] ?? 'N') . ", DB동의:" . ($row['dbUsageAgrYn'] ?? 'N');
$after = "거주:" . $resYn . ", DB동의:" . $dbUsageAgrYn;
$remark = $before . " => " . $after;
$rcpt_stat = $row['rcpt_stat'] ?? $row['result_cd3'] ?? '100000';
$this->saveChangedHistory($rcpt_sq, $rcpt_stat, 'C36', $usr_id, $remark);
$this->db->transComplete();
@@ -1521,6 +1545,12 @@ class ReceiptModel extends Model
public function saveGround($rcpt_sq, $ground_plan)
{
$this->db->transStart();
$usr_id = session('usr_id');
// 변경 전 데이터 조회
$sql = "SELECT ground_plan, rcpt_stat FROM receipt WHERE rcpt_sq = ?";
$query = $this->db->query($sql, [$rcpt_sq]);
$row = $query->getRowArray();
$sql = "UPDATE receipt" .
" SET ground_plan = ?" .
@@ -1535,6 +1565,10 @@ class ReceiptModel extends Model
];
}
// 정보변경 이력 저장
$remark = "평면도요청: " . ($row['ground_plan'] ?? 'N') . " => " . $ground_plan;
$this->saveChangedHistory($rcpt_sq, $row['rcpt_stat'], 'C37', $usr_id, $remark);
$this->db->transComplete();
return [
@@ -1810,11 +1844,48 @@ class ReceiptModel extends Model
$this->db->transComplete();
// 저장 후 최신 거주인 정보 반환
$record = $this->getRecordInfo($data['rsrv_sq']);
return [
'success' => true,
'rec_tel' => $data['rec_tel'],
'rec_nm' => $data['rec_nm'],
'remark' => $data['rec_remark'],
'record' => $record
];
}
// 거주인 정보 조회
public function getRecInfoByRcptSq($rcpt_sq)
{
try {
// 기존 getDetail 메서드 활용 (이미 최적화된 쿼리)
$data = $this->getDetail($rcpt_sq);
if (empty($data)) {
log_message('error', '[ReceiptModel::getRecInfoByRcptSq] Receipt not found for rcpt_sq: ' . $rcpt_sq);
return null;
}
// 녹취파일 정보 조회 (기존 getRecordInfo 활용)
$record = null;
if (!empty($data['rsrv_sq'])) {
$record = $this->getRecordInfo($data['rsrv_sq']);
}
return [
'rec_tel' => $data['rec_tel'] ?? '',
'rec_nm' => $data['rec_nm'] ?? '',
'remark' => $data['remark'] ?? '',
'record' => $record ?: null
];
} catch (\Exception $e) {
log_message('error', '[ReceiptModel::getRecInfoByRcptSq] Exception: ' . $e->getMessage());
throw $e;
}
}
// 워터마크 조회
public function getWatermarkList($rcpt_cpid)
{