New World
[해외공구관리사이트] 회원 - 내 정보 본문
728x90
반응형
로그인 페이지의 기능
1. 아이디가 등록되어있는 아이디인지 확인
2. 비밀번호가 맞는지 확인
로그인을 위한 form을 만들어 request 로 서버로 넘겨준다.
controller
ㄴ MemberController
현재 로그인한 회원 정보를 nowLoginInfo 라는 메소드를 통해 가져와주고 model로 이동시켜 화면에 뿌려준다.
@RequestMapping("/profile")
public String profile(HttpSession httpSession, Model model) {
Long nowLoginMemberNo = memberService.nowLoginInfo(httpSession);
model.addAttribute("nowLoginMember", memberService.myInfo(nowLoginMemberNo));
return "sample/member/profile-details";
}
API
ㄴ MemberApiController
회원의 정보 중 회원의 코드, 이름, 아이디, 이미지, 예산 순으로 빼옵니다. 예산은 해당 유저가 정해놓은 금액만큼 구매하고 있는 것이 맞는지 지표를 보여주는 역할을 합니다.
// 내 회원 정보 보여주기
@GetMapping("/api/member/myInfo")
public List<MyMemberInfoDto> getMyMemberInfo(
@SessionAttribute(name = "mSession", required = false) Long nowLoginMemberNo) {
List<Member> myMemberInfo = memberService.myInfoList(nowLoginMemberNo);
List<MyMemberInfoDto> myMember = myMemberInfo.stream()
.map(m -> new MyMemberInfoDto(m.getNo(), m.getName(), m.getId(), m.getPhotoUrl(), m.getBudget(),
budgetOrder(m),
budgetOrderPer(m.getBudget(), budgetOrder(m)), m.getAddress().getCity(),
m.getAddress().getStreet(), m.getAddress().getZipcode()))
.collect(Collectors.toList());
return myMember;
}
//회원이 주문한 주문 금액을 계산 (컴퓨터의 한달 기준)
public int budgetOrder(Member member) {
List<Order> orders = orderService.findMyOrder(member);
int budgetOrder = 0;
if (orders.size() > 0) {
for (int order = 0; order >= orders.size(); order++) {
if (orders.get(order).getDate().getMonth() == LocalDateTime.now().getMonth()) {
if (!orders.get(order).getProject().getStatus().equals(ProjectStatus.HELP)) {
int price = orders.get(order).getProject().getFirstPrice()
+ orders.get(order).getProject().getSecondPrice()
+ orders.get(order).getProject().getThirdPrice();
budgetOrder += price;
}
}
}
}
return budgetOrder;
}
//예산 중 몇 퍼센트를 채웠는지 계산
public double budgetOrderPer(int budget, int budgetOrder) {
double budgetOrderPer = 0;
if (budget != 0 && budgetOrder != 0) {
budgetOrderPer = (budgetOrder / budget) * 100;
}
return budgetOrderPer;
}
Service
ㄴ MemberService
ㄴ MemberServiceImpl
회원의 코드로 그 회원에 대한 정보를 빼옵니다.
@Override
public List<Member> myInfoList(Long memberNo) {
return memberRepository.findOneByNo(memberNo);
}
repository
ㄴ MemberRepository
findOneByNo는 DB의 member 테이블에 입력값인 no와 동일한 값이 있는지 확인해주고 그 회원에 대한 정보를 Service로 보내주는 메소드의 역할을 해준다.
public List<Member> findOneByNo(Long no) {
return em.createQuery("select m from Member m where m.no =: no", Member.class)
.setParameter("no", no)
.getResultList();
}
반응형
'Project > old' 카테고리의 다른 글
[해외공구관리사이트] 프로젝트 - 생성 (0) | 2022.09.06 |
---|---|
[해외공구관리사이트] 회원 - 수정 & 탈퇴 (0) | 2022.09.06 |
[해외공구관리사이트] 회원 - 로그인 & 로그아웃 (0) | 2022.09.05 |
[해외공구관리사이트] 회원 - 가입 (0) | 2022.09.05 |
[해외공구관리사이트] 메뉴 상세도 (0) | 2022.09.04 |
Comments