From 33d7fdedf8419f0f1fa37d0bc4e7010dc237fda8 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Tue, 10 Jun 2025 15:33:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20OAuth2=20=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/oauth2/OAuth2ClientController.java | 14 +++++++++-- .../service/oauth2/OAuth2ClientService.java | 10 +++++++- .../oauth2/OAuth2ClientServiceImpl.java | 23 ++++++++++++++++++- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.java index d3f4aedf20..ba5b71b453 100755 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.java @@ -11,12 +11,13 @@ import cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; +import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -53,6 +54,15 @@ public class OAuth2ClientController { return success(true); } + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号列表", required = true) + @Operation(summary = "批量删除 OAuth2 客户端") + @PreAuthorize("@ss.hasPermission('system:oauth2-client:delete')") + public CommonResult deleteOAuth2ClientList(@RequestParam("ids") List ids) { + oAuth2ClientService.deleteOAuth2ClientList(ids); + return success(true); + } + @GetMapping("/get") @Operation(summary = "获得 OAuth2 客户端") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientService.java index 1d6074ee72..9a17ccf2e7 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientService.java @@ -4,9 +4,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; - import jakarta.validation.Valid; + import java.util.Collection; +import java.util.List; /** * OAuth2.0 Client Service 接口 @@ -39,6 +40,13 @@ public interface OAuth2ClientService { */ void deleteOAuth2Client(Long id); + /** + * 批量删除 OAuth2 客户端 + * + * @param ids 编号数组 + */ + void deleteOAuth2ClientList(List ids); + /** * 获得 OAuth2 客户端 * diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java index 3c229547c4..f592de8c66 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java @@ -14,14 +14,15 @@ import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2ClientMapper; import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; import com.google.common.annotations.VisibleForTesting; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import jakarta.annotation.Resource; import java.util.Collection; +import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; @@ -72,12 +73,32 @@ public class OAuth2ClientServiceImpl implements OAuth2ClientService { oauth2ClientMapper.deleteById(id); } + @Override + @CacheEvict(cacheNames = RedisKeyConstants.OAUTH_CLIENT, + allEntries = true) // allEntries 清空所有缓存,因为 id 不是直接的缓存 key,不好清理 + public void deleteOAuth2ClientList(List ids) { + if (CollUtil.isEmpty(ids)) { + return; + } + // 校验存在 + validateOAuth2ClientBatchExists(ids); + // 批量删除 + oauth2ClientMapper.deleteByIds(ids); + } + private void validateOAuth2ClientExists(Long id) { if (oauth2ClientMapper.selectById(id) == null) { throw exception(OAUTH2_CLIENT_NOT_EXISTS); } } + private void validateOAuth2ClientBatchExists(List ids) { + List clients = oauth2ClientMapper.selectByIds(ids); + if (clients.size() != ids.size()) { + throw exception(OAUTH2_CLIENT_NOT_EXISTS); + } + } + @VisibleForTesting void validateClientIdExists(Long id, String clientId) { OAuth2ClientDO client = oauth2ClientMapper.selectByClientId(clientId);