New World

[해외공구관리사이트] 회원 - 내 정보 본문

Project/old

[해외공구관리사이트] 회원 - 내 정보

hyeovi 2022. 9. 6. 14:37
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();
    }
반응형
Comments