Files
kngil_home/kngil/bbs/adm_use_history.php

76 lines
2.6 KiB
PHP

<?php
/**
* 서비스 사용 이력 조회 API (Direct SQL 방식)
*/
require_once 'db_conn.php';
header('Content-Type: application/json');
try {
// 1. 파라미터 수집
$p_member_id = isset($_POST['member_id']) ? trim($_POST['member_id']) : '';
$p_user_nm = isset($_POST['user_nm']) ? trim($_POST['user_nm']) : '';
$p_dept_nm = isset($_POST['dept_nm']) ? trim($_POST['dept_nm']) : '';
$p_fuse_dt = isset($_POST['fuse_dt']) ? trim($_POST['fuse_dt']) : '';
$p_tuse_dt = isset($_POST['tuse_dt']) ? trim($_POST['tuse_dt']) : '';
if ($p_fuse_dt === '') {
$p_fuse_dt = '1999-01-01';
}
if ($p_tuse_dt === '') {
$p_tuse_dt = '2099-12-31';
}
// 2. 직접 SQL 쿼리 작성 (함수 내부 로직을 그대로 가져옴)
$sql = "
SELECT
b.member_id::character varying,
a.use_dt, -- DATE 타입
a.user_id::character varying,
a.sq_no,
b.user_nm::character varying,
b.dept_nm::character varying,
b.posit_nm::character varying,
b.use_yn::character varying,
a.use_area,
kngil.fn_base_nm(a.ser_bc)::character varying as ser_bc,
a.cdt
FROM kngil.use_history a
INNER JOIN kngil.users b ON a.user_id = b.user_id
WHERE (:member_id = '' OR b.member_id = :member_id) -- ID가 없어도 나오게
-- 검색 조건: 값이 있을 때만 필터링
AND (:user_nm = '' OR b.user_nm LIKE '%' || :user_nm || '%')
AND (:dept_nm = '' OR b.dept_nm LIKE '%' || :dept_nm || '%')
AND a.use_dt::date >= :fuse_dt::date
AND a.use_dt::date <= :tuse_dt::date
ORDER BY a.use_dt DESC, a.sq_no DESC
";
$stmt = $pdo->prepare($sql);
// 파라미터 바인딩 (이름 기반 바인딩이 더 직관적입니다)
$stmt->execute([
':member_id' => $p_member_id,
':user_nm' => $p_user_nm,
':dept_nm' => $p_dept_nm,
':fuse_dt' => $p_fuse_dt,
':tuse_dt' => $p_tuse_dt
]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 3. W2UI용 recid 가공
$records = [];
foreach ($rows as $index => $row) {
$row['recid'] = $row['user_id'] . '_' . ($row['sq_no'] ?? $index);
$records[] = $row;
}
echo json_encode($records, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);
} catch (PDOException $e) {
error_log("DB Error: " . $e->getMessage());
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $e->getMessage()], JSON_UNESCAPED_UNICODE);
}
?>