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); } }