데이터베이스 설계도 수정 :push

This commit is contained in:
2024-09-12 17:31:54 +09:00
parent 1ca7d376d5
commit f83aee4e1b
16 changed files with 1153 additions and 54 deletions

View File

@ -18,12 +18,14 @@ import com.eogns.board_back.dto.response.board.GetFavoriteListResponseDto;
import com.eogns.board_back.dto.response.board.GetLatestBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetSearchBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetTop3BoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetUserBoardListResponseDto;
import com.eogns.board_back.dto.response.board.IncreaseViewCountResponseDto;
import com.eogns.board_back.dto.response.board.PatchBoardResponseDto;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.apache.catalina.connector.Response;
import org.springframework.http.ResponseEntity;
//import org.springframework.security.authorization.method.AuthorizeReturnObject;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
@ -102,6 +104,14 @@ public class BoardController {
return response;
}
@GetMapping("/user-board-list/{email}")
public ResponseEntity<? super GetUserBoardListResponseDto> getuserBoardList(
@PathVariable("email") String email
) {
ResponseEntity<? super GetUserBoardListResponseDto> response = boardService.getUserBoardList(email);
return response;
}
@PostMapping("")
public ResponseEntity<? super PostBoardResponseDto> postBoard(

View File

@ -3,6 +3,7 @@ package com.eogns.board_back.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.eogns.board_back.dto.response.user.GetSignInUserResponseDto;
import com.eogns.board_back.dto.response.user.GetUserResponseDto;
import com.eogns.board_back.service.UserService;
import lombok.RequiredArgsConstructor;
@ -10,6 +11,9 @@ import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@RestController
@ -18,6 +22,15 @@ import org.springframework.web.bind.annotation.GetMapping;
public class UserController {
private final UserService userService;
@GetMapping("/{email}")
public ResponseEntity<? super GetUserResponseDto> getUser(
@PathVariable("email") String email
){
ResponseEntity<? super GetUserResponseDto> response = userService.getUser(email);
return response;
}
@GetMapping("")
public ResponseEntity<? super GetSignInUserResponseDto> getSignInUser(
@AuthenticationPrincipal String email

View File

@ -0,0 +1,14 @@
package com.eogns.board_back.dto.request.user;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class PatchNicknameRequestDto {
@NotBlank
private String nickname;
}

View File

@ -0,0 +1,12 @@
package com.eogns.board_back.dto.request.user;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class PatchProfileImageRequestDto {
private String profileImage;
}

View File

@ -0,0 +1,35 @@
package com.eogns.board_back.dto.response.board;
import com.eogns.board_back.common.ResponseCode;
import com.eogns.board_back.common.ResponseMessage;
import com.eogns.board_back.dto.object.BoardListItem;
import com.eogns.board_back.dto.response.ResponseDto;
import com.eogns.board_back.entity.BoardListViewEntity;
import lombok.Getter;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@Getter
public class GetUserBoardListResponseDto extends ResponseDto{
private List<BoardListItem> userBoardList;
private GetUserBoardListResponseDto(List<BoardListViewEntity> boardListViewEntities){
super((ResponseCode.SUCCESS), ResponseMessage.SUCCESS);
this.userBoardList = BoardListItem.getList(boardListViewEntities);
}
public static ResponseEntity<GetUserBoardListResponseDto> success(List<BoardListViewEntity> boardListViewEntities){
GetUserBoardListResponseDto result = new GetUserBoardListResponseDto(boardListViewEntities);
return ResponseEntity.status(HttpStatus.OK).body(result);
}
public static ResponseEntity<ResponseDto> noExistUser(){
ResponseDto result = new ResponseDto(ResponseCode.NOT_EXISTED_USER, ResponseMessage.NOT_EXISTED_USER);
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(result);
}
}

View File

@ -0,0 +1,36 @@
package com.eogns.board_back.dto.response.user;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import com.eogns.board_back.common.ResponseCode;
import com.eogns.board_back.common.ResponseMessage;
import com.eogns.board_back.dto.response.ResponseDto;
import com.eogns.board_back.entity.UserEntity;
import lombok.Getter;
@Getter
public class GetUserResponseDto extends ResponseDto{
private String email;
private String nickname;
private String profileImage;
private GetUserResponseDto(UserEntity userEntity){
super(ResponseCode.SUCCESS, ResponseMessage.SUCCESS);
this.email = userEntity.getEmail();
this.nickname = userEntity.getNickname();
this.profileImage = userEntity.getProfileImage();
}
public static ResponseEntity<GetUserResponseDto> success(UserEntity userEntity){
GetUserResponseDto result = new GetUserResponseDto(userEntity);
return ResponseEntity.status(HttpStatus.OK).body(result);
}
public static ResponseEntity<ResponseDto> noExistUser(){
ResponseDto result = new ResponseDto(ResponseCode.NOT_EXISTED_USER, ResponseMessage.NOT_EXISTED_USER);
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(result);
}
}

View File

@ -0,0 +1,32 @@
package com.eogns.board_back.dto.response.user;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import com.eogns.board_back.common.ResponseCode;
import com.eogns.board_back.common.ResponseMessage;
import com.eogns.board_back.dto.response.ResponseDto;
import lombok.Getter;
@Getter
public class PatchNicknameResponseDto extends ResponseDto{
private PatchNicknameResponseDto(){
super(ResponseCode.SUCCESS, ResponseMessage.SUCCESS);
}
public static ResponseEntity<PatchNicknameResponseDto> success(){
PatchNicknameResponseDto result = new PatchNicknameResponseDto();
return ResponseEntity.status(HttpStatus.OK).body(result);
}
public static ResponseEntity<ResponseDto> noExistUser(){
ResponseDto result = new ResponseDto(ResponseCode.NOT_EXISTED_USER, ResponseMessage.NOT_EXISTED_USER);
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(result);
}
public static ResponseEntity<ResponseDto> duplicateNickname(){
ResponseDto result = new ResponseDto(ResponseCode.DUPLICATE_NICKNAME, ResponseMessage.DUPLICATE_NICKNAME);
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(result);
}
}

View File

@ -0,0 +1,28 @@
package com.eogns.board_back.dto.response.user;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import com.eogns.board_back.common.ResponseCode;
import com.eogns.board_back.common.ResponseMessage;
import com.eogns.board_back.dto.response.ResponseDto;
import lombok.Getter;
@Getter
public class PatchProfileImageResponseDto extends ResponseDto{
private PatchProfileImageResponseDto(){
super(ResponseCode.SUCCESS, ResponseMessage.SUCCESS);
}
public static ResponseEntity<PatchProfileImageResponseDto> success(){
PatchProfileImageResponseDto result = new PatchProfileImageResponseDto();
return ResponseEntity.status(HttpStatus.OK).body(result);
}
public static ResponseEntity<ResponseDto> noExistUser(){
ResponseDto result = new ResponseDto(ResponseCode.NOT_EXISTED_USER, ResponseMessage.NOT_EXISTED_USER);
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(result);
}
}

View File

@ -40,4 +40,12 @@ public class UserEntity{
this.addressDetail = dto.getAddressDetail();
this.agreedPersonal = dto.getAgreedPersonal();
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public void setProfileImage(String profileImage) {
this.profileImage = profileImage;
}
}

View File

@ -13,4 +13,5 @@ public interface BoardListViewRepository extends JpaRepository<BoardListViewEnti
List<BoardListViewEntity> findByOrderByWriteDatetimeDesc();
List<BoardListViewEntity> findTop3ByWriteDatetimeGreaterThanOrderByFavoriteCountDescCommentCountDescViewCountDescWriteDatetimeDesc(String writeDatetime);
List<BoardListViewEntity> findByTitleContainsOrContentContainsOrderByWriteDatetimeDesc(String title, String content);
List<BoardListViewEntity> findByWriterEmailOrderByWriteDatetimeDesc(String email);
}

View File

@ -15,6 +15,7 @@ import com.eogns.board_back.dto.response.board.GetFavoriteListResponseDto;
import com.eogns.board_back.dto.response.board.GetLatestBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetSearchBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetTop3BoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetUserBoardListResponseDto;
import com.eogns.board_back.dto.response.board.IncreaseViewCountResponseDto;
import com.eogns.board_back.dto.response.board.PatchBoardResponseDto;
@ -31,5 +32,6 @@ public interface BoardService {
ResponseEntity<? super PatchBoardResponseDto> patchBoard(PatchBoardResquestDto dto, Integer boardNumber, String email);
ResponseEntity<? super IncreaseViewCountResponseDto> increaseViewCount(Integer boardNumber);
ResponseEntity<? super DeleteBoardResponseDto> deleteBoard(Integer boardNumber, String email);
ResponseEntity<? super GetUserBoardListResponseDto> getUserBoardList(String email);
}

View File

@ -1,10 +1,19 @@
package com.eogns.board_back.service;
import org.apache.catalina.connector.Response;
import org.springframework.http.ResponseEntity;
import com.eogns.board_back.dto.response.user.GetSignInUserResponseDto;;
import com.eogns.board_back.dto.request.user.PatchNicknameRequestDto;
import com.eogns.board_back.dto.request.user.PatchProfileImageRequestDto;
import com.eogns.board_back.dto.response.user.GetSignInUserResponseDto;
import com.eogns.board_back.dto.response.user.GetUserResponseDto;
import com.eogns.board_back.dto.response.user.PatchNicknameResponseDto;
import com.eogns.board_back.dto.response.user.PatchProfileImageResponseDto;;
public interface UserService {
ResponseEntity<? super GetUserResponseDto> getUser(String email);
ResponseEntity<? super GetSignInUserResponseDto> getSinInuser(String email);
ResponseEntity<? super PatchNicknameResponseDto> patchNickname(PatchNicknameRequestDto dto, String email);
ResponseEntity<PatchProfileImageResponseDto> patchProfileImage(PatchProfileImageRequestDto dto, String email);
}

View File

@ -17,6 +17,7 @@ import com.eogns.board_back.dto.response.board.GetFavoriteListResponseDto;
import com.eogns.board_back.dto.response.board.GetLatestBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetSearchBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetTop3BoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetUserBoardListResponseDto;
import com.eogns.board_back.dto.response.board.IncreaseViewCountResponseDto;
import com.eogns.board_back.dto.response.board.PatchBoardResponseDto;
import com.eogns.board_back.dto.response.board.PostBoardResponseDto;
@ -174,6 +175,25 @@ public class BoardServiceImplement implements BoardService{
return GetSearchBoardListResponseDto.success(boardListViewEntities);
}
@Override
public ResponseEntity<? super GetUserBoardListResponseDto> getUserBoardList(String email) {
List<BoardListViewEntity> boardListViewEntities = new ArrayList<>();
try {
boolean existedUser = userRepository.existsByEmail(email);
if(!existedUser) return GetUserBoardListResponseDto.noExistUser();
boardListViewEntities = boardListViewRepository.findByWriterEmailOrderByWriteDatetimeDesc(email);
} catch (Exception exception) {
exception.printStackTrace();
return ResponseDto.databaseError();
}
return GetUserBoardListResponseDto.success(boardListViewEntities);
}
@Override
public ResponseEntity<? super PostBoardResponseDto> postBoard(PostBoardRequestDto dto, String email) {
try {
@ -336,4 +356,6 @@ public class BoardServiceImplement implements BoardService{
}

View File

@ -1,10 +1,16 @@
package com.eogns.board_back.service.implement;
//import org.springframework.boot.autoconfigure.security.SecurityProperties.User;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import com.eogns.board_back.dto.request.user.PatchNicknameRequestDto;
import com.eogns.board_back.dto.request.user.PatchProfileImageRequestDto;
import com.eogns.board_back.dto.response.ResponseDto;
import com.eogns.board_back.dto.response.user.GetSignInUserResponseDto;
import com.eogns.board_back.dto.response.user.GetUserResponseDto;
import com.eogns.board_back.dto.response.user.PatchNicknameResponseDto;
import com.eogns.board_back.dto.response.user.PatchProfileImageResponseDto;
import com.eogns.board_back.entity.UserEntity;
import com.eogns.board_back.repository.UserRepository;
import com.eogns.board_back.service.UserService;
@ -17,6 +23,21 @@ public class UserServiceImplement implements UserService {
private final UserRepository userRepository;
@Override
public ResponseEntity<? super GetUserResponseDto> getUser(String email) {
UserEntity userEntity = null;
try {
userEntity = userRepository.findByEmail(email);
if(userEntity == null) return GetUserResponseDto.noExistUser();
} catch (Exception exception) {
exception.printStackTrace();
return ResponseDto.databaseError();
}
return GetUserResponseDto.success(userEntity);
}
@Override
public ResponseEntity<? super GetSignInUserResponseDto> getSinInuser(String email) {
@ -34,5 +55,44 @@ public class UserServiceImplement implements UserService {
return GetSignInUserResponseDto.success(userEntity);
}
@Override
public ResponseEntity<? super PatchNicknameResponseDto> patchNickname(PatchNicknameRequestDto dto, String email) {
try {
UserEntity userEntity = userRepository.findByEmail(email);
if(userEntity == null) return PatchNicknameResponseDto.noExistUser();
String nickname = dto.getNickname();
boolean existedNickname = userRepository.existsByNickname(nickname);
if(existedNickname) return PatchNicknameResponseDto.duplicateNickname();
userEntity.setNickname(nickname);
userRepository.save(userEntity);
} catch (Exception exception) {
exception.printStackTrace();
return ResponseDto.databaseError();
}
return PatchNicknameResponseDto.success();
}
@Override
public ResponseEntity<? super PatchProfileImageResponseDto> patchProfileImage(PatchProfileImageRequestDto dto, String email) {
try {
UserEntity userEntity = userRepository.findByEmail(email);
if(userEntity == null) return PatchProfileImageResponseDto.noExistUser();
String ProfileImage = dto.getProfileImage();
userEntity.setProfileImage(ProfileImage);
userRepository.save(userEntity);
} catch (Exception exception) {
exception.printStackTrace();
return ResponseDto.databaseError();
}
return PatchProfileImageResponseDto.success();
}
}

View File

@ -4,13 +4,13 @@
"settings": {
"width": 2000,
"height": 2000,
"scrollTop": -620.5229,
"scrollLeft": -322.1664,
"scrollTop": -647.182,
"scrollLeft": -201.0012,
"zoomLevel": 0.8,
"show": 431,
"database": 4,
"databaseName": "test_DB",
"canvasType": "@dineug/erd-editor/builtin-schema-sql",
"canvasType": "ERD",
"language": 1,
"tableNameCase": 4,
"columnNameCase": 2,
@ -137,15 +137,15 @@
"1uMXJT_u-apo92VSJebdL"
],
"ui": {
"x": 1155.7499,
"y": 705,
"x": 1225.7499,
"y": 621.25,
"zIndex": 150,
"widthName": 60,
"widthComment": 117,
"color": "#007CFF"
},
"meta": {
"updateAt": 1725949448118,
"updateAt": 1726126865410,
"createAt": 1724303642740
}
},
@ -225,15 +225,15 @@
"pYDg6JbatIM5D1FHS-Zjj"
],
"ui": {
"x": 942.843,
"y": 920.4355,
"x": 1046.593,
"y": 957.9355,
"zIndex": 364,
"widthName": 60,
"widthComment": 93,
"color": "#FF0D00"
},
"meta": {
"updateAt": 1725949444231,
"updateAt": 1726126904053,
"createAt": 1724304620674
}
}
@ -900,8 +900,8 @@
"columnIds": [
"WSSBKHeYT3A8y6Hi9MRRb"
],
"x": 1155.7499,
"y": 757,
"x": 1225.7499,
"y": 673.25,
"direction": 1
},
"meta": {

File diff suppressed because it is too large Load Diff