From 8b39b00e3ccc1024df179ec6f018bf1a962c76a0 Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Tue, 31 Dec 2024 19:24:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=8D=A2?= =?UTF-8?q?=E5=A5=97=E9=A4=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/wfc/user/api/IWifiApi.java | 2 ++ .../main/java/org/wfc/user/api/omada/OmadaWifiApi.java | 6 ++++++ .../org/wfc/user/service/impl/UOrderServiceImpl.java | 10 +++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java index 7a308f9..3dcabd9 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java @@ -13,5 +13,7 @@ public interface IWifiApi { boolean cancelAuthClient(String siteId, String clientMac); + boolean reconnectClient(String siteId, String clientMac); + boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto); } diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java index 753ef46..1c9a295 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java @@ -34,6 +34,12 @@ public class OmadaWifiApi extends AbstractOmadaWifiApi { return true; } + @Override + public boolean reconnectClient(String siteId, String clientMac) { + omadaClientApi.reconnectClient(siteId, clientMac); + return false; + } + @Override public boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto) { ClientRateLimitSetting clientRateLimitSetting = OmadaConvert.INSTANCE.toClientRateLimitSettingDto(clientRateLimitSettingDto); diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java index 4d561a7..182e970 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java @@ -28,6 +28,7 @@ import org.wfc.user.service.IUClientService; import org.wfc.user.service.IUOrderService; import org.wfc.user.service.IUPackageService; import org.wfc.user.service.IURateLimitService; +import org.wfc.user.util.AccountUtil; import java.math.BigDecimal; import java.util.Date; @@ -71,12 +72,14 @@ public class UOrderServiceImpl extends ServiceImpl impleme // 保存或更新账户信息 UAccount account = accountService.getOne(Wrappers.lambdaQuery().eq(UAccount::getUserId, order.getUserId()), false); Long accountId = null; + boolean isValid = false; if (ObjectUtil.isNull(account)) { account = new UAccount(); account.setUserId(order.getUserId()); account.setBalance(BigDecimal.ZERO); } else { accountId = account.getId(); + isValid = AccountUtil.isValid(account, new Date()); } if (OrderTypeEnum.PACKAGE.getCode().equals(order.getType())) { // 套餐 @@ -96,10 +99,11 @@ public class UOrderServiceImpl extends ServiceImpl impleme List clients = clientService.list(Wrappers.lambdaQuery().eq(UClient::getUserId, order.getUserId())); for (UClient client : clients) { if (StrUtil.isNotBlank(client.getSiteId())) { - // 先取消授权再重新授权,为了截取时间 - wifiApi.cancelAuthClient(client.getSiteId(), client.getClientMac()); + // 套餐生效已授权时,调reconnect重连接口,以便截取时间 + if (isValid) { + wifiApi.reconnectClient(client.getSiteId(), client.getClientMac()); + } wifiApi.authClient(client.getSiteId(), client.getClientMac()); - // 带宽限速 if (account.getRateLimitEnable()) { ClientRateLimitSettingDto clientRateLimitSetting = new ClientRateLimitSettingDto();