Skip to content

Commit

Permalink
feat: 유저 수정 기능 추가 #79
Browse files Browse the repository at this point in the history
  • Loading branch information
wlsh44 committed Dec 16, 2022
1 parent 2420c38 commit 7b3fd07
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/main/java/mustodo/backend/user/application/UserService.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,25 @@
package mustodo.backend.user.application;

import lombok.RequiredArgsConstructor;
import mustodo.backend.auth.ui.dto.UserResponse;
import mustodo.backend.config.ImageConfig;
import mustodo.backend.exception.user.UserNotFoundException;
import mustodo.backend.todo.domain.Todo;
import mustodo.backend.todo.domain.TodoRepository;
import mustodo.backend.todo.ui.dto.TodoMonthResponse;
import mustodo.backend.user.domain.User;
import mustodo.backend.user.domain.UserRepository;
import mustodo.backend.user.domain.embedded.Image;
import mustodo.backend.user.ui.dto.MeResponse;
import mustodo.backend.user.ui.dto.StatsMonthDto;
import mustodo.backend.user.ui.dto.StatsResponse;
import mustodo.backend.user.ui.dto.UpdateUserDto;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.List;
Expand All @@ -33,8 +37,8 @@ public class UserService {

@Transactional
public void updateProfileImage(User user, MultipartFile multipartFile) {
entityManager.merge(user);
user.updateProfileImage(multipartFile, imageConfig);
User user1 = userRepository.findById(user.getId()).get();
user1.updateProfileImage(multipartFile, imageConfig);
}

@Transactional(readOnly = true)
Expand All @@ -49,4 +53,11 @@ public StatsResponse findTodoStats(User user, String date) {
List<StatsMonthDto> todoByMonth = todoRepository.findTodoStatsByMonth(user, month.atDay(1), month.atEndOfMonth());
return new StatsResponse(todoByMonth);
}

@Transactional
public UserResponse update(User user, UpdateUserDto dto, MultipartFile multipartFile, HttpServletRequest request) {
User user1 = userRepository.findById(user.getId()).get();
user1.update(dto, multipartFile, imageConfig);
return UserResponse.from(user1, Image.getBaseUrl(request));
}
}
9 changes: 9 additions & 0 deletions src/main/java/mustodo/backend/user/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import mustodo.backend.sns.domain.Follow;
import mustodo.backend.user.domain.embedded.EmailAuth;
import mustodo.backend.user.domain.embedded.Image;
import mustodo.backend.user.ui.dto.UpdateUserDto;
import org.springframework.web.multipart.MultipartFile;

import javax.persistence.Column;
Expand Down Expand Up @@ -82,4 +83,12 @@ public boolean isAuthorizedUser() {
public void updateProfileImage(MultipartFile multipartFile, ImageConfig imageConfig) {
this.profile = Image.saveImage(multipartFile, imageConfig);
}

public void update(UpdateUserDto dto, MultipartFile multipartFile, ImageConfig imageConfig) {
this.name = dto.getName();
this.biography = dto.getBiography();
if (multipartFile != null) {
updateProfileImage(multipartFile, imageConfig);
}
}
}
17 changes: 17 additions & 0 deletions src/main/java/mustodo/backend/user/ui/UserController.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
package mustodo.backend.user.ui;

import lombok.RequiredArgsConstructor;
import mustodo.backend.auth.ui.dto.UserResponse;
import mustodo.backend.auth.ui.resolver.Login;
import mustodo.backend.user.application.UserService;
import mustodo.backend.user.domain.User;
import mustodo.backend.user.domain.embedded.Image;
import mustodo.backend.user.ui.dto.MeResponse;
import mustodo.backend.user.ui.dto.StatsResponse;
import mustodo.backend.user.ui.dto.UpdateUserDto;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

@RequestMapping("/api/me")
@RestController
@RequiredArgsConstructor
Expand All @@ -36,4 +45,12 @@ public ResponseEntity<MeResponse> getMe(@Login User user) {
public ResponseEntity<StatsResponse> findStats(@Login User user, @PathVariable String date) {
return ResponseEntity.ok(userService.findTodoStats(user, date));
}

@PutMapping(value = "")
public ResponseEntity<UserResponse> update(@Login User user, @RequestPart(required = false) MultipartFile image, HttpServletRequest request) {
String name = request.getParameter("name");
String biography = request.getParameter("biography");
UpdateUserDto dto = new UpdateUserDto(name, biography);
return ResponseEntity.ok(userService.update(user, dto, image, request));
}
}
11 changes: 11 additions & 0 deletions src/main/java/mustodo/backend/user/ui/dto/UpdateUserDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package mustodo.backend.user.ui.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class UpdateUserDto {
private String name;
private String biography;
}

0 comments on commit 7b3fd07

Please sign in to comment.