From e173c62c0c2e38a85443d45199b73e83d3eb088c Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Wed, 15 Jan 2025 17:59:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=8D=A2omad?= =?UTF-8?q?a=E5=8F=82=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/wfc/omada/config/FeignConfig.java | 12 ++++++++++-- .../org/wfc/job/controller/SysJobController.java | 13 +++++++++++++ .../src/main/java/org/wfc/job/task/CdrInfoTask.java | 7 ++++++- .../system/service/impl/SysDeviceServiceImpl.java | 13 +++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/wfc-api/wfc-api-omada/src/main/java/org/wfc/omada/config/FeignConfig.java b/wfc-api/wfc-api-omada/src/main/java/org/wfc/omada/config/FeignConfig.java index f79dae1..5ca6ce0 100644 --- a/wfc-api/wfc-api-omada/src/main/java/org/wfc/omada/config/FeignConfig.java +++ b/wfc-api/wfc-api-omada/src/main/java/org/wfc/omada/config/FeignConfig.java @@ -74,6 +74,15 @@ public class FeignConfig implements RequestInterceptor { authorization = PRE_ACCESS_TOKEN + cacheAccessToken; } if (StrUtil.isNotBlank(authorization)) { + // 更新最新的omadaUrl和omadacId + requestTemplate.target(omadaProperties.getOmadaUrl()); + String path = requestTemplate.path(); + String uri = path.substring(path.indexOf("/openapi/v1/") + 12); + String lastUri = uri.substring(uri.indexOf("/")); + if (!uri.startsWith("msp")) { + requestTemplate.uri("/openapi/v1/" + omadaProperties.getOmadacId() + lastUri); + } + // 添加授权请求头 requestTemplate.header(AUTHORIZATION, authorization); } @@ -103,8 +112,7 @@ public class FeignConfig implements RequestInterceptor { ResponseEntity> responseEntity = restTemplate.exchange(uriString, HttpMethod.POST, request, new ParameterizedTypeReference>() { }); - OmadaResult omadaResult = responseEntity.getBody(); - return omadaResult; + return responseEntity.getBody(); } } \ No newline at end of file diff --git a/wfc-modules/wfc-job/src/main/java/org/wfc/job/controller/SysJobController.java b/wfc-modules/wfc-job/src/main/java/org/wfc/job/controller/SysJobController.java index 633cef0..de648c8 100644 --- a/wfc-modules/wfc-job/src/main/java/org/wfc/job/controller/SysJobController.java +++ b/wfc-modules/wfc-job/src/main/java/org/wfc/job/controller/SysJobController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.wfc.common.core.constant.Constants; +import org.wfc.common.core.domain.R; import org.wfc.common.core.exception.job.TaskException; import org.wfc.common.core.utils.StringUtils; import org.wfc.common.core.utils.poi.ExcelUtil; @@ -23,6 +24,7 @@ import org.wfc.common.log.enums.BusinessType; import org.wfc.common.security.utils.SecurityUtils; import org.wfc.job.domain.SysJob; import org.wfc.job.service.ISysJobService; +import org.wfc.job.task.CdrInfoTask; import org.wfc.job.util.CronUtils; import org.wfc.job.util.ScheduleUtils; @@ -41,6 +43,9 @@ public class SysJobController extends BaseController @Autowired private ISysJobService jobService; + @Autowired + private CdrInfoTask cdrInfoTask; + /** * 查询定时任务列表 */ @@ -169,6 +174,14 @@ public class SysJobController extends BaseController @PutMapping("/run") public AjaxResult run(@RequestBody SysJob job) throws SchedulerException { + SysJob sysJob = jobService.selectJobById(job.getJobId()); + if (sysJob != null && sysJob.getInvokeTarget().contains("cdrInfoTask")) { + R omadaResult = cdrInfoTask.testOmadaApi(); + if (omadaResult.getCode() != 200) { + return error(omadaResult.getMsg()); + } + } + boolean result = jobService.run(job); return result ? success() : error("任务不存在或已过期!"); } diff --git a/wfc-modules/wfc-job/src/main/java/org/wfc/job/task/CdrInfoTask.java b/wfc-modules/wfc-job/src/main/java/org/wfc/job/task/CdrInfoTask.java index efd3898..4891d82 100644 --- a/wfc-modules/wfc-job/src/main/java/org/wfc/job/task/CdrInfoTask.java +++ b/wfc-modules/wfc-job/src/main/java/org/wfc/job/task/CdrInfoTask.java @@ -3,6 +3,7 @@ package org.wfc.job.task; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.wfc.common.core.domain.R; import org.wfc.system.api.RemoteUserService; import org.wfc.user.api.RemoteUUserService; @@ -23,9 +24,13 @@ public class CdrInfoTask { public void addCdrInfo() { long startTime = System.currentTimeMillis(); - remoteUUserService.addCdrInfoByOmadaApi(); remoteUserService.deviceJob(); + remoteUUserService.addCdrInfoByOmadaApi(); long endTime = System.currentTimeMillis(); log.info("wifi定时任务执行成功, 耗时:{} 毫秒", endTime - startTime); } + + public R testOmadaApi() { + return remoteUserService.deviceJob(); + } } diff --git a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDeviceServiceImpl.java b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDeviceServiceImpl.java index 3b7e37f..e2471c6 100644 --- a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDeviceServiceImpl.java +++ b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDeviceServiceImpl.java @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.wfc.common.redis.service.RedisService; import org.wfc.omada.api.device.OmadaDeviceApi; import org.wfc.omada.api.device.model.DeviceInfo; import org.wfc.omada.api.device.model.OperationResponseGridVoDeviceInfo; @@ -39,12 +40,24 @@ public class SysDeviceServiceImpl extends ServiceImpl siteList = omadaSiteApi.getSiteList(1, 1000); if (siteList.getBody() == null) { return false; } + // 更换omada清空redis + if (siteList.getBody().getErrorCode() == OMADA_ERROR_CODE) { + redisService.deleteObject(REDIS_ACCESS_TOKEN); + redisService.deleteObject(REDIS_REFRESH_TOKEN); + } List sites = siteList.getBody().getResult().getData(); for (SiteSummaryInfo site : sites) { ResponseEntity deviceList = omadaDeviceApi.getDeviceList(site.getSiteId(), 1, 1000);