diff --git a/pom.xml b/pom.xml
index 05a5de1..a2b9982 100644
--- a/pom.xml
+++ b/pom.xml
@@ -142,4 +142,12 @@
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
diff --git a/src/main/java/com/qniao/zsh/ZtbSpiderHandleApplication.java b/src/main/java/com/qniao/zsh/ZtbSpiderHandleApplication.java
index b82c748..9c1eab2 100644
--- a/src/main/java/com/qniao/zsh/ZtbSpiderHandleApplication.java
+++ b/src/main/java/com/qniao/zsh/ZtbSpiderHandleApplication.java
@@ -9,7 +9,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @date 2023/2/21
* 启动主类
*/
-@SpringBootApplication(scanBasePackages = {"com.qniao.zsh"})
+@SpringBootApplication(scanBasePackages = {"org.mc.ddd", "com.qniao.zsh"})
@MapperScan("com.qniao.zsh.infrastructure.dao")
public class ZtbSpiderHandleApplication {
diff --git a/src/main/java/com/qniao/zsh/api/command/controlspider/admin/SpiderStateAdminCommandController.java b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/SpiderStateAdminCommandController.java
index 7568ed9..9a6f171 100644
--- a/src/main/java/com/qniao/zsh/api/command/controlspider/admin/SpiderStateAdminCommandController.java
+++ b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/SpiderStateAdminCommandController.java
@@ -1,6 +1,10 @@
package com.qniao.zsh.api.command.controlspider.admin;
+import cn.hutool.core.util.EnumUtil;
+import com.qniao.zsh.api.command.controlspider.admin.request.SpiderStopDto;
+import com.qniao.zsh.domain.aggregate.spiderstate.constant.SpiderStateEnum;
+import com.qniao.zsh.query.spider.queryparams.SpiderByQueryParam;
import org.mc.ddd.infrastructure.persistent.PageQueryParams;
import com.qniao.zsh.api.command.controlspider.admin.request.SpiderCreateDto;
@@ -10,10 +14,14 @@ import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
import com.qniao.zsh.query.spider.SpiderQueryService;
import io.swagger.annotations.ApiOperation;
import org.mc.ddd.infrastructure.persistent.PageQueryResult;
+import org.mc.ddd.infrastructure.response.vo.EntityCreatedVo;
+import org.mc.ddd.infrastructure.response.vo.EnumItemVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
/**
@@ -33,27 +41,40 @@ public class SpiderStateAdminCommandController {
@ApiOperation("启动爬虫")
- @PostMapping("/run/spider/{spiderId}")
- public String run(@PathVariable Long spiderId) throws Exception {
-
+ @PostMapping("/run/spider")
+ public List run(@RequestParam("spiderId") Long spiderId) throws Exception {
return spiderStateApplicationService.run(spiderId);
+ }
+ @ApiOperation("停止爬虫的周期运行")
+ @PostMapping("/stop/spider")
+ public List stop(@RequestBody @Validated SpiderStopDto dto){
+ return spiderStateApplicationService.stop(dto.transform().getId());
}
+
@ApiOperation("创建爬虫")
@PostMapping("/create/spider")
- public String create(@RequestBody @Validated SpiderCreateDto dto) {
+ public EntityCreatedVo create(@RequestBody @Validated SpiderCreateDto dto) {
//判断爬虫是否已经存在
- return createSpiderApplicationService.create(dto.transform().getSpiderName());
-
-
-
+ return new EntityCreatedVo(createSpiderApplicationService.create(dto.transform().getSpiderName()));
}
@ApiOperation("查询爬虫列表分页")
@GetMapping("/query/spider")
- public PageQueryResult adminPageAiAlarm(PageQueryParams pageUtil) {
- return spiderQueryService.adminPage(pageUtil);
+ public PageQueryResult adminPageAiAlarm(PageQueryParams pageUtil, SpiderState spiderState, SpiderByQueryParam spiderByQueryParam) {
+ return spiderQueryService.adminPage(pageUtil, spiderState,spiderByQueryParam);
+ }
+
+ @GetMapping("/get/spider/status")
+ @ApiOperation(value = "获取状态信息")
+ public List getRuntimeEnv() {
+ List results = new ArrayList<>();
+ EnumUtil.getEnumMap(SpiderStateEnum.class).forEach((k, v) -> {
+ results.add(new EnumItemVo(v.getValue(), v.getDesc()));
+ });
+
+ return results;
}
}
diff --git a/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderCreateDto.java b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderCreateDto.java
index 678001e..596dde0 100644
--- a/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderCreateDto.java
+++ b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderCreateDto.java
@@ -2,6 +2,7 @@ package com.qniao.zsh.api.command.controlspider.admin.request;
import com.qniao.zsh.api.validator.SpiderExisted;
+import com.qniao.zsh.api.validator.SpiderStopped;
import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderStopDto.java b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderStopDto.java
new file mode 100644
index 0000000..57aa8ac
--- /dev/null
+++ b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderStopDto.java
@@ -0,0 +1,27 @@
+package com.qniao.zsh.api.command.controlspider.admin.request;
+
+import com.qniao.zsh.api.validator.SpiderStopped;
+import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.mc.ddd.domain.Assembler;
+import org.mc.ddd.infrastructure.util.ObjectConverter;
+
+/**
+ * @author wh
+ * @date 2023/3/27
+ */
+@Data
+public class SpiderStopDto implements Assembler {
+ @SpiderStopped
+ @ApiModelProperty("爬虫ID")
+ private Long id;
+
+
+ @Override
+ public SpiderState transform() {
+ SpiderState spiderState = ObjectConverter.convert(this, SpiderState.class);
+ spiderState.setId(id);
+ return spiderState;
+ }
+}
diff --git a/src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java b/src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java
new file mode 100644
index 0000000..37aa63e
--- /dev/null
+++ b/src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java
@@ -0,0 +1,49 @@
+package com.qniao.zsh.api.validator;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.qniao.zsh.domain.aggregate.spiderstate.constant.SpiderStateEnum;
+import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
+import com.qniao.zsh.infrastructure.dao.SpiderStateDao;
+
+import javax.annotation.Resource;
+import javax.validation.Constraint;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+
+/**
+ * @author wh
+ * @date 2023/3/27
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({FIELD, PARAMETER})
+@Constraint(validatedBy = {SpiderStoppedValidator.class})
+public @interface SpiderStopped {
+ String message() default "爬虫已经停止";
+
+ Class>[] groups() default {};
+
+ Class extends Payload>[] payload() default {};
+}
+
+class SpiderStoppedValidator implements ConstraintValidator {
+ @Resource
+ private SpiderStateDao spiderStateDao;
+
+ @Override
+ public boolean isValid(Long id, ConstraintValidatorContext context) {
+ SpiderState spiderState = spiderStateDao.selectById(id);
+ boolean test = spiderState.getStatus() == SpiderStateEnum.FAIL;
+// return spiderState.getStatus() == SpiderStateEnum.FAIL;
+ return spiderState.getStatus() != SpiderStateEnum.NOT_STARTED;
+
+ }
+}
diff --git a/src/main/java/com/qniao/zsh/application/service/createspider/CreateSpiderApplicationService.java b/src/main/java/com/qniao/zsh/application/service/createspider/CreateSpiderApplicationService.java
index 46e642a..6c4a64b 100644
--- a/src/main/java/com/qniao/zsh/application/service/createspider/CreateSpiderApplicationService.java
+++ b/src/main/java/com/qniao/zsh/application/service/createspider/CreateSpiderApplicationService.java
@@ -1,16 +1,10 @@
package com.qniao.zsh.application.service.createspider;
-
-import cn.hutool.http.HttpStatus;
-import cn.hutool.json.JSONUtil;
import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
import com.qniao.zsh.domain.aggregate.spiderstate.repository.SpiderStateRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
-
import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.Map;
/**
* @author wh
@@ -22,14 +16,12 @@ public class CreateSpiderApplicationService {
@Resource
private SpiderStateRepository spiderStateRepository;
- public String create(String spiderName){
+ public Long create(String spiderName){
SpiderState spiderState = new SpiderState();
spiderState.setSpiderName(spiderName);
- spiderStateRepository.save(spiderState);
- Map map = new HashMap<>(1);
- map.put("code", String.valueOf(HttpStatus.HTTP_OK));
- return JSONUtil.toJsonStr(map);
+ return spiderStateRepository.save(spiderState);
+
}
}
diff --git a/src/main/java/com/qniao/zsh/application/service/startspider/SpiderStateApplicationService.java b/src/main/java/com/qniao/zsh/application/service/startspider/SpiderStateApplicationService.java
index ec25dc4..e15614b 100644
--- a/src/main/java/com/qniao/zsh/application/service/startspider/SpiderStateApplicationService.java
+++ b/src/main/java/com/qniao/zsh/application/service/startspider/SpiderStateApplicationService.java
@@ -7,10 +7,12 @@ import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
import com.qniao.zsh.domain.aggregate.spiderstate.repository.SpiderStateRepository;
import com.qniao.zsh.infrastructure.util.LinuxCommandUtil;
import lombok.extern.slf4j.Slf4j;
+import org.mc.ddd.infrastructure.response.constant.BizResponseTypeEnum;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-
+import java.util.Collections;
+import java.util.List;
/**
@@ -28,7 +30,7 @@ public class SpiderStateApplicationService {
private SpiderStateRepository spiderStateRepository;
- public String run(Long spiderId) throws Exception {
+ public List run(Long spiderId) throws Exception {
//获取实体
SpiderState spiderState = spiderStateRepository.load(spiderId);
@@ -46,6 +48,12 @@ public class SpiderStateApplicationService {
//更新数据库
spiderStateRepository.save(spiderState);
- return retStrBuilder;
+ return Collections.singletonList(retStrBuilder);
+ }
+ public List stop(Long spiderId){
+ SpiderState spiderState = spiderStateRepository.load(spiderId);
+ spiderState.setStatus(SpiderStateEnum.NOT_STARTED);
+ spiderStateRepository.save(spiderState);
+ return Collections.singletonList(BizResponseTypeEnum.SUCCESS.getDesc());
}
}
diff --git a/src/main/java/com/qniao/zsh/domain/aggregate/spiderstate/constant/SpiderStateEnum.java b/src/main/java/com/qniao/zsh/domain/aggregate/spiderstate/constant/SpiderStateEnum.java
index 3f7ec3c..855117c 100644
--- a/src/main/java/com/qniao/zsh/domain/aggregate/spiderstate/constant/SpiderStateEnum.java
+++ b/src/main/java/com/qniao/zsh/domain/aggregate/spiderstate/constant/SpiderStateEnum.java
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
+import org.mc.ddd.constant.BaseEnum;
/**
* @author wh
@@ -12,7 +13,7 @@ import lombok.Getter;
*/
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
-public enum SpiderStateEnum {
+public enum SpiderStateEnum implements BaseEnum {
/**
* 爬取成功
*/
diff --git a/src/main/java/com/qniao/zsh/infrastructure/config/MybatisPlusPageConfig.java b/src/main/java/com/qniao/zsh/infrastructure/config/MybatisPlusPageConfig.java
deleted file mode 100644
index 8ccd427..0000000
--- a/src/main/java/com/qniao/zsh/infrastructure/config/MybatisPlusPageConfig.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.qniao.zsh.infrastructure.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author wh
- * @date 2023/3/22
- */
-@Configuration
-public class MybatisPlusPageConfig {
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor(){
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
- return interceptor;
- }
-}
diff --git a/src/main/java/com/qniao/zsh/query/spider/SpiderQueryService.java b/src/main/java/com/qniao/zsh/query/spider/SpiderQueryService.java
index aac1a1f..5740eee 100644
--- a/src/main/java/com/qniao/zsh/query/spider/SpiderQueryService.java
+++ b/src/main/java/com/qniao/zsh/query/spider/SpiderQueryService.java
@@ -1,9 +1,8 @@
package com.qniao.zsh.query.spider;
-
-
import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
+import com.qniao.zsh.query.spider.queryparams.SpiderByQueryParam;
import org.mc.ddd.infrastructure.persistent.PageQueryParams;
import org.mc.ddd.infrastructure.persistent.PageQueryResult;
@@ -17,8 +16,9 @@ public interface SpiderQueryService {
/**
* admin页面
*
- * @param pageUtil 分页参数
+ * @param pageUtil 分页参数
+ * @param spiderState 爬虫实体
* @return {@link PageQueryResult}
*/
- PageQueryResult adminPage(PageQueryParams pageUtil);
+ PageQueryResult adminPage(PageQueryParams pageUtil, SpiderState spiderState, SpiderByQueryParam spiderByQueryParam);
}
diff --git a/src/main/java/com/qniao/zsh/query/spider/impl/SpiderQueryServiceImpl.java b/src/main/java/com/qniao/zsh/query/spider/impl/SpiderQueryServiceImpl.java
index f7199f9..a339741 100644
--- a/src/main/java/com/qniao/zsh/query/spider/impl/SpiderQueryServiceImpl.java
+++ b/src/main/java/com/qniao/zsh/query/spider/impl/SpiderQueryServiceImpl.java
@@ -1,17 +1,19 @@
package com.qniao.zsh.query.spider.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.zsh.domain.aggregate.spiderstate.entity.SpiderState;
import com.qniao.zsh.infrastructure.dao.SpiderStateDao;
import com.qniao.zsh.query.spider.SpiderQueryService;
+import com.qniao.zsh.query.spider.queryparams.SpiderByQueryParam;
import org.mc.ddd.infrastructure.persistent.PageQueryParams;
import org.mc.ddd.infrastructure.persistent.PageQueryResult;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-
+import java.util.Objects;
/**
@@ -24,8 +26,34 @@ public class SpiderQueryServiceImpl implements SpiderQueryService {
private SpiderStateDao spiderStateDao;
@Override
- public PageQueryResult adminPage(PageQueryParams pageUtil) {
- IPage iPage = spiderStateDao.selectPage(pageUtil.toPage(),null);
+ public PageQueryResult adminPage(PageQueryParams pageUtil, SpiderState spiderState, SpiderByQueryParam spiderByQueryParam) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ if (Objects.nonNull(spiderState.getSpiderName())) {
+ wrapper.like(SpiderState::getSpiderName, spiderState.getSpiderName());
+ }
+ if (Objects.nonNull(spiderState.getId())) {
+ wrapper.eq(SpiderState::getId, spiderState.getId());
+ }
+ if (Objects.nonNull(spiderState.getDuration())) {
+ wrapper.eq(SpiderState::getDuration, spiderState.getDuration());
+ }
+ if (Objects.nonNull(spiderState.getStatus())) {
+ wrapper.eq(SpiderState::getStatus, spiderState.getStatus());
+ }
+ if (Objects.nonNull(spiderState.getStatus())) {
+ wrapper.eq(SpiderState::getStatus, spiderState.getStatus());
+ }
+// if ((Objects.nonNull(spiderByQueryParam.getCreateTimeBegin()) && Objects.nonNull(spiderByQueryParam.getCreateTimeEnd())))
+// {
+// wrapper.between(SpiderState::getCreatedTime,spiderByQueryParam.getCreateTimeBegin(),spiderByQueryParam.getCreateTimeEnd());
+// }
+// if ((Objects.nonNull(spiderByQueryParam.getMinDuration()) && Objects.nonNull(spiderByQueryParam.getMaxDuration())))
+// {
+// wrapper.between(SpiderState::getDuration,spiderByQueryParam.getMinDuration(),spiderByQueryParam.getMaxDuration());
+// }
+
+ IPage iPage = spiderStateDao.selectPage(pageUtil.toPage(), wrapper);
+
return PageQueryResult.forClass(SpiderState.class).from(iPage);
}
diff --git a/src/main/java/com/qniao/zsh/query/spider/queryparams/SpiderByQueryParam.java b/src/main/java/com/qniao/zsh/query/spider/queryparams/SpiderByQueryParam.java
new file mode 100644
index 0000000..d0d52aa
--- /dev/null
+++ b/src/main/java/com/qniao/zsh/query/spider/queryparams/SpiderByQueryParam.java
@@ -0,0 +1,21 @@
+package com.qniao.zsh.query.spider.queryparams;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author wh
+ * @date 2023/3.27
+ */
+@Data
+public class SpiderByQueryParam{
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTimeBegin;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTimeEnd;
+ private Integer minDuration;
+ private Integer maxDuration;
+
+}