|
@@ -284,7 +284,7 @@ class VendorController extends ResourceController
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 파트너십 해지 (벤더사 권한)
|
|
|
|
|
|
|
+ * 벤더사 파트너십 해지 - 단순화된 방식
|
|
|
*/
|
|
*/
|
|
|
public function terminatePartnership()
|
|
public function terminatePartnership()
|
|
|
{
|
|
{
|
|
@@ -293,9 +293,9 @@ class VendorController extends ResourceController
|
|
|
|
|
|
|
|
$mappingSeq = $request->mappingSeq ?? null;
|
|
$mappingSeq = $request->mappingSeq ?? null;
|
|
|
$terminatedBy = $request->terminatedBy ?? null;
|
|
$terminatedBy = $request->terminatedBy ?? null;
|
|
|
- $terminateReason = $request->terminateReason ?? ''; // 프론트엔드와 일치
|
|
|
|
|
|
|
+ $terminateReason = $request->terminateReason ?? '';
|
|
|
|
|
|
|
|
- log_message('debug', '파트너십 해지 요청: ' . json_encode([
|
|
|
|
|
|
|
+ log_message('info', '파트너십 해지 요청: ' . json_encode([
|
|
|
'mappingSeq' => $mappingSeq,
|
|
'mappingSeq' => $mappingSeq,
|
|
|
'terminatedBy' => $terminatedBy,
|
|
'terminatedBy' => $terminatedBy,
|
|
|
'terminateReason' => $terminateReason
|
|
'terminateReason' => $terminateReason
|
|
@@ -308,8 +308,10 @@ class VendorController extends ResourceController
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 매핑 정보와 현재 상태 확인
|
|
|
|
|
- $mapping = $this->vendorInfluencerModel->getWithCurrentStatus($mappingSeq);
|
|
|
|
|
|
|
+ // 매핑 정보 확인 (메인 테이블만 사용)
|
|
|
|
|
+ $mapping = $this->vendorInfluencerModel->where('SEQ', $mappingSeq)
|
|
|
|
|
+ ->where('IS_ACT', 'Y')
|
|
|
|
|
+ ->first();
|
|
|
|
|
|
|
|
if (!$mapping) {
|
|
if (!$mapping) {
|
|
|
return $this->response->setStatusCode(404)->setJSON([
|
|
return $this->response->setStatusCode(404)->setJSON([
|
|
@@ -318,13 +320,19 @@ class VendorController extends ResourceController
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- log_message('debug', '현재 매핑 상태: ' . json_encode($mapping));
|
|
|
|
|
|
|
+ // 현재 상태 확인 (히스토리 테이블 기준)
|
|
|
|
|
+ $currentStatus = $this->statusHistoryModel->getCurrentStatus($mappingSeq);
|
|
|
|
|
+ $actualStatus = $currentStatus ? $currentStatus['STATUS'] : $mapping['STATUS'];
|
|
|
|
|
+
|
|
|
|
|
+ log_message('info', '현재 매핑 정보: ' . json_encode($mapping));
|
|
|
|
|
+ log_message('info', '히스토리 테이블 현재 상태: ' . json_encode($currentStatus));
|
|
|
|
|
+ log_message('info', '실제 확인할 상태: ' . $actualStatus);
|
|
|
|
|
|
|
|
// 현재 상태가 APPROVED인지 확인
|
|
// 현재 상태가 APPROVED인지 확인
|
|
|
- if ($mapping['CURRENT_STATUS'] !== 'APPROVED') {
|
|
|
|
|
|
|
+ if ($actualStatus !== 'APPROVED') {
|
|
|
return $this->response->setStatusCode(400)->setJSON([
|
|
return $this->response->setStatusCode(400)->setJSON([
|
|
|
'success' => false,
|
|
'success' => false,
|
|
|
- 'message' => '승인된 파트너십만 해지할 수 있습니다. 현재 상태: ' . $mapping['CURRENT_STATUS']
|
|
|
|
|
|
|
+ 'message' => '승인된 파트너십만 해지할 수 있습니다. 현재 상태: ' . $actualStatus
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -334,63 +342,131 @@ class VendorController extends ResourceController
|
|
|
return $this->response->setStatusCode(400)->setJSON($processingUser);
|
|
return $this->response->setStatusCode(400)->setJSON($processingUser);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- log_message('debug', '처리자 검증 완료: ' . json_encode($processingUser['data']));
|
|
|
|
|
|
|
+ log_message('info', '처리자 검증 완료: ' . json_encode($processingUser['data']));
|
|
|
|
|
|
|
|
- // VendorPartnershipModel을 통한 해지 처리
|
|
|
|
|
|
|
+ // 메인 테이블 직접 업데이트 (단순하고 확실한 방법)
|
|
|
$statusMessage = '파트너십 해지: ' . $terminateReason;
|
|
$statusMessage = '파트너십 해지: ' . $terminateReason;
|
|
|
|
|
+ $actualChangedBy = $processingUser['data']['seq'] ?? $terminatedBy ?: 1;
|
|
|
|
|
|
|
|
- // CHANGED_BY 값을 확실하게 설정 (processingUser에서 가져온 실제 SEQ 사용)
|
|
|
|
|
- $actualChangedBy = $processingUser['data']['seq'] ?? $terminatedBy;
|
|
|
|
|
|
|
+ $updateData = [
|
|
|
|
|
+ 'STATUS' => 'TERMINATED',
|
|
|
|
|
+ 'RESPONSE_MESSAGE' => $statusMessage,
|
|
|
|
|
+ 'RESPONSE_DATE' => date('Y-m-d H:i:s'),
|
|
|
|
|
+ 'PARTNERSHIP_END_DATE' => date('Y-m-d H:i:s'),
|
|
|
|
|
+ 'APPROVED_BY' => $actualChangedBy,
|
|
|
|
|
+ 'MOD_DATE' => date('Y-m-d H:i:s')
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ log_message('info', "메인 테이블 업데이트 데이터: " . json_encode($updateData));
|
|
|
|
|
|
|
|
- // CHANGED_BY가 여전히 null이면 기본값 설정
|
|
|
|
|
- if (!$actualChangedBy) {
|
|
|
|
|
- log_message('warning', 'CHANGED_BY가 여전히 null - 원본 terminatedBy 사용: ' . $terminatedBy);
|
|
|
|
|
- $actualChangedBy = $terminatedBy ?: 1; // 최종 기본값 1
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 업데이트 전 데이터 저장
|
|
|
|
|
+ $beforeUpdate = $this->vendorInfluencerModel->find($mappingSeq);
|
|
|
|
|
+ log_message('info', "업데이트 전 데이터: " . json_encode($beforeUpdate));
|
|
|
|
|
|
|
|
- log_message('debug', "해지 처리 준비: mappingSeq={$mappingSeq}, changedBy={$actualChangedBy} (원본: {$terminatedBy})");
|
|
|
|
|
|
|
+ // UNIQUE 제약조건 우회를 위해 직접 SQL 사용
|
|
|
|
|
+ $db = \Config\Database::connect();
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
- // 상태를 TERMINATED로 변경
|
|
|
|
|
- $this->statusHistoryModel->changeStatus($mappingSeq, 'TERMINATED', $statusMessage, $actualChangedBy);
|
|
|
|
|
-
|
|
|
|
|
- // 해지 날짜 업데이트
|
|
|
|
|
- $this->vendorInfluencerModel->update($mappingSeq, [
|
|
|
|
|
- 'PARTNERSHIP_END_DATE' => date('Y-m-d H:i:s')
|
|
|
|
|
- ]);
|
|
|
|
|
-
|
|
|
|
|
- log_message('debug', '파트너십 해지 완료: mappingSeq=' . $mappingSeq);
|
|
|
|
|
-
|
|
|
|
|
- return $this->response->setJSON([
|
|
|
|
|
- 'success' => true,
|
|
|
|
|
- 'message' => '파트너십이 해지되었습니다.',
|
|
|
|
|
- 'data' => [
|
|
|
|
|
- 'mappingSeq' => $mappingSeq,
|
|
|
|
|
- 'status' => 'TERMINATED',
|
|
|
|
|
- 'terminatedBy' => $processingUser['data']['name'],
|
|
|
|
|
- 'terminateReason' => $terminateReason
|
|
|
|
|
- ]
|
|
|
|
|
- ]);
|
|
|
|
|
-
|
|
|
|
|
- } catch (\Exception $statusError) {
|
|
|
|
|
- log_message('error', '상태 변경 실패: ' . $statusError->getMessage());
|
|
|
|
|
- log_message('error', '상태 변경 스택 트레이스: ' . $statusError->getTraceAsString());
|
|
|
|
|
|
|
+ // 1. 먼저 기존 TERMINATED 레코드가 있는지 확인
|
|
|
|
|
+ $existingTerminated = $db->query(
|
|
|
|
|
+ "SELECT SEQ FROM VENDOR_INFLUENCER_MAPPING
|
|
|
|
|
+ WHERE VENDOR_SEQ = ? AND INFLUENCER_SEQ = ? AND STATUS = 'TERMINATED' AND SEQ != ?",
|
|
|
|
|
+ [$beforeUpdate['VENDOR_SEQ'], $beforeUpdate['INFLUENCER_SEQ'], $mappingSeq]
|
|
|
|
|
+ )->getRowArray();
|
|
|
|
|
+
|
|
|
|
|
+ if ($existingTerminated) {
|
|
|
|
|
+ log_message('warning', '기존 TERMINATED 레코드 존재 - 비활성화: ' . json_encode($existingTerminated));
|
|
|
|
|
+
|
|
|
|
|
+ // 기존 TERMINATED 레코드를 비활성화
|
|
|
|
|
+ $db->query(
|
|
|
|
|
+ "UPDATE VENDOR_INFLUENCER_MAPPING SET IS_ACT = 'N' WHERE SEQ = ?",
|
|
|
|
|
+ [$existingTerminated['SEQ']]
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 직접 SQL로 현재 레코드 업데이트
|
|
|
|
|
+ $updateSql = "UPDATE VENDOR_INFLUENCER_MAPPING SET
|
|
|
|
|
+ STATUS = 'TERMINATED',
|
|
|
|
|
+ RESPONSE_MESSAGE = ?,
|
|
|
|
|
+ RESPONSE_DATE = ?,
|
|
|
|
|
+ PARTNERSHIP_END_DATE = ?,
|
|
|
|
|
+ APPROVED_BY = ?,
|
|
|
|
|
+ MOD_DATE = ?
|
|
|
|
|
+ WHERE SEQ = ?";
|
|
|
|
|
+
|
|
|
|
|
+ $updateParams = [
|
|
|
|
|
+ $statusMessage,
|
|
|
|
|
+ date('Y-m-d H:i:s'),
|
|
|
|
|
+ date('Y-m-d H:i:s'),
|
|
|
|
|
+ $actualChangedBy,
|
|
|
|
|
+ date('Y-m-d H:i:s'),
|
|
|
|
|
+ $mappingSeq
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ log_message('info', "직접 SQL 실행: " . $updateSql);
|
|
|
|
|
+ log_message('info', "SQL 파라미터: " . json_encode($updateParams));
|
|
|
|
|
+
|
|
|
|
|
+ $updateResult = $db->query($updateSql, $updateParams);
|
|
|
|
|
+ $affectedRows = $db->affectedRows();
|
|
|
|
|
+
|
|
|
|
|
+ log_message('info', "직접 SQL 업데이트 결과: 영향받은 행 수={$affectedRows}");
|
|
|
|
|
+
|
|
|
|
|
+ if ($affectedRows === 0) {
|
|
|
|
|
+ throw new \Exception('직접 SQL 업데이트 실패 - 영향받은 행이 0개');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } catch (\Exception $sqlError) {
|
|
|
|
|
+ log_message('error', '직접 SQL 업데이트 실패: ' . $sqlError->getMessage());
|
|
|
|
|
|
|
|
return $this->response->setStatusCode(500)->setJSON([
|
|
return $this->response->setStatusCode(500)->setJSON([
|
|
|
'success' => false,
|
|
'success' => false,
|
|
|
- 'message' => '파트너십 해지 중 오류가 발생했습니다.',
|
|
|
|
|
- 'error' => $statusError->getMessage()
|
|
|
|
|
|
|
+ 'message' => '파트너십 해지 처리 중 SQL 오류가 발생했습니다.',
|
|
|
|
|
+ 'error' => '직접 SQL 업데이트 실패',
|
|
|
|
|
+ 'debug' => $sqlError->getMessage()
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 업데이트 후 데이터 확인
|
|
|
|
|
+ $afterUpdate = $this->vendorInfluencerModel->find($mappingSeq);
|
|
|
|
|
+ log_message('info', "업데이트 후 데이터: " . json_encode($afterUpdate));
|
|
|
|
|
+
|
|
|
|
|
+ // 실제 상태 변경 확인
|
|
|
|
|
+ if ($afterUpdate['STATUS'] !== 'TERMINATED') {
|
|
|
|
|
+ log_message('error', '상태 변경 검증 실패: ' . $afterUpdate['STATUS']);
|
|
|
|
|
+ return $this->response->setStatusCode(500)->setJSON([
|
|
|
|
|
+ 'success' => false,
|
|
|
|
|
+ 'message' => '파트너십 해지 처리 중 오류가 발생했습니다.',
|
|
|
|
|
+ 'error' => '상태 변경 검증 실패',
|
|
|
|
|
+ 'debug' => [
|
|
|
|
|
+ 'expected' => 'TERMINATED',
|
|
|
|
|
+ 'actual' => $afterUpdate['STATUS']
|
|
|
|
|
+ ]
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ log_message('info', '파트너십 해지 완료: mappingSeq=' . $mappingSeq);
|
|
|
|
|
+
|
|
|
|
|
+ return $this->response->setJSON([
|
|
|
|
|
+ 'success' => true,
|
|
|
|
|
+ 'message' => '파트너십이 해지되었습니다.',
|
|
|
|
|
+ 'data' => [
|
|
|
|
|
+ 'mappingSeq' => $mappingSeq,
|
|
|
|
|
+ 'status' => 'TERMINATED',
|
|
|
|
|
+ 'terminatedBy' => $processingUser['data']['name'],
|
|
|
|
|
+ 'terminateReason' => $terminateReason,
|
|
|
|
|
+ 'terminateDate' => date('Y-m-d H:i:s'),
|
|
|
|
|
+ 'verifiedStatus' => $afterUpdate['STATUS'] // 검증된 상태
|
|
|
|
|
+ ]
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
log_message('error', '파트너십 해지 오류: ' . $e->getMessage());
|
|
log_message('error', '파트너십 해지 오류: ' . $e->getMessage());
|
|
|
- log_message('error', '파트너십 해지 스택 트레이스: ' . $e->getTraceAsString());
|
|
|
|
|
|
|
|
|
|
return $this->response->setStatusCode(500)->setJSON([
|
|
return $this->response->setStatusCode(500)->setJSON([
|
|
|
'success' => false,
|
|
'success' => false,
|
|
|
'message' => '파트너십 해지 중 오류가 발생했습니다.',
|
|
'message' => '파트너십 해지 중 오류가 발생했습니다.',
|
|
|
- 'error' => $e->getMessage()
|
|
|
|
|
|
|
+ 'error' => '시스템 오류',
|
|
|
|
|
+ 'debug' => ENVIRONMENT === 'development' ? $e->getMessage() : null
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -539,51 +615,38 @@ class VendorController extends ResourceController
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 디버깅용: 특정 매핑의 상태 정보 확인
|
|
|
|
|
|
|
+ * 데이터베이스 상태 디버깅 (임시)
|
|
|
*/
|
|
*/
|
|
|
public function debugMappingStatus($mappingSeq = null)
|
|
public function debugMappingStatus($mappingSeq = null)
|
|
|
{
|
|
{
|
|
|
try {
|
|
try {
|
|
|
- $mappingSeq = $mappingSeq ?: $this->request->getGet('mappingSeq');
|
|
|
|
|
-
|
|
|
|
|
if (!$mappingSeq) {
|
|
if (!$mappingSeq) {
|
|
|
- return $this->response->setJSON([
|
|
|
|
|
- 'success' => false,
|
|
|
|
|
- 'message' => 'mappingSeq 파라미터가 필요합니다.'
|
|
|
|
|
- ]);
|
|
|
|
|
|
|
+ $mappingSeq = $this->request->getGet('seq') ?? 1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 1. 메인 매핑 정보
|
|
|
|
|
- $mapping = $this->vendorInfluencerModel->find($mappingSeq);
|
|
|
|
|
|
|
+ // 메인 테이블 상태
|
|
|
|
|
+ $mainData = $this->vendorInfluencerModel->where('SEQ', $mappingSeq)->first();
|
|
|
|
|
|
|
|
- // 2. 현재 상태
|
|
|
|
|
- $currentStatus = $this->statusHistoryModel->getCurrentStatus($mappingSeq);
|
|
|
|
|
|
|
+ // 히스토리 테이블 전체
|
|
|
|
|
+ $historyData = $this->statusHistoryModel->where('MAPPING_SEQ', $mappingSeq)
|
|
|
|
|
+ ->orderBy('CHANGED_DATE', 'DESC')
|
|
|
|
|
+ ->findAll();
|
|
|
|
|
|
|
|
- // 3. 모든 히스토리
|
|
|
|
|
- $allHistory = $this->statusHistoryModel->getStatusHistory($mappingSeq, 50);
|
|
|
|
|
-
|
|
|
|
|
- // 4. 현재 상태가 여러 개인지 확인
|
|
|
|
|
- $currentStatusCount = $this->statusHistoryModel
|
|
|
|
|
- ->where('MAPPING_SEQ', $mappingSeq)
|
|
|
|
|
- ->where('IS_CURRENT', 'Y')
|
|
|
|
|
- ->countAllResults();
|
|
|
|
|
|
|
+ // 현재 상태 (IS_CURRENT='Y')
|
|
|
|
|
+ $currentStatus = $this->statusHistoryModel->getCurrentStatus($mappingSeq);
|
|
|
|
|
|
|
|
return $this->response->setJSON([
|
|
return $this->response->setJSON([
|
|
|
'success' => true,
|
|
'success' => true,
|
|
|
- 'data' => [
|
|
|
|
|
- 'mappingSeq' => $mappingSeq,
|
|
|
|
|
- 'mapping' => $mapping,
|
|
|
|
|
- 'currentStatus' => $currentStatus,
|
|
|
|
|
- 'currentStatusCount' => $currentStatusCount,
|
|
|
|
|
- 'statusHistory' => $allHistory,
|
|
|
|
|
- 'historyCount' => count($allHistory)
|
|
|
|
|
- ]
|
|
|
|
|
|
|
+ 'mappingSeq' => $mappingSeq,
|
|
|
|
|
+ 'mainTable' => $mainData,
|
|
|
|
|
+ 'historyTable' => $historyData,
|
|
|
|
|
+ 'currentStatus' => $currentStatus,
|
|
|
|
|
+ 'timestamp' => date('Y-m-d H:i:s')
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
return $this->response->setJSON([
|
|
return $this->response->setJSON([
|
|
|
'success' => false,
|
|
'success' => false,
|
|
|
- 'message' => '상태 확인 중 오류가 발생했습니다.',
|
|
|
|
|
'error' => $e->getMessage()
|
|
'error' => $e->getMessage()
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
@@ -650,4 +713,75 @@ class VendorController extends ResourceController
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 메인 테이블과 히스토리 테이블 상태 동기화
|
|
|
|
|
+ */
|
|
|
|
|
+ public function syncMappingStatus()
|
|
|
|
|
+ {
|
|
|
|
|
+ try {
|
|
|
|
|
+ $request = $this->request->getJSON();
|
|
|
|
|
+ $mappingSeq = $request->mappingSeq ?? $this->request->getGet('seq');
|
|
|
|
|
+
|
|
|
|
|
+ if (!$mappingSeq) {
|
|
|
|
|
+ return $this->response->setJSON([
|
|
|
|
|
+ 'success' => false,
|
|
|
|
|
+ 'message' => 'mappingSeq가 필요합니다.'
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 현재 히스토리 테이블 상태 조회
|
|
|
|
|
+ $currentStatus = $this->statusHistoryModel->getCurrentStatus($mappingSeq);
|
|
|
|
|
+
|
|
|
|
|
+ if (!$currentStatus) {
|
|
|
|
|
+ return $this->response->setJSON([
|
|
|
|
|
+ 'success' => false,
|
|
|
|
|
+ 'message' => '히스토리 테이블에서 현재 상태를 찾을 수 없습니다.'
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 메인 테이블 업데이트
|
|
|
|
|
+ $updateData = [
|
|
|
|
|
+ 'STATUS' => $currentStatus['STATUS'],
|
|
|
|
|
+ 'MOD_DATE' => date('Y-m-d H:i:s')
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ // TERMINATED 상태인 경우 추가 필드 업데이트
|
|
|
|
|
+ if ($currentStatus['STATUS'] === 'TERMINATED') {
|
|
|
|
|
+ $updateData['RESPONSE_MESSAGE'] = $currentStatus['STATUS_MESSAGE'] ?? '파트너십 해지';
|
|
|
|
|
+ $updateData['RESPONSE_DATE'] = $currentStatus['CHANGED_DATE'];
|
|
|
|
|
+ $updateData['PARTNERSHIP_END_DATE'] = $currentStatus['CHANGED_DATE'];
|
|
|
|
|
+ $updateData['APPROVED_BY'] = $currentStatus['CHANGED_BY'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $result = $this->vendorInfluencerModel->update($mappingSeq, $updateData);
|
|
|
|
|
+
|
|
|
|
|
+ if ($result) {
|
|
|
|
|
+ // 동기화 후 상태 확인
|
|
|
|
|
+ $updatedMain = $this->vendorInfluencerModel->find($mappingSeq);
|
|
|
|
|
+
|
|
|
|
|
+ return $this->response->setJSON([
|
|
|
|
|
+ 'success' => true,
|
|
|
|
|
+ 'message' => '상태 동기화 완료',
|
|
|
|
|
+ 'data' => [
|
|
|
|
|
+ 'mappingSeq' => $mappingSeq,
|
|
|
|
|
+ 'syncedStatus' => $currentStatus['STATUS'],
|
|
|
|
|
+ 'updatedMainTable' => $updatedMain
|
|
|
|
|
+ ]
|
|
|
|
|
+ ]);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return $this->response->setJSON([
|
|
|
|
|
+ 'success' => false,
|
|
|
|
|
+ 'message' => '메인 테이블 업데이트 실패'
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } catch (\Exception $e) {
|
|
|
|
|
+ return $this->response->setJSON([
|
|
|
|
|
+ 'success' => false,
|
|
|
|
|
+ 'message' => '동기화 중 오류 발생',
|
|
|
|
|
+ 'error' => $e->getMessage()
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|