2
0

fix: billRule不启用情况

This commit is contained in:
caiyuchao
2025-06-25 12:24:22 +08:00
parent 602bb0c31d
commit 50c5a4c192
4 changed files with 18 additions and 6 deletions

View File

@@ -205,7 +205,7 @@ public class UAccountServiceImpl extends ServiceImpl<UAccountMapper, UAccount> i
wifiApi.cancelAuthClient(site.getSiteId(), client.getMac()); wifiApi.cancelAuthClient(site.getSiteId(), client.getMac());
continue; continue;
} }
if (!AccountUtil.isValid(account, current)) { if (!AccountUtil.isValid(account, current, enabledBalance)) {
wifiApi.cancelAuthClient(site.getSiteId(), client.getMac()); wifiApi.cancelAuthClient(site.getSiteId(), client.getMac());
continue; continue;
} }
@@ -233,7 +233,9 @@ public class UAccountServiceImpl extends ServiceImpl<UAccountMapper, UAccount> i
return; return;
} }
Date current = new Date(); Date current = new Date();
if (AccountUtil.isValid(account, current)) { List<UBillRule> billRules = billRuleMapper.selectList(Wrappers.<UBillRule>lambdaQuery().eq(UBillRule::getEnable, true));
Optional<UBillRule> billRuleOptional = billRules.stream().findFirst();
if (AccountUtil.isValid(account, current, billRuleOptional.isPresent())) {
if (account.getClientNumEnable()) { if (account.getClientNumEnable()) {
int onlineClientNum = uClientService.getCurrentClients(client.getUserId()).size(); int onlineClientNum = uClientService.getCurrentClients(client.getUserId()).size();

View File

@@ -26,6 +26,7 @@ import org.wfc.omada.api.organization.model.OperationResponseGridVoSiteSummaryIn
import org.wfc.omada.api.organization.model.SiteSummaryInfo; import org.wfc.omada.api.organization.model.SiteSummaryInfo;
import org.wfc.user.api.IWifiApi; import org.wfc.user.api.IWifiApi;
import org.wfc.user.domain.UAccount; import org.wfc.user.domain.UAccount;
import org.wfc.user.domain.UBillRule;
import org.wfc.user.domain.UCdr; import org.wfc.user.domain.UCdr;
import org.wfc.user.domain.UCdrHistory; import org.wfc.user.domain.UCdrHistory;
import org.wfc.user.domain.UClient; import org.wfc.user.domain.UClient;
@@ -36,6 +37,7 @@ import org.wfc.user.domain.constant.UserTypeEnum;
import org.wfc.user.domain.vo.UCdrClientVo; import org.wfc.user.domain.vo.UCdrClientVo;
import org.wfc.user.domain.vo.UCdrHistoryUserVo; import org.wfc.user.domain.vo.UCdrHistoryUserVo;
import org.wfc.user.domain.vo.UCdrUserVo; import org.wfc.user.domain.vo.UCdrUserVo;
import org.wfc.user.mapper.UBillRuleMapper;
import org.wfc.user.mapper.UCdrMapper; import org.wfc.user.mapper.UCdrMapper;
import org.wfc.user.service.IUAccountService; import org.wfc.user.service.IUAccountService;
import org.wfc.user.service.IUCdrHistoryService; import org.wfc.user.service.IUCdrHistoryService;
@@ -48,6 +50,7 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -91,6 +94,9 @@ public class UCdrServiceImpl extends ServiceImpl<UCdrMapper, UCdr> implements IU
@Autowired @Autowired
private IUClientService uClientService; private IUClientService uClientService;
@Autowired
private UBillRuleMapper billRuleMapper;
@Override @Override
public UCdrUserVo getByUser() { public UCdrUserVo getByUser() {
@@ -184,11 +190,13 @@ public class UCdrServiceImpl extends ServiceImpl<UCdrMapper, UCdr> implements IU
if (CollUtil.isEmpty(userIds)) { if (CollUtil.isEmpty(userIds)) {
return macs; return macs;
} }
List<UBillRule> billRules = billRuleMapper.selectList(Wrappers.<UBillRule>lambdaQuery().eq(UBillRule::getEnable, true));
Optional<UBillRule> billRuleOptional = billRules.stream().findFirst();
List<UAccount> accounts = accountService.list(Wrappers.<UAccount>lambdaQuery().in(UAccount::getUserId, userIds)); List<UAccount> accounts = accountService.list(Wrappers.<UAccount>lambdaQuery().in(UAccount::getUserId, userIds));
for (UClient unAuthClient : unAuthClients) { for (UClient unAuthClient : unAuthClients) {
for (UAccount account : accounts) { for (UAccount account : accounts) {
if (Objects.equals(unAuthClient.getUserId(), account.getUserId())) { if (Objects.equals(unAuthClient.getUserId(), account.getUserId())) {
if (AccountUtil.isValid(account, new Date())) { if (AccountUtil.isValid(account, new Date(), billRuleOptional.isPresent())) {
if (account.getClientNumEnable()) { if (account.getClientNumEnable()) {
int onlineClientNum = uClientService.getCurrentClients(account.getUserId()).size(); int onlineClientNum = uClientService.getCurrentClients(account.getUserId()).size();
if (onlineClientNum >= account.getClientNum()) { if (onlineClientNum >= account.getClientNum()) {

View File

@@ -129,7 +129,9 @@ public class UOrderServiceImpl extends ServiceImpl<UOrderMapper, UOrder> impleme
} else { } else {
accountId = account.getId(); accountId = account.getId();
oldBalance = account.getBalance(); oldBalance = account.getBalance();
isValid = AccountUtil.isValid(account, new Date()); List<UBillRule> billRules = billRuleMapper.selectList(Wrappers.<UBillRule>lambdaQuery().eq(UBillRule::getEnable, true));
Optional<UBillRule> billRuleOptional = billRules.stream().findFirst();
isValid = AccountUtil.isValid(account, new Date(), billRuleOptional.isPresent());
} }
if (OrderTypeEnum.PACKAGE.getCode().equals(order.getType())) { if (OrderTypeEnum.PACKAGE.getCode().equals(order.getType())) {
// 套餐 // 套餐

View File

@@ -21,12 +21,12 @@ public class AccountUtil {
* @param current 当前时间 * @param current 当前时间
* @return boolean * @return boolean
*/ */
public static boolean isValid(UAccount account, Date current) { public static boolean isValid(UAccount account, Date current, boolean enableBalance) {
// 过期/流量已用完/时长已用完应取消授权 // 过期/流量已用完/时长已用完应取消授权
return ((DateUtil.compare(account.getStartTime(), current) <= 0 && DateUtil.compare(account.getEndTime(), current) > 0) return ((DateUtil.compare(account.getStartTime(), current) <= 0 && DateUtil.compare(account.getEndTime(), current) > 0)
&& (!account.getTrafficEnable() || account.getTrafficUsed() <= account.getTraffic()) && (!account.getTrafficEnable() || account.getTrafficUsed() <= account.getTraffic())
&& (!account.getDurationEnable() || account.getDurationUsed() <= account.getDuration())) && (!account.getDurationEnable() || account.getDurationUsed() <= account.getDuration()))
|| (ObjectUtil.isNotNull(account.getBalance()) && account.getBalance().compareTo(BigDecimal.ZERO) > 0 || (enableBalance && ObjectUtil.isNotNull(account.getBalance()) && account.getBalance().compareTo(BigDecimal.ZERO) > 0
&& (ObjectUtil.isNull(account.getBalanceUsed()) || account.getBalanceUsed().compareTo(BigDecimal.ZERO) == 0 && (ObjectUtil.isNull(account.getBalanceUsed()) || account.getBalanceUsed().compareTo(BigDecimal.ZERO) == 0
|| (ObjectUtil.isNotNull(account.getBalanceUsed()) && account.getBalance().compareTo(BigDecimal.ZERO) > 0 || (ObjectUtil.isNotNull(account.getBalanceUsed()) && account.getBalance().compareTo(BigDecimal.ZERO) > 0
&& account.getBalance().subtract(account.getBalanceUsed()).compareTo(BigDecimal.ZERO) > 0))); && account.getBalance().subtract(account.getBalanceUsed()).compareTo(BigDecimal.ZERO) > 0)));