Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

Commit

Permalink
충돌 해결 및 버그 수정
Browse files Browse the repository at this point in the history
Merge remote-tracking branch 'yyy9942/feature/2' into feature/3

Conflicts:
	src/main/java/com/delfood/controller/OwnerController.java
	src/main/java/com/delfood/dto/OwnerDTO.java
	src/main/java/com/delfood/mapper/OwnerMapper.java
	src/main/java/com/delfood/service/OwnerService.java
	src/main/resources/mybatis/mapper/owner.xml

	========================

버그 수정
1. xml(sql) 오류로 인한 런타임 에러 수정
2. 로그아웃을 Post요청에서 Get요청으로 변환
3. Shop insert 쿼리 오류 수정
  • Loading branch information
yyy9942 committed Oct 18, 2019
2 parents ba1d74d + 4262310 commit 1d2884b
Show file tree
Hide file tree
Showing 10 changed files with 409 additions and 38 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/delfood/config/DatabaseConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ public class DatabaseConfig {
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
// TypeAlias로 설정할 클래스들이 있는 패키지를 설정하면 DTO에 @Alias("aliasName")으로 typeAlias를 설정 가능
sessionFactory.setTypeAliasesPackage("com.delfood.dto.");
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:mybatis/mapper/*.xml"));
return sessionFactory.getObject();
Expand Down
261 changes: 259 additions & 2 deletions src/main/java/com/delfood/controller/OwnerController.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
package com.delfood.controller;

import com.delfood.dto.OwnerDTO;
import com.delfood.dto.OwnerDTO.Status;
import com.delfood.mapper.DMLOperationError;
import com.delfood.service.OwnerService;
import javax.servlet.http.HttpSession;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
Expand All @@ -18,6 +24,7 @@

@RestController
@RequestMapping("/owners/")
@Log4j2
public class OwnerController {
@Autowired
private OwnerService ownerService;
Expand Down Expand Up @@ -66,7 +73,198 @@ public ResponseEntity<IdDuplResponse> idCheck(@PathVariable("id") String id) {



// Response 객체
/**
* 회원 로그인 기능 수행.
* @param loginRequest 로그인 요청 ( id, password )
* @return
*/
@PostMapping("login")
public ResponseEntity<OwnerLoginResponse> login(@RequestBody OwnerLoginRequest loginRequest,
HttpSession session) {
OwnerDTO ownerInfo = ownerService.getOwner(loginRequest.getId(), loginRequest.getPassword());
OwnerLoginResponse ownerLoginResponse;
ResponseEntity<OwnerLoginResponse> responseEntity;

if (ownerInfo == null) { // 아이디와 비밀번호가 일치하지 않거나, 회원정보가 없음
ownerLoginResponse = OwnerLoginResponse.FAIL;
responseEntity =
new ResponseEntity<OwnerLoginResponse>(ownerLoginResponse, HttpStatus.UNAUTHORIZED);
} else { // 회원 정보가 존재
Status ownerStatus = ownerInfo.getStatus();
if (ownerStatus == Status.DEFAULT) {
ownerLoginResponse = OwnerLoginResponse.success(ownerInfo);
session.setAttribute("LOGIN_OWNER_ID", ownerInfo.getId());
responseEntity = new ResponseEntity<OwnerLoginResponse>(ownerLoginResponse, HttpStatus.OK);
} else {
ownerLoginResponse = OwnerLoginResponse.DELETED;
responseEntity = new ResponseEntity<OwnerController.OwnerLoginResponse>(ownerLoginResponse,
HttpStatus.UNAUTHORIZED);
}
}
return responseEntity;
}


/**
* 사장님 로그아웃.
*
* @param session 현재 사용자 세션
* @return
*/
@GetMapping("logout")
public ResponseEntity<logoutResponse> logout(HttpSession session) {
String id = (String) session.getAttribute("LOGIN_OWNER_ID");
if (id != null) {
session.invalidate();
return new ResponseEntity<OwnerController.logoutResponse>(logoutResponse.SUCCESS,
HttpStatus.OK);
} else {
return new ResponseEntity<OwnerController.logoutResponse>(logoutResponse.NO_LOGIN,
HttpStatus.UNAUTHORIZED);
}
}


/**
* 로그인한 사장의 정보를 조회.
*
* @param session 현재 사용자 세션
* @return
*/
@GetMapping("myInfo")
public ResponseEntity<OwnerDTO> ownerInfo(HttpSession session) {
ResponseEntity<OwnerDTO> responseEntity = null;
String id = (String) session.getAttribute("LOGIN_OWNER_ID");
if (id == null) {
responseEntity = new ResponseEntity<OwnerDTO>(HttpStatus.UNAUTHORIZED);
} else {
OwnerDTO ownerInfo = ownerService.getOwner(id);
responseEntity = new ResponseEntity<OwnerDTO>(ownerInfo, HttpStatus.OK);
}
return responseEntity;
}

/**
* 사장 이메일, 전화번호 변경.
*
* @param updateRequest 이메일, 전화번호를 포함한 update 객체
* @param session 현재 사용자 세션
* @return
*/
@PatchMapping
public ResponseEntity<UpdateOwnerResponse> updateOwnerInfo(
@RequestBody UpdateOwnerMailAndTelRequest updateRequest, HttpSession session) {

String mail = updateRequest.getMail();
String tel = updateRequest.getTel();
String password = updateRequest.getPassword();
String id = (String) session.getAttribute("LOGIN_OWNER_ID");

if (id == null) { // 로그인 상태가 아닌 경우
return new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.NO_LOGIN, HttpStatus.UNAUTHORIZED);
}

if (ownerService.getOwner(id, password) == null) {
return new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.PASSWORD_MISMATCH, HttpStatus.UNAUTHORIZED);
}

