Initial commit: 교육 프로젝트 배포
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
//=========================
|
||||
// 컨텐츠 제안하기 기본값 + 제안현황
|
||||
//=========================
|
||||
require_once __DIR__ . '/db_conn.php';
|
||||
|
||||
// TODO: 실제 로그인 세션 연동 후 교체
|
||||
$memberId = 'U001';
|
||||
$sysCompCode = 'COMP01';
|
||||
|
||||
$offerDefaultTypeCode = 'OF10001'; // 제안
|
||||
$offerDefaultStatusCode = 'OF10002'; // 검토중
|
||||
|
||||
$offerStatusMap = [
|
||||
'OF10001' => '제안',
|
||||
'OF10002' => '검토중',
|
||||
'OF10003' => '게시완료',
|
||||
'OF10004' => '게시불가',
|
||||
];
|
||||
|
||||
$offerHistory = [];
|
||||
|
||||
try {
|
||||
$pdo = db_conn();
|
||||
$pdo->exec("SET NAMES 'utf8mb4'");
|
||||
|
||||
// 상태 코드맵 동적 조회 (기본값 fallback 유지)
|
||||
$stmtCode = $pdo->prepare("
|
||||
SELECT base_code, code_name
|
||||
FROM edu_codes
|
||||
WHERE group_code = 'OF100'
|
||||
AND is_active = '1'
|
||||
ORDER BY code
|
||||
");
|
||||
$stmtCode->execute();
|
||||
|
||||
foreach ($stmtCode->fetchAll(PDO::FETCH_ASSOC) as $codeRow) {
|
||||
$offerStatusMap[$codeRow['base_code']] = $codeRow['code_name'];
|
||||
}
|
||||
|
||||
// 제안 이력 조회
|
||||
// 정렬 우선순위:
|
||||
// 1) 검토중(OF10002) 최상단
|
||||
// 2) 그 외 상태는 코드 우선순위대로
|
||||
// 3) 같은 상태 안에서는 최신순
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT
|
||||
co.offer_id,
|
||||
co.type_code,
|
||||
co.title,
|
||||
co.reference_url,
|
||||
co.reason,
|
||||
co.status_code,
|
||||
co.created_at,
|
||||
co.updated_at
|
||||
FROM edu_content_offer co
|
||||
WHERE co.member_id = :member_id
|
||||
AND co.sys_comp_code = :sys_comp_code
|
||||
ORDER BY
|
||||
CASE co.status_code
|
||||
WHEN 'OF10002' THEN 0 -- 검토중
|
||||
WHEN 'OF10001' THEN 1 -- 제안
|
||||
WHEN 'OF10003' THEN 2 -- 게시완료
|
||||
WHEN 'OF10004' THEN 3 -- 게시불가
|
||||
ELSE 9
|
||||
END,
|
||||
co.created_at DESC,
|
||||
co.offer_id DESC
|
||||
LIMIT 20
|
||||
");
|
||||
|
||||
$stmt->execute([
|
||||
':member_id' => $memberId,
|
||||
':sys_comp_code' => $sysCompCode,
|
||||
]);
|
||||
|
||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
foreach ($rows as $row) {
|
||||
$statusCode = trim((string)($row['status_code'] ?? ''));
|
||||
|
||||
$offerHistory[] = [
|
||||
'offer_id' => $row['offer_id'] ?? '',
|
||||
'type_code' => $row['type_code'] ?? '',
|
||||
'title' => $row['title'] ?? '',
|
||||
'reference_url' => $row['reference_url'] ?? '',
|
||||
'reason' => $row['reason'] ?? '',
|
||||
'status_code' => $statusCode,
|
||||
'status_name' => $offerStatusMap[$statusCode] ?? $statusCode,
|
||||
'created_at' => $row['created_at'] ?? '',
|
||||
'updated_at' => $row['updated_at'] ?? '',
|
||||
'created_at_dot' => !empty($row['created_at']) ? date('y.m.d', strtotime($row['created_at'])) : '',
|
||||
'is_consider' => ($statusCode === 'OF10002'),
|
||||
];
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
// 운영 시 로깅 권장
|
||||
// error_log($e->getMessage());
|
||||
}
|
||||
Reference in New Issue
Block a user