reghao 5 éve
szülő
commit
f25de0e8c2
16 módosított fájl, 200 hozzáadás és 62 törlés
  1. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OssService.java
  2. 6 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3CrudController.java
  3. 7 25
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3OpsController.java
  4. 1 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3BakLog.java
  5. 25 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/BaseDocument.java
  6. 11 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/repository/App3BakLogRepository.java
  7. 5 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/BackupScheduler.java
  8. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/ScriptBakJob.java
  9. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/backup/BackupService.java
  10. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/backup/BackupServiceImpl.java
  11. 67 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakCrudService.java
  12. 45 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakLogCrudService.java
  13. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3CrudService.java
  14. 20 9
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/mongo/MongoCrud.java
  15. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/AliOss.java
  16. 0 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/SshUtil.java

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OssService.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service;
 
 import cn.reghao.autodop.dmaster.app.service.tools.updater.SvnImpl;
-import cn.reghao.autodop.dmaster.common.utils.OssUtil;
+import cn.reghao.autodop.dmaster.common.utils.AliOss;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.tmatesoft.svn.core.SVNException;
@@ -13,10 +13,10 @@ import org.tmatesoft.svn.core.SVNException;
 @Slf4j
 @Service
 public class OssService {
-    private OssUtil ossUtil;
+    private AliOss aliOss;
 
-    public OssService(OssUtil ossUtil) {
-        this.ossUtil = ossUtil;
+    public OssService(AliOss aliOss) {
+        this.aliOss = aliOss;
     }
 
     public void upload(String dirname) throws SVNException {

+ 6 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3CrudController.java

@@ -3,7 +3,8 @@ package cn.reghao.autodop.dmaster.app3.controller;
 import cn.reghao.autodop.common.result.WebResult;
 import cn.reghao.autodop.dmaster.app3.entity.App3;
 import cn.reghao.autodop.dmaster.app3.entity.App3Bak;
-import cn.reghao.autodop.dmaster.app3.service.App3CrudService;
+import cn.reghao.autodop.dmaster.app3.service.crud.App3BakCrudService;
+import cn.reghao.autodop.dmaster.app3.service.crud.App3CrudService;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import io.swagger.annotations.Api;
@@ -18,9 +19,11 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/api/app3")
 public class App3CrudController {
     private App3CrudService app3CrudService;
+    private App3BakCrudService app3BakCrudService;
 
-    public App3CrudController(App3CrudService app3CrudService) {
+    public App3CrudController(App3CrudService app3CrudService, App3BakCrudService app3BakCrudService) {
         this.app3CrudService = app3CrudService;
+        this.app3BakCrudService = app3BakCrudService;
     }
 
     @PostMapping
@@ -38,7 +41,7 @@ public class App3CrudController {
     public String addApp3Bak(@RequestBody String jsonData) {
         App3Bak app3Bak = (App3Bak) JsonConverter.jsonToObject(jsonData, App3Bak.class);
         if (isApp3BakValid(app3Bak)) {
-            //app3CrudService.addOrModify(app3);
+            app3BakCrudService.addOrModify(app3Bak);
             return WebResult.success("add done...");
         }
 

+ 7 - 25
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3OpsController.java

@@ -1,47 +1,29 @@
 package cn.reghao.autodop.dmaster.app3.controller;
 
 import cn.reghao.autodop.common.result.WebResult;
-import cn.reghao.autodop.dmaster.app3.backup.BackupService;
-import cn.reghao.autodop.dmaster.app3.entity.App3BakLog;
-import cn.reghao.autodop.dmaster.common.mongo.MongoManager;
 import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * @author reghao
  * @date 2019-11-15 08:44:50
  */
-@Api(tags = "第三方应用操作接口")
+@Api(tags = "第三方应用备份还原接口")
 @RestController
 @RequestMapping("/api/app3")
 public class App3OpsController {
-    private BackupService backupService;
-    private MongoManager mongoManager;
-
-    public App3OpsController(BackupService backupService, MongoManager mongoManager) {
-        this.backupService = backupService;
-        this.mongoManager = mongoManager;
-    }
-
-    /*@PostMapping("/bak")
-    public String backup(String jsonData) throws Exception {
-        String scriptPath = "/tmp/test.sh";
-        TextFile.write(new File(scriptPath), app3Bak.getBakScript());
-        app3Bak.setBakScriptPath(scriptPath);
-        backupService.backup(app3Bak);
+    @PostMapping("/bak/start/{app3Name}")
+    public String startBackup(@PathVariable("app3Name") String app3Name) throws Exception {
         return WebResult.success("ok");
-    }*/
+    }
 
-    @PostMapping("/restore/{serviceName}")
-    public String restore(@PathVariable("serviceName") String serviceName) throws Exception {
+    @PostMapping("/restore/{app3Name}")
+    public String restore(@PathVariable("app3Name") String app3Name) throws Exception {
         return WebResult.success("ok");
     }
 
     @GetMapping("/log/{serviceName}")
     public String bakLog(@PathVariable("serviceName") String serviceName) {
-        List<App3BakLog> list = mongoManager.query(serviceName);
-        return WebResult.success(list);
+        return WebResult.success("ok");
     }
 }

+ 1 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3BakLog.java

@@ -13,9 +13,7 @@ import org.springframework.data.mongodb.core.mapping.Field;
  */
 @Document(collection = "app3_bak_log")
 @Data
-public class App3BakLog {
-    @Id
-    private String id;
+public class App3BakLog extends BaseDocument {
     @Field("app3name")
     private String app3name;
     @Field("bak_time")

+ 25 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/BaseDocument.java

@@ -0,0 +1,25 @@
+package cn.reghao.autodop.dmaster.app3.entity;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.Id;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author reghao
+ * @date 2019-10-18 14:42:48
+ */
+@Data
+@NoArgsConstructor
+public class BaseDocument implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @Id
+    private String id;
+    // 逻辑删除
+    private Boolean isDelete;
+
+    protected LocalDateTime createTime;
+    protected LocalDateTime updateTime;
+}

+ 11 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/repository/App3BakLogRepository.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.dmaster.app3.repository;
+
+import cn.reghao.autodop.dmaster.app3.entity.App3BakLog;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+/**
+ * @author reghao
+ * @date 2020-01-21 14:53:03
+ */
+public interface App3BakLogRepository extends MongoRepository<App3BakLog, Long> {
+}

+ 5 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/BackupScheduler.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app3.scheduler;
 
 import cn.reghao.autodop.common.shell.ShellExecutor;
 import cn.reghao.autodop.dmaster.app3.entity.App3Bak;
-import cn.reghao.autodop.dmaster.common.mongo.MongoManager;
+import cn.reghao.autodop.dmaster.common.mongo.MongoCrud;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.*;
 import org.quartz.impl.StdSchedulerFactory;
@@ -19,19 +19,19 @@ import org.springframework.stereotype.Component;
 public class BackupScheduler {
     private Scheduler scheduler;
     private ShellExecutor executor;
-    private MongoManager mongoManager;
+    private MongoCrud mongoCrud;
 
-    public BackupScheduler(MongoManager mongoManager) throws SchedulerException {
+    public BackupScheduler(MongoCrud mongoCrud) throws SchedulerException {
         this.scheduler = StdSchedulerFactory.getDefaultScheduler();
         this.executor = new ShellExecutor();
-        this.mongoManager = mongoManager;
+        this.mongoCrud = mongoCrud;
     }
 
     public void add(App3Bak app3Bak) throws SchedulerException {
         JobDataMap jobDataMap = new JobDataMap();
         // 只传入一组 KV
         jobDataMap.put(app3Bak.getBakScriptPath(), executor);
-        jobDataMap.put("mongo", mongoManager);
+        jobDataMap.put("mongo", mongoCrud);
         JobDetail jobDetail = JobBuilder.newJob(ScriptBakJob.class)
                 .withIdentity(app3Bak.getApp3Name())
                 .usingJobData(jobDataMap)

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/ScriptBakJob.java

@@ -4,7 +4,7 @@ import cn.reghao.autodop.common.shell.ShellExecutor;
 import cn.reghao.autodop.common.shell.ShellResult;
 import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app3.entity.App3BakLog;
-import cn.reghao.autodop.dmaster.common.mongo.MongoManager;
+import cn.reghao.autodop.dmaster.common.mongo.MongoCrud;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.*;
 
@@ -22,13 +22,13 @@ public class ScriptBakJob implements Job {
     public void execute(JobExecutionContext context) throws JobExecutionException {
         JobKey jobKey = context.getJobDetail().getKey();
         JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
-        MongoManager mongoManager = null;
+        MongoCrud mongoCrud = null;
         String script = "";
         ShellExecutor executor = null;
         for (Map.Entry<String, Object> entry : jobDataMap.entrySet()) {
             String key = entry.getKey();
             if ("mongo".equals(key)) {
-                mongoManager = (MongoManager) entry.getValue();
+                mongoCrud = (MongoCrud) entry.getValue();
             } else {
                 script = key;
                 executor = (ShellExecutor) entry.getValue();
@@ -48,7 +48,7 @@ public class ScriptBakJob implements Job {
                 app3BakLog.setSuccess(false);
                 app3BakLog.setResult(shellResult.getStderr());
             }
-            mongoManager.insert(app3BakLog);
+            mongoCrud.insert(app3BakLog);
         } catch (Exception e) {
             app3BakLog.setSuccess(false);
             app3BakLog.setResult(e.getMessage());

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/backup/BackupService.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/backup/BackupService.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app3.backup;
+package cn.reghao.autodop.dmaster.app3.service.backup;
 
 import cn.reghao.autodop.dmaster.app3.entity.App3Bak;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/backup/BackupServiceImpl.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/backup/BackupServiceImpl.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app3.backup;
+package cn.reghao.autodop.dmaster.app3.service.backup;
 
 import cn.reghao.autodop.dmaster.app3.entity.App3Bak;
 import cn.reghao.autodop.dmaster.app3.scheduler.BackupScheduler;

+ 67 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakCrudService.java

@@ -0,0 +1,67 @@
+package cn.reghao.autodop.dmaster.app3.service.crud;
+
+import cn.reghao.autodop.common.utils.data.db.CrudOps;
+import cn.reghao.autodop.common.utils.data.db.PageList;
+import cn.reghao.autodop.dmaster.app3.entity.App3Bak;
+import cn.reghao.autodop.dmaster.app3.repository.App3BakRepository;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author reghao
+ * @date 2020-11-10 21:58:00
+ */
+@Service
+public class App3BakCrudService implements CrudOps<App3Bak> {
+    private App3BakRepository app3BakRepository;
+
+    public App3BakCrudService(App3BakRepository app3BakRepository) {
+        this.app3BakRepository = app3BakRepository;
+    }
+
+    @Override
+    public void addOrModify(App3Bak app3Bak) {
+        App3Bak app3BakEntity = app3BakRepository.findByIsDeleteFalseAndApp3Name(app3Bak.getApp3Name());
+        if (app3BakEntity != null) {
+            // 若是新增,这三项值数据库会自动生成
+            app3Bak.setId(app3BakEntity.getId());
+            app3Bak.setCreateTime(app3BakEntity.getCreateTime());
+            app3Bak.setUpdateTime(LocalDateTime.now());
+        }
+
+        app3Bak.setIsDelete(false);
+        app3BakRepository.save(app3Bak);
+    }
+
+    @Override
+    public PageList<App3Bak> getByPage(int page, int size) {
+        // 默认按更新时间倒序
+        PageRequest pageRequest =
+                PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
+        Page<App3Bak> app3BakPage = app3BakRepository.findAll(pageRequest);
+
+        PageList<App3Bak> pageList = new PageList<>();
+        pageList.setTotalSize(app3BakPage.getTotalElements());
+        pageList.setTotalPages(app3BakPage.getTotalPages());
+        pageList.setList(app3BakPage.getContent());
+
+        return pageList;
+    }
+
+    @Override
+    public void delete(String uniqueKey) throws Exception {
+        App3Bak app3BakEntity = app3BakRepository.findByIsDeleteFalseAndApp3Name(uniqueKey);
+        if (app3BakEntity == null) {
+            throw new Exception(uniqueKey + " 不存在...");
+        }
+
+        app3BakEntity.setUpdateTime(LocalDateTime.now());
+        // TODO 只做逻辑删除,但如何复用 unique key?
+        app3BakEntity.setIsDelete(false);
+        app3BakRepository.save(app3BakEntity);
+    }
+}

+ 45 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakLogCrudService.java

@@ -0,0 +1,45 @@
+package cn.reghao.autodop.dmaster.app3.service.crud;
+
+import cn.reghao.autodop.common.utils.data.db.CrudOps;
+import cn.reghao.autodop.common.utils.data.db.PageList;
+import cn.reghao.autodop.dmaster.app3.entity.App3BakLog;
+import cn.reghao.autodop.dmaster.app3.repository.App3BakLogRepository;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2020-11-10 21:58:00
+ */
+@Service
+public class App3BakLogCrudService implements CrudOps<App3BakLog> {
+    private App3BakLogRepository app3BakLogRepository;
+    private MongoTemplate mongoTemplate;
+
+    public App3BakLogCrudService(App3BakLogRepository app3BakLogRepository, MongoTemplate mongoTemplate) {
+        this.app3BakLogRepository = app3BakLogRepository;
+        this.mongoTemplate = mongoTemplate;
+    }
+
+    @Override
+    public void addOrModify(App3BakLog app3BakLog) {
+        app3BakLogRepository.save(app3BakLog);
+    }
+
+    @Override
+    public PageList<App3BakLog> getByPage(int page, int size) {
+        Query query = Query.query(Criteria.where("service_name").is("serviceName"));
+        List<App3BakLog> list = mongoTemplate.find(query, App3BakLog.class);
+
+        PageList<App3BakLog> pageList = new PageList<>();
+        return pageList;
+    }
+
+    @Override
+    public void delete(String uniqueKey) throws Exception {
+    }
+}

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/App3CrudService.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3CrudService.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app3.service;
+package cn.reghao.autodop.dmaster.app3.service.crud;
 
 import cn.reghao.autodop.dmaster.app3.entity.App3;
 import cn.reghao.autodop.dmaster.app3.repository.App3Repository;

+ 20 - 9
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/mongo/MongoManager.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/common/mongo/MongoCrud.java

@@ -1,5 +1,7 @@
 package cn.reghao.autodop.dmaster.common.mongo;
 
+import cn.reghao.autodop.common.utils.data.db.CrudOps;
+import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.dmaster.app3.entity.App3BakLog;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
@@ -13,27 +15,36 @@ import java.util.List;
  * @date 2020-11-10 18:10:22
  */
 @Component
-public class MongoManager {
+public class MongoCrud<T> implements CrudOps<T> {
     private MongoTemplate mongoTemplate;
 
-    public MongoManager(MongoTemplate mongoTemplate) {
+    public MongoCrud(MongoTemplate mongoTemplate) {
         this.mongoTemplate = mongoTemplate;
     }
 
-    public void insert(Object object) {
-        mongoTemplate.save(object);
+    @Override
+    public void addOrModify(T t) {
     }
 
-    public List<App3BakLog> query(String serviceName) {
-        Query query = Query.query(Criteria.where("service_name").is(serviceName));
-        return mongoTemplate.find(query, App3BakLog.class);
+    @Override
+    public PageList<T> getByPage(int page, int size) {
+        return null;
     }
 
-    public void update() {
+    @Override
+    public void get(String uniqueKey) {
+    }
 
+    @Override
+    public void delete(String uniqueKey) throws Exception {
     }
 
-    public void delete() {
+    public void insert(Object object) {
+        mongoTemplate.save(object);
+    }
 
+    public List<App3BakLog> query(String serviceName) {
+        Query query = Query.query(Criteria.where("service_name").is(serviceName));
+        return mongoTemplate.find(query, App3BakLog.class);
     }
 }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/OssUtil.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/AliOss.java

@@ -22,12 +22,12 @@ import java.util.List;
  */
 @Slf4j
 @Service
-public class OssUtil {
+public class AliOss {
     private OssProperties ossProperties;
     private OSSClient client;
 
     // TODO 使用工厂方法获取实例
-    public OssUtil(OssProperties ossProperties) {
+    public AliOss(OssProperties ossProperties) {
         this.ossProperties = ossProperties;
         client = new OSSClient(ossProperties.getEndpoint(), ossProperties.getKey(), ossProperties.getSecret());
     }

+ 0 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/SshUtil.java

@@ -23,8 +23,4 @@ public class SshUtil {
         exec.setCommand(command);
         exec.setInputStream(null);
     }
-
-    public static void main(String[] args) throws JSchException {
-        exec();
-    }
 }