2
0

fix: 修复更换套餐问题

This commit is contained in:
caiyuchao
2024-12-31 19:24:25 +08:00
parent d55b89b337
commit 8b39b00e3c
3 changed files with 15 additions and 3 deletions

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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<UOrderMapper, UOrder> impleme
// 保存或更新账户信息
UAccount account = accountService.getOne(Wrappers.<UAccount>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<UOrderMapper, UOrder> impleme
List<UClient> clients = clientService.list(Wrappers.<UClient>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();