From 80cb9451d223767038217cce54502009341f3779 Mon Sep 17 00:00:00 2001 From: jjstyle Date: Wed, 18 Mar 2026 16:59:16 +0900 Subject: [PATCH] =?UTF-8?q?result=20=EC=9E=85=EB=A0=A5=EC=8B=9C=20usr=5Fsq?= =?UTF-8?q?=20dept=5Fsq=20=EB=A5=BC=20region=5Fcodes=20=EC=97=90=EC=84=9C?= =?UTF-8?q?=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8A=94=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EB=84=A3=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/Entities/RegionModel.php | 36 ++++++++++++++++++ .../ParameterMapper/TypeSParameterMapper.php | 38 +++++++++++++++++-- 2 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 app/Models/Entities/RegionModel.php diff --git a/app/Models/Entities/RegionModel.php b/app/Models/Entities/RegionModel.php new file mode 100644 index 0000000..8c913a4 --- /dev/null +++ b/app/Models/Entities/RegionModel.php @@ -0,0 +1,36 @@ + 26, 'usr_sq' => 1] 또는 null + */ + public function getChargeByRegionCd($regionCd) + { + if (empty($regionCd)) { + return null; + } + + return $this->select('dept_sq, usr_sq') + ->where('region_cd', $regionCd) + ->where('use_yn', 'Y') + ->first(); + } +} diff --git a/app/Services/ParameterMapper/TypeSParameterMapper.php b/app/Services/ParameterMapper/TypeSParameterMapper.php index 08b8476..8e996f8 100644 --- a/app/Services/ParameterMapper/TypeSParameterMapper.php +++ b/app/Services/ParameterMapper/TypeSParameterMapper.php @@ -2,12 +2,20 @@ namespace App\Services\ParameterMapper; +use App\Models\Entities\RegionModel; + /** * Type S 파라미터 매퍼 * 현장확인 매물 (A01 등) 데이터를 Receipt 테이블용 파라미터로 변환 */ class TypeSParameterMapper extends BaseParameterMapper { + private $regionModel; + + public function __construct() + { + $this->regionModel = new RegionModel(); + } /** * Receipt 테이블용 파라미터 생성 */ @@ -96,10 +104,34 @@ class TypeSParameterMapper extends BaseParameterMapper public function mapResult(int $rcptSq, array $rawData): array { $now = db_now(); + + $address = $rawData['address'] ?? []; + $sectorNumber = $address['legalDivision']['sectorNumber'] ?? null; - // VR 검증 여부에 따른 담당자 설정 - $deptSq = ($rawData['site']['isVrVerification'] ?? false) ? '29' : null; - $usrSq = ($rawData['site']['isVrVerification'] ?? false) ? '1993' : null; + // VR 검증 여부 확인 + $isVrVerification = ($rawData['site']['isVrVerification'] ?? false); + + // 1. 지역별 담당자 조회 + $charge = null; + if ($sectorNumber) { + $charge = $this->regionModel->getChargeByRegionCd($sectorNumber); + } + + // 2. 기본 담당자 설정 (지역별 담당자가 없으면) + $deptSq = $charge['dept_sq'] ?? '26'; + $usrSq = $charge['usr_sq'] ?? '1'; + + // 3. VR 검증인 경우 환경별 담당자로 덮어쓰기 + if ($isVrVerification) { + if (ENVIRONMENT === 'development') { + $deptSq = '29'; + $usrSq = '472'; + } else { + // production + $deptSq = '33'; + $usrSq = '1993'; + } + } return [ 'rcpt_sq' => $rcptSq,