From 4ca38eb471b9be44c5de6ce498e689305e147305 Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Fri, 27 Dec 2024 18:30:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B4=AD=E4=B9=B0=E5=A5=97=E9=A4=90?= =?UTF-8?q?=E5=B8=A6=E5=AE=BD=E9=99=90=E9=80=9F=E5=92=8C=E5=A5=97=E9=A4=90?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E5=8F=96=E6=B6=88=E5=B8=A6=E5=AE=BD=E9=99=90?= =?UTF-8?q?=E9=80=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/UAccountServiceImpl.java | 9 +++++ .../user/service/impl/UOrderServiceImpl.java | 38 +++++++++++++++---- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java index 6cc5c96..35de9fe 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java @@ -88,6 +88,15 @@ public class UAccountServiceImpl extends ServiceImpl i for (UClient client : clients) { try { omadaAuthorizedClientApi.cancelAuthClient(client.getSiteId(), client.getClientMac()); + + // 取消带宽限速 + ClientRateLimitSetting clientRateLimitSetting = new ClientRateLimitSetting(); + clientRateLimitSetting.setMode(0); + CustomRateLimitEntity customRateLimitEntity = new CustomRateLimitEntity(); + customRateLimitEntity.setDownEnable(false); + customRateLimitEntity.setUpEnable(false); + clientRateLimitSetting.setCustomRateLimit(customRateLimitEntity); + omadaClientApi.updateClientRateLimitSetting(client.getSiteId(), client.getClientMac(), clientRateLimitSetting); } catch (Exception e) { log.info("unAuth error: {}", e.getMessage()); } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java index f7118ff..06ca9e5 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java @@ -11,6 +11,9 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.wfc.common.security.utils.SecurityUtils; +import org.wfc.omada.api.client.OmadaClientApi; +import org.wfc.omada.api.client.model.ClientRateLimitSetting; +import org.wfc.omada.api.client.model.CustomRateLimitEntity; import org.wfc.omada.api.hotspot.OmadaAuthorizedClientApi; import org.wfc.user.domain.UAccount; import org.wfc.user.domain.UClient; @@ -58,6 +61,9 @@ public class UOrderServiceImpl extends ServiceImpl impleme @Autowired private OmadaAuthorizedClientApi omadaAuthorizedClientApi; + @Autowired + private OmadaClientApi omadaClientApi; + public void paySuccess(Long orderId) { // 支付成功回调(预留) @@ -66,14 +72,6 @@ public class UOrderServiceImpl extends ServiceImpl impleme order.setStatus(OrderStatusEnum.PAID.getCode()); this.updateById(order); - // 授权当前用户的所有设备访问wifi - List clients = clientService.list(Wrappers.lambdaQuery().eq(UClient::getUserId, order.getUserId())); - for (UClient client : clients) { - if (StrUtil.isNotBlank(client.getSiteId())) { - omadaAuthorizedClientApi.authClient(client.getSiteId(), client.getClientMac()); - } - } - // 保存或更新账户信息 UAccount account = accountService.getOne(Wrappers.lambdaQuery().eq(UAccount::getUserId, order.getUserId()), false); Long accountId = null; @@ -97,6 +95,30 @@ public class UOrderServiceImpl extends ServiceImpl impleme } account.setId(accountId); accountService.saveOrUpdate(account); + + // 授权当前用户的所有设备访问wifi + List clients = clientService.list(Wrappers.lambdaQuery().eq(UClient::getUserId, order.getUserId())); + for (UClient client : clients) { + if (StrUtil.isNotBlank(client.getSiteId())) { + omadaAuthorizedClientApi.authClient(client.getSiteId(), client.getClientMac()); + + // 带宽限速 + if (account.getRateLimitEnable()) { + ClientRateLimitSetting clientRateLimitSetting = new ClientRateLimitSetting(); + clientRateLimitSetting.setMode(0); + CustomRateLimitEntity customRateLimitEntity = new CustomRateLimitEntity(); + customRateLimitEntity.setDownEnable(account.getDownLimitEnable()); + customRateLimitEntity.setDownLimit(account.getDownLimit() == null ? 0 : account.getDownLimit().intValue()); + customRateLimitEntity.setDownUnit(1); + customRateLimitEntity.setUpEnable(account.getUpLimitEnable()); + customRateLimitEntity.setUpLimit(account.getUpLimit() == null ? 0 : account.getUpLimit().intValue()); + customRateLimitEntity.setUpUnit(1); + clientRateLimitSetting.setCustomRateLimit(customRateLimitEntity); + omadaClientApi.updateClientRateLimitSetting(client.getSiteId(), client.getClientMac(), clientRateLimitSetting); + } + } + } + } private void callbackPackage(UOrder order, UAccount account) {