fix: 修复取消授权问题
This commit is contained in:
@@ -11,4 +11,10 @@ public class WifiConstants {
|
|||||||
* 密码最大错误次数
|
* 密码最大错误次数
|
||||||
*/
|
*/
|
||||||
public final static int ERROR_CODE_SUCCESS = 0;
|
public final static int ERROR_CODE_SUCCESS = 0;
|
||||||
|
|
||||||
|
public final static int AUTH_STATUS_AUTHORIZED = 2;
|
||||||
|
|
||||||
|
public final static int PAGE = 1;
|
||||||
|
|
||||||
|
public final static int PAGE_SIZE = 1000;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.wfc.common.core.constant.WifiConstants;
|
||||||
import org.wfc.common.core.domain.LoginUser;
|
import org.wfc.common.core.domain.LoginUser;
|
||||||
|
import org.wfc.common.core.utils.ResponseUtils;
|
||||||
import org.wfc.common.security.utils.SecurityUtils;
|
import org.wfc.common.security.utils.SecurityUtils;
|
||||||
|
import org.wfc.omada.api.client.OmadaClientApi;
|
||||||
|
import org.wfc.omada.api.client.model.ClientInfo;
|
||||||
|
import org.wfc.omada.api.client.model.OperationResponseClientGridVoClientInfo;
|
||||||
|
import org.wfc.omada.api.organization.OmadaSiteApi;
|
||||||
|
import org.wfc.omada.api.organization.model.OperationResponseGridVoSiteSummaryInfo;
|
||||||
|
import org.wfc.omada.api.organization.model.SiteSummaryInfo;
|
||||||
import org.wfc.user.api.IWifiApi;
|
import org.wfc.user.api.IWifiApi;
|
||||||
import org.wfc.user.api.domain.bo.UClientBo;
|
import org.wfc.user.api.domain.bo.UClientBo;
|
||||||
import org.wfc.user.api.omada.domain.convert.OmadaConvert;
|
import org.wfc.user.api.omada.domain.convert.OmadaConvert;
|
||||||
@@ -67,6 +76,12 @@ public class UAccountServiceImpl extends ServiceImpl<UAccountMapper, UAccount> i
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UBillRuleMapper billRuleMapper;
|
private UBillRuleMapper billRuleMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OmadaSiteApi omadaSiteApi;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OmadaClientApi omadaClientApi;
|
||||||
|
|
||||||
|
|
||||||
// 定时任务时间间隔
|
// 定时任务时间间隔
|
||||||
private static final int JOB_PERIOD = -30;
|
private static final int JOB_PERIOD = -30;
|
||||||
@@ -221,6 +236,42 @@ public class UAccountServiceImpl extends ServiceImpl<UAccountMapper, UAccount> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cancelAuthClient();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cancelAuthClient() {
|
||||||
|
// 查出所有已授权client, 根据client的site和mac去查当前user, 再查user的account是否有可用套餐和余额,没有则取消授权
|
||||||
|
ResponseEntity<OperationResponseGridVoSiteSummaryInfo> siteRes = omadaSiteApi.getSiteList(WifiConstants.PAGE, WifiConstants.PAGE_SIZE);
|
||||||
|
Date current = new Date();
|
||||||
|
if (ObjectUtil.isNotNull(siteRes.getBody())) {
|
||||||
|
ResponseUtils.logResponse(siteRes.getBody().getErrorCode(), siteRes.getBody().getMsg());
|
||||||
|
List<SiteSummaryInfo> sites = siteRes.getBody().getResult().getData();
|
||||||
|
for (SiteSummaryInfo site : sites) {
|
||||||
|
ResponseEntity<OperationResponseClientGridVoClientInfo> clientRes = omadaClientApi.getGridActiveClients(site.getSiteId(), WifiConstants.PAGE, WifiConstants.PAGE_SIZE);
|
||||||
|
if (ObjectUtil.isNull(clientRes.getBody())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ResponseUtils.logResponse(clientRes.getBody().getErrorCode(), clientRes.getBody().getMsg());
|
||||||
|
List<ClientInfo> clients = clientRes.getBody().getResult().getData().stream()
|
||||||
|
.filter(c -> c.getAuthStatus() == WifiConstants.AUTH_STATUS_AUTHORIZED).collect(Collectors.toList());
|
||||||
|
|
||||||
|
for (ClientInfo client : clients) {
|
||||||
|
UClient loginClient = clientMapper.selectOne(Wrappers.<UClient>lambdaQuery().eq(UClient::getSiteId, site.getSiteId())
|
||||||
|
.eq(UClient::getClientMac, client.getMac()), false);
|
||||||
|
if (ObjectUtil.isNull(loginClient) || ObjectUtil.isNull(loginClient.getUserId())) {
|
||||||
|
wifiApi.cancelAuthClient(site.getSiteId(), client.getMac());
|
||||||
|
}
|
||||||
|
UAccount account = this.getOne(Wrappers.<UAccount>lambdaQuery().eq(UAccount::getUserId, loginClient.getUserId()), false);
|
||||||
|
if (ObjectUtil.isNull(account)) {
|
||||||
|
wifiApi.cancelAuthClient(site.getSiteId(), client.getMac());
|
||||||
|
}
|
||||||
|
if (!AccountUtil.isValid(account, current)) {
|
||||||
|
wifiApi.cancelAuthClient(site.getSiteId(), client.getMac());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void authClientAndRateLimit(UClientBo client) {
|
public void authClientAndRateLimit(UClientBo client) {
|
||||||
|
|||||||
Reference in New Issue
Block a user