파일업로드 추가
Some checks failed
Close Pull Request / main (pull_request_target) Has been cancelled

This commit is contained in:
yangsh
2026-01-28 16:09:52 +09:00
parent b51f2fddcf
commit d134b27614
5 changed files with 1330 additions and 257 deletions

View File

@@ -1035,6 +1035,7 @@ class ReceiptModel extends Model
,a.rcpt_sido
,a.rcpt_gugun
,a.rcpt_dong
,c.region_nm AS addr
,a.rcpt_dtl_addr
,a.rcpt_li_addr
,a.rcpt_jibun_addr
@@ -1145,7 +1146,6 @@ class ReceiptModel extends Model
,get_code_name('RECEIPT_STATUS3', a.rcpt_stat) AS rcpt_stat_nm
,DATE_FORMAT(a.insert_tm, '%Y년 %m월 %d일') as insert_tm2
,DATE_FORMAT(a.rsrv_date, '%Y-%m-%d') as rsrv_date2
,c.region_nm as addr
,c.dept_sq as region_dept_sq
,c.usr_sq as region_usr_sq
,d.pdept_sq
@@ -1348,6 +1348,20 @@ class ReceiptModel extends Model
return $query->getResultArray();
}
public function getImageListByType($rsrv_sq, $img_type)
{
$sql = "SELECT * " .
" FROM result_imgs" .
" WHERE rsrv_sq = ?" .
" AND img_type = ?" .
" AND use_yn = 'Y'" .
" ORDER BY view_odr";
$data = [$rsrv_sq, $img_type];
$query = $this->db->query($sql, $data);
return $query->getResultArray();
}
public function getImageCountByType($rsrv_sq)
{
$sql = "SELECT img_type, COUNT(*) img_cnt" .
@@ -1669,9 +1683,9 @@ class ReceiptModel extends Model
";
$param = [
$data['rsrv_sq'],
$f['file_path'],
$f['new_name'],
$f['orig_name'],
$f['upload_path'],
$f['file_name'],
$f['origin_name'],
$f['size'],
$data['rec_tel'],
$data['rec_nm'],
@@ -1709,4 +1723,325 @@ class ReceiptModel extends Model
'success' => true,
];
}
// 워터마크 조회
public function getWatermarkList($rcpt_cpid)
{
$builder = $this->db->table('watermark');
$builder->select('cpid, wm_type, wm_img_path, wm_img_height, wm_img_width, wm_position, wm_img_opacity, wm_space, text_font, text_color, text_opacity, text_size, text_pixel, img_width_min, img_width_max');
$builder->where('cpid', $rcpt_cpid);
$row = $builder->get()->getResultArray();
return $row;
}
// 업로드정보 저장
public function saveImg($param)
{
$this->db->transStart();
$usr_id = session('usr_id');
$usr_sq = session('usr_sq');
$receipt = $param['receipt'];
$cloud_upload_yn = 'Y';
if ($param['img_type'] == 'I6' || $param['img_type'] == 'I7') {
$yn_sql = "update receipt " .
" set exp_spc_yn = 'Y' " .
" where rcpt_sq = ? ";
$yn_data = [$param['rcpt_sq']];
$this->db->query($yn_sql, $yn_data);
} else if ($param['img_type'] == 'I8') {
$yn_sql = "update receipt " .
" set exp_spc_yn = 'Y' " .
" where rcpt_sq = ? ";
$yn_data = [$param['rcpt_sq']];
$this->db->query($yn_sql, $yn_data);
} else if ($param['img_type'] == 'I9') {
$yn_sql = "update receipt " .
" set image_360_yn = 'Y' " .
" where rcpt_sq = ? ";
$yn_data = [$param['rcpt_sq']];
$this->db->query($yn_sql, $yn_data);
} else if ($param['img_type'] == 'I11') {
$yn_sql = "update receipt " .
" set check_list_img_yn = 'Y' " .
" where rcpt_sq = ? ";
$yn_data = [$param['rcpt_sq']];
$this->db->query($yn_sql, $yn_data);
}
//한장의 사진만 업로드하는것들은 UPDATE -> INSERT
$img_list = ['I1', 'I2', 'I5', 'I6', 'I7', 'V1', 'I10', 'I11'];
// 주소가 rcpt_jibun_addr 있을때는 그 주소로
$addr_nm = $receipt['addr'];
if ($receipt['rcpt_jibun_addr']) {
$img_hannm = '컨펌스_' . $addr_nm . ' ' . $receipt['rcpt_jibun_addr'] . ' ' . $receipt['rcpt_etc_addr'] . '_' . $receipt['excls_spc'] . '.jpeg';
} else {
$img_hannm = '컨펌스_' . $addr_nm . ' ' . $receipt['rcpt_dtl_addr'] . ' ' . $receipt['rcpt_ho'] . '_' . $receipt['excls_spc'] . '.jpeg';
}
if (in_array($param['img_type'], $img_list)) {
//업데이트할게없어도 에러가 안난다 단지 row(s)affected 가 0 일뿐
$sql = "UPDATE result_imgs" .
" SET use_yn = 'N'" .
" WHERE rsrv_sq = ?" .
" AND img_type = ?" .
" AND use_yn = 'Y'";
$data = [$param['rsrv_sq'], $param['img_type']];
$this->db->query($sql, $data);
//새로운 이미지 생성
$sql = "INSERT INTO result_imgs(rsrv_sq, use_yn, img_type, view_odr, img_path, img_filenm, img_nm, img_size, img_width, img_height, insert_usr, insert_tm, meta_data, img_hannm , cloud_upload_yn )" .
"VALUES (?, 'Y', ?, 1, ?, ?, ?, ?, ?, ?, ?, NOW(), ?,? , ?)";
$data = [
$param['rsrv_sq'],
$param['img_type'],
$param['upload_path'],
$param['file_name'],
$param['origin_name'],
$param['size'],
$param['width'],
$param['height'],
$usr_sq,
isset($param['meta_data']) ? $param['meta_data'] : null,
$img_hannm,
$cloud_upload_yn
];
$res = $this->db->query($sql, $data);
} else {
$odr_sql = "SELECT COALESCE(MAX(view_odr), 0) + 1 as seq FROM result_imgs WHERE rsrv_sq = ? AND img_type = ? AND use_yn = 'Y'";
$odr_data = array($param['rsrv_sq'], $param['img_type']);
$query = $this->db->query($odr_sql, $odr_data);
$row = $query->getRowArray();
$view_odr = $row['seq'];
$sql = "INSERT INTO result_imgs(rsrv_sq, use_yn, img_type, view_odr, img_path, img_filenm, img_nm, img_size, img_width, img_height, insert_usr, insert_tm, meta_data, img_hannm , cloud_upload_yn )" .
"VALUES (?, 'Y', ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?,?, ?)";
$data = [
$param['rsrv_sq'],
$param['img_type'],
$view_odr,
$param['upload_path'],
$param['file_name'],
$param['origin_name'],
$param['size'],
$param['width'],
$param['height'],
$usr_sq,
isset($param['meta_data']) ? $param['meta_data'] : null,
$img_hannm,
$cloud_upload_yn
];
$res = $this->db->query($sql, $data);
}
if ($res) {
switch ($param['img_type']) {
case 'I1':
$remark = "홍보확인서 사진 업로드";
break;
case 'I2':
$remark = "현장확인 내역서 사진 업로드";
break;
case 'I3':
$remark = "건물외관 사진 업르도";
break;
case 'I4':
$remark = "매물사진 업로드";
break;
case 'I5':
$remark = "평면도 업로드";
break;
case 'I6':
$remark = "전용면적 파일 업로드";
break;
case 'I7':
$remark = "공용면적 파일 업로드";
break;
case 'I8':
$remark = "분양권 파일 업로드";
break;
case 'I9':
$remark = "360이미지 업로드";
break;
case 'I10':
$remark = "촬영동의서 사진 업로드";
break;
case 'I11':
$remark = "체크리스트 사진 업로드";
break;
case 'V1':
$remark = "동영상 업로드";
break;
}
$this->saveChangedHistory($param['rcpt_sq'], $receipt['rcpt_stat'], 'C16', $usr_id, $remark);
$this->db->transComplete();
return [
'success' => true,
];
} else {
return [
'success' => false,
'msg' => '저장실패',
];
}
}
// 파일정보조회
public function getUploadFileInfo($img_sq)
{
$sql = "SELECT * FROM result_imgs WHERE img_sq = ?";
$query = $this->db->query($sql, [$img_sq]);
$row = $query->getRowArray();
return $row;
}
// 업로드파일 삭제
public function removeUploadFile($rcpt_sq, $img_sq)
{
$this->db->transStart();
$usr_id = session('usr_id');
// 이미지정보 조회
$row = $this->getUploadFileInfo($img_sq);
if (!empty($row)) {
if ($row['img_type'] == 'I6' || $row['img_type'] == 'I7') {
$yn_sql = "update receipt " .
" set exp_spc_yn = 'N' " .
" where rcpt_sq = ? ";
$yn_data = [$rcpt_sq];
$this->db->query($yn_sql, $yn_data);
} else if ($row['img_type'] == 'I8') {
$yn_sql = "UPDATE receipt" .
" SET parcel_out_yn = CASE (SELECT COUNT('x')" .
" FROM result_imgs " .
" WHERE rsrv_sq = (SELECT rsrv_sq FROM result_imgs WHERE img_sq = ? AND img_type = 'I8')" .
" AND use_yn = 'Y'" .
" AND img_type = 'I8') WHEN 0 THEN 'N' ELSE 'Y' END" .
" WHERE rcpt_sq = ? ";
$yn_data = [$rcpt_sq];
$this->db->query($yn_sql, $yn_data);
} else if ($row['img_type'] == 'I9') {
$yn_sql = "UPDATE receipt" .
" SET image_360_yn = (" .
" CASE (SELECT COUNT(1)" .
" FROM result_imgs" .
" WHERE rsrv_sq = (SELECT rsrv_sq FROM result_imgs WHERE img_sq = ? AND img_type = 'I9')" .
" AND img_type = 'I9' AND use_yn = 'Y')" .
" WHEN 0 THEN 'N'" .
" ELSE 'Y'" .
" END" .
" )" .
" WHERE rcpt_sq = ?";
$yn_data = [$rcpt_sq];
$this->db->query($yn_sql, $yn_data);
} else if ($row['img_type'] == 'I11') {
$yn_sql = "update receipt " .
" set check_list_img_yn = 'N' " .
" where rcpt_sq = ? ";
$yn_data = [$rcpt_sq];
$this->db->query($yn_sql, $yn_data);
}
//삭제이미지보다 순번이 높은거는 순번 업데이트
$sql = "UPDATE result_imgs SET view_odr = view_odr - 1 WHERE rsrv_sq = ? AND img_type = ? AND view_odr > ? AND use_yn = 'Y'";
$data = [$row['rsrv_sq'], $row['img_type'], $row['view_odr']];
$this->db->query($sql, $data);
//이미지 삭제
$sql = "DELETE FROM result_imgs WHERE img_sq = ?";
$data = [$img_sq];
if ($this->db->query($sql, $data) === false) {
return [
'success' => false,
'msg' => '삭제실패',
];
}
if (in_array($row['img_type'], ['I1', 'I2', 'I8', 'I10', 'I11'])) {
$remark = "";
switch ($row['img_type']) {
case 'I1':
$remark = "홍보확인서 사진 삭제";
break;
case 'I2':
$remark = "현장확인 내역서 사진 삭제";
break;
case 'I8':
$remark = "분양권 파일 삭제";
break;
case 'I10':
$remark = "촬영동의서 사진 삭제";
break;
case 'I11':
$remark = "체크리스트 사진 삭제";
break;
}
// 상태값을 가져오기위한 쿼리 해오기
$sql = "SELECT rcpt_stat FROM receipt WHERE rcpt_sq = ?";
$data = [$rcpt_sq];
$query = $this->db->query($sql, $data);
$row = $query->getRowArray();
$this->saveChangedHistory($rcpt_sq, $row['rcpt_stat'], 'C31', $usr_id, $remark);
}
$this->db->transComplete();
return [
'success' => true,
];
}
}
// 촬영위치 저장
public function saveImgLocation($img_sq, $rsrv_sq, $location)
{
$sql = "UPDATE result_imgs" .
" SET img_location = ?" .
" WHERE img_sq = ?" .
" AND rsrv_sq = ?";
$data = [$location, $img_sq, $rsrv_sq];
if ($this->db->query($sql, $data) === false) {
return [
'success' => false,
'msg' => '저장실패',
];
} else {
return [
'success' => true,
];
}
}
}