기본적으로 명품지식의 메인 테이블은 info_board를 사용하며,
크게 list, view, write 페이지로 구성한다.

  • 리스트
    • 날짜별 베스트 글 5개
    • 오늘의 지식인
  • 쓰기/수정
    • 본문 글 추천
    • 본문 글 신고
    • 본문에 답변 글 추천
    • 본문에 답변 글 신고
  • 삭제
    • 본문 삭제
    • 답변 삭제
    • 답변 메모 삭제

ask_info에 해당하는 탭 내용은 아래와 같다.:

  • 탭:

    • 정보
    • 뉴스
    • 필톡
    • 질문
      • 미해결 (클릭시 하단에 미해결로 해쉬 이동)
    • 전체
      • 날짜별 베스트 글 5개 노출
  • 공통

    • 전체와 질문 탭을 누를 때만 미해결 탭이 활성화 되야한다.
    • 오늘의 지식인

리스트

  • 주요 파라미터:
    • ask_info
  • 프로세스:
    • 파라미터 정보 받고 info_board 테이블 조건 조회.
    • 불러온 리스트 데이터를 InfoBoardHelper::factoryList를 통해 가공.
    • 헬퍼를 통해 데이터 가공하고 데이터를 바인딩

  • 주요 파라미터:
    • askId => ask_no
  • 사용 테이블:
    • info_board, info_answer
    • info_boardadmin_view_check를 통해 게시글 노출 처리
      0 = 노출
      1 = 비노출
  • 프로세스
    • askId 파라미터로 info_board테이블 조회
    • reSetMeta 를 통해 meta태그 새로고침
    • 조회수 업데이트
      • 베스트 지식 카운트 업데이트
      • 해당 게시물 조회수 업데이트

뷰 - 답변

  • $answer['result']: 답변 리스트 데이터
  • $answer['resultCount']: 답변 개수
// 컨트롤러
$answer = InfoBoardHelper::factoryAnswer($answer['result']);
// 헬퍼
public static function factoryAnswer($answer, $isMemo=true){
    //데이터 가공
}

답변에서 조회한 데이터 전달하여 데이터를 가공한다.
메모를 노출 시킬지 말지 true/false로 지정한다.

질문 쓰기

  • 파일 업로드

    • 팝업 화면: 워터마크, 이미지 본문 넣기 기능

    • 파일 저장:

      • gif, jpg 이미지만 저장 가능
      • ImageMagic 라이브러리 사용
      • 이미지 저장 이후 사이즈 조정
      • 워터마크 클릭시 워터마크 처리
    • 플로우:
      input_file() -> fileUploadSave() -> fileUpload()

      input_file:

        function input_file(level) {
            if (document.write_form.info_file.value.length > 255) {
                alert('등록할수 있는 파일의 갯수를 초과하였습니다.');
                return (false);
            } else {
                window.open("/apps/info/file_upload?level=" + level, "recom_window", "width=404,height=540");
            }
        }

      fileUploadSave:

      /apps/info/file_upload => InfoBoard::fileUploadSave
      public function fileUploadSave(){
        $file = $this->requests->files->get('info_file');
        $imageSrc = $this->fileUpload($file);
        return $this->response('InfoBoard/popup/fileUpload', ['params' => $this->params, 'imageSrc' => $imageSrc]);
      }

      fileUpload:

      private function fileUpload($file){
      }
  • 게시글 저장

    • 컨트롤러: InfoBoard::write
    • 정책
      • 로그인 체크
      • 파라미터 체크
      • title, content 길이 체크
      • 금기어 체크
    • 저장 프로세스: 1)명품정보질문 2)답변
      • 1) 명품 정보 질문
        • 카테고리, 브랜드 코드로 각 name 조회
        • title, re_content_all 데이터 태그 제거 및 처리
        • seller_home이 있을 경우 저장 처리
        • info_board에 데이터 저장
        • 저장 이후 info_last_best 데이터 저장 (view 조회시 업데이트)
      • 2) 답변
        • IP 체크
        • 불량 유저 체크 no_info_check_user
        • 저장된 답변을 다시 info_board에 업데이트 처리
        • 관리자 체크 상태가 2일 경우 유저 등급 가산점 처리

추천

  • 컨트롤러: InfoBoard::recommendAsk
  • 비동기 형식
  • 로그인 체크
  • 넘어온 파라미터 값으로 추천자 ID 조회
  • 본인 게시글은 본인이 추천 할 수 없음
  • 추천 데이터가 없을 경우 저장
    • info_board 추천 카운트 업데이트
      • recom_count + 1

신고

  • 비동기 형식
  • 로그인 체크
  • 넘어온 파라미터 값으로 신고자 ID 조회
  • 이미 신고 했다면, 안내 문구 전달
  • 신고 데이터가 없을 경우 저장
    • info_board 신고 카운트 업데이트
      • 컬럼: unrecome_count + 1
  • 컨트롤러: InfoBoard::reportAsk