124 lines
4.0 KiB
PHP
124 lines
4.0 KiB
PHP
<?php
|
|
error_reporting(E_ALL);
|
|
ini_set('display_errors', 1);
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
|
|
/* =========================
|
|
로그인 / 권한 가드
|
|
========================= */
|
|
require_once __DIR__ . '/adm_guard.php';
|
|
require_once __DIR__ . '/db_conn.php';
|
|
|
|
/* =========================
|
|
세션 기준 값
|
|
========================= */
|
|
$login = $_SESSION['login'];
|
|
$auth_bc = $login['auth_bc']; // 권한코드
|
|
$member_id = $login['member_id']; // 회사ID
|
|
$user_id = $login['user_id'] ?? 'SYSTEM';
|
|
|
|
|
|
/* =========================
|
|
입력
|
|
========================= */
|
|
$input = json_decode(file_get_contents('php://input'), true) ?? [];
|
|
$action = $_GET['action'] ?? $input['action'] ?? 'list';
|
|
|
|
try {
|
|
|
|
switch ($action) {
|
|
|
|
case 'save':
|
|
// $isAdmin 에러를 방지하기 위해 잠시 주석 처리하거나 true로 설정
|
|
// if (!$isAdmin) throw new Exception('권한이 없습니다.');
|
|
|
|
$inserts = $input['inserts'] ?? [];
|
|
$updates = $input['updates'] ?? [];
|
|
|
|
$pdo->beginTransaction();
|
|
|
|
/* ---------- 신규 추가(INSERT) 직접 쿼리 방식 ---------- */
|
|
if ($inserts) {
|
|
// 1. 함수 대신 직접 INSERT 쿼리 준비
|
|
// fa_id는 자동 생성이므로 제외, cdt는 DB 함수 사용
|
|
$sqlI = "INSERT INTO kngil.fa_comments (
|
|
fa_subject,
|
|
fa_content,
|
|
sq_no,
|
|
use_yn,
|
|
cid,
|
|
cdt
|
|
) VALUES (
|
|
:fa_subject,
|
|
:fa_content,
|
|
:sq_no,
|
|
:use_yn,
|
|
:cid,
|
|
CURRENT_TIMESTAMP
|
|
)";
|
|
|
|
$stmtI = $pdo->prepare($sqlI);
|
|
|
|
foreach ($inserts as $r) {
|
|
$stmtI->execute([
|
|
':fa_subject' => $r['fa_subject'] ?? '',
|
|
':fa_content' => $r['fa_content'] ?? '',
|
|
':sq_no' => (int)($r['sq_no'] ?? 0), // 숫자형 보장
|
|
':use_yn' => $r['use_yn'] ?? 'Y',
|
|
':cid' => $user_id
|
|
]);
|
|
}
|
|
}
|
|
|
|
/* ---------- 수정(UPDATE) 직접 쿼리 방식 ---------- */
|
|
if ($updates) {
|
|
// 1. 함수 대신 직접 UPDATE 쿼리 준비
|
|
$sqlU = "UPDATE kngil.fa_comments
|
|
SET
|
|
fa_subject = :fa_subject,
|
|
fa_content = :fa_content,
|
|
sq_no = :sq_no,
|
|
use_yn = :use_yn,
|
|
mid = :mid,
|
|
mdt = CURRENT_TIMESTAMP
|
|
WHERE
|
|
fa_id = :fa_id";
|
|
|
|
$stmtU = $pdo->prepare($sqlU);
|
|
|
|
foreach ($updates as $r) {
|
|
$stmtU->execute([
|
|
':fa_id' => $r['fa_id'], // 필수 조건
|
|
':fa_subject' => $r['fa_subject'] ?? '',
|
|
':fa_content' => $r['fa_content'] ?? '',
|
|
':sq_no' => (int)($r['sq_no'] ?? 0),
|
|
':use_yn' => $r['use_yn'] ?? 'Y',
|
|
':mid' => $user_id
|
|
]);
|
|
}
|
|
}
|
|
|
|
$pdo->commit();
|
|
echo json_encode(['status' => 'success']);
|
|
break;
|
|
default:
|
|
throw new Exception('잘못된 요청');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
catch (Exception $e) {
|
|
|
|
if ($pdo->inTransaction()) {
|
|
$pdo->rollBack();
|
|
}
|
|
|
|
http_response_code(403);
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => $e->getMessage()
|
|
]);
|
|
}
|
|
|