|
|
@@ -210,4 +210,82 @@ class Cs extends ResourceController
|
|
|
->download($path, null)
|
|
|
->setFileName($originalFileName);
|
|
|
}
|
|
|
+
|
|
|
+ //문의 검색
|
|
|
+ public function csSearch()
|
|
|
+ {
|
|
|
+ $db = \Config\Database::connect();
|
|
|
+
|
|
|
+ // 요청 바디에서 filter와 keyword 추출
|
|
|
+ $request = $this->request->getJSON(true);
|
|
|
+ $userSeq = isset($request['USER_SEQ']) ? $request['USER_SEQ'] : null;
|
|
|
+ $filter = isset($request['filter']) ? $request['filter'] : null;
|
|
|
+ $keyword = isset($request['keyword']) ? $request['keyword'] : null;
|
|
|
+ $startDate = isset($request['startDate']) ? $request['startDate'] : null;
|
|
|
+ $endDate = isset($request['endDate']) ? $request['endDate'] : null;
|
|
|
+
|
|
|
+ $filterMap = [
|
|
|
+ 'title' => 'C.TITLE',
|
|
|
+ 'content' => 'C.CONTENT',
|
|
|
+ 'writer' => 'WRITER',
|
|
|
+ ];
|
|
|
+
|
|
|
+ // CS_BOARD 테이블 검색
|
|
|
+ $builder = $db->table('CS_BOARD C')
|
|
|
+ ->select('C.*, U.NICK_NAME, U.NAME, V.COMPANY_NAME, V.NAME')
|
|
|
+ ->join('USER_LIST U', 'C.USER_SEQ = U.SEQ', 'left')
|
|
|
+ ->join('VENDOR_LIST V', 'C.USER_SEQ = V.SEQ', 'left');
|
|
|
+
|
|
|
+ // userSeq가 0이 아니면 본인이 쓴 글만 조회
|
|
|
+ if ($userSeq !== 0) {
|
|
|
+ $builder->where('C.USER_SEQ', $userSeq);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 키워드 검색
|
|
|
+ if (!empty($keyword)) {
|
|
|
+ if (empty($filter) || $filter === '') {
|
|
|
+ // 필터를 선택 안했으면 전체 검색 (제목 + 내용 + 작성자)
|
|
|
+ $builder->groupStart()
|
|
|
+ ->like('C.TITLE', $keyword)
|
|
|
+ ->orLike('C.CONTENT', $keyword)
|
|
|
+ ->orLike('U.NICK_NAME', $keyword)
|
|
|
+ ->orLike('U.NAME', $keyword)
|
|
|
+ ->orLike('V.COMPANY_NAME', $keyword)
|
|
|
+ ->orLike('V.NAME', $keyword)
|
|
|
+ ->groupEnd();
|
|
|
+ } elseif (isset($filterMap[$filter])) {
|
|
|
+ if ($filter === 'title') {
|
|
|
+ // 제목 검색
|
|
|
+ $builder->like($filterMap[$filter], $keyword);
|
|
|
+ } elseif ($filter === 'content') {
|
|
|
+ // 내용 검색
|
|
|
+ $builder->like($filterMap[$filter], $keyword);
|
|
|
+ } elseif ($filter === 'writer') {
|
|
|
+ // 작성자 검색
|
|
|
+ $builder->groupStart()
|
|
|
+ ->like('U.NICK_NAME', $keyword)
|
|
|
+ ->orLike('U.NAME', $keyword)
|
|
|
+ ->orLike('V.COMPANY_NAME', $keyword)
|
|
|
+ ->orLike('V.NAME', $keyword)
|
|
|
+ ->groupEnd();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 날짜 범위 검색
|
|
|
+ if (!empty($startDate)) {
|
|
|
+ $builder->where('DATE(C.REGDATE) >=', $startDate);
|
|
|
+ }
|
|
|
+ if (!empty($endDate)) {
|
|
|
+ $builder->where('DATE(C.REGDATE) <=', $endDate);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 정렬: 최신순
|
|
|
+ $builder->orderBy('C.SEQ', 'DESC');
|
|
|
+
|
|
|
+ // 조회
|
|
|
+ $lists = $builder->get()->getResultArray();
|
|
|
+
|
|
|
+ return $this->respond($lists, 200);
|
|
|
+ }
|
|
|
}
|