if (mail == null && tel == null) { // 변경하려는 정보가 둘 다 null일 경우
return new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.EMPTY_CONTENT, HttpStatus.BAD_REQUEST);
}

DMLOperationError dmlOperationError = ownerService.updateOwnerMailAndTel(id, mail, tel);
if (dmlOperationError == DMLOperationError.SUCCESS) {
return new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.SUCCESS, HttpStatus.OK);
} else {
log.error("Member mail and tel update ERROR : {}", updateRequest);
throw new RuntimeException("Member mail and tel update ERROR");
}
}

/**
* 사장 패스워드 변경.
*
* @param passwordResquest 변경전 패스워드, 변경할 패스워드을 담은 요청 객체
* @param session 현재 사용자의 세션
* @return
*/
@PatchMapping("password")
public ResponseEntity<UpdateOwnerResponse> updatePassword(
@RequestBody UpdateOwnerPasswordRequest passwordResquest, HttpSession session) {
String id = (String) session.getAttribute("LOGIN_OWNER_ID");
String password = passwordResquest.getPassword();
String newPassword = passwordResquest.getNewPassword();

ResponseEntity<UpdateOwnerResponse> responseEntity;


if (id == null) { // 비 로그인 상태
responseEntity = new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.NO_LOGIN, HttpStatus.UNAUTHORIZED);
} else if (password == null || newPassword == null) { // 비밀번호나 새 비밀번호를 입력하지 않은 경우
responseEntity = new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.EMPTY_PASSOWRD, HttpStatus.BAD_REQUEST);
} else if (ownerService.getOwner(id, password) == null) { // 아이디와 비밀번호 불일치
responseEntity = new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.PASSWORD_MISMATCH, HttpStatus.UNAUTHORIZED);
} else if (password.equals(newPassword)) { // 이전 패스워드와 동일한 경우
responseEntity = new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.PASSWORD_DUPLICATED, HttpStatus.CONFLICT);
} else {
DMLOperationError dmlOperationError = ownerService.updateOwnerPassword(id, newPassword);

if (DMLOperationError.SUCCESS.equals(dmlOperationError)) {
responseEntity = new ResponseEntity<OwnerController.UpdateOwnerResponse>(
UpdateOwnerResponse.SUCCESS, HttpStatus.OK);
} else {
log.error("Password Update Error {}", passwordResquest);
throw new RuntimeException("Password Update Error");
}

}
return responseEntity;
}



// ============= Requset 객체 ================

@Setter
@Getter
private static class OwnerLoginRequest {
@NonNull
private String id;
@NonNull
private String password;
}

@Setter
@Getter
private static class UpdateOwnerMailAndTelRequest {
@NonNull
private String password;
@NonNull
private String mail;
@NonNull
private String tel;
}

@Setter
@Getter
private static class UpdateOwnerPasswordRequest {
@NonNull
private String password;
@NonNull
private String newPassword;
}


// ============ resopnse 객체 =====================

