From efea8adc6607b1b6a21343202fbea76e8e4e2b29 Mon Sep 17 00:00:00 2001 From: Jenny Date: Fri, 10 Dec 2021 03:49:30 +0900 Subject: [PATCH] =?UTF-8?q?=EB=82=B4=EA=B0=80=20=EC=93=B4=20=EA=B8=80=20?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0(#80),=20=EC=BD=94=EB=93=9C=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FrontController.java | 5 + .../controller/UserApiController.java | 23 ++-- .../domain/user/User.java | 11 +- .../dto/articles/PostResponseDto.java | 1 - .../dto/user/UserPostDto.java | 27 ++++ .../repository/MeetRepository.java | 4 + .../repository/PostRepository.java | 3 + .../security/WebSecurityConfig.java | 2 +- .../service/UserService.java | 17 ++- .../resources/static/css/user/user_post.css | 65 ++++++++++ .../static/css/user/user_profile.css | 2 +- src/main/resources/static/img/profile.png | Bin 0 -> 34097 bytes src/main/resources/static/index.html | 4 +- .../resources/static/js/articles/post_list.js | 1 - src/main/resources/static/js/base.js | 3 +- .../resources/static/js/user/user_post.js | 29 +++++ .../resources/static/js/user/user_profile.js | 7 +- .../static/js/user/user_profile_upload.js | 31 ++--- .../templates/articles/post_list.html | 2 +- .../resources/templates/user/user_post.html | 122 ++++++++++++++++++ .../templates/user/user_profile.html | 23 +++- .../templates/user/user_profile_upload.html | 5 +- 22 files changed, 341 insertions(+), 46 deletions(-) create mode 100644 src/main/java/com/example/marumaru_sparta_verspring/dto/user/UserPostDto.java create mode 100644 src/main/resources/static/css/user/user_post.css create mode 100644 src/main/resources/static/img/profile.png create mode 100644 src/main/resources/static/js/user/user_post.js create mode 100644 src/main/resources/templates/user/user_post.html diff --git a/src/main/java/com/example/marumaru_sparta_verspring/controller/FrontController.java b/src/main/java/com/example/marumaru_sparta_verspring/controller/FrontController.java index 181d477..9db95bc 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/controller/FrontController.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/controller/FrontController.java @@ -50,6 +50,11 @@ public String getUserProfileModify() { return "user/user_profile_upload"; } + @GetMapping("/user/post") + public String getUserPosted() { + return "user/user_post"; + } + @GetMapping("/profiles") //프로필 리스트 public String getPageProfiles(){ return "profile/profile_list"; diff --git a/src/main/java/com/example/marumaru_sparta_verspring/controller/UserApiController.java b/src/main/java/com/example/marumaru_sparta_verspring/controller/UserApiController.java index 37cc362..d8947f7 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/controller/UserApiController.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/controller/UserApiController.java @@ -74,6 +74,13 @@ public String checkUsername(@RequestBody UserDto userDto) { exists = "FALSE"; return exists; } + + //회원 탈퇴 + @DeleteMapping("withdrawal/{username}") + public void delPost(@PathVariable String username){ + userService.deleteUser(username); + } + // // @PostMapping("/user/profile/check-nick") // public String checkNickname(@RequestBody UserDto userDto) { @@ -89,30 +96,30 @@ public String checkUsername(@RequestBody UserDto userDto) { // } //유저프로필 수정 - @PutMapping("/userProfile") + @PutMapping("/userprofile") public void updateUser(@Valid @RequestPart(value = "key") UserProfileRequestDto userProfileDto, @RequestPart(value = "userImage",required = false) MultipartFile userImage) throws IOException{ userProfileDto.setUserProfileImg(userImage); userService.updateUser(userProfileDto); } //유저 정보 가져오기 - @GetMapping(value = "/userProfile/{username}") + @GetMapping(value = "/userprofile/{username}") public UserProfileResponseDto getUserInfo(@PathVariable String username) { User user = userService.searchUser(username); UserProfileResponseDto userProfileResponseDto = modelMapper.map(user, UserProfileResponseDto.class); return userProfileResponseDto; } - @GetMapping("/user/dogProfile") + //나의 강아지 프로필 가져오기 + @GetMapping("/user/dogprofile") public List getUserDogProfile(@AuthenticationPrincipal UserDetailsImpl userDetails) { return userService.dogProfiles(userDetails.getUser().getId()); } - - //회원 탈퇴 - @DeleteMapping("withdrawal/{username}") - public void delPost(@PathVariable String username){ - userService.deleteUser(username); + //내가 쓴 게시물 가져오기 + @GetMapping(value = "/user/posts") + public List getUserPosts(@AuthenticationPrincipal UserDetailsImpl userDetails) { + return userService.post(userDetails.getUser()); } diff --git a/src/main/java/com/example/marumaru_sparta_verspring/domain/user/User.java b/src/main/java/com/example/marumaru_sparta_verspring/domain/user/User.java index 622799b..a58564b 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/domain/user/User.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/domain/user/User.java @@ -1,6 +1,7 @@ package com.example.marumaru_sparta_verspring.domain.user; import com.example.marumaru_sparta_verspring.domain.Timestamped; +import com.example.marumaru_sparta_verspring.domain.articles.Post; import com.example.marumaru_sparta_verspring.domain.profile.Profile; import com.fasterxml.jackson.annotation.JsonBackReference; import lombok.Getter; @@ -31,22 +32,30 @@ public class User extends Timestamped { @Column(nullable = false) private String password; + @Column private String nickname; + @Column private Long kakaoId; @Column(nullable = false) @Enumerated(value = EnumType.STRING) private UserRole role; - private String userProfileImg; + @Column + private String userProfileImg = "/img/profile.png"; + @Column private String userContent; @JsonBackReference @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) private List dogProfile = new ArrayList<>(); + @JsonBackReference + @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) + private List post = new ArrayList<>(); + public User(String username, String password, Long kakaoId, UserRole role) { this.username = username; diff --git a/src/main/java/com/example/marumaru_sparta_verspring/dto/articles/PostResponseDto.java b/src/main/java/com/example/marumaru_sparta_verspring/dto/articles/PostResponseDto.java index c548e7d..f1c4473 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/dto/articles/PostResponseDto.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/dto/articles/PostResponseDto.java @@ -5,7 +5,6 @@ import lombok.Getter; import lombok.Setter; -import java.time.LocalDateTime; import java.util.List; @Getter diff --git a/src/main/java/com/example/marumaru_sparta_verspring/dto/user/UserPostDto.java b/src/main/java/com/example/marumaru_sparta_verspring/dto/user/UserPostDto.java new file mode 100644 index 0000000..4f84d7f --- /dev/null +++ b/src/main/java/com/example/marumaru_sparta_verspring/dto/user/UserPostDto.java @@ -0,0 +1,27 @@ +package com.example.marumaru_sparta_verspring.dto.user; + +import com.example.marumaru_sparta_verspring.domain.articles.Post; +import com.example.marumaru_sparta_verspring.domain.user.User; +import lombok.Getter; +import lombok.Setter; + +import java.time.format.DateTimeFormatter; + + +@Getter +@Setter +public class UserPostDto { + private long idx; + private String title; + private User user; + private String createdAt; //생성시간 + + public UserPostDto(Post post , User user){ + this.idx = post.getIdx(); + this.title = post.getTitle(); + this.user = user; + this.createdAt = post.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + } +} + + diff --git a/src/main/java/com/example/marumaru_sparta_verspring/repository/MeetRepository.java b/src/main/java/com/example/marumaru_sparta_verspring/repository/MeetRepository.java index 452df38..85a93b0 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/repository/MeetRepository.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/repository/MeetRepository.java @@ -1,7 +1,11 @@ package com.example.marumaru_sparta_verspring.repository; import com.example.marumaru_sparta_verspring.domain.meets.Meet; +import com.example.marumaru_sparta_verspring.domain.profile.Profile; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface MeetRepository extends JpaRepository { + List findByUserId(Long userId); } diff --git a/src/main/java/com/example/marumaru_sparta_verspring/repository/PostRepository.java b/src/main/java/com/example/marumaru_sparta_verspring/repository/PostRepository.java index f2b8e9d..6e89afb 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/repository/PostRepository.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/repository/PostRepository.java @@ -3,6 +3,9 @@ import com.example.marumaru_sparta_verspring.domain.articles.Post; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface PostRepository extends JpaRepository { + List findByUserId(Long userId); } diff --git a/src/main/java/com/example/marumaru_sparta_verspring/security/WebSecurityConfig.java b/src/main/java/com/example/marumaru_sparta_verspring/security/WebSecurityConfig.java index f3242b2..d8964a8 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/security/WebSecurityConfig.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/security/WebSecurityConfig.java @@ -46,7 +46,7 @@ protected void configure(HttpSecurity http) throws Exception { .antMatchers("/login").permitAll() .antMatchers("/login/kakao").permitAll() .antMatchers("/signup").permitAll() - .antMatchers("/").permitAll() + .antMatchers("/**").permitAll() .antMatchers("/docs/**").permitAll() .antMatchers("/meets").permitAll() .antMatchers("/meet").permitAll() diff --git a/src/main/java/com/example/marumaru_sparta_verspring/service/UserService.java b/src/main/java/com/example/marumaru_sparta_verspring/service/UserService.java index 231d5d3..be8be10 100644 --- a/src/main/java/com/example/marumaru_sparta_verspring/service/UserService.java +++ b/src/main/java/com/example/marumaru_sparta_verspring/service/UserService.java @@ -1,6 +1,7 @@ package com.example.marumaru_sparta_verspring.service; import com.example.marumaru_sparta_verspring.domain.S3Uploader; +import com.example.marumaru_sparta_verspring.domain.articles.Post; import com.example.marumaru_sparta_verspring.domain.profile.Profile; import com.example.marumaru_sparta_verspring.domain.user.User; import com.example.marumaru_sparta_verspring.domain.user.UserRole; @@ -8,6 +9,8 @@ import com.example.marumaru_sparta_verspring.dto.user.SignupRequestDto; import com.example.marumaru_sparta_verspring.dto.user.UserDto; import com.example.marumaru_sparta_verspring.dto.user.UserProfileRequestDto; +import com.example.marumaru_sparta_verspring.dto.user.UserPostDto; +import com.example.marumaru_sparta_verspring.repository.PostRepository; import com.example.marumaru_sparta_verspring.repository.ProfileRepository; import com.example.marumaru_sparta_verspring.repository.UserRepository; import com.example.marumaru_sparta_verspring.security.kakao.KakaoOAuth2; @@ -36,6 +39,7 @@ public class UserService { private final AuthenticationManager authenticationManager; private final S3Uploader s3Uploader; private final ProfileRepository profileRepository; + private final PostRepository postRepository; public User registerUser(SignupRequestDto requestDto) { String username = requestDto.getUsername(); @@ -127,7 +131,7 @@ public void updateUser(UserProfileRequestDto userProfileDto) throws IOException userRepository.save(user); } - @Transactional + public List dogProfiles(Long userid) { List profileResponsetDtoList = new ArrayList<>(); List dogProfiles = profileRepository.findByUserId(userid); @@ -137,4 +141,15 @@ public List dogProfiles(Long userid) { } return profileResponsetDtoList; } + + + public List post(User user) { + List userPostDtoList = new ArrayList<>(); + List posts = postRepository.findByUserId(user.getId()); + for (Post getPost : posts) { + UserPostDto userPostDto = new UserPostDto(getPost, user); + userPostDtoList.add(userPostDto); + } + return userPostDtoList; + } } \ No newline at end of file diff --git a/src/main/resources/static/css/user/user_post.css b/src/main/resources/static/css/user/user_post.css new file mode 100644 index 0000000..733d36c --- /dev/null +++ b/src/main/resources/static/css/user/user_post.css @@ -0,0 +1,65 @@ +.wrapper { + width: 1140px; + margin: 0 auto; + max-width: 100%; + padding: 0 15px; +} + +.form { + padding-top: 30px; + margin-bottom: 30px; +} + +.form .header { + margin-bottom: 35px; + padding-bottom: 35px; + border-bottom: 1px solid #ddd; +} + +.form .header .title { + font-size: 25px; + font-weight: bold; + color: #1259a7; +} + +.post_list_wrap { + padding: 10px 150px; +} + +.post_list_head, +.post_list_body .item { + padding: 10px 0; + font-size: 0; +} + +.post_list_head { + border-top: 2px solid #3DB2FF; + border-bottom: 1px solid; +} + +.post_list_body .item { + border-bottom: 1px solid; +} + +.post_list_head > div, +.post_list_body .item > div { + display: inline-block; + font-size: 14px; + text-align: center; +} + +.post_list .title { + width: 60%; +} + +.post_list .post_list_body .title { + text-align: left; +} + +.post_list .author { + width: 15%; +} + +.post_list .date { + width: 15%; +} \ No newline at end of file diff --git a/src/main/resources/static/css/user/user_profile.css b/src/main/resources/static/css/user/user_profile.css index e697c2d..0926f40 100644 --- a/src/main/resources/static/css/user/user_profile.css +++ b/src/main/resources/static/css/user/user_profile.css @@ -1,4 +1,4 @@ -ody { +body { font-family: sans-serif; } diff --git a/src/main/resources/static/img/profile.png b/src/main/resources/static/img/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..91670a330f32afd2eecb89e251156145af696d73 GIT binary patch literal 34097 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 MY<@4laPz_c0b|kaod5s; literal 0 HcmV?d00001 diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 06df8f3..9bd5a50 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -73,7 +73,7 @@
@@ -108,7 +108,7 @@

Profile card

style="width: 18rem;">
+ src="/img/profile.png">
Name
diff --git a/src/main/resources/static/js/articles/post_list.js b/src/main/resources/static/js/articles/post_list.js index b1035f5..5b95767 100644 --- a/src/main/resources/static/js/articles/post_list.js +++ b/src/main/resources/static/js/articles/post_list.js @@ -9,7 +9,6 @@ function show_post_list() { contentType: 'application/json; charset=utf-8', data: {}, success: function (response) { - console.log(response) const articles = response; let list_num = 0 if(articles.length>0) { diff --git a/src/main/resources/static/js/base.js b/src/main/resources/static/js/base.js index a21e34d..5c63399 100644 --- a/src/main/resources/static/js/base.js +++ b/src/main/resources/static/js/base.js @@ -13,11 +13,10 @@ $(document).ready(function () { let username = localStorage.getItem("username") $.ajax({ type: "GET", - url: `/userProfile/${username}`, + url: `/userprofile/${username}`, contentType: 'application/json; charset=utf-8', data: {}, success: function (response){ - console.log(response) let profile_name = response['nickname'] let username = response['username'] let profile_info = response['userContent'] diff --git a/src/main/resources/static/js/user/user_post.js b/src/main/resources/static/js/user/user_post.js new file mode 100644 index 0000000..33d5a6c --- /dev/null +++ b/src/main/resources/static/js/user/user_post.js @@ -0,0 +1,29 @@ +$(document).ready(function () { + + if (localStorage.getItem('token')) { + $.ajaxPrefilter(function (options, originalOptions, jqXHR) { + jqXHR.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('token')); + + }); + } else { + alert('로그인을 해주세요') + location.replace('/login') + } + + $.ajax({ + type: "GET", + url: `/user/posts`, + contentType: 'application/json; charset=utf-8', + data: {}, + success: function (response) { + for(let i=0; i${response[i]['title']}
+
${response[i]['user']['username']}
+
${response[i]['createdAt']}
` + $('#post_list').append(temp_html) + } + } + }) +}) + diff --git a/src/main/resources/static/js/user/user_profile.js b/src/main/resources/static/js/user/user_profile.js index 914e198..b6bbac8 100644 --- a/src/main/resources/static/js/user/user_profile.js +++ b/src/main/resources/static/js/user/user_profile.js @@ -15,11 +15,11 @@ $(document).ready(function () { let username = localStorage.getItem("username") $.ajax({ type: "GET", - url: `/userProfile/${username}`, + url: `/userprofile/${username}`, contentType: 'application/json; charset=utf-8', data: {}, success: function (response) { - console.log(response) + $('.thumbnail').attr("src", response["userProfileImg"]) $('.thumbnail').attr("src", response["userProfileImg"]) $('#username').attr("placeholder", response['username']) $('#name').attr("placeholder", response['nickname']) @@ -29,11 +29,10 @@ $(document).ready(function () { $.ajax({ type: "GET", - url: `/user/dogProfile`, + url: `/user/dogprofile`, contentType: 'application/json; charset=utf-8', data: {}, success: function (response) { - console.log(response) for(let i=0; i
    diff --git a/src/main/resources/static/js/user/user_profile_upload.js b/src/main/resources/static/js/user/user_profile_upload.js index dbc93ef..8232bfc 100644 --- a/src/main/resources/static/js/user/user_profile_upload.js +++ b/src/main/resources/static/js/user/user_profile_upload.js @@ -14,7 +14,7 @@ $(document).ready(function () { let username = localStorage.getItem("username") $.ajax({ type: "GET", - url: `/userProfile/${username}`, + url: `/userprofile/${username}`, contentType: 'application/json; charset=utf-8', data: {}, success: function (response) { @@ -22,11 +22,24 @@ $(document).ready(function () { let profile_info = response['userContent'] let profile_img = response['userProfileImg'] - $('#profile-img').attr("src", +profile_img) + $('#profile-img').attr("src", profile_img) $('#name').attr("placeholder", profile_name) $('#description').attr("placeholder", profile_info) } }) + + function setThumbnail(event) { + let reader = new FileReader(); + reader.onload = function (event) { + let img = document.createElement("img"); + console.log(img) + img.setAttribute("src", event.target.result); + img.setAttribute("width", 250); + img.setAttribute("height", 300); + $('#profile-img').html(img); + } + reader.readAsDataURL(event.target.files[0]); + } }) function go_out() { @@ -51,7 +64,6 @@ function go_out() { } } - function user_update() { let username = localStorage.getItem("username") let nickname = $('#name').val(); @@ -66,7 +78,6 @@ function user_update() { userContent: userContent, }; - console.log(data, file) let formData = new FormData() formData.append("userImage", file); formData.append("key", new Blob([JSON.stringify(data)] , {type: "application/json"})); @@ -84,21 +95,11 @@ function user_update() { $.ajax({ type: "PUT", - url: "/userProfile", + url: "/userprofile", contentType: false, processData: false, data: formData, success: function (response) { - - // FormData의 key 확인 - for (let key of formData.keys()) { - console.log(key); - } - - // FormData의 value 확인 - for (let value of formData.values()) { - console.log(value); - } alert("회원정보 수정 완료!"); location.replace('/user/profile') } diff --git a/src/main/resources/templates/articles/post_list.html b/src/main/resources/templates/articles/post_list.html index 78b2ebb..e490672 100644 --- a/src/main/resources/templates/articles/post_list.html +++ b/src/main/resources/templates/articles/post_list.html @@ -88,7 +88,7 @@
    Name
    ID

    discription

    - My Profile + My Profile logout diff --git a/src/main/resources/templates/user/user_post.html b/src/main/resources/templates/user/user_post.html new file mode 100644 index 0000000..9b2a540 --- /dev/null +++ b/src/main/resources/templates/user/user_post.html @@ -0,0 +1,122 @@ + + + + + + 내가 쓴 글 | 강만다 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + 내가 쓴 글 +
    +
    +
    +
    +
    제목
    +
    글쓴이
    +
    작성일
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/user/user_profile.html b/src/main/resources/templates/user/user_profile.html index e3a2a0a..3bead65 100644 --- a/src/main/resources/templates/user/user_profile.html +++ b/src/main/resources/templates/user/user_profile.html @@ -16,6 +16,7 @@ + @@ -23,7 +24,6 @@ - @@ -62,16 +62,16 @@ 게시글
@@ -139,12 +139,25 @@ +
+
+
+ 내가 쓴 글 보러가기 +
+ 보러가기 + +
+
+
+
+ +