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
개발자가 되고 싶은 곰