package com.canrd.webmagic.controller; import com.canrd.webmagic.common.constant.ServerResult; import com.canrd.webmagic.common.jsr303.OperateGroup; import com.canrd.webmagic.domain.vo.NatureArticleQueryVO; import com.canrd.webmagic.domain.vo.NatureArticleVO; import com.canrd.webmagic.processor.Science4JournalSearchPageProcessor; import com.canrd.webmagic.service.ArticleService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import us.codecraft.webmagic.Spider; import javax.annotation.Resource; /** * nature-文章信息(NatureArticle)表控制层 * * @author makejava * @since 2024-04-07 18:39:41 */ @RestController @RequestMapping("/science/journal") public class Science4JournalController { /** * 服务对象 */ @Resource private ArticleService articleService; @Resource private Science4JournalSearchPageProcessor science4JournalSearchPageProcessor; /** * @return */ @GetMapping("/start") public ServerResult start(@RequestParam(value = "keyword") String keyword, @RequestParam(value = "indexSize") Integer indexSize) { for (int i = 0; i <= indexSize; i++) { Spider.create(science4JournalSearchPageProcessor) .addUrl("http://www.science.org/journal/science/insights?startPage=" + i) // 开启5个线程执行,并开始爬取 .thread(5).run(); } return ServerResult.success(); } /** * 分页查询 * * @param natureArticleQueryVO 查询条件 * @return 查询结果 */ @PostMapping("/list") public ServerResult list(@RequestBody @Validated({OperateGroup.List.class}) NatureArticleQueryVO natureArticleQueryVO) { return articleService.list(natureArticleQueryVO); } /** * 通过主键查询单条数据 * * @param natureArticleQueryVO 查询条件 * @return 单条数据 */ @PostMapping("/query_by_id") public ServerResult queryById(@RequestBody NatureArticleQueryVO natureArticleQueryVO) { return articleService.queryById(natureArticleQueryVO); } /** * 新增数据 * * @param natureArticleVO 数据VO * @return 新增结果 */ @PostMapping("/add") public ServerResult add(@RequestBody NatureArticleVO natureArticleVO) { return articleService.add(natureArticleVO); } /** * 编辑数据 * * @param natureArticleVO 数据VO * @return 编辑结果 */ @PostMapping("/edit") public ServerResult edit(@RequestBody NatureArticleVO natureArticleVO) { return articleService.edit(natureArticleVO); } /** * 删除数据 * * @param natureArticleQueryVO 查询条件 * @return 删除是否成功 */ @PostMapping("/delete_by_id") public ServerResult deleteById(@RequestBody NatureArticleQueryVO natureArticleQueryVO) { return articleService.deleteById(natureArticleQueryVO); } }