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) {