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 cancelAuthClient(String siteId, String clientMac);
boolean reconnectClient(String siteId, String clientMac);
boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto); boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto);
} }

View File

@@ -34,6 +34,12 @@ public class OmadaWifiApi extends AbstractOmadaWifiApi {
return true; return true;
} }
@Override
public boolean reconnectClient(String siteId, String clientMac) {
omadaClientApi.reconnectClient(siteId, clientMac);
return false;
}
@Override @Override
public boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto) { public boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto) {
ClientRateLimitSetting clientRateLimitSetting = OmadaConvert.INSTANCE.toClientRateLimitSettingDto(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.IUOrderService;
import org.wfc.user.service.IUPackageService; import org.wfc.user.service.IUPackageService;
import org.wfc.user.service.IURateLimitService; import org.wfc.user.service.IURateLimitService;
import org.wfc.user.util.AccountUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; 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); UAccount account = accountService.getOne(Wrappers.<UAccount>lambdaQuery().eq(UAccount::getUserId, order.getUserId()), false);
Long accountId = null; Long accountId = null;
boolean isValid = false;
if (ObjectUtil.isNull(account)) { if (ObjectUtil.isNull(account)) {
account = new UAccount(); account = new UAccount();
account.setUserId(order.getUserId()); account.setUserId(order.getUserId());
account.setBalance(BigDecimal.ZERO); account.setBalance(BigDecimal.ZERO);
} else { } else {
accountId = account.getId(); accountId = account.getId();
isValid = AccountUtil.isValid(account, new Date());
} }
if (OrderTypeEnum.PACKAGE.getCode().equals(order.getType())) { 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())); List<UClient> clients = clientService.list(Wrappers.<UClient>lambdaQuery().eq(UClient::getUserId, order.getUserId()));
for (UClient client : clients) { for (UClient client : clients) {
if (StrUtil.isNotBlank(client.getSiteId())) { if (StrUtil.isNotBlank(client.getSiteId())) {
// 先取消授权再重新授权,为了截取时间 // 套餐生效已授权时调reconnect重连接口以便截取时间
wifiApi.cancelAuthClient(client.getSiteId(), client.getClientMac()); if (isValid) {
wifiApi.reconnectClient(client.getSiteId(), client.getClientMac());
}
wifiApi.authClient(client.getSiteId(), client.getClientMac()); wifiApi.authClient(client.getSiteId(), client.getClientMac());
// 带宽限速 // 带宽限速
if (account.getRateLimitEnable()) { if (account.getRateLimitEnable()) {
ClientRateLimitSettingDto clientRateLimitSetting = new ClientRateLimitSettingDto(); ClientRateLimitSettingDto clientRateLimitSetting = new ClientRateLimitSettingDto();