From 355efc7c2bb9a7e8289a531574a273972bc35b7e Mon Sep 17 00:00:00 2001 From: wanghui Date: Wed, 29 Mar 2023 14:17:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A0=E9=99=A4=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E7=8A=B6=E6=80=81=E7=9A=84=E7=88=AC=E8=99=AB=EF=BC=8C?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 ++ .../SpiderStateAdminCommandController.java | 11 ++++- .../admin/request/SpiderDeleteDto.java | 27 +++++++++++ .../qniao/zsh/api/validator/SpiderDelete.java | 46 +++++++++++++++++++ .../zsh/api/validator/SpiderStopped.java | 2 - .../CreateSpiderApplicationService.java | 1 + .../SpiderStateApplicationService.java | 6 +++ .../SpiderStateRepositoryImpl.java | 4 +- 8 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderDeleteDto.java create mode 100644 src/main/java/com/qniao/zsh/api/validator/SpiderDelete.java diff --git a/pom.xml b/pom.xml index a2b9982..eeb3a3b 100644 --- a/pom.xml +++ b/pom.xml @@ -121,6 +121,11 @@ 0.0.1-SNAPSHOT compile + + com.qniao + employee-admin-common + 1.0.12-SNAPSHOT + 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 9a6f171..7e4597b 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 @@ -2,6 +2,7 @@ package com.qniao.zsh.api.command.controlspider.admin; import cn.hutool.core.util.EnumUtil; +import com.qniao.zsh.api.command.controlspider.admin.request.SpiderDeleteDto; 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; @@ -42,8 +43,8 @@ public class SpiderStateAdminCommandController { @ApiOperation("启动爬虫") @PostMapping("/run/spider") - public List run(@RequestParam("spiderId") Long spiderId) throws Exception { - return spiderStateApplicationService.run(spiderId); + public List run(@RequestBody SpiderState spiderState) throws Exception { + return spiderStateApplicationService.run(spiderState.getId()); } @ApiOperation("停止爬虫的周期运行") @@ -59,6 +60,12 @@ public class SpiderStateAdminCommandController { //判断爬虫是否已经存在 return new EntityCreatedVo(createSpiderApplicationService.create(dto.transform().getSpiderName())); } + @ApiOperation("删除爬虫") + @PostMapping("/delete/spider") + public List delete(@RequestBody @Validated SpiderDeleteDto dto) { + //判断爬虫是否已经停止 + return spiderStateApplicationService.delete(dto.transform().getId()); + } @ApiOperation("查询爬虫列表分页") @GetMapping("/query/spider") diff --git a/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderDeleteDto.java b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderDeleteDto.java new file mode 100644 index 0000000..cb115a5 --- /dev/null +++ b/src/main/java/com/qniao/zsh/api/command/controlspider/admin/request/SpiderDeleteDto.java @@ -0,0 +1,27 @@ +package com.qniao.zsh.api.command.controlspider.admin.request; + +import com.qniao.zsh.api.validator.SpiderDelete; +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 SpiderDeleteDto implements Assembler { + @SpiderDelete + @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/SpiderDelete.java b/src/main/java/com/qniao/zsh/api/validator/SpiderDelete.java new file mode 100644 index 0000000..82f26e1 --- /dev/null +++ b/src/main/java/com/qniao/zsh/api/validator/SpiderDelete.java @@ -0,0 +1,46 @@ +package com.qniao.zsh.api.validator; + +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 = {SpiderDeleteValidator.class}) +public @interface SpiderDelete { + String message() default "爬虫正在运行,请先停止爬虫。"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} + +class SpiderDeleteValidator implements ConstraintValidator { + @Resource + private SpiderStateDao spiderStateDao; + + @Override + public boolean isValid(Long id, ConstraintValidatorContext context) { + SpiderState spiderState = spiderStateDao.selectById(id); + return spiderState.getStatus() == SpiderStateEnum.NOT_STARTED; + + } +} diff --git a/src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java b/src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java index 37aa63e..46f88c9 100644 --- a/src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java +++ b/src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java @@ -41,8 +41,6 @@ class SpiderStoppedValidator implements ConstraintValidator @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 6c4a64b..e15c5eb 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 @@ -24,4 +24,5 @@ public class CreateSpiderApplicationService { } + } 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 e15614b..5a057ae 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 @@ -56,4 +56,10 @@ public class SpiderStateApplicationService { spiderStateRepository.save(spiderState); return Collections.singletonList(BizResponseTypeEnum.SUCCESS.getDesc()); } + public List delete(Long spiderId){ + + spiderStateRepository.delete(spiderId); + return Collections.singletonList(BizResponseTypeEnum.SUCCESS.getDesc()); + + } } diff --git a/src/main/java/com/qniao/zsh/infrastructure/persistence/repository/impl/SpiderState/SpiderStateRepositoryImpl.java b/src/main/java/com/qniao/zsh/infrastructure/persistence/repository/impl/SpiderState/SpiderStateRepositoryImpl.java index 59d4190..b360cfa 100644 --- a/src/main/java/com/qniao/zsh/infrastructure/persistence/repository/impl/SpiderState/SpiderStateRepositoryImpl.java +++ b/src/main/java/com/qniao/zsh/infrastructure/persistence/repository/impl/SpiderState/SpiderStateRepositoryImpl.java @@ -37,7 +37,9 @@ public class SpiderStateRepositoryImpl implements SpiderStateRepository { @Override public void delete(Long id) { - + SpiderState spiderState = this.load(id); + spiderState.setIsDeleted(true); + spiderStateDao.updateById(spiderState); } }