fix: 修复更换套餐问题
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user