81 lines
2.7 KiB
TypeScript

import { ERROR_MESSAGES, queryStringFormatter } from '@/utils/common-utils'
import axios from 'axios'
import { NextResponse } from 'next/server'
import { loggerWrapper } from '@/libs/api-wrapper'
import { HttpStatusCode } from 'axios'
/**
* @api {GET} /api/qna/detail 문의 상세 조회 API
* @apiName GET /api/qna/detail
* @apiGroup Qna
* @apiDescription 문의 상세 조회 API
*
* @apiParam {String} compCd 회사 코드
* @apiParam {String} qnaNo 문의 번호
* @apiParam {String} langCd 언어 코드
* @apiParam {String} loginId 로그인 ID
*
* @apiExample {curl} Example usage:
* curl -X GET http://localhost:3000/api/qna/detail
*
* @apiSuccessExample {json} Success-Response:
* {
* "data": {
"compCd": "5200",
"qnaNo": 51,
"qstTitle": "Q.CAST TEST",
"qstContents": "Q.CAST TEST CONTENTS",
"regDt": "2025.04.29 16:16:51",
"regId": "X112",
"regNm": "株式会社アイ工務店",
"regEmail": "x112@interplug.co.kr",
"answerYn": "N",
"ansContents": null,
"ansRegDt": null,
"ansRegNm": null,
"ansListFile": null,
"storeId": "X112",
"storeNm": "株式会社アイ工務店",
"regUserNm": "TEST",
"regUserTelNo": "010-1111-1111",
"qnaClsLrgCd": "A01",
"qnaClsMidCd": "B02",
"qnaClsSmlCd": "C05",
"listFile": [
{
"fileNo": 853
"encodeFileNo": 853,
"srcFileNm": "Quotation_4500380_20240808145129.pdf",
"fileCours": "/temp/20250428/"
"fileSize":160982,
"regDt":"2024.08.13"
}
...
],
...
},
* @apiError {Number} 401 세션 정보 없음 (로그인 필요)
* @apiError {Number} 500 서버 오류
*/
async function getQnaDetail(request: Request): Promise<NextResponse> {
const { searchParams } = new URL(request.url)
const params = {
compCd: searchParams.get('compCd'),
qnaNo: searchParams.get('qnoNo'),
langCd: searchParams.get('langCd'),
loginId: searchParams.get('loginId'),
}
try {
const response = await axios.get(`${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/qna/detail?${queryStringFormatter(params)}`)
if (response.status === 200) {
return NextResponse.json(response.data)
}
return NextResponse.json({ error: response.data.result }, { status: response.status })
} catch (error: any) {
return NextResponse.json({ error: error.response.data.result ?? ERROR_MESSAGES.FETCH_ERROR }, { status: HttpStatusCode.InternalServerError })
}
}
export const GET = loggerWrapper(getQnaDetail)