Przeglądaj źródła

refactor: 支持手动采集策略上报

zhanghaijun 3 lat temu
rodzic
commit
7c6a07cbc9

+ 22 - 4
src/main/java/com/cec/plugins/controller/CollectController.java

@@ -1,5 +1,6 @@
 package com.cec.plugins.controller;
 
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.cec.plugins.domain.DtoPolicy;
 import com.cec.plugins.domain.ResultData;
@@ -10,10 +11,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Optional;
 
 /**
  * @author zhanghaijun
@@ -45,9 +45,27 @@ public class CollectController {
         reported(policy);
         // 开始上报采集数据
         taskCollectService.startReported(policy);
+        // 保存采集策略
+        taskCollectService.policyWritFile(policy);
         return ResultData.success();
     }
 
+    @GetMapping("/getPolicy")
+    public ResultData getPolicy() {
+        return ResultData.success(StrUtil.blankToDefault(taskCollectService.policyReadFileToStr(),""));
+    }
+
+    @GetMapping("/reportedPolicy")
+    public ResultData reportedPolicy() {
+        DtoPolicy policy = taskCollectService.policyReadFile();
+        if (Optional.ofNullable(policy).map(DtoPolicy::getPolicy).isPresent()) {
+            taskCollectService.reportPolicy(policy);
+            return ResultData.success("上报采集数据成功");
+        }
+        return ResultData.fail("未发现上报策略");
+    }
+
+
     @Async
     public void reported(DtoPolicy policy) {
         ReportedData data = new ReportedData();

+ 40 - 0
src/main/java/com/cec/plugins/service/task/TaskCollectService.java

@@ -1,7 +1,9 @@
 package com.cec.plugins.service.task;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.cec.plugins.config.properties.ProjectProperties;
 import com.cec.plugins.domain.DtoPolicy;
 import com.cec.plugins.enumerate.EstimateEnum;
@@ -31,6 +33,8 @@ import java.util.stream.Collectors;
 @Service
 public class TaskCollectService {
 
+    private static final String FILE_POLICY = "policy.txt";
+
     @Autowired
     private ProjectProperties properties;
     @Autowired
@@ -57,6 +61,8 @@ public class TaskCollectService {
         if (future != null) {
             future.cancel(true);
         }
+        // 删除采集策略
+        FileUtil.del(FILE_POLICY);
         log.info("###### 停止上报采集数据定时 ######");
     }
 
@@ -86,4 +92,38 @@ public class TaskCollectService {
         report.setData(configList);
         taskService.reportPlatform("/data/api/v1/collectData", report);
     }
+
+    /**
+     * 保存采集策略
+     *
+     * @param policy 策略
+     */
+    public void policyWritFile(DtoPolicy policy) {
+        FileUtil.writeUtf8String(JSONUtil.toJsonStr(policy), FILE_POLICY);
+    }
+
+    /**
+     * 读取本地策略
+     *
+     * @return 策略
+     */
+    public DtoPolicy policyReadFile() {
+        String str = policyReadFileToStr();
+        if (StrUtil.isNotBlank(str)) {
+            return JSONUtil.toBean(str, DtoPolicy.class);
+        }
+        return null;
+    }
+
+    /**
+     * 读取本地策略
+     *
+     * @return 策略
+     */
+    public String policyReadFileToStr() {
+        if (FileUtil.exist(FILE_POLICY)) {
+            return FileUtil.readUtf8String(FILE_POLICY);
+        }
+        return "";
+    }
 }