db->query($sql, [$gugun]); } else if (!empty($sido)) { $chk_sido = substr($sido, '0', '2'); if ($chk_sido === '36') { $sido = substr($sido, '0', '4'); $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm " . "FROM region_codes a " . "LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,4),'000000') " . "WHERE a.region_cd LIKE concat(?, '%') " . "AND a.region_cd NOT LIKE '%000000' " . "AND a.region_cd LIKE '%00' " . "AND a.use_yn = 'Y' " . "AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000')) " . "ORDER BY a.region_nm ASC"; } else { $sido = substr($sido, '0', '2'); $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm" . " FROM region_codes a" . " LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,2),'00000000')" . " WHERE a.region_cd LIKE concat(?, '%')" . " AND a.region_cd NOT LIKE '%00000000'" . " AND a.region_cd LIKE '%00000'" . " AND a.use_yn = 'Y'" . " AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000'))" . " ORDER BY a.region_nm ASC"; } $query = $this->db->query($sql, [$sido]); } else { $sql = "SELECT a.region_cd, a.region_nm " . "FROM region_codes a " . "WHERE (a.region_cd LIKE '%00000000' " . "AND a.use_yn = 'Y') " . "OR region_cd = 3611000000;"; $query = $this->db->query($sql); } return $query->getResultArray(); } // 소속본부조회 public function getBonbuList() { $sql = "SELECT dept_sq, pdept_sq, dept_nm, dept_desc, dept_head, use_yn, depth, insert_tm, insert_usr, update_tm, update_usr, lft, rgt" . " FROM departments" . " WHERE depth = 1" . " AND use_yn = 'Y'" . " ORDER BY lft"; $query = $this->db->query($sql); return $query->getResultArray(); } // 소속팀 조회 public function getTeamList() { $sql = "SELECT dept_sq, pdept_sq, dept_nm" . " FROM departments" . " WHERE depth = 2" . " AND use_yn = 'Y'" . " ORDER BY dept_nm"; $query = $this->db->query($sql); return $query->getResultArray(); } // 유저 조회 public function getUserList() { $sql = "SELECT a.usr_sq, a.usr_id, a.usr_nm, a.dept_sq FROM users a WHERE a.usr_level IN ('3','4','40','5','50','6','60','61','62','7','8','70') AND a.use_yn = 'Y' AND EXISTS ( SELECT 'x' FROM departments a1 INNER JOIN departments a2 ON a2.lft BETWEEN a1.lft AND a1.rgt AND a2.use_yn = 'Y' WHERE 1=1 AND a2.dept_sq = a.dept_sq AND a1.use_yn = 'Y' ) ORDER BY a.usr_level DESC, a.usr_nm ASC "; $query = $this->db->query($sql); return $query->getResultArray(); } public function getTotalCount($data) { $sql = "SELECT COUNT(*) AS cnt FROM v2_article_info a JOIN v2_vrfc_req b ON a.vr_sq = b.vr_sq JOIN v2_modify_info c ON a.vr_sq = c.vr_sq JOIN v2_article_info_etc k ON k.vr_sq = a.vr_sq LEFT JOIN region_codes f ON a.address_code = f.region_cd LEFT JOIN v2_chg_stat d ON a.vr_sq = d.vr_sq AND d.stat_cd = '35' LEFT JOIN v2_chg_stat e ON a.vr_sq = e.vr_sq AND e.stat_cd = '60' LEFT JOIN codes g ON b.stat_cd = g.cd AND g.category = 'STEP_VERIFICATION' LEFT JOIN codes h ON b.vrfc_type = h.cd AND h.category = 'VRFCREQ_WAY' LEFT JOIN users i ON a.charger = i.usr_id LEFT JOIN users j ON a.charger = j.usr_id LEFT JOIN v2_chg_stat d2 ON d2.vr_sq = a.vr_sq AND d2.stat_cd = '39' "; $sql .= "WHERE 1=1 "; // 매물번호 if (!empty($data['atcl_no'])) { $sql .= "AND a.atcl = '{$data['atcl_no']}' "; } else { // 현재상태 if (!empty($data['stat_cd'])) { $sql .= "AND b.stat_cd = '{$data['stat_cd']}' "; } // 중개소 if (!empty($data['realtor_nm'])) { $sql .= "AND a.realtor_nm = '{$data['realtor_nm']}' "; } // 매물구분 if (!empty($data['rlet_type_cd'])) { $sql .= "AND a.rlet_type_cd = '{$data['rlet_type_cd']}' "; } // 접수기간 if (!empty($data['receipt_sdate'])) { $sql .= "AND b.insert_tm >= '{$data['receipt_sdate']} 00:00:00' "; } if (!empty($data['receipt_edate'])) { $sql .= "AND b.insert_tm <= '{$data['receipt_edate']} 23:59:59' "; } // 완료기간 if (!empty($data['complete_sdate'])) { $sql .= "AND b.insert_tm >= '{$data['complete_sdate']} 00:00:00' "; } if (!empty($data['complete_edate'])) { $sql .= "AND b.insert_tm <= '{$data['complete_edate']} 23:59:59' "; } // 검증방식 if (!empty($data['vrfc_type_sub'])) { $sql .= "AND a.vrfc_type_sub = '{$data['vrfc_type_sub']}' "; } else { if (!empty($data['vrfcreq_way'])) { $sql .= "AND b.vrfc_type = '{$data['vrfcreq_way']}' "; } } // 매체사 if (!empty($data['rcpt_cpid'])) { $sql .= "AND a.cpid = '{$data['rcpt_cpid']}' "; } // 지역구분 if (!empty($data['srcDong'])) { $sql .= "AND a.address_code = '{$data['srcDong']}' "; } else { if (!empty($data['srcGugun'])) { $str_gugun = substr($data['srcGugun'], '0', '2'); if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외 $sql .= "AND a.address_code = '{$data['srcGugun']}' "; } else { $gugunPrefix = substr($data['srcGugun'], '0', '5'); $sql .= "AND a.address_code LIKE '{$gugunPrefix}%' "; } } else { if (!empty($data['srcSido'])) { $sidoPrefix = substr($data['srcSido'], '0', '2'); $sql .= "AND a.address_code LIKE '{$sidoPrefix}%' "; } } } // 담당자 if (!empty($data['damdang'])) { switch ($data['charger_gbn']) { case "1": $sql .= "a.charger = '{$data['damdang']}' "; break; case "2": $sql .= "a.reg_charger = '{$data['damdang']}' "; break; } } else { // 배정여부 if ($data['assign_yn'] !== "A") { switch ($data['charger_gbn'] . $data['assign_yn']) { case "1Y": // 전화/서류 담당자 $sql .= "a.charger != '' "; break; case "1N": // 전화/서류 담당자 $sql .= "a.charger = '' "; break; case "2Y": // 등기부등본 담당자 $sql .= "a.reg_charger != '' "; break; case "2N": // 등기부등본 담당자 $sql .= "a.reg_charger IS NULL "; break; } } } // 본부 if (!empty($data['bonbu'])) { if ($data['charger_gbn'] === "1") { $sql .= "AND a.dept1_sq = '{$data['bonbu']}' "; } else { $sql .= "AND a.reg_dept1_sq = '{$data['bonbu']}' "; } } // 팀 if (!empty($data['team'])) { if ($data['charger_gbn'] === "1") { $sql .= "AND a.dept2_sq = '{$data['team']}' "; } else { $sql .= "AND a.reg_dept2_sq = '{$data['team']}' "; } } // 참고파일 if (!empty($data['reference_file_url_yn'])) { $sql .= "AND a.reference_file_url_yn = '{$data['a.reference_file_url_yn']}' "; } // 법인 if (!empty($data['corp_own'])) { $sql .= "AND m.corp_own = '{$data['a.corp_own']}' "; } } $query = $this->db->query($sql); return $query->getRow()->cnt; } public function getResultList($start, $end, $data) { $sql = "SELECT a.vr_sq, a.atcl_no, a.cpid, a.cp_atcl_id, a.rlet_type_cd, a.address1, a.sise, a.rdate, a.seller_tel_no, a.seller_nm, a.realtor_nm, a.realtor_tel_no, a.charger, b.insert_tm, b.stat_cd, c.bild_nm, b.vrfc_type as vrfc_type_cd, IFNULL(c.rm_no, '') as rm_no, c.floor, c.address_code, IFNULL(c.address2, '') as address2, IFNULL(k.address2a, '') as address2a, IFNULL(k.address2b, '') as address2b, IFNULL(c.address3, '') as address3, c.trade_type, c.deal_amt, c.wrrnt_amt, c.lease_amt, c.isale_amt, c.prem_amt, c.sply_spc, c.excls_spc, c.tot_spc, c.grnd_spc, c.bldg_spc, c.hscp_nm, c.ptp_no, d.insert_tm as update_res_tm, e.insert_tm as result_tm, f.region_nm, g.cd_nm as pre_stat, h.cd_nm as vrfc_type, i.usr_nm, j.usr_nm as reg_charger, d2.insert_tm as stat_39_tm FROM v2_article_info a JOIN v2_vrfc_req b ON a.vr_sq = b.vr_sq JOIN v2_modify_info c ON a.vr_sq = c.vr_sq JOIN v2_article_info_etc k ON k.vr_sq = a.vr_sq LEFT JOIN region_codes f ON a.address_code = f.region_cd LEFT JOIN v2_chg_stat d ON a.vr_sq = d.vr_sq AND d.stat_cd = '35' LEFT JOIN v2_chg_stat e ON a.vr_sq = e.vr_sq AND e.stat_cd = '60' LEFT JOIN codes g ON b.stat_cd = g.cd AND g.category = 'STEP_VERIFICATION' LEFT JOIN codes h ON b.vrfc_type = h.cd AND h.category = 'VRFCREQ_WAY' LEFT JOIN users i ON a.charger = i.usr_id LEFT JOIN users j ON a.charger = j.usr_id LEFT JOIN v2_chg_stat d2 ON d2.vr_sq = a.vr_sq AND d2.stat_cd = '39' "; $sql .= "WHERE 1=1 "; // 매물번호 if (!empty($data['atcl_no'])) { $sql .= "AND a.atcl = '{$data['atcl_no']}' "; } else { // 현재상태 if (!empty($data['stat_cd'])) { $sql .= "AND b.stat_cd = '{$data['stat_cd']}' "; } // 중개소 if (!empty($data['realtor_nm'])) { $sql .= "AND a.realtor_nm = '{$data['realtor_nm']}' "; } // 매물구분 if (!empty($data['rlet_type_cd'])) { $sql .= "AND a.rlet_type_cd = '{$data['rlet_type_cd']}' "; } // 접수기간 if (!empty($data['receipt_sdate'])) { $sql .= "AND b.insert_tm >= '{$data['receipt_sdate']} 00:00:00' "; } if (!empty($data['receipt_edate'])) { $sql .= "AND b.insert_tm <= '{$data['receipt_edate']} 23:59:59' "; } // 완료기간 if (!empty($data['complete_sdate'])) { $sql .= "AND b.insert_tm >= '{$data['complete_sdate']} 00:00:00' "; } if (!empty($data['complete_edate'])) { $sql .= "AND b.insert_tm <= '{$data['complete_edate']} 23:59:59' "; } // 검증방식 if (!empty($data['vrfc_type_sub'])) { $sql .= "AND a.vrfc_type_sub = '{$data['vrfc_type_sub']}' "; } else { if (!empty($data['vrfcreq_way'])) { $sql .= "AND b.vrfc_type = '{$data['vrfcreq_way']}' "; } } // 매체사 if (!empty($data['rcpt_cpid'])) { $sql .= "AND a.cpid = '{$data['rcpt_cpid']}' "; } // 지역구분 if (!empty($data['srcDong'])) { $sql .= "AND a.address_code = '{$data['srcDong']}' "; } else { if (!empty($data['srcGugun'])) { $str_gugun = substr($data['srcGugun'], '0', '2'); if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외 $sql .= "AND a.address_code = '{$data['srcGugun']}' "; } else { $gugunPrefix = substr($data['srcGugun'], '0', '5'); $sql .= "AND a.address_code LIKE '{$gugunPrefix}%' "; } } else { if (!empty($data['srcSido'])) { $sidoPrefix = substr($data['srcSido'], '0', '2'); $sql .= "AND a.address_code LIKE '{$sidoPrefix}%' "; } } } // 담당자 if (!empty($data['damdang'])) { switch ($data['charger_gbn']) { case "1": $sql .= "a.charger = '{$data['damdang']}' "; break; case "2": $sql .= "a.reg_charger = '{$data['damdang']}' "; break; } } else { // 배정여부 if ($data['assign_yn'] !== "A") { switch ($data['charger_gbn'] . $data['assign_yn']) { case "1Y": // 전화/서류 담당자 $sql .= "a.charger != '' "; break; case "1N": // 전화/서류 담당자 $sql .= "a.charger = '' "; break; case "2Y": // 등기부등본 담당자 $sql .= "a.reg_charger != '' "; break; case "2N": // 등기부등본 담당자 $sql .= "a.reg_charger IS NULL "; break; } } } // 본부 if (!empty($data['bonbu'])) { if ($data['charger_gbn'] === "1") { $sql .= "AND a.dept1_sq = '{$data['bonbu']}' "; } else { $sql .= "AND a.reg_dept1_sq = '{$data['bonbu']}' "; } } // 팀 if (!empty($data['team'])) { if ($data['charger_gbn'] === "1") { $sql .= "AND a.dept2_sq = '{$data['team']}' "; } else { $sql .= "AND a.reg_dept2_sq = '{$data['team']}' "; } } // 참고파일 if (!empty($data['reference_file_url_yn'])) { $sql .= "AND a.reference_file_url_yn = '{$data['a.reference_file_url_yn']}' "; } // 법인 if (!empty($data['corp_own'])) { $sql .= "AND m.corp_own = '{$data['a.corp_own']}' "; } } $sql .= "ORDER BY b.vr_sq DESC "; $sql .= "LIMIT {$start}, {$end}"; $query = $this->db->query($sql); return $query->getResultArray(); } // 엑셀 다운로드 public function getExcelList($data) { $sql = "SELECT a.atcl_no AS '매물번호', g.cd_nm AS '진행상태', b.insert_tm AS '접수시간', h.cd_nm AS '검증방식', CONCAT(f.region_nm, ' ', c.rm_no) AS '주소', CONCAT(c.address2, ' ', c.address3) AS '상세주소', a.cpid AS '매체사', a.realtor_nm AS '중개소', i.usr_nm AS '서류/전화 담당자', IFNULL(d.insert_tm, d2.insert_tm) AS '서류/전화 확인완료시간', a.reg_charger AS '등기부등본 담당자', e.insert_tm AS '검증완료 일시', FROM v2_article_info a JOIN v2_vrfc_req b ON a.vr_sq = b.vr_sq JOIN v2_modify_info c ON a.vr_sq = c.vr_sq JOIN v2_article_info_etc k ON k.vr_sq = a.vr_sq LEFT JOIN region_codes f ON a.address_code = f.region_cd LEFT JOIN v2_chg_stat d ON a.vr_sq = d.vr_sq AND d.stat_cd = '35' LEFT JOIN v2_chg_stat e ON a.vr_sq = e.vr_sq AND e.stat_cd = '60' LEFT JOIN codes g ON b.stat_cd = g.cd AND g.category = 'STEP_VERIFICATION' LEFT JOIN codes h ON b.vrfc_type = h.cd AND h.category = 'VRFCREQ_WAY' LEFT JOIN users i ON a.charger = i.usr_id LEFT JOIN users j ON a.charger = j.usr_id LEFT JOIN v2_chg_stat d2 ON d2.vr_sq = a.vr_sq AND d2.stat_cd = '39' "; $sql .= "WHERE 1=1 "; // 매물번호 if (!empty($data['atcl_no'])) { $sql .= "AND a.atcl = '{$data['atcl_no']}' "; } else { // 현재상태 if (!empty($data['stat_cd'])) { $sql .= "AND b.stat_cd = '{$data['stat_cd']}' "; } // 중개소 if (!empty($data['realtor_nm'])) { $sql .= "AND a.realtor_nm = '{$data['realtor_nm']}' "; } // 매물구분 if (!empty($data['rlet_type_cd'])) { $sql .= "AND a.rlet_type_cd = '{$data['rlet_type_cd']}' "; } // 접수기간 if (!empty($data['receipt_sdate'])) { $sql .= "AND b.insert_tm >= '{$data['receipt_sdate']} 00:00:00' "; } if (!empty($data['receipt_edate'])) { $sql .= "AND b.insert_tm <= '{$data['receipt_edate']} 23:59:59' "; } // 완료기간 if (!empty($data['complete_sdate'])) { $sql .= "AND b.insert_tm >= '{$data['complete_sdate']} 00:00:00' "; } if (!empty($data['complete_edate'])) { $sql .= "AND b.insert_tm <= '{$data['complete_edate']} 23:59:59' "; } // 검증방식 if (!empty($data['vrfc_type_sub'])) { $sql .= "AND a.vrfc_type_sub = '{$data['vrfc_type_sub']}' "; } else { if (!empty($data['vrfcreq_way'])) { $sql .= "AND b.vrfc_type = '{$data['vrfcreq_way']}' "; } } // 매체사 if (!empty($data['rcpt_cpid'])) { $sql .= "AND a.cpid = '{$data['rcpt_cpid']}' "; } // 지역구분 if (!empty($data['srcDong'])) { $sql .= "AND a.address_code = '{$data['srcDong']}' "; } else { if (!empty($data['srcGugun'])) { $str_gugun = substr($data['srcGugun'], '0', '2'); if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외 $sql .= "AND a.address_code = '{$data['srcGugun']}' "; } else { $gugunPrefix = substr($data['srcGugun'], '0', '5'); $sql .= "AND a.address_code LIKE '{$gugunPrefix}%' "; } } else { if (!empty($data['srcSido'])) { $sidoPrefix = substr($data['srcSido'], '0', '2'); $sql .= "AND a.address_code LIKE '{$sidoPrefix}%' "; } } } // 담당자 if (!empty($data['damdang'])) { switch ($data['charger_gbn']) { case "1": $sql .= "a.charger = '{$data['damdang']}' "; break; case "2": $sql .= "a.reg_charger = '{$data['damdang']}' "; break; } } else { // 배정여부 if ($data['assign_yn'] !== "A") { switch ($data['charger_gbn'] . $data['assign_yn']) { case "1Y": // 전화/서류 담당자 $sql .= "a.charger != '' "; break; case "1N": // 전화/서류 담당자 $sql .= "a.charger = '' "; break; case "2Y": // 등기부등본 담당자 $sql .= "a.reg_charger != '' "; break; case "2N": // 등기부등본 담당자 $sql .= "a.reg_charger IS NULL "; break; } } } // 본부 if (!empty($data['bonbu'])) { if ($data['charger_gbn'] === "1") { $sql .= "AND a.dept1_sq = '{$data['bonbu']}' "; } else { $sql .= "AND a.reg_dept1_sq = '{$data['bonbu']}' "; } } // 팀 if (!empty($data['team'])) { if ($data['charger_gbn'] === "1") { $sql .= "AND a.dept2_sq = '{$data['team']}' "; } else { $sql .= "AND a.reg_dept2_sq = '{$data['team']}' "; } } // 참고파일 if (!empty($data['reference_file_url_yn'])) { $sql .= "AND a.reference_file_url_yn = '{$data['a.reference_file_url_yn']}' "; } // 법인 if (!empty($data['corp_own'])) { $sql .= "AND m.corp_own = '{$data['a.corp_own']}' "; } } $sql .= "ORDER BY b.vr_sq DESC "; $query = $this->db->query($sql); return $query->getResultArray(); } // 배정변경 public function updateAssign($params) { $this->db->transStart(); $usr_id = session('usr_id'); $usr_sq = session('usr_sq'); // 현재상태 조회 $sql = "SELECT a.vr_sq, a.charger, b.stat_cd FROM v2_article_info a LEFT JOIN v2_vrfc_req b on b.vr_sq = a.vr_sq WHERE a.vr_sq = ? "; $query = $this->db->query($sql, [$params['vr_sq']]); $oldRow = $query->getRowArray(); // 담당자 부서 조회. $sql = "SELECT a.usr_sq, a.usr_id , IFNULL(CASE b.depth WHEN '1' THEN b.dept_sq END, CASE c.depth WHEN '1' THEN c.dept_sq END) dept1_sq , IFNULL(CASE b.depth WHEN '2' THEN b.dept_sq END, CASE c.depth WHEN '2' THEN c.dept_sq END) dept2_sq FROM users a LEFT JOIN departments b ON b.dept_sq = a.dept_sq LEFT JOIN departments c ON c.dept_sq = b.pdept_sq WHERE a.usr_id = ?"; $query = $this->db->query($sql, [$params['damdang']]); $row = $query->getRowArray(); $data = []; if ($params['type'] == "1") { $data = [ 'damdang' => $params['damdang'], 'dept1_sq' => $row['dept1_sq'], 'dept2_sq' => $row['dept2_sq'], ]; } else if ($params['type'] == "2") { $data = [ 'damdang' => $params['damdang'], 'reg_dept1_sq' => $row['dept1_sq'], 'reg_dept2_sq' => $row['dept2_sq'], ]; } // UPDATE v2_article_info $builder = $this->db->table('v2_article_info'); $builder->where('vr_sq', $params['vr_sq']); if (!$builder->update()) { return [ 'success' => false, 'msg' => '저장 실패', ]; } // UPDATE v2_vrfc_req $builder = $this->db->table('v2_vrfc_req'); $builder->where('vr_sq', $params['vr_sq']); $builder->where('CAST(stat_cd AS UNSIGNED) <', 20); $builder->update(); $builder = $this->db->table('v2_vrfc_req'); $builder->where('vr_sq', $params['vr_sq']); $builder->where('CAST(stat_cd AS UNSIGNED) <', 30); $builder->update(); if (!empty($oldRow)) { if (intval($oldRow['stat_cd']) < 20) { $this->saveV2ChgStat($oldRow['vr_sq'], '20', $usr_sq); } $memo = $oldRow['charger'] . ' => ' . $params['damdang']; $this->saveHistory($oldRow['vr_sq'], $oldRow['stat_cd'], 'C13', $usr_id, $memo); } $this->db->transComplete(); return [ 'success' => true, ]; } public function chgStat($vr_sq, $stat_cd, $insert_tm) { //상태변경 TABLE INSERT $usr_sq = session('usr_sq'); $usr_id = session('usr_id'); $list = $this->getDetail($vr_sq); $sql = "INSERT INTO v2_chg_stat (vr_sq, stat_cd, insert_user, insert_tm)" . "VALUES (?, ?, ?, ?)" . "ON DUPLICATE KEY " . "UPDATE vr_sq=VALUES(vr_sq), stat_cd=VALUES(stat_cd), insert_user=VALUES(insert_user), insert_tm=VALUES(insert_tm)"; $data = array( 'vr_sq' => $vr_sq , 'stat_cd' => $stat_cd , 'usr_sq' => $usr_sq , 'insert_tm' => $insert_tm ); $this->db->transStart(); $res = $this->db->query($sql, $data); // echo $this->db->last_query(); $return['error_number'] = $this->db->_error_number(); $return['error_message'] = $this->db->_error_message(); if (empty($return['error_number'])) { //로그를 남긴다. if ($this->db->affected_rows() > 0) { if (!empty($changed)) { $this->saveHistory($list['data']['vr_sq'], $stat_cd, 'C9', $usr_id, "등기부등본확인 정보 수정"); //검증결과 변동사항 HISTORY } } } $this->db->transComplete(); } public function chgStatVrfc($vr_sq, $stat_cd) { $data = ['stat_cd' => $stat_cd]; $builder = $this->db->table('v2_vrfc_req'); $builder->where('vr_sq', $vr_sq); $builder->update($data); $error = $this->db->error(); $return['error_number'] = $error['code'] ?? null; $return['error_message'] = $error['message'] ?? null; return $return; } public function chgStatFax($vr_sq, $stat_cd) { $data = ['stat_cd' => $stat_cd]; $builder = $this->db->table('fax_imgs'); $builder->where('vr_sq', $vr_sq); $builder->update($data); $error = $this->db->error(); $return['error_number'] = $error['code'] ?? null; $return['error_message'] = $error['message'] ?? null; return $return; } // 상태변경 시각 기록 public function saveV2ChgStat($vr_sq, $stat_cd, $insert_user) { $sql = "INSERT INTO v2_chg_stat" . " (vr_sq, stat_cd, insert_user, insert_tm)" . " VALUES" . " (?, ?, ?, now())" . " ON DUPLICATE KEY UPDATE insert_user=VALUES(insert_user), insert_tm=VALUES(insert_tm)"; $this->db->query($sql, [$vr_sq, $stat_cd, $insert_user]); } // 파일정보 저장 public function saveFileInfo($file) { $this->db->transStart(); $fileType = $file['file_type'] ?? '1'; // 기존 파일 확인 $sql = "SELECT seq FROM v2_files WHERE vr_sq = ? AND use_yn = 'Y' AND file_type = ?"; $query = $this->db->query($sql, [$file['vr_sq'], $fileType]); $result = $query->getRow(); if (!empty($result)) { // 기존 파일을 비활성화 $sql = "UPDATE v2_files SET use_yn = 'N' WHERE vr_sq = ? AND file_type = ?"; $this->db->query($sql, [$file['vr_sq'], $fileType]); } // 새 파일 정보 INSERT $data = [ 'vr_sq' => $file['vr_sq'], 'use_yn' => 'Y', 'file_type' => $fileType, 'view_odr' => $file['view_odr'] ?? 0, 'file_path' => $file['file_path'], 'file_name' => $file['new_name'], 'file_ext' => $file['ext'], 'file_size' => $file['size'], 'insert_user' => session('usr_sq'), 'insert_tm' => date('Y-m-d H:i:s'), 'cloud_upload_yn' => 'Y', ]; $builder = $this->db->table('v2_files'); $builder->insert($data); $this->db->transComplete(); } // 변경이력 저장 public function saveHistory($vr_sq, $stat_cd, $chg_type, $usr_id, $memo) { $sql = "INSERT INTO v2_chg_history (vr_sq, stat_cd, chg_type, insert_id, insert_tm, memo) VALUES (?, ?, ?, ?, NOW(), ?) "; $data = [ $vr_sq, $stat_cd, $chg_type, $usr_id, $memo ]; $this->db->query($sql, $data); } // 홍보확인서 정보 public function getRecordInfo($vr_sq, $file_type) { $sql = "SELECT seq, vr_sq, use_yn, file_type, view_odr, IFNULL(file_path , '') AS file_path, IFNULL(file_name, '') AS file_name, file_ext, file_size, img_width, img_height, meta_data, insert_user, insert_tm, cloud_upload_yn FROM v2_files WHERE vr_sq = ? AND use_yn = 'Y' AND file_type = ? ORDER BY seq DESC "; $query = $this->db->query($sql, [$vr_sq, $file_type]); return $query->getRowArray(); } // 메모확인 public function getMemo($vr_sq) { $sql = "SELECT memo FROM v2_vrfc_req where vr_sq = ?"; $query = $this->db->query($sql, [$vr_sq]); return $query->getRowArray(); } // 상세목록 조회 public function getDetail($vr_sq) { $sql = "SELECT a.vr_sq, a.dong_ho_chk, a.hscplqry_lv, b.tel_fail_cause, a.atcl_no, a.cpid, a.cp_atcl_id, a.rlet_type_cd, a.address1, a.sise, a.rdate, b.try_cnt, a.seller_tel_no, a.seller_nm, a.realtor_nm, a.realtor_tel_no, a.charger, b.insert_tm, a.reg_charger, b.stat_cd, i2.usr_nm as reg_charger_nm, c.bild_nm, b.vrfc_type as vrfc_type_cd, c.rm_no, c.floor, c.floor2, c.address_code, c.address2, c1.address2a, c1.address2b, c.address3, c.address4, c.trade_type as trade_type_cd, c.deal_amt, c.wrrnt_amt, c.lease_amt, c.isale_amt, c.prem_amt, c.sply_spc, c.excls_spc, c.tot_spc, c.grnd_spc, c.bldg_spc, c.hscp_no, c.ptp_no, d.insert_tm as update_res_tm, e.insert_tm as result_tm, f.region_nm, g.cd_nm as pre_stat, g.cd as pre_stat_cd, h.cd_nm as vrfc_type, i.usr_nm, j.cd_nm as trade_type, c.hscp_nm, c.ptp_nm, l.success, k.cd_nm as atcl_nm, m.code as result_d11, m.comment, n.code as fax_conf_yn_2, o.code as fax_conf_yn_3, p.code as fax_conf_yn_4, n.comment as fax_conf_yn_info_2, o.comment as fax_conf_yn_info_3, p.comment as fax_conf_yn_info_4, v.success AS tel_suc, r.code AS tel_agree, s.code AS tel_conf_yn_2, t.code AS tel_conf_yn_3, u.code AS tel_conf_yn_4, s.comment AS tel_conf_yn_info_2, t.comment AS tel_conf_yn_info_3, u.comment AS tel_conf_yn_info_4, w.success AS reg_conf_yn_1, x.code AS reg_conf_yn_2, y.code AS reg_conf_yn_3, x.comment AS reg_conf_yn_info_2, y.comment AS reg_conf_yn_info_3, b.rgbk_confirm, a.confirm_doc_img_url, a.cert_register, a.cert_register_save_yn, a.confirm_doc_img_url_save_yn, a.reference_file_url, a.reference_file_url_save_yn, a.reference_file_url_yn, c1.vir_addr_yn FROM v2_article_info AS a JOIN v2_vrfc_req b ON a.vr_sq = b.vr_sq JOIN v2_modify_info c ON a.vr_sq = c.vr_sq JOIN v2_article_info_etc c1 ON c1.vr_sq = a.vr_sq LEFT JOIN region_codes f ON a.address_code = f.region_cd LEFT JOIN v2_chg_stat d ON a.vr_sq = d.vr_sq AND d.stat_cd = '35' LEFT JOIN v2_chg_stat e ON a.vr_sq = e.vr_sq AND e.stat_cd = '60' LEFT JOIN codes g ON b.stat_cd = g.cd AND g.category = 'STEP_VERIFICATION' LEFT JOIN codes h ON b.vrfc_type = h.cd AND h.category = 'VRFCREQ_WAY' LEFT JOIN codes j ON c.trade_type = j.cd AND j.category = 'TRADE_TYPE' LEFT JOIN codes k ON a.rlet_type_cd = k.cd AND k.category = 'ARTICLE_TYPE' LEFT JOIN v2_confirm l ON a.vr_sq = l.vr_sq AND l.vrfc_type = 'D' LEFT JOIN v2_check_list m ON a.vr_sq = m.vr_sq AND m.type = 'D11' LEFT JOIN v2_check_list n ON a.vr_sq = n.vr_sq AND n.type = 'D12' LEFT JOIN v2_check_list o ON a.vr_sq = o.vr_sq AND o.type = 'D13' LEFT JOIN v2_check_list p ON a.vr_sq = p.vr_sq AND p.type = 'D14' LEFT JOIN v2_confirm v ON a.vr_sq = v.vr_sq AND v.vrfc_type = 'T' LEFT JOIN v2_check_list r ON a.vr_sq = r.vr_sq AND r.type = 'T11' LEFT JOIN v2_check_list s ON a.vr_sq = s.vr_sq AND s.type = 'T12' LEFT JOIN v2_check_list t ON a.vr_sq = t.vr_sq AND t.type = 'T13' LEFT JOIN v2_check_list u ON a.vr_sq = u.vr_sq AND u.type = 'T14' LEFT JOIN v2_confirm w ON a.vr_sq = w.vr_sq AND w.vrfc_type = 'R' LEFT JOIN v2_check_list x ON a.vr_sq = x.vr_sq AND x.type = '21' LEFT JOIN v2_check_list y ON a.vr_sq = y.vr_sq AND y.type = '22' LEFT JOIN users i ON a.charger = i.usr_id LEFT JOIN users i2 ON a.reg_charger = i2.usr_id WHERE a.vr_sq = ?"; $query = $this->db->query($sql, [$vr_sq]); return $query->getRowArray(); } /* 매물정보를 수정 */ //public function saveModifyInfo($atcl_vr_sq, $atcl_hscp_nm, $atcl_ptp_nm, $atcl_vrfc_type, $trade_type, $atcl_addr1, $atcl_addr1a, $atcl_addr1b, $atcl_addr2, $atcl_hscp_no, $atcl_ptp_no, $atcl_amt1, $atcl_amt2, $atcl_amt3, $atcl_floor, $atcl_floor2){ public function saveModifyInfo($atcl_vr_sq, $atcl_hscp_nm, $atcl_ptp_nm, $atcl_vrfc_type, $trade_type, $atcl_addr1, $atcl_addr1a, $atcl_addr1b, $atcl_addr2, $atcl_hscp_no, $atcl_ptp_no, $atcl_amt1, $atcl_amt2, $atcl_amt3, $atcl_floor, $atcl_floor2) { $usr_id = session('usr_id'); $list = $this->getDetail($atcl_vr_sq); if ($trade_type !== 'B2') { $atcl_amt3 = '0'; $data['lease_amt'] = $atcl_amt3; } if (!empty($trade_type)) { $data['trade_type'] = $trade_type; } if (!empty($atcl_hscp_nm)) { $data['hscp_nm'] = $atcl_hscp_nm; } if (!empty($atcl_ptp_nm)) { $data['ptp_nm'] = $atcl_ptp_nm; } if (!empty($atcl_addr1)) { $data['address2'] = $atcl_addr1; } if (!empty($atcl_addr1a)) { $data['address2a'] = $atcl_addr1a; } if (!empty($atcl_addr1b)) { $data['address2b'] = $atcl_addr1b; } if (!empty($atcl_addr2)) { $data['address3'] = $atcl_addr2; } if (!empty($atcl_hscp_no)) { $data['hscp_no'] = $atcl_hscp_no; } if (!empty($atcl_ptp_no)) { $data['ptp_no'] = $atcl_ptp_no; } if (!empty($atcl_amt1)) { $data['deal_amt'] = $atcl_amt1; } if (!empty($atcl_amt2)) { $data['wrrnt_amt'] = $atcl_amt2; } if (!empty($atcl_amt3)) { $data['lease_amt'] = $atcl_amt3; } if (!empty($atcl_floor)) { $data['floor'] = $atcl_floor; } if (!empty($atcl_floor2)) { $data['floor2'] = $atcl_floor2; } $data['modify_yn'] = 'Y'; $this->db->transStart(); $builder = $this->db->table('v2_modify_info'); $builder->where('vr_sq', $atcl_vr_sq); $builder->update($data); $lastQuery = (string) $this->db->getLastQuery(); $currentUrl = current_url(); log_message('debug', "{$currentUrl} :: {$lastQuery}"); $data['trade_type_cd'] = $trade_type; $error = $this->db->error(); $return['error_number'] = $error['code'] ?? null; $return['error_message'] = $error['message'] ?? null; if (empty($return['error_number'])) { if ($this->db->affectedRows() > 0) { if (!empty($changed)) { $this->saveHistory($list['data']['vr_sq'], $list['data']['pre_stat_cd'], 'C25', $usr_id, '매물정보 수정'); } } } $this->db->transComplete(); $faxModel = new FaxModel(); $faxModel->updateAddress($atcl_vr_sq, $list['data']['address_code'], $data['address2'], $data['address3'], $data['hscp_no'], $data['hscp_nm']); return $return; } public function saveModifyVrfc($atcl_vr_sq, $atcl_vrfc_type) { $usr_id = session('usr_id'); $list = $this->getDetail($atcl_vr_sq); $data = [ 'vrfc_type' => $atcl_vrfc_type, ]; $this->db->transStart(); $builder = $this->db->table('v2_vrfc_req'); $builder->where('vr_sq', $atcl_vr_sq); $builder->update($data); $data['vrfc_type_cd'] = $atcl_vrfc_type; $error = $this->db->error(); $return['error_number'] = $error['code'] ?? null; $return['error_message'] = $error['message'] ?? null; if (empty($return['error_number'])) { if ($this->db->affectedRows() > 0) { if (!empty($changed)) { $this->saveHistory($list['data']['vr_sq'], $list['data']['pre_stat_cd'], 'C25', $usr_id, '매물정보 저장'); } } } $this->db->transComplete(); return $return; } // 현재상태확인 public function chkStat($vr_sq) { $sql = "SELECT stat_cd FROM v2_vrfc_req WHERE vr_sq = ?"; $data = [ $vr_sq ]; $query = $this->db->query($sql, $data); return $query->getRowArray(); } public function InsResChar($atcl_vr_sq) { $usr_id = session('usr_id'); $sql = "UPDATE v2_article_info" . " SET reg_charger = ?" . " WHERE vr_sq = ?"; $data = array( $usr_id, $atcl_vr_sq ); $res = $this->db->query($sql, $data); $log_v = $this->db->getLastQuery(); log_message('debug', $log_v); } public function chkRegiTryCnt($atcl_vr_sq) { $builder = $this->db->table('v2_vrfc_req a'); $builder->select('a.reg_try_cnt'); $builder->where('vr_sq', $atcl_vr_sq); $query = $builder->get(); return $query->getRowArray(); } public function chkConfirm($atcl_vr_sq, $reg_yn) { //검증결과 table에 있는지 확인. $builder = $this->db->table('v2_confirm a'); $builder->select('a.vr_sq'); $builder->where('a.vr_sq', $atcl_vr_sq); if (!empty($reg_yn)) { $builder->where('a.vrfc_type', $reg_yn); // 등기부등본 정보 확인시 } return $builder->get()->getNumRows(); } public function insertConfirm($vr_sq, $vrfc_type, $success, $type) { //v2_confirm INSERT $usr_sq = session('usr_sq'); $usr_id = session('usr_id'); $sql = "INSERT INTO v2_confirm" . "(vr_sq, vrfc_type, success, type, charger, date, insert_user, insert_tm, update_user, update_tm)" . "VALUES" . "(?, ?, ?, ?, ?, '" . date('YmdHis') . "', ?, NOW(), ?, NOW())"; $data = array( $vr_sq, $vrfc_type, $success, $type, $usr_id, $usr_sq, $usr_sq ); $this->db->query($sql, $data); } public function updateConfirm($vr_sq, $vrfc_type, $success) { $data = [ 'success' => $success, 'update_user' => session('usr_sq'), 'update_tm' => date('Y-m-d H:i:s') ]; $builder = $this->db->table('v2_confirm'); $builder->where('vr_sq', $vr_sq); $builder->where('vrfc_type', $vrfc_type); $builder->update($data); $error = $this->db->error(); $return['error_number'] = $error['code'] ?? null; $return['error_message'] = $error['message'] ?? null; return $return; } public function saveApiErr($err_sq, $err_code, $err_nm, $err_time, $err_no, $err_server = '') { $sql = "INSERT INTO err_api (err_sq, err_code, err_nm, err_time, err_no, err_server)" . " VALUES (?, ?, ?, ?, ?, ?);"; $data = array( $err_sq, $err_code, $err_nm, $err_time, $err_no, $err_server ); $res = $this->db->query($sql, $data); } public function insertChkList($vr_sq, $vrfc_type, $type, $code, $comment) { //v2_check_list INSERT $usr_sq = session('usr_sq'); $sql = "INSERT INTO v2_check_list" . "(vr_sq, vrfc_type, type, code, comment, insert_user, insert_tm)" . "VALUES" . "(?, ?, ?, ?, ?, ?, NOW())" . " ON DUPLICATE KEY UPDATE" . " vr_sq=values(vr_sq), vrfc_type=values(vrfc_type), type=values(type), code=values(code), comment=values(comment), insert_user=values(insert_user), insert_tm=values(insert_tm)"; $data = array( $vr_sq, $vrfc_type, $type, $code, $comment, $usr_sq ); $res = $this->db->query($sql, $data); } /* 등기부등본 API 호출*/ public function getDatacertAPI($vr_sq, $vrfc_type = '') { // 요청정보 $sql = "SELECT vr_sq, atcl_no, step, cpid, cp_atcl_id, trade_type, realtor_nm, realtor_tel_no, seller_tel_no, vrfc_type, rgbk_confirm, req_type, rdate, stat_cd, try_cnt, insert_user, insert_tm, owner_verifiable" . " FROM v2_vrfc_req where vr_sq = ?"; $data = array($vr_sq); $query = $this->db->query($sql, $data); $row_vrfc_req = $query->getRowArray(); if (!empty($vrfc_type)) { $row_vrfc_req['vrfc_type'] = $vrfc_type; } log_message('debug', $this->db->getLastQuery()); // 매물정보 $sql = "SELECT vr_sq, atcl_no, cpid, cp_atcl_id, rlet_type_cd, trade_type, address_code, address1, address2, address3, sply_spc, excls_spc, tot_spc, grnd_spc, bldg_spc, deal_amt, wrrnt_amt, lease_amt, isale_amt, prem_amt, sise, floor, rdate, seller_tel_no, seller_nm, realtor_nm, realtor_tel_no, hscp_no, hscp_nm, ptp_no, ptp_nm, charger, req_price_yn, reg_charger, dept1_sq, dept2_sq, reg_dept1_sq, reg_dept2_sq, floor2" . " FROM v2_article_info where vr_sq = ?"; $data = array($vr_sq); $query = $this->db->query($sql, $data); $row_article_info = $query->getRowArray(); log_message('debug', $this->db->getLastQuery()); // 수정정보 $sql = "SELECT vr_sq, bild_nm, rm_no, floor, address_code, address2, address3, trade_type, deal_amt, wrrnt_amt, lease_amt, isale_amt, prem_amt, sply_spc, excls_spc, tot_spc, grnd_spc, bldg_spc, hscp_no, hscp_nm, ptp_no, ptp_nm, modify_yn, floor2" . " FROM v2_modify_info where vr_sq = ?"; $data = array($vr_sq); $query = $this->db->query($sql, $data); $row_modify_info = $query->getRowArray(); log_message('debug', $this->db->getLastQuery()); // 검증결과 $sql = "SELECT vr_sq, vrfc_type, success, type, charger, date, insert_user, insert_tm, update_user, update_tm, work_type" . " FROM v2_confirm where vr_sq = ? and vrfc_type = ?"; $data = array($vr_sq, $row_vrfc_req['vrfc_type']); $query = $this->db->query($sql, $data); $row_confirm = $query->getRowArray(); log_message('debug', $this->db->getLastQuery()); // 확인정보 $sql = "SELECT a.type, a.code, a.comment, b.ownerNm, b.owner_birth" . " FROM v2_check_list a " . " INNER JOIN v2_article_info b on a.vr_sq = b.vr_sq" . " WHERE a.vr_sq = ? and a.vrfc_type = ?"; // " FROM v2_check_list where vr_sq = ? and vrfc_type = ? and type like concat(vrfc_type, '%')"; $data = array($vr_sq, $row_vrfc_req['vrfc_type']); $query = $this->db->query($sql, $data); $res_check_list = $query->getResultArray(); log_message('debug', $this->db->getLastQuery()); log_message('debug', implode(', ', $row_confirm)); $atclNo = $row_vrfc_req['atcl_no']; $type = $row_vrfc_req['try_cnt']; $success = empty($row_confirm['success']) ? FALSE : TRUE; $charger = $row_confirm['charger']; $date = $row_confirm['date']; if ($row_vrfc_req['owner_verifiable'] == 'false') { $ownerVerifiable = FALSE; } else { $ownerVerifiable = TRUE; } $checkList = array(); foreach ($res_check_list as $row) { $checkList[] = array( 'type' => $row['type'], 'code' => $row['code'], 'comment' => $row['comment'], 'ownerNm' => $row['ownerNm'], 'ownerBirth' => $row['owner_birth'], ); } $modifyInfo = array(); if ($row_modify_info['modify_yn'] == 'Y') { if (!empty($row_modify_info['hscp_no'])) { // 공동주택 $modifyInfo = array( 'hscpNo' => $row_modify_info['hscp_no'], 'ptpNo' => $row_modify_info['ptp_no'], 'bildNm' => $row_modify_info['address2'], 'rmNo' => $row_modify_info['address3'], 'tradeType' => $row_modify_info['trade_type'], 'dealAmt' => $row_modify_info['deal_amt'], 'wrrntAmt' => $row_modify_info['wrrnt_amt'], 'leaseAmt' => $row_modify_info['lease_amt'], 'isaleAmt' => $row_modify_info['isale_amt'], 'premAmt' => $row_modify_info['prem_amt'], 'floor' => $row_modify_info['floor'], ); } else { // 비공동주택 $modifyInfo = array( 'addressCode' => $row_modify_info['address_code'], 'address2' => $row_modify_info['address2'], 'address3' => $row_modify_info['address3'], 'tradeType' => $row_modify_info['trade_type'], 'dealAmt' => $row_modify_info['deal_amt'], 'wrrntAmt' => $row_modify_info['wrrnt_amt'], 'leaseAmt' => $row_modify_info['lease_amt'], 'splySpc' => $row_modify_info['sply_spc'], 'exclsSpc' => $row_modify_info['excls_spc'], 'totSpc' => $row_modify_info['tot_spc'], 'grndSpc' => $row_modify_info['grnd_spc'], 'bldgSpc' => $row_modify_info['bldg_spc'], 'floor' => $row_modify_info['floor'], 'floor2' => $row_modify_info['floor2'], ); } return array( 'atclNo' => $atclNo, 'type' => $type, 'success' => $success, 'checkList' => $checkList, 'charger' => $charger, 'modifyInfo' => $modifyInfo, 'date' => $date, 'ownerVerifiable' => $ownerVerifiable, ); } else { return array( 'atclNo' => $atclNo, 'type' => $type, 'success' => $success, 'checkList' => $checkList, 'charger' => $charger, 'date' => $date, 'ownerVerifiable' => $ownerVerifiable, ); } } public function chgRegiTryCnt($vr_sq, $try_cnt) { //v2_vrfc_req try_cnt 값 변경. $sql = "UPDATE v2_vrfc_req" . " SET reg_try_cnt = ?" . " WHERE vr_sq = ?"; $data = array( $try_cnt, $vr_sq ); $res = $this->db->query($sql, $data); } public function InsCharger($atcl_vr_sq) { $usr_id = session('usr_id'); $sql = "UPDATE v2_article_info" . " SET charger = ?" . " WHERE vr_sq = ?"; $data = array( $usr_id, $atcl_vr_sq ); $res = $this->db->query($sql, $data); $log_v = $this->db->getLastQuery(); log_message('debug', $log_v); } public function chkTryCnt($atcl_vr_sq) { $builder = $this->db->table('v2_vrfc_req a'); $builder->select('a.try_cnt'); $builder->where('a.vr_sq', $atcl_vr_sq); $query = $builder->get(); return $query->getRowArray(); } public function saveMemo($data) { $usr_id = session('usr_id'); $sql = "UPDATE v2_vrfc_req SET memo = ? WHERE vr_sq = ? "; if ($this->db->query($sql, [$data['memo'], $data['vr_sq']]) === false) { return [ 'success' => false, 'msg' => '저장 실패', ]; } $detail = $this->getDetail($data['vr_sq']); $memo = "메모변경 : " . $detail['memo'] . " => " . $data['memo']; $this->saveHistory($data['vr_sq'], $data['pre_stat_cd'], 'C19', $usr_id, $memo); return [ 'success' => true, ]; } // 변경이력 조회 public function getHistory($vr_sq) { $sql = "SELECT a.seq, a.vr_sq, a.stat_cd, a.chg_type, a.insert_id, a.insert_tm, a.memo, b.cd_nm as stat_cd_nm, c.cd_nm as chg_type FROM v2_chg_history a LEFT JOIN codes b ON a.stat_cd = b.cd AND b.category = 'STEP_VERIFICATION' LEFT JOIN codes c ON a.chg_type = c.cd AND b.category = 'CHANGED_TYPE' WHERE a.vr_sq = ? ORDER BY a.seq DESC "; $query = $this->db->query($sql, [$vr_sq]); return $query->getResultArray(); } }