-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
YEL-148 [merge] 개발서버 배포
- Loading branch information
Showing
39 changed files
with
743 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
src/main/java/com/yello/server/domain/admin/controller/AdminController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package com.yello.server.domain.admin.controller; | ||
|
||
import static com.yello.server.global.common.SuccessCode.DELETE_COOLDOWN_ADMIN_SUCCESS; | ||
import static com.yello.server.global.common.SuccessCode.DELETE_USER_ADMIN_SUCCESS; | ||
import static com.yello.server.global.common.SuccessCode.READ_COOLDOWN_ADMIN_SUCCESS; | ||
import static com.yello.server.global.common.SuccessCode.READ_USER_ADMIN_SUCCESS; | ||
|
||
import com.yello.server.domain.admin.dto.response.AdminCooldownResponse; | ||
import com.yello.server.domain.admin.dto.response.AdminUserResponse; | ||
import com.yello.server.domain.admin.service.AdminService; | ||
import com.yello.server.domain.user.entity.User; | ||
import com.yello.server.global.common.annotation.AccessTokenUser; | ||
import com.yello.server.global.common.dto.BaseResponse; | ||
import com.yello.server.global.common.factory.PaginationFactory; | ||
import javax.annotation.Nullable; | ||
import lombok.RequiredArgsConstructor; | ||
import lombok.val; | ||
import org.springframework.web.bind.annotation.CrossOrigin; | ||
import org.springframework.web.bind.annotation.DeleteMapping; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/api/v1/admin") | ||
@CrossOrigin(origins = "http://localhost:3000") | ||
public class AdminController { | ||
|
||
private final AdminService adminService; | ||
|
||
@GetMapping("/user") | ||
public BaseResponse<AdminUserResponse> getUserAdmin(@AccessTokenUser User user, @RequestParam Integer page, | ||
@Nullable @RequestParam String yelloId) { | ||
val data = yelloId == null | ||
? adminService.findUser(user.getId(), PaginationFactory.createPageableLimitTen(page)) | ||
: adminService.findUserContaining(user.getId(), PaginationFactory.createPageableLimitTen(page), | ||
yelloId); | ||
return BaseResponse.success(READ_USER_ADMIN_SUCCESS, data); | ||
} | ||
|
||
@DeleteMapping("/user") | ||
public BaseResponse deleteUser(@AccessTokenUser User user, @RequestParam Long userId) { | ||
adminService.deleteUser(user.getId(), userId); | ||
return BaseResponse.success(DELETE_USER_ADMIN_SUCCESS); | ||
} | ||
|
||
@GetMapping("/cooldown") | ||
public BaseResponse<AdminCooldownResponse> getCooldownAdmin(@AccessTokenUser User user, @RequestParam Integer page, | ||
@Nullable @RequestParam String yelloId) { | ||
val data = yelloId == null | ||
? adminService.findCooldown(user.getId(), PaginationFactory.createPageableLimitTen(page)) | ||
: adminService.findCooldownContaining(user.getId(), PaginationFactory.createPageableLimitTen(page), | ||
yelloId); | ||
return BaseResponse.success(READ_COOLDOWN_ADMIN_SUCCESS, data); | ||
} | ||
|
||
@DeleteMapping("/cooldown") | ||
public BaseResponse deleteCooldown(@AccessTokenUser User user, @RequestParam Long cooldownId) { | ||
adminService.deleteCooldown(user.getId(), cooldownId); | ||
return BaseResponse.success(DELETE_COOLDOWN_ADMIN_SUCCESS); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
src/main/java/com/yello/server/domain/admin/dto/response/AdminCooldownContentVO.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.yello.server.domain.admin.dto.response; | ||
|
||
import static com.yello.server.global.common.factory.TimeFactory.toDateFormattedString; | ||
|
||
import com.yello.server.domain.cooldown.entity.Cooldown; | ||
import com.yello.server.domain.user.entity.User; | ||
import lombok.Builder; | ||
|
||
@Builder | ||
public record AdminCooldownContentVO( | ||
Long id, | ||
String name, | ||
String yelloId, | ||
String createdAt | ||
) { | ||
|
||
public static AdminCooldownContentVO of(Cooldown cooldown) { | ||
final User cooldownUser = cooldown.getUser(); | ||
|
||
return AdminCooldownContentVO.builder() | ||
.id(cooldown.getId()) | ||
.name(cooldownUser.getName()) | ||
.yelloId(cooldownUser.getYelloId()) | ||
.createdAt(toDateFormattedString(cooldown.getCreatedAt())) | ||
.build(); | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
src/main/java/com/yello/server/domain/admin/dto/response/AdminCooldownResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package com.yello.server.domain.admin.dto.response; | ||
|
||
import java.util.List; | ||
import lombok.Builder; | ||
|
||
@Builder | ||
public record AdminCooldownResponse( | ||
Long pageCount, | ||
Long totalCount, | ||
List<AdminCooldownContentVO> userList | ||
) { | ||
|
||
public static AdminCooldownResponse of(Long totalCount, List<AdminCooldownContentVO> cooldownList) { | ||
return AdminCooldownResponse.builder() | ||
.pageCount(totalCount % 10 == 0 ? totalCount / 10 : totalCount / 10 + 1) | ||
.totalCount(totalCount) | ||
.userList(cooldownList) | ||
.build(); | ||
} | ||
} |
31 changes: 31 additions & 0 deletions
31
src/main/java/com/yello/server/domain/admin/dto/response/AdminUserContentVO.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package com.yello.server.domain.admin.dto.response; | ||
|
||
import static com.yello.server.global.common.factory.TimeFactory.toDateFormattedString; | ||
|
||
import com.yello.server.domain.group.entity.School; | ||
import com.yello.server.domain.user.entity.User; | ||
import lombok.Builder; | ||
|
||
@Builder | ||
public record AdminUserContentVO( | ||
Long id, | ||
String name, | ||
String yelloId, | ||
String group, | ||
String createdAt, | ||
String deletedAt | ||
) { | ||
|
||
public static AdminUserContentVO of(User user) { | ||
final School userGroup = user.getGroup(); | ||
|
||
return AdminUserContentVO.builder() | ||
.id(user.getId()) | ||
.name(user.getName()) | ||
.yelloId(user.getYelloId()) | ||
.group(userGroup == null ? "" : userGroup.toString()) | ||
.createdAt(toDateFormattedString(user.getCreatedAt())) | ||
.deletedAt(toDateFormattedString(user.getDeletedAt())) | ||
.build(); | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
src/main/java/com/yello/server/domain/admin/dto/response/AdminUserResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package com.yello.server.domain.admin.dto.response; | ||
|
||
import java.util.List; | ||
import lombok.Builder; | ||
|
||
@Builder | ||
public record AdminUserResponse( | ||
Long pageCount, | ||
Long totalCount, | ||
List<AdminUserContentVO> userList | ||
) { | ||
|
||
public static AdminUserResponse of(Long totalCount, List<AdminUserContentVO> userList) { | ||
return AdminUserResponse.builder() | ||
.pageCount(totalCount % 10 == 0 ? totalCount / 10 : totalCount / 10 + 1) | ||
.totalCount(totalCount) | ||
.userList(userList) | ||
.build(); | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
src/main/java/com/yello/server/domain/admin/dto/response/AdminUserSearchResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package com.yello.server.domain.admin.dto.response; | ||
|
||
import java.util.List; | ||
import lombok.Builder; | ||
|
||
@Builder | ||
public record AdminUserSearchResponse( | ||
Long pageCount, | ||
Long totalCount, | ||
List<AdminUserContentVO> userList | ||
) { | ||
|
||
public static AdminUserSearchResponse of(Long totalCount, List<AdminUserContentVO> userList) { | ||
return AdminUserSearchResponse.builder() | ||
.pageCount(totalCount % 10 == 0 ? totalCount / 10 : totalCount / 10 + 1) | ||
.totalCount(totalCount) | ||
.userList(userList) | ||
.build(); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
src/main/java/com/yello/server/domain/admin/entity/UserAdmin.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package com.yello.server.domain.admin.entity; | ||
|
||
import com.yello.server.domain.user.entity.User; | ||
import com.yello.server.global.common.dto.AuditingTimeEntity; | ||
import javax.persistence.Entity; | ||
import javax.persistence.FetchType; | ||
import javax.persistence.GeneratedValue; | ||
import javax.persistence.GenerationType; | ||
import javax.persistence.Id; | ||
import javax.persistence.JoinColumn; | ||
import javax.persistence.OneToOne; | ||
import lombok.AccessLevel; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
@Getter | ||
@Entity | ||
@AllArgsConstructor | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
public class UserAdmin extends AuditingTimeEntity { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long id; | ||
|
||
@OneToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "userId") | ||
private User user; | ||
} |
11 changes: 11 additions & 0 deletions
11
src/main/java/com/yello/server/domain/admin/exception/UserAdminNotFoundException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.yello.server.domain.admin.exception; | ||
|
||
import com.yello.server.global.common.ErrorCode; | ||
import com.yello.server.global.exception.CustomException; | ||
|
||
public class UserAdminNotFoundException extends CustomException { | ||
|
||
public UserAdminNotFoundException(ErrorCode error) { | ||
super(error, "[UserAdminNotFoundException] " + error.getMessage()); | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
src/main/java/com/yello/server/domain/admin/repository/UserAdminJpaRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.yello.server.domain.admin.repository; | ||
|
||
import com.yello.server.domain.admin.entity.UserAdmin; | ||
import com.yello.server.domain.user.entity.User; | ||
import java.util.Optional; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
public interface UserAdminJpaRepository extends JpaRepository<UserAdmin, Long> { | ||
|
||
Optional<UserAdmin> findByUser(User user); | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/java/com/yello/server/domain/admin/repository/UserAdminRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.yello.server.domain.admin.repository; | ||
|
||
import com.yello.server.domain.admin.entity.UserAdmin; | ||
import com.yello.server.domain.user.entity.User; | ||
import java.util.Optional; | ||
|
||
public interface UserAdminRepository { | ||
|
||
UserAdmin getByUser(User user); | ||
|
||
Optional<UserAdmin> findByUser(User user); | ||
} |
28 changes: 28 additions & 0 deletions
28
src/main/java/com/yello/server/domain/admin/repository/UserAdminRepositoryImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.yello.server.domain.admin.repository; | ||
|
||
import static com.yello.server.global.common.ErrorCode.USER_ADMIN_NOT_FOUND_EXCEPTION; | ||
|
||
import com.yello.server.domain.admin.entity.UserAdmin; | ||
import com.yello.server.domain.admin.exception.UserAdminNotFoundException; | ||
import com.yello.server.domain.user.entity.User; | ||
import java.util.Optional; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Repository; | ||
|
||
@Repository | ||
@RequiredArgsConstructor | ||
public class UserAdminRepositoryImpl implements UserAdminRepository { | ||
|
||
private final UserAdminJpaRepository userAdminJpaRepository; | ||
|
||
@Override | ||
public UserAdmin getByUser(User user) { | ||
return userAdminJpaRepository.findByUser(user) | ||
.orElseThrow(() -> new UserAdminNotFoundException(USER_ADMIN_NOT_FOUND_EXCEPTION)); | ||
} | ||
|
||
@Override | ||
public Optional<UserAdmin> findByUser(User user) { | ||
return userAdminJpaRepository.findByUser(user); | ||
} | ||
} |
104 changes: 104 additions & 0 deletions
104
src/main/java/com/yello/server/domain/admin/service/AdminService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
package com.yello.server.domain.admin.service; | ||
|
||
import com.yello.server.domain.admin.dto.response.AdminCooldownContentVO; | ||
import com.yello.server.domain.admin.dto.response.AdminCooldownResponse; | ||
import com.yello.server.domain.admin.dto.response.AdminUserContentVO; | ||
import com.yello.server.domain.admin.dto.response.AdminUserResponse; | ||
import com.yello.server.domain.admin.repository.UserAdminRepository; | ||
import com.yello.server.domain.cooldown.entity.Cooldown; | ||
import com.yello.server.domain.cooldown.repository.CooldownRepository; | ||
import com.yello.server.domain.user.entity.User; | ||
import com.yello.server.domain.user.repository.UserRepository; | ||
import java.util.List; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
@Transactional(readOnly = true) | ||
public class AdminService { | ||
|
||
private final UserRepository userRepository; | ||
private final CooldownRepository cooldownRepository; | ||
private final UserAdminRepository userAdminRepository; | ||
|
||
public AdminUserResponse findUser(Long adminId, Pageable page) { | ||
// exception | ||
final User admin = userRepository.getById(adminId); | ||
userAdminRepository.getByUser(admin); | ||
|
||
// logic | ||
final Long totalCount = userRepository.count(); | ||
final List<AdminUserContentVO> list = userRepository.findAll(page).stream() | ||
.map(AdminUserContentVO::of) | ||
.toList(); | ||
|
||
return AdminUserResponse.of(totalCount, list); | ||
} | ||
|
||
public AdminUserResponse findUserContaining(Long adminId, Pageable page, String yelloId) { | ||
// exception | ||
final User admin = userRepository.getById(adminId); | ||
userAdminRepository.getByUser(admin); | ||
|
||
// logic | ||
final Long totalCount = userRepository.countAllByYelloIdContaining(yelloId); | ||
final List<AdminUserContentVO> list = userRepository.findAllContaining(page, yelloId).stream() | ||
.map(AdminUserContentVO::of) | ||
.toList(); | ||
|
||
return AdminUserResponse.of(totalCount, list); | ||
} | ||
|
||
@Transactional | ||
public void deleteUser(Long adminId, Long userId) { | ||
// exception | ||
final User admin = userRepository.getById(adminId); | ||
userAdminRepository.getByUser(admin); | ||
final User user = userRepository.getById(userId); | ||
|
||
// logic | ||
userRepository.delete(user); | ||
} | ||
|
||
public AdminCooldownResponse findCooldown(Long adminId, Pageable page) { | ||
// exception | ||
final User admin = userRepository.getById(adminId); | ||
userAdminRepository.getByUser(admin); | ||
|
||
// logic | ||
final Long totalCount = cooldownRepository.count(); | ||
final List<AdminCooldownContentVO> list = cooldownRepository.findAll(page).stream() | ||
.map(AdminCooldownContentVO::of) | ||
.toList(); | ||
|
||
return AdminCooldownResponse.of(totalCount, list); | ||
} | ||
|
||
public AdminCooldownResponse findCooldownContaining(Long adminId, Pageable page, String yelloId) { | ||
// exception | ||
final User admin = userRepository.getById(adminId); | ||
userAdminRepository.getByUser(admin); | ||
|
||
// logic | ||
final Long totalCount = cooldownRepository.countAllByYelloIdContaining(yelloId); | ||
final List<AdminCooldownContentVO> list = cooldownRepository.findAllContaining(page, yelloId).stream() | ||
.map(AdminCooldownContentVO::of) | ||
.toList(); | ||
|
||
return AdminCooldownResponse.of(totalCount, list); | ||
} | ||
|
||
@Transactional | ||
public void deleteCooldown(Long adminId, Long cooldownId) { | ||
// exception | ||
final User admin = userRepository.getById(adminId); | ||
userAdminRepository.getByUser(admin); | ||
final Cooldown cooldown = cooldownRepository.getById(cooldownId); | ||
|
||
// logic | ||
cooldownRepository.delete(cooldown); | ||
} | ||
} |
Oops, something went wrong.