16 changed files with 335 additions and 9 deletions
Split View
Diff Options
-
6pom.xml
-
33src/main/java/com/qniao/zsh/api/command/paddle/admin/PaddleAdminCommandController.java
-
40src/main/java/com/qniao/zsh/api/command/paddle/admin/request/PaddleDto.java
-
24src/main/java/com/qniao/zsh/api/command/paddle/admin/response/PaddleVo.java
-
1src/main/java/com/qniao/zsh/api/validator/SpiderStopped.java
-
42src/main/java/com/qniao/zsh/application/service/paddle/PaddleApplicationService.java
-
27src/main/java/com/qniao/zsh/domain/aggregate/paddle/entity/SpiderArticle.java
-
26src/main/java/com/qniao/zsh/domain/aggregate/spiderstate/entity/SpiderState.java
-
39src/main/java/com/qniao/zsh/domain/aggregate/xxljob/entity/XxlJobInfo.java
-
12src/main/java/com/qniao/zsh/infrastructure/config/SpiderDirectoryConfig.java
-
43src/main/java/com/qniao/zsh/infrastructure/config/XxlJobConfig.java
-
2src/main/java/com/qniao/zsh/infrastructure/util/LinuxCommandUtil.java
-
15src/main/java/com/qniao/zsh/infrastructure/util/xxl/JobHandlerService.java
-
16src/main/java/com/qniao/zsh/infrastructure/util/xxl/XxlJobDemo.java
-
11src/main/java/com/qniao/zsh/infrastructure/util/xxl/xxl.java
-
7src/main/resources/application-local.yml
@ -0,0 +1,33 @@ |
|||
package com.qniao.zsh.api.command.paddle.admin; |
|||
|
|||
import com.qniao.zsh.api.command.paddle.admin.request.PaddleDto; |
|||
import com.qniao.zsh.api.command.paddle.admin.response.PaddleVo; |
|||
import com.qniao.zsh.application.service.paddle.PaddleApplicationService; |
|||
import io.swagger.annotations.ApiOperation; |
|||
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 javax.annotation.Resource; |
|||
import java.io.IOException; |
|||
|
|||
/** |
|||
* @author wh |
|||
* @date 2023/4/11 |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("admin/paddle") |
|||
public class PaddleAdminCommandController { |
|||
|
|||
@Resource |
|||
private PaddleApplicationService paddleApplicationService; |
|||
|
|||
@ApiOperation("飞桨文本解析") |
|||
@PostMapping("/analysis") |
|||
public PaddleVo analysis(@RequestBody PaddleDto paddleDto) throws IOException { |
|||
return paddleApplicationService.runPaddle(paddleDto); |
|||
|
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,40 @@ |
|||
package com.qniao.zsh.api.command.paddle.admin.request; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
|||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @author wh |
|||
* @date 2023/4/11 |
|||
*/ |
|||
@Data |
|||
public class PaddleDto { |
|||
@NotNull |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
@TableId(type = IdType.ASSIGN_ID) |
|||
@ApiModelProperty("文章ID") |
|||
private String articleId; |
|||
|
|||
@NotNull |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
@TableId(type = IdType.ASSIGN_ID) |
|||
@ApiModelProperty("造纸厂ID") |
|||
private String paperMillId; |
|||
|
|||
@NotNull |
|||
@ApiModelProperty("文章标题") |
|||
private String title; |
|||
|
|||
@NotNull |
|||
@ApiModelProperty("文章正文") |
|||
private String content; |
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package com.qniao.zsh.api.command.paddle.admin.response; |
|||
|
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
import javax.validation.constraints.NotNull; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author wh |
|||
* @date 2023/4/11 |
|||
*/ |
|||
@Data |
|||
public class PaddleVo { |
|||
|
|||
@NotNull |
|||
@ApiModelProperty("纸厂名字") |
|||
private String factory; |
|||
|
|||
@ApiModelProperty("纸类分类") |
|||
private List<String> paperInfo; |
|||
|
|||
@ApiModelProperty("纸类价格") |
|||
private List<String> paperPrice; |
|||
} |
|||
@ -0,0 +1,42 @@ |
|||
package com.qniao.zsh.application.service.paddle; |
|||
|
|||
import cn.hutool.core.util.StrUtil; |
|||
import cn.hutool.json.JSONObject; |
|||
import cn.hutool.json.JSONUtil; |
|||
import com.qniao.zsh.api.command.paddle.admin.request.PaddleDto; |
|||
import com.qniao.zsh.api.command.paddle.admin.response.PaddleVo; |
|||
import com.qniao.zsh.infrastructure.config.SpiderDirectoryConfig; |
|||
import org.mc.ddd.infrastructure.util.ScriptRunnerHelper; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author wh |
|||
* @date 2023/4/11 |
|||
*/ |
|||
@Service |
|||
public class PaddleApplicationService { |
|||
|
|||
public PaddleVo runPaddle(PaddleDto paddleDto) throws IOException { |
|||
//linux |
|||
// String result = ScriptRunnerHelper.handle("python3", |
|||
//win |
|||
String result = String.valueOf(ScriptRunnerHelper.handle("python", |
|||
SpiderDirectoryConfig.PADDLEDIR, |
|||
paddleDto.getTitle(), |
|||
paddleDto.getArticleId(), |
|||
paddleDto.getPaperMillId(), |
|||
paddleDto.getContent())); |
|||
String[] strings = result.split("\r\n"); |
|||
result = strings[strings.length - 1]; |
|||
JSONObject jsonResult = JSONUtil.parseObj(result); |
|||
PaddleVo paddleVo = new PaddleVo(); |
|||
paddleVo.setFactory(jsonResult.getStr("factory")); |
|||
paddleVo.setPaperInfo((List<String>) jsonResult.getObj("paper_info")); |
|||
paddleVo.setPaperPrice((List<String>) jsonResult.getObj("paper_price")); |
|||
return paddleVo; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,27 @@ |
|||
package com.qniao.zsh.domain.aggregate.paddle.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
|||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
|
|||
/** |
|||
* @author wh |
|||
* @date 2023/4/11 |
|||
*/ |
|||
public class SpiderArticle { |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
@TableId(type = IdType.ASSIGN_ID) |
|||
@ApiModelProperty("文章ID") |
|||
private Long articleId; |
|||
|
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
@TableId(type = IdType.ASSIGN_ID) |
|||
@ApiModelProperty("造纸厂ID") |
|||
private Long paperMillId; |
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,39 @@ |
|||
package com.qniao.zsh.domain.aggregate.xxljob.entity; |
|||
|
|||
import java.util.Date; |
|||
|
|||
public class XxlJobInfo { |
|||
|
|||
private int id; // 主键ID |
|||
|
|||
private int jobGroup; // 执行器主键ID |
|||
private String jobDesc; |
|||
|
|||
private Date addTime; |
|||
private Date updateTime; |
|||
|
|||
private String author; // 负责人 |
|||
private String alarmEmail; // 报警邮件 |
|||
|
|||
private String scheduleType; // 调度类型 |
|||
private String scheduleConf; // 调度配置,值含义取决于调度类型 |
|||
private String misfireStrategy; // 调度过期策略 |
|||
|
|||
private String executorRouteStrategy; // 执行器路由策略 |
|||
private String executorHandler; // 执行器,任务Handler名称 |
|||
private String executorParam; // 执行器,任务参数 |
|||
private String executorBlockStrategy; // 阻塞处理策略 |
|||
private int executorTimeout; // 任务执行超时时间,单位秒 |
|||
private int executorFailRetryCount; // 失败重试次数 |
|||
|
|||
private String glueType; // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum |
|||
private String glueSource; // GLUE源代码 |
|||
private String glueRemark; // GLUE备注 |
|||
private Date glueUpdatetime; // GLUE更新时间 |
|||
|
|||
private String childJobId; // 子任务ID,多个逗号分隔 |
|||
|
|||
private int triggerStatus; // 调度状态:0-停止,1-运行 |
|||
private long triggerLastTime; // 上次调度时间 |
|||
private long triggerNextTime; // 下次调度时间 |
|||
} |
|||
@ -0,0 +1,43 @@ |
|||
package com.qniao.zsh.infrastructure.config; |
|||
|
|||
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.beans.factory.annotation.Value; |
|||
import org.springframework.context.annotation.Bean; |
|||
import org.springframework.context.annotation.Configuration; |
|||
|
|||
@Configuration |
|||
@Slf4j |
|||
public class XxlJobConfig { |
|||
@Value("${xxl.job.admin.addresses}") |
|||
private String adminAddresses; |
|||
@Value("${xxl.job.accessToken:}") |
|||
private String accessToken; |
|||
@Value("${xxl.job.executor.appname:}") |
|||
private String appname; |
|||
@Value("${xxl.job.executor.address:}") |
|||
private String address; |
|||
@Value("${xxl.job.executor.ip:}") |
|||
private String ip; |
|||
@Value("${xxl.job.executor.port:}") |
|||
private int port; |
|||
@Value("${xxl.job.executor.logpath:}") |
|||
private String logPath; |
|||
@Value("${xxl.job.executor.logretentiondays:0}") |
|||
private int logRetentionDays; |
|||
|
|||
@Bean |
|||
public XxlJobSpringExecutor xxlJobExecutor() { |
|||
log.info(">>>>>>>>>>> xxl-job config init."); |
|||
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); |
|||
xxlJobSpringExecutor.setAdminAddresses(adminAddresses); |
|||
xxlJobSpringExecutor.setAppname(appname); |
|||
xxlJobSpringExecutor.setAddress(address); |
|||
xxlJobSpringExecutor.setIp(ip); |
|||
xxlJobSpringExecutor.setPort(port); |
|||
xxlJobSpringExecutor.setAccessToken(accessToken); |
|||
xxlJobSpringExecutor.setLogPath(logPath); |
|||
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); |
|||
return xxlJobSpringExecutor; |
|||
} |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
package com.qniao.zsh.infrastructure.util.xxl; |
|||
import com.qniao.zsh.domain.aggregate.xxljob.entity.XxlJobInfo; |
|||
import com.xxl.job.core.enums.ExecutorBlockStrategyEnum; |
|||
import com.xxl.job.core.biz.model.TriggerParam; |
|||
import com.xxl.job.core.executor.XxlJobExecutor; |
|||
import java.sql.Timestamp; |
|||
|
|||
|
|||
public class JobHandlerService { |
|||
public void updateJob() { |
|||
XxlJobExecutor executor = new XxlJobExecutor(); |
|||
XxlJobInfo jobInfo = new XxlJobInfo(); |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
package com.qniao.zsh.infrastructure.util.xxl; |
|||
|
|||
import com.xxl.job.core.biz.model.ReturnT; |
|||
import com.xxl.job.core.handler.annotation.XxlJob; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class XxlJobDemo { |
|||
|
|||
@XxlJob("myJobHandler") |
|||
public ReturnT<String> myJobHandler(String param) throws Exception { |
|||
// your jobHandler code here |
|||
return ReturnT.SUCCESS; |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,11 @@ |
|||
package com.qniao.zsh.infrastructure.util.xxl; |
|||
|
|||
import com.xxl.job.core.handler.annotation.XxlJob; |
|||
|
|||
public class xxl { |
|||
@XxlJob("spiderTest") |
|||
public static void main(String[] args) { |
|||
System.out.println("调用成功"); |
|||
|
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save