1. ranking 페이지
2. 상점 페이지
1. ranking 페이지
package com.coma.app.view.ranking;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.coma.app.biz.grade.GradeDAO;
import com.coma.app.biz.grade.GradeDTO;
import com.coma.app.biz.member.MemberDAO;
import com.coma.app.biz.member.MemberDTO;
import jakarta.servlet.ServletContext;
@Controller("rankingController")
public class RankingController {
@Autowired
private ServletContext servletContext;
@RequestMapping("/RankingPage.do")
public String renking( Model model,MemberDAO memberDAO, MemberDTO memberDTO, GradeDTO gradeDTO, GradeDAO gradeDAO) {
String path = "personalRank"; // view에서 알려줄 예정
//TODO model 컨디션값 받아서 수정해야함
memberDTO.setModel_member_condition("MEMBER_SEARCH_RANK");
//요청 값 : 전체 point / 등급 이미지 / 사용자 이름
ArrayList<MemberDTO> model_member_datas = memberDAO.selectAll(memberDTO);
//등급 이미지는 서버에 저장해 두었기 때문에
//model에서 받아온 등급 이미지 앞에 서버 주소를 추가해줍니다.
//----------------------------------------------------------
//model에 요청해서 등급 정보를 전부 불러오고 현재 등급 9개
ArrayList<GradeDTO> model_grade_datas = gradeDAO.selectAll(gradeDTO);
//불러온 랭킹에 등급 사진을 추가하기 위해 for문을 사용
for (MemberDTO data : model_member_datas) {
int member_total_point = data.getModel_member_total_point();
//member_total_point 가 0보다 크면 for문 실행
if(0 <= member_total_point) {
//해당 등급의 최소 점수와 최대 점수를 비교
//등급개수 만큼 for문을 돌려서 확인
for (int i = 0; i < model_grade_datas.size(); i++) {
int grade_min = model_grade_datas.get(i).getModel_grade_min_point();
int grade_max = model_grade_datas.get(i).getModel_grade_max_point();
//해당 등급 최소 점수보다 사용자의 점수가 크거나 같고 //사용자의 점수가 해당 등급의 최대 점수보다 작거나 같으면
if(grade_min <= member_total_point && member_total_point <= grade_max) {
data.setModel_member_grade_profile(servletContext.getContextPath()+"/grade_folder/" + model_grade_datas.get(i).getModel_grade_profile());
data.setModel_member_grade_name(model_grade_datas.get(i).getModel_grade_name());
}
//만약 등급의 최대 점수보다 사용자 점수가 크다면
else if(grade_max < member_total_point) {
data.setModel_member_grade_profile(servletContext.getContextPath()+"/grade_folder/" + model_grade_datas.get(i).getModel_grade_profile());
data.setModel_member_grade_name(model_grade_datas.get(i).getModel_grade_name());
break;
}
}// for (int i = 0; i < model_grade_datas.size(); i++) { 이미지 비교 for문 종료
}// if(0 < member_total_point) { 종료
}// for (MemberDTO data : model_member_datas) { 랭킹 등급이미지 등록 for문 종료
//받아온 값을 model_member_datas 값에 저장하여 전달
model.addAttribute("model_member_datas", model_member_datas);
return path;
}
@RequestMapping("/CrewRankingPage.do")
public String execute( Model model,MemberDAO memberDAO, MemberDTO memberDTO, GradeDTO gradeDTO, GradeDAO gradeDAO) {
String path = "crewRank"; // view에서 알려줄 예정
//크루 랭킹을 model에 요청 point 순으로 selectAll 예정
//랭킹 페이지가 두개 이기 때문에 model에 condition 값 전달
//TODO 컨디션값 받아서 수정해야함
memberDTO.setModel_member_condition("MEMBER_ALL_CREW_RANK");
//요청 값 : 전체 point / 등급 이미지 / 크루 이름 / 크루장 / 크루원명
ArrayList<MemberDTO> model_member_datas = memberDAO.selectAll(memberDTO);
//등급 이미지는 서버에 저장해 두었기 때문에
//model에서 받아온 등급 이미지 앞에 서버 주소를 추가해줍니다.
//----------------------------------------------------------
//model에 요청해서 등급 정보를 전부 불러오고 현재 등급 9개
ArrayList<GradeDTO> model_grade_datas = gradeDAO.selectAll(gradeDTO);
//불러온 랭킹에 등급 사진을 추가하기 위해 for문을 사용
for (MemberDTO data : model_member_datas) {
int member_total_point = data.getModel_member_total_point();
//member_total_point 가 0보다 크면 for문 실행
if(0 <= member_total_point) {
//해당 등급의 최소 점수와 최대 점수를 비교
//등급개수 만큼 for문을 돌려서 확인
for (int i = 0; i < model_grade_datas.size(); i++) {
int grade_min = model_grade_datas.get(i).getModel_grade_min_point();
int grade_max = model_grade_datas.get(i).getModel_grade_max_point();
//해당 등급 최소 점수보다 사용자의 점수가 크거나 같고 //사용자의 점수가 해당 등급의 최대 점수보다 작거나 같으면
if(grade_min <= member_total_point && member_total_point <= grade_max) {
data.setModel_member_grade_profile(servletContext.getContextPath()+"/grade_folder/" + model_grade_datas.get(i).getModel_grade_profile());
data.setModel_member_grade_name(model_grade_datas.get(i).getModel_grade_name());
}
//만약 등급의 최대 점수보다 사용자 점수가 크다면
else if(grade_max < member_total_point) {
data.setModel_member_grade_profile(servletContext.getContextPath()+"/grade_folder/" + model_grade_datas.get(i).getModel_grade_profile());
data.setModel_member_grade_name(model_grade_datas.get(i).getModel_grade_name());
break;
}
}// for (int i = 0; i < model_grade_datas.size(); i++) { 이미지 비교 for문 종료
}// if(0 < member_total_point) { 종료
}// for (MemberDTO data : model_member_datas) { 랭킹 등급이미지 등록 for문 종료
//받아온 값을 model_member_datas 값에 저장하여 전달
model.addAttribute("model_member_datas", model_member_datas);
return path;
}
}
2. 상점 페이지
package com.coma.app.view.store;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.coma.app.biz.product.ProductDTO;
import jakarta.servlet.ServletContext;
@Controller("storeController")
public class StoreController {
@Autowired
private ServletContext servletContext;
@RequestMapping("/StorePage.do")
public String store(Model model, ProductDTO productDTO) {
String path = "store"; // view에서 알려줄 예정 alert 창 띄우기 위한 JavaScript 페이지
//------------------------------------------------------------
//TODO 해당 페이지에서 공통으로 사용할 변수 and 객체
//product_datas 상품이 담겨 있는 session 불러오기
ArrayList<ProductDTO> datas = (ArrayList<ProductDTO>)servletContext.getAttribute("product_datas");
if(datas == null || datas.isEmpty()) {
path = "info";
model.addAttribute("msg", "현재 상품이 없습니다.");
model.addAttribute("path", "MAINPAGEACTION.do");
}
else {
ArrayList<ProductDTO> model_product_datas = new ArrayList<ProductDTO>();
//------------------------------------------------------------
//session 에 담겨 있는 상품 목록을 출력해주는 로직 시작
//TODO (페이지 번호 / 상품 총 개수) 를 구하는 로직을 작성
int page_num = 1; // page_num 초기 변수 지정
if(productDTO != null) {
page_num = productDTO.getPage();
}
int gym_size = 12; // 한 페이지에 표시할 게시글 수 설정
int min_gym = 1; // 최소 게시글 수 초기화
int max_gym = 1; // 최대 게시글 수 초기화
// 페이지 번호에 따라 최소 및 최대 게시글 수 설정
if(page_num <= 1) {
// 페이지 번호가 1 이하일 경우
min_gym = 1; // 최소 게시글 번호를 1로 설정
max_gym = min_gym * gym_size; // 최대 게시글 번호 계산
}
else {
// 페이지 번호가 2 이상일 경우
min_gym = ((page_num - 1) * gym_size) + 1; // 최소 게시글 번호 계산
max_gym = page_num * gym_size; // 최대 게시글 번호 계산
}
System.out.println("모든 상품 : "+datas);
System.out.println("최소 번호 : " + min_gym);
System.out.println("최대 번호 : " + max_gym);
System.out.println("상품 개수1 : "+ datas.size());
int product_total = datas.size();
System.out.println("상품 개수2 : "+product_total);
if(datas.size() < gym_size) {
max_gym = datas.size();
System.out.println("상품 개수 12 미만 : "+max_gym);
}
else if(datas.size() <= max_gym){
max_gym = datas.size();
}
for(int i = min_gym-1; i < max_gym; i++) {
System.out.println("상품 번호 : " + i);
model_product_datas.add(datas.get(i));
}
System.out.println("넘어갈 모든 상품 :"+model_product_datas);
// 페이지 번호 : page_num
model.addAttribute("page_num", page_num);
// 상품의 총 개수 : product_total
model.addAttribute("product_total", product_total);
//상품 목록 전달
model.addAttribute("model_product_datas", model_product_datas);
//session 에 담겨 있는 상품 목록을 출력해주는 로직 종료
//------------------------------------------------------------
}
return path;
}
}
728x90
'국비 내용 정리 > 과제' 카테고리의 다른 글
Spring 비동기 검색 제작 (0) | 2024.10.14 |
---|---|
[Spring] Board 게시판 검색 기능 제작 (3) | 2024.10.10 |
Spring 기본 @(어노테이션) 활용 (0) | 2024.10.08 |
[Spring] Page 작성 과제(BOARD 관련) (0) | 2024.10.05 |
[Spring] Page 작성 과제(MEMBER 관련) (0) | 2024.10.05 |