fairnet/src/main/java/seed/com/gtm/sample/SampleController.java

218 lines
8.2 KiB
Java

package seed.com.gtm.sample;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import seed.com.gtm.util.SeedCriteria;
import seed.com.gtm.seedfile.SeedFileService;
import seed.com.gtm.util.PageMaker;
@Controller
@RequestMapping("/gtm/sample")
public class SampleController {
@Autowired
private SampleService service;
@Autowired
private SeedFileService fileService;
/*필요 파일 및 경로
controller - src/main/java/seed/
service - src/main/java/seed/
dao - src/main/java/seed/
daoImpl - src/main/java/seed/
sql.xml - src/main/resources/egovframework/sqlmap/config/mappers/
jsp - /src/main/webapp/WEB-INF/jsp/seed/
*/
/*처리과정
1. Controller 호출
2. service 호출(비즈니스 로직 구현)
3. daoImpl 호출(데이터 접근)
4. DB 조회(mybatis)
5. jsp 화면
*/
/*기존 프로젝트들과 다른점
1. service가 인터페이스 가아닌 로직 구현부이다.
2. dao가 인터페이스이다.
3. PK 값을 auto increment OR idgen을 사용하는게 아닌 시퀀스를 사용한다. ex) 게시글 - C_BASEBBS_SEQ
*/
/*기존 분쟁조정 메뉴 중 /gtm/case/board/{boardIdx}/list.do 형태의 메뉴는
* controller , service, dao, daoImpl, jps를 공통으로 사용
*/
/*{boardIdx}
게시판 구분 및 메뉴 구분에 사용하며
C_BASEBBS 테이블의 BBS_ID에 사용되는 값으로 게시판 CRUD 시 게시판을 구분
*/
/*write.do - get과 post에 따라 등록화면, 등록처리 구분
edit.do - get과 post에 따라 수정화면, 수정처리 구분
*/
/*message.jsp
기존 프로젝트들은 등록, 수정, 삭제 시 ajax를 사용하여 alert으로 메시지를 띄우고 목록으로 이동했지만
분쟁조정의 경우 message.jsp를 공통으로 사용하며 message, url 등 필요 정보를 화면에 넘겨주고
화면에서 메시지 노출 후 다음 화면으로 이동한다.
globals.properties에 상수 선언 후 <s:eval expression="@property['Globals.message.check']" /> 와 같이 사용
*/
/*쿼리 호출 시 namespace 사용 - 게시판 namespace :form.board*/
/*게시글 등록 시 C_BASEBBS_SEQ 시퀀스의 NEXTVAL을 selectKey로 조회하여 BBS_NO에 사용*/
public void setSessionMessageRemove(HttpSession session){
session.removeAttribute("url");
session.removeAttribute("message");
session.removeAttribute("opener");
session.removeAttribute("append");
session.removeAttribute("self");
}
//GET 방식으로 등록화면
@RequestMapping(value="/board/{boardIdx}/write.do", method=RequestMethod.GET)
public String formWrite(ModelMap model, HttpSession session, @RequestParam Map<String,Object> paramMap, @PathVariable(value="boardIdx") String boardIdx){
paramMap.put("boardIdx", boardIdx);
return "/seed/_extra/gtm/board/write";
}
//POST 방식으로 등록처리
@RequestMapping(value="/board/{boardIdx}/write.do", method=RequestMethod.POST)
public String formWrite(HttpServletRequest request ,HttpSession session, @RequestParam Map<String,Object> paramMap, Map<String, Object> map, @PathVariable(value="boardIdx") String boardIdx){
paramMap.put("memberName", session.getAttribute("memberName"));
paramMap.put("memberId", session.getAttribute("memberId"));
paramMap.put("boardIdx", boardIdx);
service.boardInsert(paramMap);
//현제 등록된 게시글의 시퀀스 불러와 맵에 저장
paramMap.put("dataIdx", paramMap.get("seq"));
fileService.fileInsert(paramMap, request, session);
map.put("message", "common.message.reg");
map.put("url", "/gtm/case/board/"+boardIdx+"/list.do");
return "/seed/_common/jsp/sampleMessage";
}
//목록화면
@RequestMapping("/board/{boardIdx}/list.do")
public String boardList(ModelMap model, HttpSession session, SeedCriteria cri,@RequestParam Map<String,Object> paramMap, @PathVariable(value="boardIdx") String boardIdx){
//로그인페이지로 튕겨나가지 않게 우선은 임시방편
session.setAttribute("siteIdx", "case");
String menuName = "";
if(boardIdx.equals("form")){
menuName = "분쟁조정 관련 서식";
}else if(boardIdx.equals("law")){
menuName = "법령자료실";
}else if(boardIdx.equals("news")){
menuName = "뉴스레터 자료";
}else if(boardIdx.equals("sample")){
menuName = "샘플게시판";
}else{
menuName = "공지사항";
}
session.setAttribute("menuName", menuName);
//페이징 관련 - Criteria 이름 중복으로 인하여 SeedCriteria로 이름 변경 후 사용
paramMap.put("pageStart", cri.getPageStart());
paramMap.put("perPageNum", cri.getPerPageNum());
paramMap.put("boardIdx", boardIdx);
List<Map<String,Object>> bbsList = service.boardList(paramMap);
List<Map<String,Object>> selectNotice = service.selectNotice(paramMap);
PageMaker pageMaker = new PageMaker();
pageMaker.setCri(cri);
pageMaker.setTotalCount(service.boardListCnt(paramMap));
model.addAttribute("boardIdx", boardIdx);
model.addAttribute("bbsList", bbsList);
model.addAttribute("selectNotice", selectNotice);
model.addAttribute("pageMaker", pageMaker);
return "/seed/_extra/gtm/board/list";
}
//상세화면
@RequestMapping("/board/{boardIdx}/view.do")
public String boardView(ModelMap model, @RequestParam Map<String,Object> paramMap, @PathVariable(value="boardIdx") String boardIdx){
paramMap.put("dataIdx", paramMap.get("bbsNo"));
System.out.println(paramMap.get("bbsNo"));
model.addAttribute("bbsView", service.boardView(paramMap));
model.addAttribute("boardIdx", boardIdx);
model.addAttribute("fileList", fileService.fileList(paramMap));
return "/seed/_extra/gtm/board/view";
}
//삭제처리
@RequestMapping("/board/{boardIdx}/bbsDel.do")
public String boardDel(HttpSession session, @RequestParam Map<String,Object> paramMap, @PathVariable(value="boardIdx") String boardIdx, Map<String, Object> map){
paramMap.put("dataIdx", paramMap.get("bbsNo"));
service.boardDel(paramMap);
fileService.fileDelAll(paramMap);
this.setSessionMessageRemove(session);
map.put("message", "common.message.del");
map.put("url", "/gtm/case/board/"+boardIdx+"/list.do?searchType=" + paramMap.get("searchType") +
"&searchTilte=" + paramMap.get("searchTilte") + "&page=" + paramMap.get("page")
);
return "/seed/_common/jsp/message";
}
//GET 방식으로 수정화면
@RequestMapping(value="/board/{boardIdx}/edit.do", method=RequestMethod.GET)
public String boardEdit(ModelMap model, @RequestParam Map<String,Object> paramMap, @PathVariable(value="boardIdx") String boardIdx){
paramMap.put("dataIdx", paramMap.get("bbsNo"));
List<Map<String, Object>> fileList = fileService.fileList(paramMap);
model.addAttribute("boardIdx", boardIdx);
model.addAttribute("bbsView", service.boardView(paramMap));
model.addAttribute("fileList", fileList);
model.addAttribute("fileListSize", fileList.size());
return "/seed/_extra/gtm/board/edit";
}
//POST 방식으로 수정처리
@RequestMapping(value="/board/{boardIdx}/edit.do", method=RequestMethod.POST)
public String boardEdit(HttpSession session, HttpServletRequest request, @RequestParam Map<String,Object> paramMap, @PathVariable(value="boardIdx") String boardIdx, Map<String, Object> map){
paramMap.put("memberId", session.getAttribute("memberId"));
paramMap.put("dataIdx", paramMap.get("bbsNo"));//fileInsert에서 필요
service.boardUpdate(paramMap);
fileService.fileInsert(paramMap, request, session);
fileService.fileDel(paramMap);
this.setSessionMessageRemove(session);
map.put("message", "common.message.mod");
map.put("url", "/gtm/case/board/"+boardIdx+"/view.do?bbsNo=" + paramMap.get("bbsNo") +
"&searchType=" + paramMap.get("searchType") + "&searchTilte=" + paramMap.get("searchTilte") + "&page=" + paramMap.get("page")+
"&fileFuncType=" + paramMap.get("fileFuncType")
);
return "/seed/_common/jsp/message";
}
}