From d25c754bf023b52e5349fea25ec98fdbacdc526f Mon Sep 17 00:00:00 2001 From: siujamo Date: Wed, 31 Dec 2025 14:47:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../helix/controller/AuthorityController.java | 33 +++++++++++++++++++ .../web/request/QueryAuthorityRequest.java | 4 +++ .../helix/manager/AuthorityManager.java | 11 ++++++- .../helix/service/AuthorityService.java | 24 ++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/onixbyte/helix/controller/AuthorityController.java create mode 100644 src/main/java/com/onixbyte/helix/domain/web/request/QueryAuthorityRequest.java create mode 100644 src/main/java/com/onixbyte/helix/service/AuthorityService.java diff --git a/src/main/java/com/onixbyte/helix/controller/AuthorityController.java b/src/main/java/com/onixbyte/helix/controller/AuthorityController.java new file mode 100644 index 0000000..e21111d --- /dev/null +++ b/src/main/java/com/onixbyte/helix/controller/AuthorityController.java @@ -0,0 +1,33 @@ +package com.onixbyte.helix.controller; + +import com.onixbyte.helix.domain.entity.Authority; +import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest; +import com.onixbyte.helix.service.AuthorityService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/authorities") +public class AuthorityController { + + private final AuthorityService authorityService; + + public AuthorityController(AuthorityService authorityService) { + this.authorityService = authorityService; + } + + @GetMapping + public Page getAuthorities( + @RequestParam(required = false, defaultValue = "1") Integer pageNum, + @RequestParam(required = false, defaultValue = "10") Integer pageSize, + @Validated @ModelAttribute QueryAuthorityRequest request + ) { + var pageRequest = PageRequest.of(pageNum - 1, pageSize); + return authorityService.getAuthorities(pageRequest, request); + } +} diff --git a/src/main/java/com/onixbyte/helix/domain/web/request/QueryAuthorityRequest.java b/src/main/java/com/onixbyte/helix/domain/web/request/QueryAuthorityRequest.java new file mode 100644 index 0000000..27e41fb --- /dev/null +++ b/src/main/java/com/onixbyte/helix/domain/web/request/QueryAuthorityRequest.java @@ -0,0 +1,4 @@ +package com.onixbyte.helix.domain.web.request; + +public record QueryAuthorityRequest() { +} diff --git a/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java b/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java index 55cc481..99beb7a 100644 --- a/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java +++ b/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java @@ -1,10 +1,13 @@ package com.onixbyte.helix.manager; +import com.onixbyte.helix.repository.AuthorityRepository; import com.onixbyte.helix.shared.CacheName; import com.onixbyte.helix.domain.entity.Authority; import com.onixbyte.helix.mapper.AuthorityMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; import java.util.List; @@ -13,14 +16,20 @@ import java.util.List; public class AuthorityManager { private final AuthorityMapper authorityMapper; + private final AuthorityRepository authorityRepository; @Autowired - public AuthorityManager(AuthorityMapper authorityMapper) { + public AuthorityManager(AuthorityMapper authorityMapper, AuthorityRepository authorityRepository) { this.authorityMapper = authorityMapper; + this.authorityRepository = authorityRepository; } @Cacheable(cacheNames = CacheName.AUTHORITIES_OF_USER, key = "#userId") public List queryByUserId(Long userId) { return authorityMapper.selectByUserId(userId); } + + public Page selectAll(Pageable pageable) { + return authorityRepository.findAll(pageable); + } } diff --git a/src/main/java/com/onixbyte/helix/service/AuthorityService.java b/src/main/java/com/onixbyte/helix/service/AuthorityService.java new file mode 100644 index 0000000..eb3a8ba --- /dev/null +++ b/src/main/java/com/onixbyte/helix/service/AuthorityService.java @@ -0,0 +1,24 @@ +package com.onixbyte.helix.service; + +import com.onixbyte.helix.domain.entity.Authority; +import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest; +import com.onixbyte.helix.manager.AuthorityManager; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AuthorityService { + + private final AuthorityManager authorityManager; + + public AuthorityService(AuthorityManager authorityManager) { + this.authorityManager = authorityManager; + } + + public Page getAuthorities(Pageable pageable, QueryAuthorityRequest request) { + return authorityManager.selectAll(pageable); + } +}