Compare commits

...

18 Commits

Author SHA1 Message Date
yangsh
8b621a065e 현장확인 수정
Some checks failed
Close Pull Request / main (pull_request_target) Has been cancelled
2026-02-06 10:38:18 +09:00
53695a1dc3 Merge pull request 'feature/template' (#53) from feature/template into master
Reviewed-on: http://192.168.10.243:3000/owrainfo/confirms/pulls/53
2026-02-05 15:08:43 +09:00
b9b3f43956 상세수정
Reviewed-on: http://192.168.10.243:3000/owrainfo/confirms/pulls/52
2026-02-05 12:43:00 +09:00
fc4ce793e3 상세수정
Reviewed-on: http://192.168.10.243:3000/owrainfo/confirms/pulls/51
2026-02-05 10:37:22 +09:00
ae5677a635 모델 수정 2026-02-04 21:45:23 +09:00
1311dc529a 쿼리문 출력 2026-02-04 21:40:30 +09:00
54f0a2a4d2 수정 2026-02-04 21:27:20 +09:00
9f20f4347a 수정 2026-02-04 21:07:28 +09:00
f9b6336eab 수정 2026-02-04 21:03:31 +09:00
6bed688be0 오류 확인 2026-02-04 20:19:07 +09:00
fef656243c 수정 2026-02-04 20:15:07 +09:00
c93a2035dd 저장 실패시 상세 로그 2026-02-04 20:09:52 +09:00
db70b28eb9 modifyinfo 입력 수정 2026-02-04 20:04:24 +09:00
918e27da67 오타수정 2026-02-04 19:59:45 +09:00
f7bda06ddf Merge branch 'master' of http://192.168.10.243:3000/owrainfo/confirms 2026-02-04 18:34:16 +09:00
2781638f58 db_now format 수정 reg_price_yn -> req_price_yn 으로 수정 2026-02-04 18:34:11 +09:00
c21a137dbb 상세수정
Reviewed-on: http://192.168.10.243:3000/owrainfo/confirms/pulls/50
2026-02-04 17:54:06 +09:00
9a2d0af8d0 v2 파라메터 2026-02-04 17:43:55 +09:00
10 changed files with 1790 additions and 180 deletions

View File

@@ -67,11 +67,13 @@ $routes->group('', ['namespace' => 'App\Controllers\Article'], static function (
$routes->get('excel', 'Receipt::excel');
$routes->post('saveTel', 'Receipt::saveTel'); // 연락가능전화 저장
$routes->post('resDbYn', 'Receipt::resDbYn'); // 거주여부 저장
$routes->post('resGround', 'Receipt::resGround'); // 평면도요청 저장
$routes->post('assignRegist', 'Receipt::assignRegist'); // 예약확정 저장
$routes->post('requestMovie', 'Receipt::requestMovie'); // 동영상 촬영여부저장
$routes->post('requestMessage', 'Receipt::requestMessage'); // 중개사메모 저장
$routes->post('rsrvcancel', 'Receipt::rsrvcancel'); // 예약취소
$routes->post('chgStatus', 'Receipt::chgStatus'); // 상태변경
$routes->post('sendSms', 'Receipt::sendSms'); // 문자발송
$routes->post('saveRecInfo', 'Receipt::saveRecInfo'); // 거주인정보저장
$routes->post('uploadFile', 'Receipt::uploadFile'); // 파일업로드

View File

@@ -5,8 +5,11 @@ use App\Controllers\BaseController;
use App\Libraries\Common;
use App\Libraries\MyUpload;
use App\Libraries\NaverApiClient;
use App\Models\article\DeptModel;
use App\Models\article\ReceiptModel;
use App\Models\common\CodeModel;
use Exception;
class Receipt extends BaseController
{
@@ -143,6 +146,7 @@ class Receipt extends BaseController
// 상세화면
public function detail($id)
{
$naver = new NaverApiClient();
$id = (string) $id;
if ($id === '') {
@@ -161,6 +165,10 @@ class Receipt extends BaseController
$team = $this->model->getTeamList();
log_message('info', '[Receipt::detail] getTeamList {ms}ms', ['ms' => (int) ((microtime(true) - $t2) * 1000)]);
$damdang = $this->model->getUserList();
// sms 코드
$sms = [];
foreach ($codes as $c) {
@@ -209,6 +217,9 @@ class Receipt extends BaseController
$tmCount = $this->model->getUsrRsrvDateTmCount($id);
log_message('info', '[Receipt::detail] getUsrRsrvDateTmCount {ms}ms', ['ms' => (int) ((microtime(true) - $t10) * 1000)]);
// 당일 방문예정 매물.
$assignList = $this->model->getAssignReceiptListByUser($data['rsrv_date'], $data['usr_sq'], array($id));
// 체크리스트 조회
$t11 = microtime(true);
if ($data['exp_photo_yn'] === "N") {
@@ -217,13 +228,30 @@ class Receipt extends BaseController
$result_check = [];
}
$pdept = '';
if (!empty($data['dept_sq'])) {
$pdept = $this->model->getDeptDetail($data['dept_sq']);
} else {
$pdept = $this->model->getDeptDetail($data['region_dept_sq']);
}
$complexList = [];
$ptpList = [];
// print_r($data);
// exit;
if ($data['comp_sq'] == '2') {
// $callApi = new CallApi();
// 아파트단지목록
$complexList = $naver->complexList($data['rcpt_dong']);
// 평형목록
$ptpList = $naver->ptpList($data['rcpt_hscp_no']);
}
// print_r($ptpList);
// exit;
log_message('info', '[Receipt::detail] getChecklist {ms}ms', ['ms' => (int) ((microtime(true) - $t11) * 1000)]);
log_message('info', '[Receipt::detail] total {ms}ms', ['ms' => (int) ((microtime(true) - $t0) * 1000)]);
@@ -231,9 +259,13 @@ class Receipt extends BaseController
$this->data['codes'] = $codes;
$this->data['bonbu'] = $bonbu;
$this->data['team'] = $team;
$this->data['damdang'] = $damdang;
$this->data['pdept'] = $pdept;
$this->data['sms'] = $sms;
$this->data['data'] = $data;
$this->data['assignList'] = $assignList;
$this->data['history'] = $history;
$this->data['dupleGroundPlan'] = $dupleGroundPlan;
@@ -247,6 +279,9 @@ class Receipt extends BaseController
$this->data['tmCount'] = $tmCount;
$this->data['result_check'] = $result_check;
$this->data['complexList'] = $complexList;
$this->data['ptpList'] = $ptpList;
return view("pages/article/receipt/detail", $this->data);
}
@@ -275,6 +310,48 @@ class Receipt extends BaseController
}
}
// 거주여부 저장
public function resDbYn()
{
$naver = new NaverApiClient();
try {
$rcpt_key = $this->request->getPost('rcpt_key');
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$res_yn = $this->request->getPost('resYn');
$dbUsageAgrYn = $this->request->getPost('dbUsageAgrYn');
$this->model->saveResDB($rcpt_sq, $rsrv_sq, $res_yn, $dbUsageAgrYn);
$receipt = $this->getDetail($rcpt_key);
if ($res_yn == 'Y') {
$isResidentsExist = true;
} else {
$isResidentsExist = false;
}
$api_result = $naver->residentsExistence($rcpt_key, $isResidentsExist);
if (!isset($api_result['result'])) {
throw new \Exception('API 통신오류입니다.\n다시 저장하여 주십시요.');
}
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 평면도요청 저장
public function resGround()
{
@@ -302,13 +379,42 @@ class Receipt extends BaseController
// 예약확정 저장
public function assignRegist()
{
$naver = new NaverApiClient();
$deptModel = new DeptModel();
try {
//전달받은 값
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rcpt_key = $this->request->getPost('rcpt_key');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$rsrv_date = $this->request->getPost('rsrv_date');
$rsrv_tm_ap = $this->request->getPost('rsrv_tm_ap');
$rsrv_tm_hour = $this->request->getPost('rsrv_tm_hour');
$bonbu = $this->request->getPost('bonbu');
$dept_sq = $this->request->getPost('dept_sq');
$usr_sq = $this->request->getPost('usr_sq');
$bonbuInfo = $deptModel->getDeptDetail($bonbu);
$deptInfo = $deptModel->getDeptDetail($dept_sq);
$userInfo = $this->model->getUserDetail($usr_sq);
$receipt = $this->model->getDetail($rcpt_key);
/*** 네이버 연동[s] ***/
$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)) { //네이버연동 상태변경 완료
$result = $this->model->assignRegist($rcpt_sq, $rsrv_date, $rsrv_tm_ap, $rsrv_tm_hour, $dept_sq, $usr_sq, $receipt);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} else {
throw new \Exception($na_result['message']);
}
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
@@ -371,10 +477,44 @@ class Receipt extends BaseController
// 예약취소
public function rsrvcancel()
{
$naver = new NaverApiClient();
try {
//전달받은 값
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$rcpt_key = $this->request->getPost('rcpt_key');
$result_cd2 = $this->request->getPost('result_cd2');
$result_cd3 = $this->request->getPost('result_cd3');
$result_msg = $this->request->getPost('result_msg');
$rcpt_stat1 = $this->request->getPost('rcpt_stat1');
$receipt = $this->model->getDetail($rcpt_key);
/*** 네이버 연동[s] ***/
if ($result_cd2 == '9010' || $result_cd2 == '9020') { //예약취소
$na_result = $naver->reserveFail($rcpt_key, "E11", $result_msg);
} else if ($result_cd2 == '9030') {
if ($rcpt_stat1 == '70') {
throw new \Exception('방문전 취소 할 수 없습니다.');
} else {
$na_result = $naver->shootFail($rcpt_key, "E21", $result_msg);
}
} else if ($result_cd2 == '9040') {
$na_result = $naver->shootFail($rcpt_key, "E22", $result_msg);
} else if ($result_cd2 == '9045') {
$na_result = $naver->shootFail($rcpt_key, "E23", $result_msg);
} else if ($result_cd2 == '9050') {
$na_result = $naver->inspectFail($rcpt_key, 'E31', $result_msg);
}
/*** 네이버 연동[e] ***/
if (array_key_exists('result', $na_result)) { //네이버연동 상태변경 완료
$result = $this->model->rsrvcancel($rcpt_sq, $rsrv_sq, $result_cd2, $result_cd3, $result_msg, $receipt);
} else {
throw new \Exception($na_result['message']);
}
return $this->response->setJSON([
'code' => '0',
@@ -389,6 +529,55 @@ class Receipt extends BaseController
}
}
// 상태변경
public function chgStatus()
{
try {
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rcpt_key = $this->request->getPost('rcpt_key');
$rcpt_stat = $this->request->getGet('rcpt_stat');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$req_rec_yn = $this->request->getGet('reqRecYn');
$rsrv_date = $this->request->getPost('rsrv_date');
$rsrv_tm_ap = $this->request->getPost('rsrv_tm_ap');
$rsrv_tm_hour = $this->request->getPost('rsrv_tm_hour');
$bonbu = $this->request->getPost('bonbu');
$dept_sq = $this->request->getPost('dept_sq');
$usr_sq = $this->request->getPost('usr_sq');
$rletTypeCd = $this->request->getGet('rletTypeCd');
// 파라미터 디버그 로깅
$p = [
'rcpt_sq' => $rcpt_sq,
'rcpt_key' => $rcpt_key,
'rcpt_stat' => $rcpt_stat,
'rsrv_sq' => $rsrv_sq,
'req_rec_yn' => $req_rec_yn,
'rsrv_date' => $rsrv_date,
'rsrv_tm_ap' => $rsrv_tm_ap,
'rsrv_tm_hour' => $rsrv_tm_hour,
'bonbu' => $bonbu,
'dept_sq' => $dept_sq,
'usr_sq' => $usr_sq,
'rletTypeCd' => $rletTypeCd,
];
print_r($p);
exit;
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 문자발송
public function sendSms()

View File

@@ -245,8 +245,17 @@ if (!function_exists('db_now')) {
function db_now(?string $format = null)
{
if ($format) {
$mysqlFormat = strtr($format, [
'Y' => '%Y', 'y' => '%y',
'm' => '%m', 'n' => '%c',
'd' => '%d', 'j' => '%e',
'H' => '%H', 'h' => '%h',
'i' => '%i', 's' => '%s',
'A' => '%p', 'a' => '%p',
]);
// 포맷이 있으면 DATE_FORMAT(NOW(), '포맷') 형태로 생성
return new \CodeIgniter\Database\RawSql("DATE_FORMAT(NOW(), '$format')");
return new \CodeIgniter\Database\RawSql("DATE_FORMAT(NOW(), '$mysqlFormat')");
}
// 포맷이 없으면 기본 NOW() 반환
return new \CodeIgniter\Database\RawSql('NOW()');

View File

@@ -363,6 +363,78 @@ class NaverApiClient
return $this->request('POST', $url, $postData);
}
/**
* 현장확인 거주인 여부 변경
*/
public function residentsExistence($reserveNumber, $isResidentsExist)
{
$url = $this->commonModel->getCompanyInfo(3);
$url = $url['api_server'] . "/residents/existence";
$postData = [
'reserveNumber' => $reserveNumber,
'isResidentsExist' => $isResidentsExist
];
return $this->request('POST', $url, $postData);
}
/**
* 예약확인 완료
*/
public function reserveSuccess($reserveNo, $modyfyYn, $agency, $team, $staff, $staffTel, $reserveYmd, $apm)
{
$url = $this->commonModel->getCompanyInfo(3);
$url = $url['api_server'] . "/site/reserveSuccess.nhn";
$getData = ['reserveNo' => $reserveNo, 'modyfyYn' => $modyfyYn, 'agency' => $agency, 'team' => $team, 'staff' => $staff, 'staffTel' => $staffTel, 'reserveYmd' => $reserveYmd, 'apm' => $apm];
return $this->request('POST', $url, $getData);
}
/**
* 예약확인 실패
*/
public function reserveFail($reserveNo, $errorCode, $etcTxt)
{
$url = $this->commonModel->getCompanyInfo(3);
$url = $url['api_server'] . "/site/reserveFail.nhn";
$getData = ['reserveNo' => $reserveNo, 'errorCode' => $errorCode, 'errorDesc' => $etcTxt];
return $this->request('POST', $url, $getData);
}
/**
* 촬영 실패
*/
public function shootFail($reserveNo, $errorCode, $etcTxt)
{
$url = $this->commonModel->getCompanyInfo(3);
$url = $url['api_server'] . "/site/shootFail.nhn";
$getData = ['reserveNo' => $reserveNo, 'errorCode' => $errorCode, 'errorDesc' => $etcTxt];
return $this->request('POST', $url, $getData);
}
/**
* 현장확인2 및 썸네일 검수 실패
*/
public function inspectFail($reserveNumber, $failDescription)
{
$url = $this->commonModel->getCompanyInfo(3);
$url = $url['api_server'] . "/site/vr/inspect/fail";
$postData = [
'reserveNumber' => $reserveNumber,
'failDescription' => $failDescription
];
return $this->request('POST', $url, $postData);
}
/**
* CURL 공통 실행 함수
*/

View File

@@ -50,36 +50,36 @@ class V2modifyinfoModel extends Model
];
// 검증 규칙
protected $validationRules = [
'vr_sq' => 'required|integer',
'bild_nm' => 'string|max_length[60]',
'rm_no' => 'string|max_length[30]',
'floor' => 'integer',
'floor2' => 'integer',
'ugrodFloor' => 'integer',
'address_code' => 'string|max_length[10]',
'address2' => 'string|max_length[300]',
'address2a' => 'string|max_length[300]',
'address2b' => 'string|max_length[300]',
'address3' => 'string|max_length[300]',
'address4' => 'string|max_length[1000]',
'trade_type' => 'string|max_length[2]',
'deal_amt' => 'integer',
'wrrnt_amt' => 'integer',
'lease_amt' => 'integer',
'isale_amt' => 'integer',
'prem_amt' => 'integer',
'sply_spc' => 'numeric',
'excls_spc' => 'numeric',
'tot_spc' => 'numeric',
'grnd_spc' => 'numeric',
'bldg_spc' => 'numeric',
'hscp_no' => 'string|max_length[30]',
'hscp_nm' => 'string|max_length[60]',
'ptp_no' => 'string|max_length[30]',
'ptp_nm' => 'string|max_length[60]',
'modify_yn' => 'in_list[Y,N]',
];
// protected $validationRules = [
// 'vr_sq' => 'required|integer',
// 'bild_nm' => 'string|max_length[60]',
// 'rm_no' => 'string|max_length[30]',
// 'floor' => 'integer',
// 'floor2' => 'integer',
// 'ugrodFloor' => 'integer',
// 'address_code' => 'string|max_length[10]',
// 'address2' => 'string|max_length[300]',
// 'address2a' => 'string|max_length[300]',
// 'address2b' => 'string|max_length[300]',
// 'address3' => 'string|max_length[300]',
// 'address4' => 'string|max_length[1000]',
// 'trade_type' => 'string|max_length[2]',
// 'deal_amt' => 'integer',
// 'wrrnt_amt' => 'integer',
// 'lease_amt' => 'integer',
// 'isale_amt' => 'integer',
// 'prem_amt' => 'integer',
// 'sply_spc' => 'numeric',
// 'excls_spc' => 'numeric',
// 'tot_spc' => 'numeric',
// 'grnd_spc' => 'numeric',
// 'bldg_spc' => 'numeric',
// 'hscp_no' => 'string|max_length[30]',
// 'hscp_nm' => 'string|max_length[60]',
// 'ptp_no' => 'string|max_length[30]',
// 'ptp_nm' => 'string|max_length[60]',
// 'modify_yn' => 'in_list[Y,N]',
// ];
protected $validationMessages = [];
protected $skipValidation = false;

View File

@@ -115,6 +115,22 @@ class DeptModel extends Model
return $query->getResultArray();
}
/**
* 부서검색(상세)
*/
public function getDeptDetail($dept_sq)
{
$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 dept_sq = ?";
$data = array($dept_sq);
$query = $this->db->query($sql, $data);
$row = $query->getRowArray();
return $row;
}
// 조직별통계
public function getDeptStatistics($data)
{

View File

@@ -149,6 +149,31 @@ class ReceiptModel extends Model
return $query->getResultArray();
}
/**
* 사용자 상세정보
*/
public function getUserDetail($usr_sq)
{
$builder = $this->db->table('users a');
$builder->select("
a.usr_sq,
a.dept_sq,
a.usr_id,
a.usr_nm,
a.usr_level,
a.usr_tel1,
a.usr_tel2,
b.dept_nm
", false);
$builder->join('departments b', 'a.dept_sq = b.dept_sq', 'left');
$builder->where('a.usr_sq', $usr_sq);
return $builder->get()->getRowArray();
}
public function getTotalCount($data)
{
$usr_sq = session('usr_sq');
@@ -1179,10 +1204,27 @@ class ReceiptModel extends Model
$builder->where('a.rcpt_key', $id);
return $builder->get()->getRowArray();
}
/**
* 사용자의 지정일자에 배정된 목록을 가져온다. (시간, 위치만...)
*/
public function getAssignReceiptListByUser($rsrv_date, $usr_sq, $arrExcept = [])
{
$sql = "SELECT a.rcpt_key, a.rcpt_atclno, a.rcpt_x, a.rcpt_y, b.rsrv_tm_ap, b.rsrv_tm_hour" .
" FROM receipt a" .
" INNER JOIN result b ON b.rcpt_sq = a.rcpt_sq AND b.usr_sq = ? AND b.rsrv_date = ?" .
" WHERE a.rcpt_key not in (?)";
$except_rcptKey = implode(',', $arrExcept);
$data = array($usr_sq, $rsrv_date, $except_rcptKey);
$query = $this->db->query($sql, $data);
$res = $query->getResultArray();
return $res;
}
public function getDupleGP($rcpt_key, $rcpt_sido, $rcpt_gugun, $rcpt_dong, $rcpt_hscp_nm, $rcpt_dtl_addr, $rcpt_ho)
{
$sql = "select rcpt_sq, c.rcpt_key, c.photo_save_dt from" .
@@ -1426,6 +1468,40 @@ class ReceiptModel extends Model
];
}
// 거주여부 저장
public function saveResDB($rcpt_sq, $rsrv_sq, $resYn, $dbUsageAgrYn)
{
$this->db->transStart();
$usr_id = session('usr_id');
$sql = "SELECT result_cd3, resYn, dbUsageAgrYn FROM result WHERE rsrv_sq = ?";
$data = array($rsrv_sq);
$query = $this->db->query($sql, $data);
$row = $query->getRowArray();
$sql = "UPDATE result" .
" SET resYn = ?" .
" ,dbUsageAgrYn = ?" .
" WHERE rsrv_sq = ?" .
" AND rcpt_sq = ?";
$data = array($resYn, $dbUsageAgrYn, $rsrv_sq, $rcpt_sq);
if ($this->db->query($sql, $data) === false) {
return [
'success' => false,
'msg' => '저장실패',
];
}
$this->saveChangedHistory($rcpt_sq, $row['result_cd3'], 'C24', $usr_id, $row['resYn'] . "|" . $row['dbUsageAgrYn']);
$this->db->transComplete();
return [
'success' => true,
];
}
// 평면도요청 저장
public function saveGround($rcpt_sq, $ground_plan)
{
@@ -2044,4 +2120,202 @@ class ReceiptModel extends Model
}
}
/**
* 배정자 등록
*/
public function assignRegist($rcpt_sq, $rsrv_date, $rsrv_tm_ap, $rsrv_tm_hour, $dept_sq, $usr_sq, $receipt)
{
// 세션정보
$usr_id = session('usr_id');
$reg_usr_sq = session('usr_sq');
$this->db->transStart();
// 변경전 기존 데이터 가져오기
$org_sql = "SELECT * FROM result WHERE rcpt_sq = ?";
$query = $this->db->query($org_sql, [$rcpt_sq]);
$row = $query->getRowArray();
// 예약확인
$sql1 = "UPDATE result" .
" SET rsrv_date = ?" .
" ,rsrv_tm_ap = ?" .
" ,rsrv_tm_hour = ?" .
" ,rsrv_save_dt = now()" .
" ,update_tm = now()" .
" ,update_usr = ?" .
" WHERE rcpt_sq = ?";
$data1 = [
$rsrv_date,
$rsrv_tm_ap,
$rsrv_tm_hour,
$reg_usr_sq,
$rcpt_sq
];
if ($this->db->query($sql1, $data1) === false) {
return [
'success' => false,
'msg' => '저장 실패',
];
}
// 배정
$sql2 = "UPDATE result" .
" SET dept_sq = ?" .
" ,usr_sq = ?" .
" ,result_cd1 = 20" .
" ,result_cd2 = 2000" .
" ,result_cd3 = 200000" .
" ,update_usr = ?" .
" ,update_tm = now()" .
" ,assign_save_dt = now()" .
" ,rsrv_cplt_dt = now()" .
" WHERE rcpt_sq = ?";
$data2 = [
$dept_sq,
$usr_sq,
$reg_usr_sq,
$rcpt_sq
];
if ($this->db->query($sql2, $data2) === false) {
return [
'success' => false,
'msg' => '저장 실패',
];
}
// 매물상태 변경
$rcpt_sql = "UPDATE receipt" .
" SET rcpt_stat = 200000" .
" WHERE rcpt_sq = ?";
$this->db->query($rcpt_sql, [$rcpt_sq]);
// 정보변경이력 저장
if (!empty($row)) {
$remark = "{$row['rsrv_date']} {$row['rsrv_tm_ap']} {$row['rsrv_tm_hour']}시 -> {$rsrv_date} {$rsrv_tm_ap} {$rsrv_tm_hour}";
} else {
$remark = "{$receipt['rsrv_date']} {$receipt['rsrv_tm_ap']} -> {$rsrv_date} {$rsrv_tm_hour}";
}
$this->saveChangedHistory($rcpt_sq, '200000', 'C11', $usr_id, $remark);
$this->db->transComplete();
return [
'success' => true,
];
}
/**
* 취소
*/
public function rsrvcancel($rcpt_sq, $rsrv_sq, $result_cd2, $result_cd3, $result_msg, $receipt)
{
// 세션정보
$usr_id = session('usr_id');
$usr_sq = session('usr_sq');
$usr_nm = session('usr_nm');
// 변경전 기존 데이터 가져오기
$org_sql = "SELECT * FROM result WHERE rcpt_sq = ?";
$query = $this->db->query($org_sql, [$rcpt_sq]);
$row = $query->getRowArray();
$this->db->transStart();
if ($result_cd2 == "9050") {
$sql = "UPDATE result" .
" SET result_cd1 = '90'" .
" ,result_cd2 = ?" .
" ,result_cd3 = ?" .
" ,result_msg = ?" .
" ,check_fail_dt = now()" .
" ,update_usr = ?" .
" ,update_tm = now()" .
" WHERE rsrv_sq = ?";
} else {
$sql = "UPDATE result" .
" SET result_cd1 = '90'" .
" ,result_cd2 = ?" .
" ,result_cd3 = ?" .
" ,result_msg = ?" .
" ,cancel_dt = now()" .
" ,update_usr = ?" .
" ,update_tm = now()" .
" WHERE rsrv_sq = ?";
}
$data = [
$result_cd2,
$result_cd3,
$result_msg,
$usr_sq,
$rsrv_sq
];
$res = $this->db->query($sql, $data);
if (!$res) {
$return = [
'success' => false,
'msg' => '저장실패',
];
} else {
// 매물상태 변경
$rcpt_sql = "UPDATE receipt" .
" SET rcpt_stat = ?" .
" WHERE rcpt_sq = ?";
$rcpt_data = [$result_cd3, $rcpt_sq];
$this->db->query($rcpt_sql, $rcpt_data);
// 정보변경이력 저장
if (!empty($row['result_msg'])) {
$remark = $row['result_msg'] . " -> " . $result_msg;
} else {
$remark = $result_msg;
}
$this->saveChangedHistory($rcpt_sq, $result_cd3, 'C5', $usr_id, $remark);
// 문자발송
if ($result_cd2 == "9010" || $result_cd2 == "9020") {
// 접수취소, 예약취소
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S2', $receipt);
} else if ($result_cd2 == "9030") {
// 방문전 취소
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S4', $receipt);
} else if ($result_cd2 == "9040") {
// 방문후 취소
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S5', $receipt);
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S5-1', $receipt);
} else if ($result_cd2 == "9045") {
// 촬영후 취소
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S6', $receipt);
}
if ($result_cd3 == "905010") {
// 거주인녹취실패 취소(검수실패)
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S9', $receipt);
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S9-1', $receipt);
} else if ($result_cd3 == "905020") {
// 홍보확인서 미수취 취소(검수실패)
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S11', $receipt);
$this->sendSms($receipt['agent_head_tel'], $receipt['agent_nm'], '1600-5749', $usr_nm, 0, $rsrv_sq, $rcpt_sq, 'S11-1', $receipt);
}
$return = [
'success' => true,
];
}
$this->db->transComplete();
return $return;
}
}

View File

@@ -93,13 +93,21 @@ class TypeV2Handler
// 기사 정보 추가 저장
$articleInfoEtcParam['vr_sq'] = $vrSq;
if (!$this->articleInfoEtcModel->replace($articleInfoEtcParam)) {
CLI::write(CLI::color('❌ ArticleInfoEtc 저장 실패 :: ' . json_encode($articleInfoEtcParam), 'red'));
throw new Exception("ArticleInfoEtc Insert 실패: " . json_encode($this->db->error()));
}
CLI::write(CLI::color('✅ ArticleInfoEtc 저장 성공', 'blue'));
// 수정 정보 입력 (있으면 update, 없으면 insert)
if (!$this->modifyInfoModel->saveModifyInfo($vrSq, $modifyInfoParam)) {
throw new Exception("ModifyInfo 저장 실패: " . json_encode($this->db->error()));
$modifyInfoParam['vr_sq'] = $vrSq;
$sql = $this->modifyInfoModel->builder()->set($modifyInfoParam)->getCompiledInsert();
CLI::write(CLI::color("\n[생성된 쿼리 예상안]:", 'yellow'));
CLI::write($sql);
if (!$this->modifyInfoModel->replace($modifyInfoParam)) {
CLI::write(CLI::color('❌ modifyInfoParam 저장 실패 :: ' . json_encode($modifyInfoParam), 'red'));
throw new Exception("ModifyInfo 저장 실패: " . json_encode($this->db->error() . " sql: " . $this->modifyInfoModel->getLastQuery()));
}
CLI::write(CLI::color('✅ ModifyInfo 저장 성공', 'blue'));

View File

@@ -15,7 +15,7 @@ class TypeV2ParameterMapper extends BaseParameterMapper
{
$now = db_now();
$step = $rawData['step'] ?? '00';
$rdate = $payload['requestDate'] ?? db_now('YmdHis');
$rdate = date("YmdHis", strtotime($payload['requestDate'] ?? db_now('YmdHis')));
$files = $rawData['files'] ?? [];
$fileExtracted = $this->extractFilesByType($files);
@@ -33,7 +33,7 @@ class TypeV2ParameterMapper extends BaseParameterMapper
'realtor_tel_no' => $rawData['realtor']['representativeCellphoneNumber'] ?? null,
'seller_tel_no' => $rawData['seller']['cellphoneNumber'] ?? null,
'vrfc_type' => $rawData['verificationTypeCode'] ?? 'D',
'rgbk_confirm' => null,
'rgbk_confirm' => ($rawData['isNeedRegisterBookConfirm'] ?? false) ? 'Y' : 'N',
'req_type' => $reqType,
'rdate' => $rdate,
'cpTelNo' => null,
@@ -44,7 +44,7 @@ class TypeV2ParameterMapper extends BaseParameterMapper
'rgbk_confirm_owner_nm' => null,
'direct_trad_yn' => ($rawData['seller']['isDirectTrade'] ?? false) ? 'Y' : 'N',
'confirm_doc_img_url' => json_encode($fileExtracted['confirmDocImgUrl']),
'confirm_doc_owner_check_yn' => null,
'confirm_doc_owner_check_yn' => ($rawData['seller']['isOwnerCertificationAgree'] ?? false) ? 'Y' : 'N',
'certRegister' => json_encode($fileExtracted['certRegister']),
'referenceFileUrl' => json_encode($fileExtracted['referenceFileUrl']),
];
@@ -103,7 +103,7 @@ class TypeV2ParameterMapper extends BaseParameterMapper
'ptp_no' => $address['pyeongTypeNumber'] ?? null,
'ptp_nm' => $address['pyeongTypeNumber'] ?? null,
'charger' => null,
'reg_price_yn' => 'N',
'req_price_yn' => 'N',
'reg_charger' => null,
'dept1_sq' => null,
'dept2_sq' => null,
@@ -112,7 +112,7 @@ class TypeV2ParameterMapper extends BaseParameterMapper
'dong_ho_chk' => ($address['isDongHoCheck'] ?? false) ? 'Y' : 'N',
'hscplqry_lv' => $address['inquiryLevel'] ?? null,
'ownerNm' => $seller['ownerName'] ?? null,
'ownerTelNo' => $seller['ownerName'] ?? null,
'ownerTelNo' => $seller['ownerTelephoneNumber'] ?? null,
'chg_trade_type' => null,
'chg_address2' => null,
'chg_address3' => null,
@@ -121,7 +121,7 @@ class TypeV2ParameterMapper extends BaseParameterMapper
'reg_status' => null,
'cupnNo' => null,
'roomSiteAtclRgstCnt' => null,
'rootSiteAtclExpsCnt' => null,
'roomSiteAtclExpsCnt' => null,
'redvlp_area_nm' => $address['redevelopAreaName'] ?? null,
'biz_stp_desc' => $address['bizStepDescription'] ?? null,
'cert_register' => json_encode($fileExtracted['certRegister'], JSON_UNESCAPED_UNICODE),
@@ -201,7 +201,7 @@ class TypeV2ParameterMapper extends BaseParameterMapper
: ($address['jibunAddress'] ?? null);
return [
'atcl_no' => $articleNumber,
// 'atcl_no' => $articleNumber,
'bild_nm' => $address['buildingName'] ?? null,
'rm_no' => $address['hoName'] ?? null,
'floor' => $floor['correspondenceFloorCount'] ?? null,

File diff suppressed because it is too large Load Diff