Skip to content

Commit

Permalink
Merge pull request #328 from IceButler/refactor/#327-fridge-exception
Browse files Browse the repository at this point in the history
#327 fridge exception 구조 변경 및 assembler 삭제
  • Loading branch information
sojungpp authored Jul 12, 2024
2 parents a346697 + a5a7bfe commit 98191d8
Show file tree
Hide file tree
Showing 92 changed files with 1,005 additions and 1,088 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,22 +36,19 @@ public class AdminController {
private final FoodRepository foodRepository;

@PostMapping("/join")
public ResponseCustom<AdminResponse> join(@RequestBody JoinRequest request)
{
public ResponseCustom<AdminResponse> join(@RequestBody JoinRequest request) {
return ResponseCustom.success(adminService.join(request));
}

@PostMapping("/login")
public ResponseCustom<PostAdminRes> login(@RequestBody LoginRequest request)
{
public ResponseCustom<PostAdminRes> login(@RequestBody LoginRequest request) {
return ResponseCustom.success(adminService.login(request));
}

@Admin
@PostMapping("/logout")
public ResponseCustom<LogoutResponse> logout(@IsAdminLogin AdminLoginStatus loginStatus)
{
adminService.logout(loginStatus.getAdminIdx());
public ResponseCustom<LogoutResponse> logout(@IsAdminLogin AdminLoginStatus loginStatus) {
adminService.logout(loginStatus.getAdminId());
return ResponseCustom.success();
}

Expand All @@ -62,52 +59,46 @@ public ResponseCustom<Page<UserResponse>> search(
Pageable pageable,
@RequestParam(defaultValue = "") String nickname,
@RequestParam(defaultValue = "true") boolean active
)
{
return ResponseCustom.success(adminService.search(pageable, nickname, active,loginStatus.getAdminIdx()));
) {
return ResponseCustom.success(adminService.search(pageable, nickname, active, loginStatus.getAdminId()));
}

@Admin
@DeleteMapping("/users/{userIdx}")
@DeleteMapping("/users/{userId}")
public ResponseCustom<Void> withdraw(
@IsAdminLogin AdminLoginStatus loginStatus,
@PathVariable Long userIdx,
@PathVariable Long userId,
HttpServletRequest request
)
{
adminService.withdraw(userIdx, loginStatus.getAdminIdx(), request.getHeader("Authorization"));
) {
adminService.withdraw(userId, loginStatus.getAdminId(), request.getHeader("Authorization"));
return ResponseCustom.success();
}

// 식품조회
@Admin
@GetMapping("/foods")
public ResponseCustom<Page<SearchFoodsResponse>> searchFoods(@RequestParam String cond, Pageable pageable
,@IsAdminLogin AdminLoginStatus loginStatus
)
{
return ResponseCustom.success(adminService.searchFoods(cond, pageable,loginStatus.getAdminIdx()));
, @IsAdminLogin AdminLoginStatus loginStatus
) {
return ResponseCustom.success(adminService.searchFoods(cond, pageable, loginStatus.getAdminId()));
}

// 식품수정
@Admin
@PatchMapping("/foods/{foodIdx}")
public ResponseCustom<Void> modifyFood(@PathVariable(name = "foodIdx") Long foodIdx,
@RequestBody ModifyFoodRequest request
,@IsAdminLogin AdminLoginStatus loginStatus
)
{
adminService.modifyFood(foodIdx, request,loginStatus.getAdminIdx());
@PatchMapping("/foods/{foodId}")
public ResponseCustom<Void> modifyFood(@PathVariable Long foodId,
@RequestBody ModifyFoodRequest request,
@IsAdminLogin AdminLoginStatus loginStatus) {
adminService.modifyFood(foodId, request, loginStatus.getAdminId());
return ResponseCustom.success();
}

// 식품삭제
@Admin
@DeleteMapping("/foods/{foodIdx}")
public ResponseCustom<Void> removeFoods(@PathVariable(name = "foodIdx") Long foodIdx
,@IsAdminLogin AdminLoginStatus loginStatus
) {
adminService.removeFoods(foodIdx,loginStatus.getAdminIdx());
@DeleteMapping("/foods/{foodId}")
public ResponseCustom<Void> removeFoods(@PathVariable Long foodId,
@IsAdminLogin AdminLoginStatus loginStatus) {
adminService.removeFoods(foodId, loginStatus.getAdminId());
return ResponseCustom.success();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
@Data
@Getter
public class RemoveFoodRequest {
private Long foodIdx;
private Long foodId;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
@Data
@NoArgsConstructor
public class WithDrawRequest {
private Long userIdx;
private Long userId;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.example.icebutler_server.admin.dto.response;

import com.example.icebutler_server.food.entity.Food;
import com.example.icebutler_server.food.entity.FoodCategory;
import com.example.icebutler_server.global.util.AwsS3ImageUrlUtil;
import lombok.Builder;
import lombok.Data;
Expand All @@ -10,23 +9,23 @@
@Data
@NoArgsConstructor
public class SearchFoodsResponse {
private Long foodIdx;
private Long foodId;
private String foodCategory;
private String foodName;
private String foodImgUrl;

public static SearchFoodsResponse toDto(Food food) {
SearchFoodsResponse searchFoodsResponse = new SearchFoodsResponse();
searchFoodsResponse.foodIdx = food.getId();
searchFoodsResponse.foodId = food.getId();
searchFoodsResponse.foodCategory = food.getFoodCategory().getName();
searchFoodsResponse.foodName = food.getFoodName();
searchFoodsResponse.foodImgUrl = AwsS3ImageUrlUtil.toUrl(food.getFoodImgKey());
return searchFoodsResponse;
}

@Builder
public SearchFoodsResponse(Long foodIdx, String foodCategory, String foodName, String foodImgUrl) {
this.foodIdx = foodIdx;
public SearchFoodsResponse(Long foodId, String foodCategory, String foodName, String foodImgUrl) {
this.foodId = foodId;
this.foodCategory = foodCategory;
this.foodName = foodName;
this.foodImgUrl = foodImgUrl;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,15 @@
@NoArgsConstructor
@Data
public class UserResponse {
private Long userIdx;
private Long userId;
private String nickname;
private String email;
private String provider;
private boolean isDenied;


public static UserResponse toDto(User user)
{
public static UserResponse toDto(User user) {
UserResponse userResponse = new UserResponse();
userResponse.userIdx = user.getId();
userResponse.userId = user.getId();
userResponse.nickname = user.getNickname();
userResponse.email = user.getEmail();
userResponse.provider = user.getProvider().getName();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.example.icebutler_server.admin.exception;

public class FoodNotFoundException extends RuntimeException{
public FoodNotFoundException() {super("해당 idx를 가진 음식을 찾을 수 없습니다.");}
public FoodNotFoundException() {super("해당 id를 가진 음식을 찾을 수 없습니다.");}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@

public interface AdminRepository extends JpaRepository<Admin, Long> , AdminRepositoryQuerydsl{
Optional<Admin> findByEmail(String email);
Optional<Admin> findByIdAndIsEnable(Long adminIdx, boolean isEnable);
Optional<Admin> findByIdAndIsEnable(Long adminId, boolean isEnable);
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
package com.example.icebutler_server.admin.service;

import com.example.icebutler_server.admin.dto.condition.SearchCond;
import com.example.icebutler_server.admin.dto.request.*;
import com.example.icebutler_server.admin.dto.request.JoinRequest;
import com.example.icebutler_server.admin.dto.request.LoginRequest;
import com.example.icebutler_server.admin.dto.request.ModifyFoodRequest;
import com.example.icebutler_server.admin.dto.response.AdminResponse;
import com.example.icebutler_server.admin.dto.response.LogoutResponse;
import com.example.icebutler_server.admin.dto.response.SearchFoodsResponse;
import com.example.icebutler_server.global.resolver.LoginStatus;
import com.example.icebutler_server.admin.dto.response.PostAdminRes;
import com.example.icebutler_server.admin.dto.response.SearchFoodsResponse;
import com.example.icebutler_server.admin.dto.response.UserResponse;
import com.example.icebutler_server.user.dto.response.MyProfileRes;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public interface AdminService {
AdminResponse join(JoinRequest request);
PostAdminRes login(LoginRequest request);
void logout(Long adminIdx);
Page<UserResponse> search(Pageable pageable, String nickname, boolean active,Long adminIdx);
void withdraw(Long userIdx,Long adminIdx, String authorization);
void logout(Long adminId);
Page<UserResponse> search(Pageable pageable, String nickname, boolean active, Long adminId);
void withdraw(Long userId, Long adminId, String authorization);

Page<SearchFoodsResponse> searchFoods(String cond, Pageable pageable,Long adminIdx);
Page<SearchFoodsResponse> searchFoods(String cond, Pageable pageable, Long adminId);

void modifyFood(Long foodIdx, ModifyFoodRequest request,Long adminIdx);
void modifyFood(Long foodId, ModifyFoodRequest request, Long adminId);

void removeFoods(Long foodIdx,Long adminIdx);
void removeFoods(Long foodId, Long adminId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,29 +54,26 @@ public class AdminServiceImpl implements AdminService {

@Transactional
@Override
public AdminResponse join(JoinRequest request)
{
if(adminRepository.findByEmail(request.getEmail()).isPresent()) throw new AlreadyExistEmailException();
public AdminResponse join(JoinRequest request) {
if (adminRepository.findByEmail(request.getEmail()).isPresent()) throw new AlreadyExistEmailException();
Admin admin = adminRepository.save(request.toAdmin(pwEncoder.encode(request.getPassword())));
recipeServerClient.addAdmin(AdminReq.toDto(admin));
return AdminResponse.toDto(admin);
}

@Transactional
@Override
public PostAdminRes login(LoginRequest request)
{
public PostAdminRes login(LoginRequest request) {
Admin admin = adminRepository.findByEmail(request.getEmail()).orElseThrow(AdminNotFoundException::new);
if(!pwEncoder.matches(request.getPassword(), admin.getPassword())) throw new PasswordNotMatchException();
if (!pwEncoder.matches(request.getPassword(), admin.getPassword())) throw new PasswordNotMatchException();
admin.login();
return PostAdminRes.toDto(tokenUtils.createToken(admin.getId(), admin.getEmail()));
}

@Transactional
@Override
public void logout(Long adminIdx)
{
Admin admin = adminRepository.findByIdAndIsEnable(adminIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER));
public void logout(Long adminId) {
Admin admin = adminRepository.findByIdAndIsEnable(adminId, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER));
admin.logout();
redisTemplateService.deleteUserRefreshToken(admin.getId().toString());
}
Expand All @@ -85,29 +82,28 @@ public void logout(Long adminIdx)
public Page<UserResponse> search(
Pageable pageable,
String nickname,
boolean active,Long adminIdx)
{
adminRepository.findByIdAndIsEnable(adminIdx,true).orElseThrow(AdminNotFoundException::new);
boolean active, Long adminId) {
adminRepository.findByIdAndIsEnable(adminId, true).orElseThrow(AdminNotFoundException::new);
return adminRepository.findAllByNicknameAndActive(pageable, nickname, active);
}

@Transactional
@Override
public void withdraw(Long userIdx, Long adminIdx, String authorization)
{
adminRepository.findByIdAndIsEnable(adminIdx,true).orElseThrow(AdminNotFoundException::new);
User user = userRepository.findById(userIdx).orElseThrow(() -> new BaseException(NOT_FOUND_USER));
public void withdraw(Long userId, Long adminId, String authorization) {
adminRepository.findByIdAndIsEnable(adminId, true).orElseThrow(AdminNotFoundException::new);
User user = userRepository.findById(userId).orElseThrow(() -> new BaseException(NOT_FOUND_USER));
HashMap<String, String> requestHeaders = new HashMap<>();
requestHeaders.put("Authorization", authorization);
recipeServerClient.withdrawUser(userIdx, requestHeaders);
recipeServerClient.withdrawUser(userId, requestHeaders);
userRepository.delete(user);
}

@Override
public Page<SearchFoodsResponse> searchFoods(String cond, Pageable pageable,Long adminIdx) {
adminRepository.findByIdAndIsEnable(adminIdx,true).orElseThrow(AdminNotFoundException::new);
public Page<SearchFoodsResponse> searchFoods(String cond, Pageable pageable, Long adminId) {
adminRepository.findByIdAndIsEnable(adminId, true).orElseThrow(AdminNotFoundException::new);
Page<SearchFoodsResponse> searchFoods;

if (StringUtils.hasText(cond)){
if (StringUtils.hasText(cond)) {
Page<Food> searchFood = foodRepository.findByFoodNameContainsAndIsEnable(cond, true, pageable);
searchFoods = searchFood.map(SearchFoodsResponse::toDto);
return searchFoods;
Expand All @@ -120,9 +116,9 @@ public Page<SearchFoodsResponse> searchFoods(String cond, Pageable pageable,Long

@Override
@Transactional
public void modifyFood(Long foodIdx, ModifyFoodRequest request,Long adminIdx) {
adminRepository.findByIdAndIsEnable(adminIdx,true).orElseThrow(AdminNotFoundException::new);
Food food = foodRepository.findByIdAndIsEnable(foodIdx, true).orElseThrow(FoodNotFoundException::new);
public void modifyFood(Long foodId, ModifyFoodRequest request, Long adminId) {
adminRepository.findByIdAndIsEnable(adminId, true).orElseThrow(AdminNotFoundException::new);
Food food = foodRepository.findByIdAndIsEnable(foodId, true).orElseThrow(FoodNotFoundException::new);
Food checkFood = foodRepository.findByFoodNameAndIsEnable(request.getFoodName(), true);
if (!food.getFoodName().equals(request.getFoodName()) && checkFood != null) {
adminAssembler.validateFoodName(checkFood, request.getFoodName());
Expand All @@ -133,9 +129,9 @@ public void modifyFood(Long foodIdx, ModifyFoodRequest request,Long adminIdx) {

@Override
@Transactional
public void removeFoods(Long foodIdx,Long adminIdx) {
adminRepository.findByIdAndIsEnable(adminIdx,true).orElseThrow(AdminNotFoundException::new);
Food food = foodRepository.findByIdAndIsEnable(foodIdx, true).orElseThrow(FoodNotFoundException::new);
public void removeFoods(Long foodId, Long adminId) {
adminRepository.findByIdAndIsEnable(adminId, true).orElseThrow(AdminNotFoundException::new);
Food food = foodRepository.findByIdAndIsEnable(foodId, true).orElseThrow(FoodNotFoundException::new);
foodRepository.delete(food);
recipeServerEventPublisher.deleteFood(food);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,12 @@ public PushNotification(String pushNotificationType, String notificationInfo, Us
this.notificationInfo = notificationInfo;
this.user = user;
}

public static PushNotification toEntity(String pushNotificationType, String messageBody, User user) {
return PushNotification.builder()
.pushNotificationType(pushNotificationType)
.notificationInfo(messageBody)
.user(user)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.example.icebutler_server.alarm.service;

import com.example.icebutler_server.alarm.dto.FcmMessage;
import com.example.icebutler_server.alarm.dto.assembler.NotificationAssembler;
import com.example.icebutler_server.alarm.entity.PushNotification;
import com.example.icebutler_server.alarm.repository.PushNotificationRepository;
import com.example.icebutler_server.global.util.Constant;
import com.example.icebutler_server.user.entity.User;
Expand All @@ -26,7 +26,6 @@ public class NotificationServiceImpl implements NotificationService {
private final String API_URL = "https://fcm.googleapis.com/v1/projects/icebutler-46914/messages:send";
private final ObjectMapper objectMapper;
private final PushNotificationRepository notificationRepository;
private final NotificationAssembler notificationAssembler;

// TODO 냉장고 유저 탈퇴 로직 리팩 후 호출
@Transactional
Expand All @@ -36,7 +35,7 @@ public void sendWithdrawalAlarm(User user, String fridgeName) throws JsonParseEx
if(user.getFcmToken()!=null){
FcmMessage message = FcmMessage.makeMessage(user.getFcmToken(), Constant.PushNotification.FRIDGE, messageBody);
Response response = sendMessage(objectMapper.writeValueAsString(message));
this.notificationRepository.save(this.notificationAssembler.toEntity(Constant.PushNotification.FRIDGE, messageBody, user));
this.notificationRepository.save(PushNotification.toEntity(Constant.PushNotification.FRIDGE, messageBody, user));
}
}
// TODO 냉장고 유저 초대 리펙 후 호출
Expand All @@ -47,7 +46,7 @@ public void sendJoinFridgeAlarm(User user, String fridgeName) throws IOException
if(user.getFcmToken()!=null) {
FcmMessage message = FcmMessage.makeMessage(user.getFcmToken(), Constant.PushNotification.FRIDGE, messageBody);
Response response = sendMessage(objectMapper.writeValueAsString(message));
this.notificationRepository.save(this.notificationAssembler.toEntity(Constant.PushNotification.FRIDGE, messageBody, user));
this.notificationRepository.save(PushNotification.toEntity(Constant.PushNotification.FRIDGE, messageBody, user));
}
}

Expand All @@ -58,7 +57,7 @@ public void sendShelfLifeAlarm(User user, String fridgeName, String foodName) th
if(user.getFcmToken()!=null) {
FcmMessage message = FcmMessage.makeMessage(user.getFcmToken(), fridgeName, messageBody);
Response response = sendMessage(objectMapper.writeValueAsString(message));
this.notificationRepository.save(this.notificationAssembler.toEntity(fridgeName, messageBody, user));
this.notificationRepository.save(PushNotification.toEntity(fridgeName, messageBody, user));
}
}

Expand Down
Loading

0 comments on commit 98191d8

Please sign in to comment.