[프로젝트] 웹 siCloud - day16

_bean_·2023년 8월 9일
0

[팀 프로젝트] siCloud

목록 보기
18/21
post-thumbnail

오류 및 문제점

1. 쇼핑몰 주문 랜덤 생성

  • 문제점: 쇼핑몰 주문을 랜덤 생성해야 한다.
  • 해결 방안: 모든 상품을 불러온 후 난수를 생성해 상품, 수량, 주소 등 정보를 랜덤으로 넣는다.
// ShoppingService.java
String[] channels = {"11번가", "스마트스토어", "G마켓", "카카오선물하기", "SSG닷컴", "옥션"};
String[] orderers = {"임시아", "장원우", "고서준", "강다운", "정다운", "문하나", "임새롬", "이남규"};
		
String channel = channels[getRandomNumber(channels.length)];
String orderer = orderers[getRandomNumber(orderers.length)];

private int getRandomNumber(int size) {
	return (int) (Math.random() * size);
}

진행 상황

1. 마이페이지

  • 화주사
    • 본인 정보 조회
    • 계약된 3PL 상세 정보 조회
  • 3PL
    • 본인 정보 조회
    • 계약된 화주사 목록 조회
    • 계약된 화주사 상세 정보 조회
// SellerService.java
// 계약된 3PL 상세 조회
public ThreePLDTO contractedThreePLDetail(Long sellerNo) {
	Matching matching = matchingRepository.findBySeller_SellerNo(sellerNo);
		
	if(matching == null) return null;
		
	ThreePL threePL = threePLRepository.findById(matching.getWarehouse().getThreePL().getThreePLNo()).orElse(null);
		
	return threePL.toThreePLDTO(TimestampUtil.convertTimestampToDate(matching.getEndDate()), 0, null);
}

2. WMS

  • 전체 화주사 목록 조회
    • 화주사 상세 조회
  • 전체 3PL 목록 조회
    • 3PL 상세 조회
// SellerService.java
// 전체 화주사 조회
public UserListDTO findAllSeller(int pageNum, int countPerPage) {
	Page<Seller> sellers = sellerRepo.findAll(PageRequest.of(pageNum - 1, countPerPage));
	List<UserDTO> userDTOs = new ArrayList<>();
	for(Seller seller : sellers) {
		userDTOs.add(seller.toUserDTO());
	}
		
	UserListDTO userListDTO = UserListDTO
			.builder()
			.totalPage(sellers.getTotalPages())
			.companys(userDTOs)
			.build();
		
	return userListDTO;
}

3. Auth

  • 화주사 회원가입
  • 로그인
    • 3PL은 로그인 성공시 계약된 화주사 목록 함께 전달
// AuthService.java
// 화주사 회원가입
@Transactional
public boolean registerSeller(SellerDTO sellerDTO) {
	// 중복되는 아이디
	if(userRepository.findByLoginId(sellerDTO.getLoginId()) != null) return false;
	// 중복되는 사업자번호
	if(sellerService.findByBusinessNo(sellerDTO.getBusinessNo()) != null) return false;
		
	User user = sellerDTO.toUser();
	ProductGroup productGroup = productGroupService.findByGroupName(sellerDTO.getProductGroupName());
	Seller seller = sellerDTO.toSeller(productGroup, user);
		
	Seller savedSeller = sellerService.save(seller);
		
	return savedSeller != null;
}

// 로그인
public LoginResponseDTO login(LoginRequestDTO loginRequestDTO) {
	User user = userRepository.findByLoginIdAndLoginPassword(loginRequestDTO.getLoginId(), loginRequestDTO.getLoginPassword());
		
	if(user == null) return null;

	LoginResponseDTO loginResponseDTO = LoginResponseDTO
			.builder()
			.userNo(user.getUserNo())
			.userType(user.getUserType().toString())
			.build();
		
    // 3PL은 로그인 성공시 계약된 화주사 리스트 함께 전달
	if(user.getUserType().equals(UserType.THREE_PL)) {
		List<UserDTO> userDTOs = new ArrayList<>();
		List<Matching> matchings = matchingService.findByThreePLNo(user.getUserNo());
			
		for(Matching matching : matchings) {
			UserDTO userDTO = UserDTO
					.builder()
					.sellerNo(matching.getSeller().getSellerNo())
					.companyName(matching.getSeller().getCompanyName())
					.build();
			userDTOs.add(userDTO);
		}
			
		loginResponseDTO.setSellers(userDTOs);
	}
		
	return loginResponseDTO;
}

참고 자료

profile
어쩌다 풀스택 :3

0개의 댓글