From eafecc3ac0227960f2b8fa377be27f066e10e50f Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期二, 20 五月 2025 10:47:58 +0800 Subject: [PATCH] perf(lb-qms): 优化查询功能和时间范围筛选 --- ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java | 57 +++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 39 insertions(+), 18 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index d99af5b..f7cd82d 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -1,6 +1,8 @@ package org.dromara.web.controller; import cn.dev33.satoken.annotation.SaIgnore; +import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -11,7 +13,7 @@ import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.request.AuthRequest; import me.zhyd.oauth.utils.AuthStateUtils; -import org.dromara.common.core.constant.UserConstants; +import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginBody; import org.dromara.common.core.domain.model.RegisterBody; @@ -23,9 +25,9 @@ import org.dromara.common.social.config.properties.SocialLoginConfigProperties; import org.dromara.common.social.config.properties.SocialProperties; import org.dromara.common.social.utils.SocialUtils; +import org.dromara.common.sse.dto.SseMessageDto; +import org.dromara.common.sse.utils.SseMessageUtils; import org.dromara.common.tenant.helper.TenantHelper; -import org.dromara.common.websocket.dto.WebSocketMessageDto; -import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.system.domain.bo.SysTenantBo; import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.domain.vo.SysTenantVo; @@ -91,7 +93,7 @@ if (ObjectUtil.isNull(client) || !StringUtils.contains(client.getGrantType(), grantType)) { log.info("瀹㈡埛绔痠d: {} 璁よ瘉绫诲瀷锛歿} 寮傚父!.", clientId, grantType); return R.fail(MessageUtils.message("auth.grant.type.error")); - } else if (!UserConstants.NORMAL.equals(client.getStatus())) { + } else if (!SystemConstants.NORMAL.equals(client.getStatus())) { return R.fail(MessageUtils.message("auth.grant.type.blocked")); } // 鏍¢獙绉熸埛 @@ -101,16 +103,16 @@ Long userId = LoginHelper.getUserId(); scheduledExecutorService.schedule(() -> { - WebSocketMessageDto dto = new WebSocketMessageDto(); - dto.setMessage("娆㈣繋鐧诲綍RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺"); - dto.setSessionKeys(List.of(userId)); - WebSocketUtils.publishMessage(dto); - }, 3, TimeUnit.SECONDS); + SseMessageDto dto = new SseMessageDto(); + dto.setMessage("娆㈣繋鐧诲綍鍏板疂杞﹂棿璐ㄩ噺绠$悊绯荤粺"); + dto.setUserIds(List.of(userId)); + SseMessageUtils.publishMessage(dto); + }, 5, TimeUnit.SECONDS); return R.ok(loginVo); } /** - * 绗笁鏂圭櫥褰曡姹� + * 鑾峰彇璺宠浆URL * * @param source 鐧诲綍鏉ユ簮 * @return 缁撴灉 @@ -132,13 +134,15 @@ } /** - * 绗笁鏂圭櫥褰曞洖璋冧笟鍔″鐞� 缁戝畾鎺堟潈 + * 鍓嶇鍥炶皟缁戝畾鎺堟潈(闇�瑕乼oken) * * @param loginBody 璇锋眰浣� * @return 缁撴灉 */ @PostMapping("/social/callback") public R<Void> socialCallback(@RequestBody SocialLoginBody loginBody) { + // 鏍¢獙token + StpUtil.checkLogin(); // 鑾峰彇绗笁鏂圭櫥褰曚俊鎭� AuthResponse<AuthUser> response = SocialUtils.loginAuth( loginBody.getSource(), loginBody.getSocialCode(), @@ -154,12 +158,14 @@ /** - * 鍙栨秷鎺堟潈 + * 鍙栨秷鎺堟潈(闇�瑕乼oken) * * @param socialId socialId */ @DeleteMapping(value = "/unlock/{socialId}") public R<Void> unlockSocial(@PathVariable Long socialId) { + // 鏍¢獙token + StpUtil.checkLogin(); Boolean rows = socialUserService.deleteWithValidById(socialId); return rows ? R.ok() : R.fail("鍙栨秷鎺堟潈澶辫触"); } @@ -194,8 +200,26 @@ */ @GetMapping("/tenant/list") public R<LoginTenantVo> tenantList(HttpServletRequest request) throws Exception { + // 杩斿洖瀵硅薄 + LoginTenantVo result = new LoginTenantVo(); + boolean enable = TenantHelper.isEnable(); + result.setTenantEnabled(enable); + // 濡傛灉鏈紑鍚鎴疯繖鐩存帴杩斿洖 + if (!enable) { + return R.ok(result); + } + List<SysTenantVo> tenantList = tenantService.queryList(new SysTenantBo()); List<TenantListVo> voList = MapstructUtils.convert(tenantList, TenantListVo.class); + try { + // 濡傛灉鍙秴绠¤繑鍥炴墍鏈夌鎴� + if (LoginHelper.isSuperAdmin()) { + result.setVoList(voList); + return R.ok(result); + } + } catch (NotLoginException ignored) { + } + // 鑾峰彇鍩熷悕 String host; String referer = request.getHeader("referer"); @@ -207,12 +231,9 @@ } // 鏍规嵁鍩熷悕杩涜绛涢�� List<TenantListVo> list = StreamUtils.filter(voList, vo -> - StringUtils.equals(vo.getDomain(), host)); - // 杩斿洖瀵硅薄 - LoginTenantVo vo = new LoginTenantVo(); - vo.setVoList(CollUtil.isNotEmpty(list) ? list : voList); - vo.setTenantEnabled(TenantHelper.isEnable()); - return R.ok(vo); + StringUtils.equalsIgnoreCase(vo.getDomain(), host)); + result.setVoList(CollUtil.isNotEmpty(list) ? list : voList); + return R.ok(result); } } -- Gitblit v1.9.3