@Getter
@RequiredArgsConstructor
private static class SignUpResponse {
Expand Down Expand Up @@ -96,10 +294,69 @@ enum DuplStatus {
private static final IdDuplResponse ID_DUPLICATED =
new IdDuplResponse(DuplStatus.ID_DUPLICATED);
}


@Getter
@AllArgsConstructor
@RequiredArgsConstructor
private static class OwnerLoginResponse {
enum LoginStatus {
SUCCESS, FAIL, DELETED, ERROR
}

@NonNull
private LoginStatus result;
private OwnerDTO ownerInfo;

private static final OwnerLoginResponse FAIL = new OwnerLoginResponse(LoginStatus.FAIL);
private static final OwnerLoginResponse DELETED = new OwnerLoginResponse(LoginStatus.DELETED);

private static OwnerLoginResponse success(OwnerDTO ownerInfo) {
return new OwnerLoginResponse(LoginStatus.SUCCESS, ownerInfo);
}

}

@Getter
@RequiredArgsConstructor
private static class UpdateOwnerResponse {
enum UpdateStatus {
SUCCESS, NO_LOGIN, EMPTY_CONTENT, EMPTY_PASSOWRD, PASSWORD_MISMATCH, PASSWORD_DUPLICATED
}

// Request 객체
@NonNull
private UpdateStatus result;

private static final UpdateOwnerResponse SUCCESS =
new UpdateOwnerResponse(UpdateStatus.SUCCESS);
private static final UpdateOwnerResponse NO_LOGIN =
new UpdateOwnerResponse(UpdateStatus.NO_LOGIN);
private static final UpdateOwnerResponse EMPTY_CONTENT =
new UpdateOwnerResponse(UpdateStatus.EMPTY_CONTENT);
private static final UpdateOwnerResponse EMPTY_PASSOWRD =
new UpdateOwnerResponse(UpdateStatus.EMPTY_PASSOWRD);
private static final UpdateOwnerResponse PASSWORD_MISMATCH =
new UpdateOwnerResponse(UpdateStatus.PASSWORD_MISMATCH);
private static final UpdateOwnerResponse PASSWORD_DUPLICATED =
new UpdateOwnerResponse(UpdateStatus.PASSWORD_DUPLICATED);
}


@Getter
@RequiredArgsConstructor
private static class logoutResponse {
enum logoutStatus {
SUCCESS, NO_LOGIN
}

@NonNull
private logoutStatus result;

private static final logoutResponse SUCCESS = new logoutResponse(logoutStatus.SUCCESS);
private static final logoutResponse NO_LOGIN = new logoutResponse(logoutStatus.NO_LOGIN);

}

}


4 changes: 3 additions & 1 deletion src/main/java/com/delfood/controller/ShopController.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/owner/shops/")
@RequestMapping("/owners/shops/")
@Log4j2
public class ShopController {
@Autowired
Expand All @@ -40,6 +40,8 @@ public ResponseEntity<OpenShopResponse> openShop(HttpSession session,
return new ResponseEntity<ShopController.OpenShopResponse>(OpenShopResponse.NO_LOGIN,
HttpStatus.UNAUTHORIZED);
}

shopInfo.setOwnerId(ownerId);

// 입력한 데이터 중 필수 데이터가 null일 경우 400 에러코드를 반환한다.
if (ShopDTO.hasNullDataBeforeCreate(shopInfo)) {
Expand Down
16 changes: 11 additions & 5 deletions src/main/java/com/delfood/dto/OwnerDTO.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
package com.delfood.dto;

import java.time.LocalDateTime;

import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
import lombok.ToString;

@Getter
import org.apache.ibatis.type.Alias;

@Getter
@Setter
@ToString
@Alias("Owner")
public class OwnerDTO {
public enum Status {
DEFAULT, DELETED
}

@NonNull
private String id;
@NonNull
Expand All @@ -26,8 +30,7 @@ public enum Status {
private String tel;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private Status status;

private Status status;
/**
* 회원가입 전 null 정보 체크 메서드
* @author jun
Expand All @@ -43,4 +46,7 @@ public static boolean hasNullDataBeforeSignUp(OwnerDTO ownerInfo) {
}


}



}
1 change: 1 addition & 0 deletions src/main/java/com/delfood/mapper/MemberMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@ public interface MemberMapper {
int updateMemberAddress(String id, String address, String addressDetail);

int idCheck(String id);

}
Loading

0 comments on commit 1d2884b

Please sign in to comment.