코디잉

15_공동구매 목록 ① 메인 본문

PROJECT/같이사자(공동구매)

15_공동구매 목록 ① 메인

yong_ღ'ᴗ'ღ 2022. 8. 30. 03:07

드뎌 공동구매 목록을 띄운.ㄷ..ㅏ...ㅎㅎ

목록이 필요한 곳은 총 6군데 + 지도API 로 선택한 지역의 지역구 받아오도록 처리

 

① 메인(게시물 4 * 8 = 32개만)  : 최근 작성된 거에서 32개만 띄움

 

나머지 아래 목록은 → 게시물 4 * 6 = 24개 + 페이징처리

② 메인카테고리 클릭 시 : 메인카테고리에 해당되는 모든 서브카테고리의 게시물

③ 서브카테고리 클릭 시 : 해당 서브카테고리의 게시물

④ <최근공구> : 최근(7일 이내)에 올라온 공동구매 게시물 

⑤ <마감임박> : 남은 시간이 24시간 이내인 공동구매 게시물

⑥ 검색했을 시 : 게시물의 제목/내용/카테고리 중 검색 내용에 해당되는 게시물 모두 띄움

 

위의 6가지 목록들에 띄워지는 공동구매 게시물은 아래 조건을 만족해야 한다.

    1) 현재 모집 상태인 게시물만 띄움

    2) 신고당한 게시물은 목록에서 제외

    3) 영구정지 회원의 게시물은 목록에서 제외

    4) 진행자가 취소한 공동구매는 목록에서 제외(공동구매 게시물 삭제는 불가능, 진행 취소만 가능하기 때문)

    5) 신고 접수는 됐지만 아직 처리되지 않은 게시물은 목록에서 제외 (→ 블라인드 처리된 게시물)

 

++) 추가로 일단 목록부터 다 띄운 후에 작업할 거

⑦ 메인>지도에서 특정 지역 선택 시, 선택 지역구를 세션에 저장하도록 처리

     → 사용자가 메인의 지도에서 특정 지역 선택 시, 목록 6개 모두 그 지역의 게시물만 나오도록 처리하려고 한다. 

         지역을 선택하지 않을 경우에는 모든 지역 게시물 다 나옴

 

 

현재 메인은 텅 비어있는 상태지만,,,

이런식으로 공동구매 목록들을 띄울 것이다.

아래는 정적 데이터로 넣어놓은 [마감임박] 페이지 예시화면이다.

 

<필요 데이터>

- 사진: 회원이 올린 상품 이미지

- 주황색 뱃지: 24시간 이상이 남았을 시에는, 남은 일수만 띄우고

  24시간 미만으로 남았을 시에는, 남은 시간/분을 띄움 (초까지는 안 띄우는 걸로 수정)

- 현재 마우스는 안보이지만,,,, 바나나 사진 위에 마우스를 올려놓은 상태이다.

  사진에 마우스 hover 시: 현재까지 구매된 상품개수 / 목표 상품개수 정보를 띄움

- 제목: '[지역구] 회원이 쓴 제목' 을 띄움

- 가격: 1인 1개 구입 시의 가격을 띄움

 

 

데이터는 넣어놨으니 빠르게 SQL 쿼리 작성하고 작업 ㄱㄱ.....!!


① 메인(게시물 4 * 8 = 32개만)  : 최근 작성된 거에서 32개만 띄움

먼저, 필요한 정보를 기반으로 공동구매 DTO를 만들어서 변수선언 & getter/setter 생성!

메인의 공동구매목록 SQL 에서 필요한 매개변수는 나중에 (⑦번) 지도에서 사용자가 지역 선택 시 세션에 저장될 『지역구』이다.

// IBuypostDAO.java 파일
public ArrayList<BuypostDTO> buypostList_main(String user_region);
<!-- BuypostDAO.xml 파일 -->
<!-- 메인(32개) -->
<select id="buypostList_main" resultType="com.test.mybatis.BuypostDTO">
    SELECT ROWNUM, CODE, TITLE, AMOUNT, BUY_NUMBER||'/'||GOODS_NUM "COUNT", GOODS_PHOTO_NAME
         , LEFT_DAY, LEFT_HOUR, LEFT_MINUTE
    FROM VIEW_BUYPOSTLIST
    WHERE REGION LIKE '%'||#{user_region}||'%'
      AND ROWNUM <![CDATA[<=]]> 32	
</select>

컨트롤러에서 세션에 저장되어 있는 user_region 을 가져와서 입력값이 없을 경우(null)일 때에는 빈 문자열을 전달해주고, 

사용자가 선택한 지역구가 있다면, 그 지역구를 전달해줄 예정!

// Controller.java 파일
@RequestMapping("/main.lion")
public String main(HttpServletRequest request, Model model) {
    HttpSession session = request.getSession();
    String user_region = (String)session.getAttribute("user_region");
    if (user_region == null) 
        user_region = "";

    IBuypostDAO dao = sqlSession.getMapper(IBuypostDAO.class);
    ArrayList<BuypostDTO> buypostList_main = dao.buypostList_main(user_region);	
    model.addAttribute("buypostList", buypostList_main);
    return "/WEB-INF/view/user_main.jsp";
}

 

그리고 view에서는 controller에서 보내준 buypostList를 사용해서 반복문을 돌며 공구 게시물을 띄웠다.

아직 공동구매 상세보기 페이지 클릭 시, 공동구매 코드를 주소로 넘겨줬다. 당연히 아직은 상세보기 페이지 작업을 안해서  404가 뜨지만,,!! 주소값 넘어가는 거까지 확인 완료

이번에는 <a>태그를 사용했다.

<a href="buypostarticle.lion?code=${buypost.code }"> ...............</a>

 

아 사진은 DB에 사진경로를 저장해놓고, 사진 이름만 가져와서 띄우는 방식을 사용하고 있다.

 

메인 작업 완료! 아직 넣어놓은 공동구매들은 다 마감일이 24시간 이상 남은 것들이라 시간/분이 뜨는 건 없다.

그건 마감임박 쪽 할 때 넣어서 볼 예정 ㅎㅅㅎ

 

캡쳐라 마우스는 안보이지만, [성동구] 모카빵^^ 게시물에 마우스를 올려놓은 상태이다.

해당 공동구매가 진행되기 위한 목표 개수는 10개이고, 현재까지 구매된 모카빵은 4개라는 의미이다.

- 메인에 떠있는 모카빵 게시물의 데이터로 알 수 있는 정보는 아래와 같다.

     1) 모집마감일까지 8일이 남은 상태

     2) 거래장소가 성동구에 위치해있음

     3) 모카빵을 1개 사려면 드는 가격은 1,790원

 

 

메인에서는 다른 처리할 거는 없어서,,,,지도가 있기는 하지만,,,고건 일단 목록부터 다 띄우고 할거니까....

메인 끗!

Comments