diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/controller/ClientController.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/controller/ClientController.java index 79ae0cc..c73f969 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/controller/ClientController.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/controller/ClientController.java @@ -14,7 +14,6 @@ import org.wfc.common.security.utils.SecurityUtils; import org.wfc.omada.api.client.OmadaClientApi; import org.wfc.omada.api.client.model.OperationResponseClientDetail; import org.wfc.omada.api.hotspot.OmadaAuthorizedClientApi; -import org.wfc.omada.api.hotspot.model.OperationResponseWithoutResult; import org.wfc.user.api.domain.UUser; import java.util.Objects; @@ -49,8 +48,9 @@ public class ClientController extends BaseController { if (StringUtils.isBlank(site) || StringUtils.isBlank(clientMac)) { return error("not mac address"); } - ResponseEntity posts = omadaAuthorizedClientApi.authClient(site, clientMac); - return success(Objects.requireNonNull(posts.getBody()).getMsg()); +// ResponseEntity posts = omadaAuthorizedClientApi.authClient(site, clientMac); +// return success(Objects.requireNonNull(posts.getBody()).getMsg()); + return success(); } /** @@ -69,8 +69,9 @@ public class ClientController extends BaseController { if (StringUtils.isBlank(site) || StringUtils.isBlank(clientMac)) { return error("not mac address"); } - ResponseEntity posts = omadaAuthorizedClientApi.cancelAuthClient(site, clientMac); - return success(Objects.requireNonNull(posts.getBody()).getMsg()); +// ResponseEntity posts = omadaAuthorizedClientApi.cancelAuthClient(site, clientMac); +// return success(Objects.requireNonNull(posts.getBody()).getMsg()); + return success(); } /** diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java index abaafe3..2795ed3 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java @@ -26,6 +26,7 @@ import org.wfc.user.mapper.UAccountMapper; import org.wfc.user.mapper.UCdrMapper; import org.wfc.user.mapper.UClientMapper; import org.wfc.user.service.IUAccountService; +import org.wfc.user.util.AccountUtil; import java.math.BigDecimal; import java.util.Date; @@ -56,12 +57,17 @@ public class UAccountServiceImpl extends ServiceImpl i @Autowired private OmadaClientApi omadaClientApi; + // 定时任务时间间隔 + private static final int JOB_PERIOD = -30; + @Transactional(rollbackFor = Exception.class) public void statAndCancelAuthUser() { // 定时任务查询所有未过期或刚过期(失效时间+定时任务间隔时间)的账户套餐,套餐过期/流量用完/时长用完则取消授权 Date current = new Date(); - DateTime endTime = DateUtil.offsetSecond(current, -30); - List accounts = this.list(Wrappers.lambdaQuery().gt(UAccount::getEndTime, endTime).isNotNull(UAccount::getUserId)); + DateTime endTime = DateUtil.offsetSecond(current, JOB_PERIOD); + List accounts = this.list(Wrappers.lambdaQuery() + .le(UAccount::getStartTime, endTime).gt(UAccount::getEndTime, endTime) + .isNotNull(UAccount::getUserId)); // 更新账户已使用流量,已使用时长 for (UAccount account : accounts) { if (ObjectUtil.isNull(account.getUserId())) { @@ -75,10 +81,8 @@ public class UAccountServiceImpl extends ServiceImpl i } this.updateBatchById(accounts); - // 过期/流量已用完/时长已用完应取消授权 - List userIds = accounts.stream().filter(account -> (account.getEndTime().before(endTime) && account.getEndTime().after(current)) - || (account.getTrafficEnable() && account.getTrafficUsed() > account.getTraffic()) - || (account.getDurationEnable() && account.getDurationUsed() > account.getDuration())) + // 取消授权 + List userIds = accounts.stream().filter(account -> !AccountUtil.isValid(account, current)) .map(UAccount::getUserId) .collect(Collectors.toList()); @@ -111,9 +115,7 @@ public class UAccountServiceImpl extends ServiceImpl i return; } Date current = new Date(); - if (account.getStartTime().before(current) && account.getEndTime().after(current) - && (!account.getTrafficEnable() || account.getTrafficUsed() <= account.getTraffic()) - && (!account.getDurationEnable() || account.getDurationUsed() <= account.getDuration())) { + if (AccountUtil.isValid(account, current)) { wifiApi.authClient(client.getSiteId(), client.getClientMac()); // 带宽限速 diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/util/AccountUtil.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/util/AccountUtil.java new file mode 100644 index 0000000..ae006fe --- /dev/null +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/util/AccountUtil.java @@ -0,0 +1,28 @@ +package org.wfc.user.util; + +import cn.hutool.core.date.DateUtil; +import org.wfc.user.domain.UAccount; + +import java.util.Date; + +/** + * @description: 账户工具 + * @author: cyc + * @since: 2024-12-31 + */ +public class AccountUtil { + + /** + * 检验账户有效 + * + * @param account 账户 + * @param current 当前时间 + * @return boolean + */ + public static boolean isValid(UAccount account, Date current) { + // 过期/流量已用完/时长已用完应取消授权 + return (DateUtil.compare(account.getStartTime(), current) <= 0 && DateUtil.compare(account.getEndTime(), current) > 0) + && (!account.getTrafficEnable() || account.getTrafficUsed() <= account.getTraffic()) + && (!account.getDurationEnable() || account.getDurationUsed() <= account.getDuration()); + } +}