워커 수정

This commit is contained in:
2026-04-27 15:03:36 +09:00
parent b0ec75ae56
commit f8c26acea8
30 changed files with 1317 additions and 1142 deletions

View File

@@ -0,0 +1,47 @@
<?php
namespace App\Models\Entities;
use CodeIgniter\Model;
class ChangedHistoryModel extends Model
{
protected $table = 'changed_history';
protected $primaryKey = 'seq';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $protectFields = true;
protected $allowedFields = [
'rcpt_sq',
'rcpt_stat',
'changed_type',
'changed_id',
'changed_tm',
'remark',
];
/**
* 정보변경 이력 1건 저장
*/
public function addHistory(
int $rcptSq,
?string $rcptStat,
?string $changedType,
?string $changedId,
?string $remark,
?string $changedTm = null
): bool {
$data = [
'rcpt_sq' => $rcptSq,
'rcpt_stat' => $rcptStat,
'changed_type' => $changedType,
'changed_id' => $changedId,
'changed_tm' => $changedTm ?? date('Y-m-d H:i:s'),
'remark' => $remark,
];
return $this->insert($data) !== false;
}
}

View File

@@ -13,7 +13,10 @@ class ReceiptModel extends Model
protected $allowedFields = [
'comp_sq', 'rcpt_rating', 'rcpt_key', 'rcpt_atclno', 'rcpt_type',
'rcpt_product', 'rcpt_product_nm', 'rcpt_product_info1', 'rcpt_product_info2',
'rcpt_product_info3', 'rcpt_office', 'rcpt_agent', 'rcpt_sido', 'rcpt_hscp_nm',
'rcpt_product_info3', 'rcpt_product_info4', 'rcpt_product_info5', 'rcpt_product_info6',
'trade_type', 'rcpt_ptp_no', 'rcpt_hscp_no',
'dealAmount', 'warrantyAmount', 'leaseAmount', 'preSaleAmount', 'premiumAmount', 'preSaleOptionAmount',
'rcpt_office', 'rcpt_agent', 'rcpt_sido', 'rcpt_hscp_nm',
'rcpt_dtl_addr', 'rcpt_etc_addr', 'rcpt_floor', 'rcpt_floor2', 'rcpt_tm',
'rcpt_stat', 'rcpt_x', 'rcpt_y', 'agent_nm', 'agent_head_tel', 'rsrv_date',
'insert_tm', 'rcpt_cpid', 'room_cnt', 'isSiteVRVerification'
@@ -104,4 +107,5 @@ class ReceiptModel extends Model
'total' => $totalCount
];
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Models\article;
use App\Models\common\CodeModel;
use App\Models\Entities\ChangedHistoryModel;
use CodeIgniter\Model;
class ReceiptModel extends Model
@@ -205,209 +206,8 @@ class ReceiptModel extends Model
$builder->join('receipt_transimage_log l', 'a.rcpt_key = l.rcpt_key', 'left');
$login_dept_info = $this->getDeptDetail($dept_sq); // 로그인 사용자 소속부서정보
$child_dept = []; // 하위조직 목록
if (strcmp($usr_level, '40') == 0) {
$child = $this->getChildDept($login_dept_info);
if (!empty($child)) {
foreach ($child as $child) {
$child_dept[] = $child['dept_sq'];
}
}
}
if ((int) $usr_level >= 4 && $usr_level != '45') {
if (!empty($child_dept)) {
$builder->whereIn('b.dept_sq', $child_dept);
} else {
$builder->where('b.usr_sq', $usr_sq);
}
}
$builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
$builder->where('b.use_yn', 'Y');
if (!empty($data['rcpt_atclno'])) {
$builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else {
if ($data['schDateGb'] == '2') {
$builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
$builder->where('a.rcpt_tm <=', $data['edate'] . ' 23:59:59');
} else {
$builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
$builder->where('b.rsrv_date <=', $data['edate'] . ' 23:59:59');
}
// 지역
if (!empty($data['dong'])) {
$builder->where('a.rcpt_dong', $data['dong']);
} else {
if (!empty($data['gugun'])) {
$builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
} else {
if (!empty($data['sido'])) {
$builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
}
}
}
// 관할조직
if (!empty($data['bonbu'])) {
$builder->where('d.pdept_sq', $data['bonbu']);
}
if (!empty($data['team'])) {
$builder->where('d.dept_sq', $data['team']);
}
if (!empty($data['user'])) {
$builder->where('d.usr_sq', $data['user']);
}
// 거래구분
if (!empty($data['rcpt_product_info1'])) {
$builder->where('a.rcpt_product_info1', $data['rcpt_product_info1']);
}
// 현재상태
if (!empty($data['rcpt_stat1'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat1'], 'after');
}
if (!empty($data['rcpt_stat2'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat2'], 'after');
}
if (!empty($data['rcpt_stat3'])) {
$builder->where('a.rcpt_stat', $data['rcpt_stat3']);
}
// 중개사명
if (!empty($data['agent_nm'])) {
$builder->like('a.agent_nm', $data['agent_nm'], 'both');
}
// 동영상촬영여부
if (!empty($data['exp_movie_yn'])) {
$builder->where('a.exp_movie_yn', $data['exp_movie_yn']);
}
// 홍보확인서여부
if ($data['conf_img_yn'] == 'Y') {
$builder->where('e.rsrv_sq IS NOT NULL', null, false);
} else if ($data['conf_img_yn'] == 'N') {
$builder->where('e.rsrv_sq IS NULL', null, false);
}
// 분양권
if ($data['parcel_out_yn'] == 'Y') {
$builder->where('a.parcel_out_yn', 'Y');
} else if ($data['parcel_out_yn'] == 'N') {
$builder->where('a.parcel_out_yn', 'N');
}
// CP ID
if (!empty($data['rcpt_cpid'])) {
if (strcmp($data['rcpt_cpid'], 'naver') == 0) {
$builder->where('a.rcpt_cpid =', '');
} else if (strcmp($data['rcpt_cpid'], 'cleancente') == 0) {
$builder->where("a.rcpt_cpid !=", "");
} else {
$builder->where('a.rcpt_cpid', $data['rcpt_cpid']);
}
}
// 매물종류
if (!empty($data['rcpt_product'])) {
$builder->where('a.parcel_out_yn', $data['rcpt_product']);
}
// 면적확인
if ($data['exp_spc_yn'] == 'Y') {
$builder->where('a.parcel_out_yn', 'Y');
} else if ($data['exp_spc_yn'] == 'N') {
$builder->where('a.parcel_out_yn', 'N');
}
// 체크리스트
if ($data['check_list_img_yn'] == 'Y') {
$builder->where('a.check_list_img_yn', 'Y');
} else if ($data['check_list_img_yn'] == 'N') {
$builder->where('a.check_list_img_yn', 'N');
}
// 평면도유무
if ($data['ground_plan_yn'] == 'Y') {
$builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
} else if ($data['ground_plan_yn'] == 'N') {
$builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
}
// 평면도요청
if (!empty($data['ground_plan'])) {
$builder->where('a.ground_plan', $data['ground_plan']);
}
// 직거래
if ($data['direct_trad_yn'] == "Y") {
$builder->where('a.direct_trad_yn', 'Y');
} else if ($data['direct_trad_yn'] == "N") {
$builder->where('a.direct_trad_yn', 'N');
}
// 360촬영여부
if ($data['image_360_yn'] == "Y") {
$builder->where('a.image_360_yn', 'Y');
} else if ($data['image_360_yn'] == "N") {
$builder->where('a.image_360_yn', 'N');
}
// 검증방식
if (!empty($data['isSiteVRVerification'])) {
$builder->where('a.isSiteVRVerification', $data['isSiteVRVerification']);
}
// 프로모션
if (!empty($data['isPromotionApply'])) {
$builder->where('a.isPromotionApply', $data['isPromotionApply']);
}
if (!empty($data['srchTxt'])) {
// 중개사
if ($data['srchType'] == '1') {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
// 주소
} else if ($data['srchType'] == '2') {
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
// 사업자번호
} else if ($data['srchType'] == '3') {
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
} else {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
}
}
}
$this->applyListUserScope($builder, $usr_level, $usr_sq, $dept_sq);
$this->applyListSearchFilters($builder, $data);
$row = $builder->get()->getRowArray();
// log_message('debug', '[getTotalCount] SQL = ' . $this->db->getLastQuery());
@@ -542,9 +342,28 @@ class ReceiptModel extends Model
$builder->join('result_imgs e', "e.rsrv_sq = b.rsrv_sq AND e.img_type = 'I1' AND e.use_yn = 'Y'", 'left outer');
$builder->join('receipt_transimage_log l', 'a.rcpt_key = l.rcpt_key', 'left outer');
$this->applyListUserScope($builder, $usr_level, $usr_sq, $dept_sq);
$this->applyListSearchFilters($builder, $data);
$builder->orderBy('a.rcpt_atclno', 'DESC');
$builder->limit($end, $start);
$result = $builder->get()->getResultArray();
// log_message('debug', '[getResultList] SQL = ' . $this->db->getLastQuery());
// log_message('info', '[getResultList] Result count = ' . count($result));
return $result;
}
private function applyListUserScope($builder, $usr_level, $usr_sq, $dept_sq): void
{
$login_dept_info = $this->getDeptDetail($dept_sq);
$child_dept = [];
$login_dept_info = $this->getDeptDetail($dept_sq); // 로그인 사용자 소속부서정보
$child_dept = []; // 하위조직 목록
if (strcmp($usr_level, '40') == 0) {
$child = $this->getChildDept($login_dept_info);
if (!empty($child)) {
@@ -561,204 +380,167 @@ class ReceiptModel extends Model
$builder->where('b.usr_sq', $usr_sq);
}
}
}
private function applyListSearchFilters($builder, $data): void
{
$builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
$builder->where('b.use_yn', 'Y');
if (!empty($data['rcpt_atclno'])) {
$builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else {
if ($data['schDateGb'] == '2') {
$builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
$builder->where('a.rcpt_tm <=', $data['edate'] . ' 23:59:59');
} else {
$builder->where('b.rsrv_date >=', $data['sdate'] );
$builder->where('b.rsrv_date <=', $data['edate'] );
}
// 지역
if (!empty($data['dong'])) {
$builder->where('a.rcpt_dong', $data['dong']);
} else {
if (!empty($data['gugun'])) {
$builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
} else {
if (!empty($data['sido'])) {
$builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
}
}
}
// 관할조직
if (!empty($data['bonbu'])) {
$builder->where('d.pdept_sq', $data['bonbu']);
}
if (!empty($data['team'])) {
$builder->where('d.dept_sq', $data['team']);
}
if (!empty($data['user'])) {
$builder->where('d.usr_sq', $data['user']);
}
// 거래구분
if (!empty($data['rcpt_product_info1'])) {
$builder->where('a.rcpt_product_info1', $data['rcpt_product_info1']);
}
// 현재상태
if (!empty($data['rcpt_stat1'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat1'], 'after');
}
if (!empty($data['rcpt_stat2'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat2'], 'after');
}
if (!empty($data['rcpt_stat3'])) {
$builder->where('a.rcpt_stat', $data['rcpt_stat3']);
}
// 중개사명
if (!empty($data['agent_nm'])) {
$builder->like('a.agent_nm', $data['agent_nm'], 'both');
}
// 동영상촬영여부
if (!empty($data['exp_movie_yn'])) {
$builder->where('a.exp_movie_yn', $data['exp_movie_yn']);
}
// 홍보확인서여부
if ($data['conf_img_yn'] == 'Y') {
$builder->where('e.rsrv_sq IS NOT NULL', null, false);
} else if ($data['conf_img_yn'] == 'N') {
$builder->where('e.rsrv_sq IS NULL', null, false);
}
// 분양권
if ($data['parcel_out_yn'] == 'Y') {
$builder->where('a.parcel_out_yn', 'Y');
} else if ($data['parcel_out_yn'] == 'N') {
$builder->where('a.parcel_out_yn', 'N');
}
// CP ID
if (!empty($data['rcpt_cpid'])) {
if (strcmp($data['rcpt_cpid'], 'naver') == 0) {
$builder->where('a.rcpt_cpid =', '');
} else if (strcmp($data['rcpt_cpid'], 'cleancente') == 0) {
$builder->where("a.rcpt_cpid !=", "");
} else {
$builder->where('a.rcpt_cpid', $data['rcpt_cpid']);
}
}
// 매물종류
if (!empty($data['rcpt_product'])) {
$builder->where('a.parcel_out_yn', $data['rcpt_product']);
}
// 면적확인
if ($data['exp_spc_yn'] == 'Y') {
$builder->where('a.parcel_out_yn', 'Y');
} else if ($data['exp_spc_yn'] == 'N') {
$builder->where('a.parcel_out_yn', 'N');
}
// 체크리스트
if ($data['check_list_img_yn'] == 'Y') {
$builder->where('a.check_list_img_yn', 'Y');
} else if ($data['check_list_img_yn'] == 'N') {
$builder->where('a.check_list_img_yn', 'N');
}
// 평면도유무
if ($data['ground_plan_yn'] == 'Y') {
$builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
} else if ($data['ground_plan_yn'] == 'N') {
$builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
}
// 평면도요청
if (!empty($data['ground_plan'])) {
$builder->where('a.ground_plan', $data['ground_plan']);
}
// 직거래
if ($data['direct_trad_yn'] == "Y") {
$builder->where('a.direct_trad_yn', 'Y');
} else if ($data['direct_trad_yn'] == "N") {
$builder->where('a.direct_trad_yn', 'N');
}
// 360촬영여부
if ($data['image_360_yn'] == "Y") {
$builder->where('a.image_360_yn', 'Y');
} else if ($data['image_360_yn'] == "N") {
$builder->where('a.image_360_yn', 'N');
}
// 검증방식
if (!empty($data['isSiteVRVerification'])) {
$builder->where('a.isSiteVRVerification', $data['isSiteVRVerification']);
}
// 프로모션
if (!empty($data['isPromotionApply'])) {
$builder->where('a.isPromotionApply', $data['isPromotionApply']);
}
if (!empty($data['srchTxt'])) {
// 중개사
if ($data['srchType'] == '1') {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
// 주소
} else if ($data['srchType'] == '2') {
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
// 사업자번호
} else if ($data['srchType'] == '3') {
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
} else {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
}
}
return;
}
if ($data['schDateGb'] == '2') {
$builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
$builder->where('a.rcpt_tm <=', $data['edate'] . ' 23:59:59');
} else {
$builder->where('b.rsrv_date >=', $data['sdate']);
$builder->where('b.rsrv_date <=', $data['edate']);
}
$builder->orderBy('a.rcpt_atclno', 'DESC');
if (!empty($data['dong'])) {
$builder->where('a.rcpt_dong', $data['dong']);
} else if (!empty($data['gugun'])) {
$builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
} else if (!empty($data['sido'])) {
$builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
}
$builder->limit($end, $start);
if (!empty($data['bonbu'])) {
$builder->where('d.pdept_sq', $data['bonbu']);
}
$result = $builder->get()->getResultArray();
// log_message('debug', '[getResultList] SQL = ' . $this->db->getLastQuery());
// log_message('info', '[getResultList] Result count = ' . count($result));
if (!empty($data['team'])) {
$builder->where('d.dept_sq', $data['team']);
}
return $result;
if (!empty($data['user'])) {
$builder->where('d.usr_sq', $data['user']);
}
if (!empty($data['rcpt_product_info1'])) {
$builder->where('a.rcpt_product_info1', $data['rcpt_product_info1']);
}
if (!empty($data['rcpt_stat1'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat1'], 'after');
}
if (!empty($data['rcpt_stat2'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat2'], 'after');
}
if (!empty($data['rcpt_stat3'])) {
$builder->where('a.rcpt_stat', $data['rcpt_stat3']);
}
if (!empty($data['agent_nm'])) {
$builder->like('a.agent_nm', $data['agent_nm'], 'both');
}
if (!empty($data['exp_movie_yn'])) {
$builder->where('a.exp_movie_yn', $data['exp_movie_yn']);
}
if ($data['conf_img_yn'] == 'Y') {
$builder->where('e.rsrv_sq IS NOT NULL', null, false);
} else if ($data['conf_img_yn'] == 'N') {
$builder->where('e.rsrv_sq IS NULL', null, false);
}
if ($data['parcel_out_yn'] == 'Y') {
$builder->where('a.parcel_out_yn', 'Y');
} else if ($data['parcel_out_yn'] == 'N') {
$builder->where('a.parcel_out_yn', 'N');
}
if (!empty($data['rcpt_cpid'])) {
if (strcmp($data['rcpt_cpid'], 'naver') == 0) {
$builder->where('a.rcpt_cpid =', '');
} else if (strcmp($data['rcpt_cpid'], 'cleancente') == 0) {
$builder->where('a.rcpt_cpid !=', '');
} else {
$builder->where('a.rcpt_cpid', $data['rcpt_cpid']);
}
}
if (!empty($data['rcpt_product'])) {
$builder->where('a.rcpt_product', $data['rcpt_product']);
}
if ($data['exp_spc_yn'] == 'Y') {
$builder->where('a.exp_spc_yn', 'Y');
} else if ($data['exp_spc_yn'] == 'N') {
$builder->where('a.exp_spc_yn', 'N');
}
if ($data['check_list_img_yn'] == 'Y') {
$builder->where('a.check_list_img_yn', 'Y');
} else if ($data['check_list_img_yn'] == 'N') {
$builder->where('a.check_list_img_yn', 'N');
}
if ($data['ground_plan_yn'] == 'Y') {
$builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', null, false);
} else if ($data['ground_plan_yn'] == 'N') {
$builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', null, false);
}
if (!empty($data['ground_plan'])) {
$builder->where('a.ground_plan', $data['ground_plan']);
}
if ($data['direct_trad_yn'] == 'Y') {
$builder->where('a.direct_trad_yn', 'Y');
} else if ($data['direct_trad_yn'] == 'N') {
$builder->where('a.direct_trad_yn', 'N');
}
if ($data['image_360_yn'] == 'Y') {
$builder->where('a.image_360_yn', 'Y');
} else if ($data['image_360_yn'] == 'N') {
$builder->where('a.image_360_yn', 'N');
}
if (!empty($data['isSiteVRVerification'])) {
$builder->where('a.isSiteVRVerification', $data['isSiteVRVerification']);
}
if (!empty($data['isPromotionApply'])) {
$builder->where('a.isPromotionApply', $data['isPromotionApply']);
}
if (!empty($data['srchTxt'])) {
if ($data['srchType'] == '1') {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
} else if ($data['srchType'] == '2') {
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
} else if ($data['srchType'] == '3') {
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
} else {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
}
}
}
@@ -833,209 +615,8 @@ class ReceiptModel extends Model
$builder->join('receipt_transimage_log l', 'a.rcpt_key = l.rcpt_key', 'left');
$login_dept_info = $this->getDeptDetail($dept_sq); // 로그인 사용자 소속부서정보
$child_dept = []; // 하위조직 목록
if (strcmp($usr_level, '40') == 0) {
$child = $this->getChildDept($login_dept_info);
if (!empty($child)) {
foreach ($child as $child) {
$child_dept[] = $child['dept_sq'];
}
}
}
if ((int) $usr_level >= 4 && $usr_level != '45') {
if (!empty($child_dept)) {
$builder->whereIn('b.dept_sq', $child_dept);
} else {
$builder->where('b.usr_sq', $usr_sq);
}
}
$builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
$builder->where('b.use_yn', 'Y');
if (!empty($data['rcpt_atclno'])) {
$builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else {
if ($data['schDateGb'] == '2') {
$builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
$builder->where('a.rcpt_tm <=', $data['edate'] . ' 23:59:59');
} else {
$builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
$builder->where('b.rsrv_date <=', $data['edate'] . ' 23:59:59');
}
// 지역
if (!empty($data['dong'])) {
$builder->where('a.rcpt_dong', $data['dong']);
} else {
if (!empty($data['gugun'])) {
$builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
} else {
if (!empty($data['sido'])) {
$builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
}
}
}
// 관할조직
if (!empty($data['bonbu'])) {
$builder->where('d.pdept_sq', $data['bonbu']);
}
if (!empty($data['team'])) {
$builder->where('d.dept_sq', $data['team']);
}
if (!empty($data['user'])) {
$builder->where('d.usr_sq', $data['user']);
}
// 거래구분
if (!empty($data['rcpt_product_info1'])) {
$builder->where('a.rcpt_product_info1', $data['rcpt_product_info1']);
}
// 현재상태
if (!empty($data['rcpt_stat1'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat1'], 'after');
}
if (!empty($data['rcpt_stat2'])) {
$builder->like('a.rcpt_stat', $data['rcpt_stat2'], 'after');
}
if (!empty($data['rcpt_stat3'])) {
$builder->where('a.rcpt_stat', $data['rcpt_stat3']);
}
// 중개사명
if (!empty($data['agent_nm'])) {
$builder->like('a.agent_nm', $data['agent_nm'], 'both');
}
// 동영상촬영여부
if (!empty($data['exp_movie_yn'])) {
$builder->where('a.exp_movie_yn', $data['exp_movie_yn']);
}
// 홍보확인서여부
if ($data['conf_img_yn'] == 'Y') {
$builder->where('e.rsrv_sq IS NOT NULL', null, false);
} else if ($data['conf_img_yn'] == 'N') {
$builder->where('e.rsrv_sq IS NULL', null, false);
}
// 분양권
if ($data['parcel_out_yn'] == 'Y') {
$builder->where('a.parcel_out_yn', 'Y');
} else if ($data['parcel_out_yn'] == 'N') {
$builder->where('a.parcel_out_yn', 'N');
}
// CP ID
if (!empty($data['rcpt_cpid'])) {
if (strcmp($data['rcpt_cpid'], 'naver') == 0) {
$builder->where('a.rcpt_cpid =', '');
} else if (strcmp($data['rcpt_cpid'], 'cleancente') == 0) {
$builder->where("a.rcpt_cpid !=", "");
} else {
$builder->where('a.rcpt_cpid', $data['rcpt_cpid']);
}
}
// 매물종류
if (!empty($data['rcpt_product'])) {
$builder->where('a.parcel_out_yn', $data['rcpt_product']);
}
// 면적확인
if ($data['exp_spc_yn'] == 'Y') {
$builder->where('a.parcel_out_yn', 'Y');
} else if ($data['exp_spc_yn'] == 'N') {
$builder->where('a.parcel_out_yn', 'N');
}
// 체크리스트
if ($data['check_list_img_yn'] == 'Y') {
$builder->where('a.check_list_img_yn', 'Y');
} else if ($data['check_list_img_yn'] == 'N') {
$builder->where('a.check_list_img_yn', 'N');
}
// 평면도유무
if ($data['ground_plan_yn'] == 'Y') {
$builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
} else if ($data['ground_plan_yn'] == 'N') {
$builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
}
// 평면도요청
if (!empty($data['ground_plan'])) {
$builder->where('a.ground_plan', $data['ground_plan']);
}
// 직거래
if ($data['direct_trad_yn'] == "Y") {
$builder->where('a.direct_trad_yn', 'Y');
} else if ($data['direct_trad_yn'] == "N") {
$builder->where('a.direct_trad_yn', 'N');
}
// 360촬영여부
if ($data['image_360_yn'] == "Y") {
$builder->where('a.image_360_yn', 'Y');
} else if ($data['image_360_yn'] == "N") {
$builder->where('a.image_360_yn', 'N');
}
// 검증방식
if (!empty($data['isSiteVRVerification'])) {
$builder->where('a.isSiteVRVerification', $data['isSiteVRVerification']);
}
// 프로모션
if (!empty($data['isPromotionApply'])) {
$builder->where('a.isPromotionApply', $data['isPromotionApply']);
}
if (!empty($data['srchTxt'])) {
// 중개사
if ($data['srchType'] == '1') {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
// 주소
} else if ($data['srchType'] == '2') {
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
// 사업자번호
} else if ($data['srchType'] == '3') {
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
} else {
$builder->groupStart()
->like('a.agent_nm', $data['srchTxt'])
->orLike('a.sellr_nm', $data['srchTxt'])
->groupEnd();
$builder->groupStart()
->like('a.rcpt_dtl_addr', $data['srchTxt'])
->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
->groupEnd();
$builder->like('a.image_360_yn', $data['srchTxt'], 'both');
}
}
}
$this->applyListUserScope($builder, $usr_level, $usr_sq, $dept_sq);
$this->applyListSearchFilters($builder, $data);
$builder->orderBy('a.rcpt_atclno', 'DESC');
@@ -1070,6 +651,7 @@ class ReceiptModel extends Model
,a.rcpt_product_info3
,a.rcpt_product_info4
,a.rcpt_product_info5
,a.rcpt_product_info6
,a.rcpt_office
,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent
,a.rcpt_sido
@@ -1210,13 +792,19 @@ class ReceiptModel extends Model
,a.isPromotionApply
,DATE_FORMAT(b.vr_check_cplt_dt, '%Y-%m-%d') as vr_check_cplt_dt_dt
,DATE_FORMAT(b.vr_check_cplt_dt, '%H:%i:%s') as vr_check_cplt_dt_dm
,a.dealAmount
,a.warrantyAmount
,a.leaseAmount
,a.preSaleAmount
,a.premiumAmount
,a.preSaleOptionAmount
", false);
$builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner');
$builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'left');
$builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
$builder->where('a.rcpt_key', $id);
return $builder->get()->getRowArray();
}
@@ -1733,18 +1321,14 @@ class ReceiptModel extends Model
public function saveChangedHistory($rcpt_sq, $rcpt_stat, $changed_type, $usr_id, $remark)
{
$sql = "INSERT INTO changed_history" .
" (rcpt_sq, rcpt_stat, changed_type, changed_id, changed_tm, remark)" .
" VALUES" .
" (?, ?, ?, ?, now(), ?)";
$data = [
$rcpt_sq,
$changedHistoryModel = new ChangedHistoryModel();
return $changedHistoryModel->addHistory(
(int) $rcpt_sq,
$rcpt_stat,
$changed_type,
$usr_id,
$remark
];
$res = $this->db->query($sql, $data);
);
}

View File

@@ -8,64 +8,85 @@ class CodeModel extends Model
/**
* 코드목록 읽어오기(Y만)
*/
public function getCodeList($category)
{
$sql = "SELECT category, category_nm, cd, cd_nm FROM codes" .
" WHERE category = ?" .
" AND use_yn = 'Y'" .
" ORDER BY view_odr";
$data = [$category];
$query = $this->db->query($sql, $data);
return $query->getResultArray();
}
public function getCodeLists($data): array
public function getCodeList(string $category): array
{
return $this->db->table('codes')
->select('category, category_nm, cd, cd_nm')
->whereIn('category', $data)
->where('category', $category)
->where('use_yn', 'Y')
->orderBy('view_odr')
->orderBy('view_odr', 'asc')
->get()
->getResultArray();
}
public function getCategoryCodeList($category = [], $useYn = '')
public function getCodeLists(array $categories): array
{
$this->db->select('category, cd, cd_nm, use_yn');
$this->db->from('codes');
$this->db->where_in('category', $category);
if (!empty($useYn)) {
$this->db->where('use_yn', $useYn);
if (empty($categories)) {
return [];
}
$this->db->order_by('category', 'asc');
$this->db->order_by('view_odr', 'asc');
$query = $this->db->get();
$result = $this->db->table('codes')
->select('category, category_nm, cd, cd_nm')
->whereIn('category', $categories)
->where('use_yn', 'Y')
->orderBy('category', 'asc')
->orderBy('view_odr', 'asc')
->get()
->getResultArray();
//echo $this->db->last_query()."<br>";
$groupedData = [];
foreach ($result as $item) {
$category = $item['category'];
if (!isset($groupedData[$category])) {
$groupedData[$category] = [
'name' => $item['category_nm'],
'items' => []
];
}
$groupedData[$category]['items'][$item['cd']] = $item['cd_nm'];
}
return $groupedData;
}
public function getCategoryCodeList(array $category = [], string $useYn = ''): array
{
if (empty($category)) {
return [];
}
$builder = $this->db->table('codes');
$builder->select('category, cd, cd_nm, use_yn');
$builder->whereIn('category', $category);
if (!empty($useYn)) {
$builder->where('use_yn', $useYn);
}
$builder->orderBy('category', 'asc');
$builder->orderBy('view_odr', 'asc');
$query = $builder->get();
//여기 아래부분을 해줘야 배열을 카테고리로 뽑아쓸수있다 위에는 배열에 배열이담김
$codes = [];
foreach ($query->getResultArray() as $row) {
$codes[$row['category']][] = ['cd' => $row['cd'], 'cd_nm' => $row['cd_nm']];
}
return $codes;
}
/**
* 코드 상세
*/
public function getCodeDetail($category, $code)
public function getCodeDetail(string $category, string $code): array
{
$sql = "SELECT category, category_nm, cd, cd_nm FROM codes" .
" WHERE category = ? and cd = ?";
$data = [$category, $code];
$query = $this->db->query($sql, $data);
$row = $query->getResultArray();
return $row;
return $this->db->table('codes')
->select('category, category_nm, cd, cd_nm')
->where('category', $category)
->where('cd', $code)
->get()
->getResultArray();
}
}