diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/AbstractWifiApi.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/AbstractWifiApi.java index 5c482c3..a85f254 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/AbstractWifiApi.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/AbstractWifiApi.java @@ -6,4 +6,5 @@ package org.wfc.user.api; * @since: 2024-12-30 */ public abstract class AbstractWifiApi implements IWifiApi { + } diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java index 3dcabd9..b501756 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/IWifiApi.java @@ -15,5 +15,6 @@ public interface IWifiApi { boolean reconnectClient(String siteId, String clientMac); - boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto); + boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto settingDto); + } diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java index 1c9a295..6fca056 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/OmadaWifiApi.java @@ -1,19 +1,33 @@ package org.wfc.user.api.omada; +import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.wfc.omada.api.client.OmadaClientApi; import org.wfc.omada.api.client.model.ClientRateLimitSetting; +import org.wfc.omada.api.client.model.CustomRateLimitEntity; import org.wfc.omada.api.client.model.OperationResponseWithoutResult; import org.wfc.omada.api.hotspot.OmadaAuthorizedClientApi; -import org.wfc.user.api.omada.domain.convert.OmadaConvert; +import org.wfc.omada.api.sitesetting.OmadaProfilesApi; +import org.wfc.omada.api.sitesetting.model.CreateRateLimitProfileOpenApiVo; +import org.wfc.omada.api.sitesetting.model.OperationResponseListRateLimitProfileOpenApiVo; +import org.wfc.omada.api.sitesetting.model.RateLimitProfileOpenApiVo; import org.wfc.user.api.omada.domain.dto.ClientRateLimitSettingDto; +import java.math.RoundingMode; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + /** * @description: Omada API * @author: cyc * @since: 2024-12-30 */ +@Slf4j public class OmadaWifiApi extends AbstractOmadaWifiApi { @Autowired @@ -22,6 +36,12 @@ public class OmadaWifiApi extends AbstractOmadaWifiApi { @Autowired private OmadaClientApi omadaClientApi; + @Autowired + private OmadaProfilesApi omadaProfilesApi; + + private static final int KBPS_LIMIT_MAX = 1048576; + private static final int MBPS_LIMIT_MAX = 1024; + @Override public boolean authClient(String siteId, String clientMac) { omadaAuthorizedClientApi.authClient(siteId, clientMac); @@ -41,9 +61,111 @@ public class OmadaWifiApi extends AbstractOmadaWifiApi { } @Override - public boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto clientRateLimitSettingDto) { - ClientRateLimitSetting clientRateLimitSetting = OmadaConvert.INSTANCE.toClientRateLimitSettingDto(clientRateLimitSettingDto); + public boolean updateClientRateLimitSetting(String siteId, String clientMac, ClientRateLimitSettingDto settingDto) { + initRateLimitSettingDto(settingDto); + ClientRateLimitSetting clientRateLimitSetting = new ClientRateLimitSetting(); + if (settingDto.getRateLimitEnable() && ((settingDto.getUpLimitEnable() && settingDto.getUpLimit() > KBPS_LIMIT_MAX) + || (settingDto.getDownLimitEnable() && settingDto.getDownLimit() > KBPS_LIMIT_MAX))) { + // 大于1024Mbps走Profile限速 + Optional rateLimitOptional = getRateLimitByProfile(siteId, settingDto); + String profileId = null; + if (rateLimitOptional.isPresent()) { + profileId = rateLimitOptional.get().getProfileId(); + } else { + CreateRateLimitProfileOpenApiVo newRateLimit = new CreateRateLimitProfileOpenApiVo(); + newRateLimit.setName(UUID.randomUUID().toString()); + newRateLimit.setDownLimitEnable(settingDto.getDownLimitEnable()); + newRateLimit.setDownLimit(settingDto.getDownLimit()); + newRateLimit.setUpLimitEnable(settingDto.getUpLimitEnable()); + newRateLimit.setUpLimit(settingDto.getUpLimit()); + omadaProfilesApi.createRateLimitProfile(siteId, newRateLimit); + Optional newRateLimitOptional = getRateLimitByProfile(siteId, settingDto); + if (newRateLimitOptional.isPresent()) { + profileId = newRateLimitOptional.get().getProfileId(); + } + } + if (profileId == null) { + return false; + } + clientRateLimitSetting.setMode(1); + clientRateLimitSetting.setRateLimitProfileId(profileId); + } else { + // 否则走Custom限速 + clientRateLimitSetting.setMode(0); + CustomRateLimitEntity custom = new CustomRateLimitEntity(); + if (!settingDto.getRateLimitEnable()) { + custom.setDownEnable(false); + custom.setUpEnable(false); + custom.setDownUnit(1); + custom.setDownLimit(1); + custom.setUpUnit(1); + custom.setUpLimit(1); + } else { + custom.setDownEnable(settingDto.getDownLimitEnable()); + if (settingDto.getDownLimitEnable() && settingDto.getDownLimit() > MBPS_LIMIT_MAX) { + // Down Mbps + custom.setDownUnit(2); + double downLimitDouble = NumberUtil.div(settingDto.getDownLimit().intValue(), MBPS_LIMIT_MAX, 0, RoundingMode.HALF_UP); + custom.setDownLimit((int) downLimitDouble); + } else if (settingDto.getDownLimitEnable()) { + // Down Kbps + custom.setDownUnit(1); + custom.setDownLimit(settingDto.getDownLimit().intValue()); + } + custom.setUpEnable(settingDto.getUpLimitEnable()); + if (settingDto.getUpLimitEnable() && settingDto.getUpLimit() > MBPS_LIMIT_MAX) { + // Up Kbps + custom.setUpUnit(2); + double upLimitDouble = NumberUtil.div(settingDto.getUpLimit().intValue(), MBPS_LIMIT_MAX, 0, RoundingMode.HALF_UP); + custom.setUpLimit((int) upLimitDouble); + } else if (settingDto.getUpLimitEnable()) { + // Up Mbps + custom.setUpUnit(1); + custom.setUpLimit(settingDto.getUpLimit().intValue()); + } + } + if (!settingDto.getDownLimitEnable()) { + custom.setDownUnit(1); + custom.setDownLimit(1); + } + if (!settingDto.getUpLimitEnable()) { + custom.setUpUnit(1); + custom.setUpLimit(1); + } + + clientRateLimitSetting.setCustomRateLimit(custom); + + } ResponseEntity response = omadaClientApi.updateClientRateLimitSetting(siteId, clientMac, clientRateLimitSetting); + OperationResponseWithoutResult body = response.getBody(); + if (ObjectUtil.isNotNull(body) && body.getErrorCode() != 0) { + log.error("omada api rate limit errorCode {}, {}", body.getErrorCode(), body.getMsg()); + } return true; } + + private void initRateLimitSettingDto(ClientRateLimitSettingDto settingDto) { + if (ObjectUtil.isNull(settingDto.getRateLimitEnable())) { + settingDto.setRateLimitEnable(false); + } + if (ObjectUtil.isNull(settingDto.getUpLimitEnable())) { + settingDto.setUpLimitEnable(false); + } + if (ObjectUtil.isNull(settingDto.getDownLimitEnable())) { + settingDto.setDownLimitEnable(false); + } + } + + private Optional getRateLimitByProfile(String siteId, ClientRateLimitSettingDto settingDto) { + ResponseEntity rateLimitProfileList = omadaProfilesApi.getRateLimitProfileList(siteId); + if (ObjectUtil.isNull(rateLimitProfileList.getBody())) { + return Optional.empty(); + } + List rateLimitProfiles = rateLimitProfileList.getBody().getResult(); + return rateLimitProfiles.stream().filter(rateLimit -> Objects.equals(settingDto.getDownLimitEnable(), rateLimit.getDownLimitEnable()) + && Objects.equals(settingDto.getUpLimitEnable(), rateLimit.getUpLimitEnable()) + && Objects.equals(settingDto.getDownLimit(), rateLimit.getDownLimit()) + && Objects.equals(settingDto.getUpLimit(), rateLimit.getUpLimit())).findFirst(); + } + } diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/convert/OmadaConvert.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/convert/OmadaConvert.java index 975a3bf..74ff9ca 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/convert/OmadaConvert.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/convert/OmadaConvert.java @@ -2,8 +2,8 @@ package org.wfc.user.api.omada.domain.convert; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import org.wfc.omada.api.client.model.ClientRateLimitSetting; import org.wfc.user.api.omada.domain.dto.ClientRateLimitSettingDto; +import org.wfc.user.domain.UAccount; /** * @description: OmadaMapping @@ -15,5 +15,6 @@ public interface OmadaConvert { OmadaConvert INSTANCE = Mappers.getMapper(OmadaConvert.class); - ClientRateLimitSetting toClientRateLimitSettingDto(ClientRateLimitSettingDto dto); + ClientRateLimitSettingDto toClientRateLimitSettingDto(UAccount account); + } diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/dto/ClientRateLimitSettingDto.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/dto/ClientRateLimitSettingDto.java index 8a058e8..da36c65 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/dto/ClientRateLimitSettingDto.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/dto/ClientRateLimitSettingDto.java @@ -1,130 +1,27 @@ package org.wfc.user.api.omada.domain.dto; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.annotations.ApiModelProperty; - -import javax.validation.Valid; -import javax.validation.constraints.NotNull; -import java.util.Objects; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; /** * ClientRateLimitSetting */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T10:16:05.926+08:00[Asia/Shanghai]") - +@Data public class ClientRateLimitSettingDto { - @JsonProperty("mode") - private Integer mode; - @JsonProperty("rateLimitProfileId") - private String rateLimitProfileId; + @Schema(description = "带宽是否限制") + private Boolean rateLimitEnable; - @JsonProperty("customRateLimit") - private CustomRateLimitEntityDto customRateLimit; + @Schema(description = "下行限速") + private Long downLimit; - public ClientRateLimitSettingDto mode(Integer mode) { - this.mode = mode; - return this; - } + @Schema(description = "下行限速启用") + private Boolean downLimitEnable; - /** - * Rate limit mode should be a value as follows:
0: Custom mode. Apply the given rate limit value to the client;
1: Rate limit profile mode. Find the corresponding rate limit file with rate limit ID and apply it to the client. - * @return mode - */ - @ApiModelProperty(required = true, value = "Rate limit mode should be a value as follows:
0: Custom mode. Apply the given rate limit value to the client;
1: Rate limit profile mode. Find the corresponding rate limit file with rate limit ID and apply it to the client.") - @NotNull + @Schema(description = "上行限速") + private Long upLimit; - - public Integer getMode() { - return mode; - } - - public void setMode(Integer mode) { - this.mode = mode; - } - - public ClientRateLimitSettingDto rateLimitProfileId(String rateLimitProfileId) { - this.rateLimitProfileId = rateLimitProfileId; - return this; - } - - /** - * Rate limit profile ID. Required when ratelimit mode is 1 - * @return rateLimitProfileId - */ - @ApiModelProperty(value = "Rate limit profile ID. Required when ratelimit mode is 1") - - - public String getRateLimitProfileId() { - return rateLimitProfileId; - } - - public void setRateLimitProfileId(String rateLimitProfileId) { - this.rateLimitProfileId = rateLimitProfileId; - } - - public ClientRateLimitSettingDto customRateLimit(CustomRateLimitEntityDto customRateLimit) { - this.customRateLimit = customRateLimit; - return this; - } - - /** - * Get customRateLimit - * @return customRateLimit - */ - @ApiModelProperty(value = "") - - @Valid - - public CustomRateLimitEntityDto getCustomRateLimit() { - return customRateLimit; - } - - public void setCustomRateLimit(CustomRateLimitEntityDto customRateLimit) { - this.customRateLimit = customRateLimit; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ClientRateLimitSettingDto clientRateLimitSetting = (ClientRateLimitSettingDto) o; - return Objects.equals(this.mode, clientRateLimitSetting.mode) && - Objects.equals(this.rateLimitProfileId, clientRateLimitSetting.rateLimitProfileId) && - Objects.equals(this.customRateLimit, clientRateLimitSetting.customRateLimit); - } - - @Override - public int hashCode() { - return Objects.hash(mode, rateLimitProfileId, customRateLimit); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ClientRateLimitSetting {\n"); - - sb.append(" mode: ").append(toIndentedString(mode)).append("\n"); - sb.append(" rateLimitProfileId: ").append(toIndentedString(rateLimitProfileId)).append("\n"); - sb.append(" customRateLimit: ").append(toIndentedString(customRateLimit)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } + @Schema(description = "上行限速启用") + private Boolean upLimitEnable; } diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/dto/CreateRateLimitProfileOpenApiDto.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/dto/CreateRateLimitProfileOpenApiDto.java new file mode 100644 index 0000000..10e98a0 --- /dev/null +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/api/omada/domain/dto/CreateRateLimitProfileOpenApiDto.java @@ -0,0 +1,181 @@ +package org.wfc.user.api.omada.domain.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import java.util.Objects; + +/** + * CreateRateLimitProfileOpenApiVo + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]") + +public class CreateRateLimitProfileOpenApiDto { + @JsonProperty("name") + private String name; + + @JsonProperty("downLimitEnable") + private Boolean downLimitEnable; + + @JsonProperty("downLimit") + private Long downLimit; + + @JsonProperty("upLimitEnable") + private Boolean upLimitEnable; + + @JsonProperty("upLimit") + private Long upLimit; + + public CreateRateLimitProfileOpenApiDto name(String name) { + this.name = name; + return this; + } + + /** + * Rate limit profile name should contain 1 to 64 characters. + * @return name + */ + @ApiModelProperty(required = true, value = "Rate limit profile name should contain 1 to 64 characters.") + @NotNull + +@Pattern(regexp="^[^ ]$|^[^ ].{0,62}[^ ]$") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public CreateRateLimitProfileOpenApiDto downLimitEnable(Boolean downLimitEnable) { + this.downLimitEnable = downLimitEnable; + return this; + } + + /** + * Whether to enable download limit + * @return downLimitEnable + */ + @ApiModelProperty(required = true, value = "Whether to enable download limit") + @NotNull + + + public Boolean getDownLimitEnable() { + return downLimitEnable; + } + + public void setDownLimitEnable(Boolean downLimitEnable) { + this.downLimitEnable = downLimitEnable; + } + + public CreateRateLimitProfileOpenApiDto downLimit(Long downLimit) { + this.downLimit = downLimit; + return this; + } + + /** + * Download limit(Unit: Kbps), this field is required when parameter [downLimitEnable] is true; It should be within the range of 1–10485760. + * @return downLimit + */ + @ApiModelProperty(value = "Download limit(Unit: Kbps), this field is required when parameter [downLimitEnable] is true; It should be within the range of 1–10485760.") + + + public Long getDownLimit() { + return downLimit; + } + + public void setDownLimit(Long downLimit) { + this.downLimit = downLimit; + } + + public CreateRateLimitProfileOpenApiDto upLimitEnable(Boolean upLimitEnable) { + this.upLimitEnable = upLimitEnable; + return this; + } + + /** + * Whether to enable upload limit + * @return upLimitEnable + */ + @ApiModelProperty(required = true, value = "Whether to enable upload limit") + @NotNull + + + public Boolean getUpLimitEnable() { + return upLimitEnable; + } + + public void setUpLimitEnable(Boolean upLimitEnable) { + this.upLimitEnable = upLimitEnable; + } + + public CreateRateLimitProfileOpenApiDto upLimit(Long upLimit) { + this.upLimit = upLimit; + return this; + } + + /** + * Upload limit(Unit: Kbps), this field is required when parameter [upLimitEnable] is true; It should be within the range of 1–10485760. + * @return upLimit + */ + @ApiModelProperty(value = "Upload limit(Unit: Kbps), this field is required when parameter [upLimitEnable] is true; It should be within the range of 1–10485760.") + + + public Long getUpLimit() { + return upLimit; + } + + public void setUpLimit(Long upLimit) { + this.upLimit = upLimit; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + CreateRateLimitProfileOpenApiDto createRateLimitProfileOpenApiVo = (CreateRateLimitProfileOpenApiDto) o; + return Objects.equals(this.name, createRateLimitProfileOpenApiVo.name) && + Objects.equals(this.downLimitEnable, createRateLimitProfileOpenApiVo.downLimitEnable) && + Objects.equals(this.downLimit, createRateLimitProfileOpenApiVo.downLimit) && + Objects.equals(this.upLimitEnable, createRateLimitProfileOpenApiVo.upLimitEnable) && + Objects.equals(this.upLimit, createRateLimitProfileOpenApiVo.upLimit); + } + + @Override + public int hashCode() { + return Objects.hash(name, downLimitEnable, downLimit, upLimitEnable, upLimit); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class CreateRateLimitProfileOpenApiVo {\n"); + + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" downLimitEnable: ").append(toIndentedString(downLimitEnable)).append("\n"); + sb.append(" downLimit: ").append(toIndentedString(downLimit)).append("\n"); + sb.append(" upLimitEnable: ").append(toIndentedString(upLimitEnable)).append("\n"); + sb.append(" upLimit: ").append(toIndentedString(upLimit)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java index 2795ed3..ff9d5a9 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UAccountServiceImpl.java @@ -16,8 +16,8 @@ import org.wfc.common.security.utils.SecurityUtils; import org.wfc.omada.api.client.OmadaClientApi; import org.wfc.user.api.IWifiApi; import org.wfc.user.api.domain.bo.UClientBo; +import org.wfc.user.api.omada.domain.convert.OmadaConvert; import org.wfc.user.api.omada.domain.dto.ClientRateLimitSettingDto; -import org.wfc.user.api.omada.domain.dto.CustomRateLimitEntityDto; import org.wfc.user.domain.UAccount; import org.wfc.user.domain.UClient; import org.wfc.user.domain.vo.UAccountDashboardVo; @@ -95,11 +95,7 @@ public class UAccountServiceImpl extends ServiceImpl i // 取消带宽限速 ClientRateLimitSettingDto clientRateLimitSetting = new ClientRateLimitSettingDto(); - clientRateLimitSetting.setMode(0); - CustomRateLimitEntityDto customRateLimitEntityDto = new CustomRateLimitEntityDto(); - customRateLimitEntityDto.setDownEnable(false); - customRateLimitEntityDto.setUpEnable(false); - clientRateLimitSetting.setCustomRateLimit(customRateLimitEntityDto); + clientRateLimitSetting.setRateLimitEnable(false); wifiApi.updateClientRateLimitSetting(client.getSiteId(), client.getClientMac(), clientRateLimitSetting); } catch (Exception e) { log.info("unAuth error: {}", e.getMessage()); @@ -119,19 +115,8 @@ public class UAccountServiceImpl extends ServiceImpl i wifiApi.authClient(client.getSiteId(), client.getClientMac()); // 带宽限速 - if (account.getRateLimitEnable()) { - ClientRateLimitSettingDto clientRateLimitSetting = new ClientRateLimitSettingDto(); - clientRateLimitSetting.setMode(0); - CustomRateLimitEntityDto customRateLimitEntityDto = new CustomRateLimitEntityDto(); - customRateLimitEntityDto.setDownEnable(account.getDownLimitEnable()); - customRateLimitEntityDto.setDownLimit(account.getDownLimit() == null ? 0 : account.getDownLimit().intValue()); - customRateLimitEntityDto.setDownUnit(1); - customRateLimitEntityDto.setUpEnable(account.getUpLimitEnable()); - customRateLimitEntityDto.setUpLimit(account.getUpLimit() == null ? 0 : account.getUpLimit().intValue()); - customRateLimitEntityDto.setUpUnit(1); - clientRateLimitSetting.setCustomRateLimit(customRateLimitEntityDto); - wifiApi.updateClientRateLimitSetting(client.getSiteId(), client.getClientMac(), clientRateLimitSetting); - } + ClientRateLimitSettingDto clientRateLimitSetting = OmadaConvert.INSTANCE.toClientRateLimitSettingDto(account); + wifiApi.updateClientRateLimitSetting(client.getSiteId(), client.getClientMac(), clientRateLimitSetting); } } diff --git a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java index 182e970..38f3c02 100644 --- a/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java +++ b/wfc-modules/wfc-user/src/main/java/org/wfc/user/service/impl/UOrderServiceImpl.java @@ -12,8 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.wfc.common.security.utils.SecurityUtils; import org.wfc.user.api.IWifiApi; +import org.wfc.user.api.omada.domain.convert.OmadaConvert; import org.wfc.user.api.omada.domain.dto.ClientRateLimitSettingDto; -import org.wfc.user.api.omada.domain.dto.CustomRateLimitEntityDto; import org.wfc.user.domain.UAccount; import org.wfc.user.domain.UClient; import org.wfc.user.domain.UOrder; @@ -105,19 +105,8 @@ public class UOrderServiceImpl extends ServiceImpl impleme } wifiApi.authClient(client.getSiteId(), client.getClientMac()); // 带宽限速 - if (account.getRateLimitEnable()) { - ClientRateLimitSettingDto clientRateLimitSetting = new ClientRateLimitSettingDto(); - clientRateLimitSetting.setMode(0); - CustomRateLimitEntityDto customRateLimitEntityDto = new CustomRateLimitEntityDto(); - customRateLimitEntityDto.setDownEnable(account.getDownLimitEnable()); - customRateLimitEntityDto.setDownLimit(account.getDownLimit() == null ? 0 : account.getDownLimit().intValue()); - customRateLimitEntityDto.setDownUnit(1); - customRateLimitEntityDto.setUpEnable(account.getUpLimitEnable()); - customRateLimitEntityDto.setUpLimit(account.getUpLimit() == null ? 0 : account.getUpLimit().intValue()); - customRateLimitEntityDto.setUpUnit(1); - clientRateLimitSetting.setCustomRateLimit(customRateLimitEntityDto); - wifiApi.updateClientRateLimitSetting(client.getSiteId(), client.getClientMac(), clientRateLimitSetting); - } + ClientRateLimitSettingDto clientRateLimitSetting = OmadaConvert.INSTANCE.toClientRateLimitSettingDto(account); + wifiApi.updateClientRateLimitSetting(client.getSiteId(), client.getClientMac(), clientRateLimitSetting); } } @@ -170,6 +159,7 @@ public class UOrderServiceImpl extends ServiceImpl impleme public boolean saveOrder(UOrder order) { order.setUserId(SecurityUtils.getUserId()); order.setStatus(OrderStatusEnum.UNPAID.getCode()); + order.setOrderNo(System.currentTimeMillis() + StrUtil.EMPTY); this.save(order); // 支付成功回调 paySuccess(order.getId());