본문 바로가기

일경험

[국민취업지원제도 일경험프로그램 55일차] 결재시스템 대리결재 controller

반응형

55일 차 특이사항

1. 대리결재를 하면 proxy 테이블에 대리결재자와 대리결재 위임자의 아이디가 입력된다. 

2. 그 다음은? 

3. 만약 결재 위임받은 사람의 아이디가 proxy 테이블에 있으면 list에 다른 데이터를 보여준다. 

 

대리결재자

1. boss, king으로 manager, clerk에게 대리결재 권한을 부여하면 proxy 테이블에 대리결재자와 대리결재 위임자 아이디가 입력되고, 위임받은 사람이 로그인하면 대리결재 정보가 출력되는 것까지 완료했다. 

대리결재 출력

2. 그 다음 step을 못 가겠다. 어떻게 해야 할까? 

 

3. 뭘 건드려야 하지? 사원이 과장처럼 결재버튼을 누를 수 있어야 한다. 

- proxy 테이블의 grant_member의 계급이 과장이면 과장을 대신해서 결재한다.  

- 그럼 결재글을 누르고 나서 나오는 창에 '결재버튼'이 나와야 하는데?  

- 상상해보면... 사원의 계급이 과장으로 바뀌는 것이지  1일 동안만

 - 로그인할 때 처리하는 것이 좋다. 

 

4. proxy 테이블에 아이디가 있는 사원이 대리권한 위임을 받은 것 

5. 세션에서 memId를 받아와서 proxy테이블에 값이 있는지 확인하고, 값이 있다면 로그인한 아이디의 계급을 대리권한 위임자의 계급으로 바꾼다. 

 

대리권한 위임자의 계급 추출 및 교체

1. 코드 

// 1. 로그인 
	@RequestMapping("login")
	public String loginView(@RequestParam(value="logId", required=false) String logId
						   ,@RequestParam(value="logPass", required=false) String logPass
						   ,Model model
						   ,HttpSession session
						   ,HttpServletResponse response) throws IOException {
		//로그인 상태	        
		if(session.getAttribute("memInfo") != null) {
			return "redirect:list";
		} 
		 
		if(logId == null) {
			return "login";
		}else {
			Map<String, Object> map = sqlSession.selectOne("mapper.loginChk", logId);
			if(map == null) {
				model.addAttribute("loginMsg", "idFail");
				return "login"; 
			}else if (!logPass.equals(map.get("memPass").toString())) {
				model.addAttribute("loginMsg", "passwordFail");
				return "login"; 
			}else {
		        session.setAttribute("memInfo", map);
		        
		        String proxyMember = map.get("memId").toString();	//session에서 memId만 가져와서 저장
		        Map<String, Object> replace = sqlSession.selectOne("mapper.proxy", proxyMember);
		        //memId를 통해 proxy 테이블에서 대리권한 위임을 받았는지 확인 
		        if(replace != null) {
		        	  String grantRank = (String) replace.get("grantRank");// 대리권한 위임자 계급 추출
		        	  Map<String, Object> memInfo = (Map<String, Object>) session.getAttribute("memInfo");
				      memInfo.put("memRank", grantRank);
				      session.setAttribute("memInfo", memInfo);
		        }
				return "redirect:list";
			}
		}
	}

참 어렵네

느낀 점

팀장님께 물어봐서 문제를 해결했다. 컨트롤러에서 계급을 바꿔줘야 한다는 말을 듣고 나서야 아이디어가 떠올랐고, 코드를 짤 수 있었다. 이 정도는 기본이라고 하는데 아직 나는 기본이 없나 보다. 어떻게 바로 머리에서 아이디어가 떠오르지? 글을 쓸 때는 문장이 잘 떠오르는데 컴퓨터 언어로 문장을 쓰는 것은 쉽지 않다. 계속 충돌이 나는 것 같다. 혹은 머릿속이 백지장이 된 느낌이다.

 

 

 

반응형