SentimentSpiderApi.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package com.zhiqiyun.open.router.apis;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.OrderItem;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.dliyun.oap.framework.annotation.ServiceMethod;
  6. import com.dliyun.oap.framework.annotation.ServiceMethodBean;
  7. import com.dliyun.oap.framework.response.OapResponse;
  8. import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderEvent;
  9. import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderResult;
  10. import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderSiteRule;
  11. import com.zhiqiyun.open.core.service.SentimentSpiderEventService;
  12. import com.zhiqiyun.open.core.service.SentimentSpiderResultService;
  13. import com.zhiqiyun.open.core.service.SentimentSpiderRuleService;
  14. import com.zhiqiyun.open.core.service.SequenceService;
  15. import com.zhiqiyun.open.router.request.sentiment.*;
  16. import com.zhiqiyun.open.utils.DateUtil;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.BeanUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.RequestBody;
  22. import java.util.List;
  23. @Slf4j
  24. @ServiceMethodBean
  25. public class SentimentSpiderApi {
  26. @Autowired
  27. private SentimentSpiderEventService sentimentSpiderEventService;
  28. @Autowired
  29. private SentimentSpiderRuleService sentimentSpiderRuleService;
  30. @Autowired
  31. private SentimentSpiderResultService sentimentSpiderResultService;
  32. @Autowired
  33. private SequenceService sequenceService;
  34. @ServiceMethod(method = "sentiment.spider.rule.findByKeyword", title = "通过关键词查询采集网站规则")
  35. public OapResponse findByKeyword(QuerySpiderSiteRuleRequest request) {
  36. QueryWrapper<SentimentSpiderSiteRule> wrapper = new QueryWrapper<>();
  37. if (StringUtils.isNotBlank(request.getKeyword())) {
  38. wrapper.like("site_name", request.getKeyword());
  39. wrapper.or();
  40. wrapper.like("id", request.getKeyword());
  41. }
  42. wrapper.orderByDesc("id");
  43. List<SentimentSpiderSiteRule> listData = this.sentimentSpiderRuleService.list(wrapper);
  44. return OapResponse.success().setBody(listData);
  45. }
  46. @ServiceMethod(method = "sentiment.spider.rule.save", title = "新增或者修改采集网站规则")
  47. public OapResponse saveOrUpdate(QuerySpiderSiteRuleSaveRequest request) {
  48. SentimentSpiderSiteRule siteRule = new SentimentSpiderSiteRule();
  49. BeanUtils.copyProperties(request, siteRule);
  50. if (siteRule.getId() != null) {
  51. siteRule.setUpdatedTime(DateUtil.current());
  52. siteRule.setUpdatedBy(1000L);
  53. sentimentSpiderRuleService.updateById(siteRule);
  54. } else {
  55. siteRule.setId(this.sequenceService.nextId());
  56. siteRule.setCreatedTime(DateUtil.current());
  57. siteRule.setCreatedBy(1000L);
  58. siteRule.setUpdatedTime(DateUtil.current());
  59. siteRule.setUpdatedBy(1000L);
  60. sentimentSpiderRuleService.save(siteRule);
  61. }
  62. return OapResponse.success().setBody(siteRule);
  63. }
  64. @ServiceMethod(method = "sentiment.spider.rule.delete", title = "删除采集网站规则")
  65. public OapResponse delete(IdsRequest request) {
  66. sentimentSpiderRuleService.removeByIds(request.getIds());
  67. return OapResponse.success();
  68. }
  69. @ServiceMethod(method = "sentiment.spider.event.findPage", title = "查询舆情事件")
  70. public OapResponse findEventPage(QuerySpiderEventRequest request) {
  71. QueryWrapper<SentimentSpiderEvent> wrapper = new QueryWrapper<>();
  72. if (request.getSiteRuleId() != null) {
  73. wrapper.eq("site_rule_id", request.getSiteRuleId());
  74. }
  75. if (StringUtils.isNotBlank(request.getEventTitle())) {
  76. wrapper.like("event_title", request.getEventTitle());
  77. }
  78. if (StringUtils.isNotBlank(request.getKeywords())) {
  79. wrapper.like("keywords", request.getKeywords());
  80. }
  81. Page<SentimentSpiderEvent> page = new Page<>(request.getCurrent(), request.getPageSize());
  82. page.addOrder(OrderItem.desc("id"));
  83. Page<SentimentSpiderEvent> resultData = this.sentimentSpiderEventService.page(page, wrapper);
  84. for (SentimentSpiderEvent event : resultData.getRecords()) {
  85. SentimentSpiderSiteRule rule = this.sentimentSpiderRuleService.getById(event.getSiteRuleId());
  86. event.setRule(rule);
  87. event.setStatus(this.sentimentSpiderEventService.getStatus(event.getId()));
  88. }
  89. return OapResponse.success().setBody(resultData);
  90. }
  91. @ServiceMethod(method = "sentiment.spider.event.add", title = "新建舆情事件")
  92. public OapResponse save(SaveSpiderEventRequest request) {
  93. SentimentSpiderEvent entity = new SentimentSpiderEvent();
  94. BeanUtils.copyProperties(request, entity);
  95. entity.setCreatedTime(DateUtil.current());
  96. entity.setCreatedBy(1000L);
  97. entity.setUpdatedTime(DateUtil.current());
  98. entity.setUpdatedBy(1000L);
  99. entity.setId(this.sequenceService.nextId());
  100. this.sentimentSpiderEventService.save(entity);
  101. return OapResponse.success().setBody(entity);
  102. }
  103. @ServiceMethod(method = "sentiment.spider.event.updateById", title = "更新舆情事件")
  104. public OapResponse updateById(UpdateSpiderEventRequest request) {
  105. SentimentSpiderEvent entity = new SentimentSpiderEvent();
  106. BeanUtils.copyProperties(request, entity);
  107. entity.setUpdatedBy(1000L);
  108. entity.setUpdatedTime(DateUtil.current());
  109. this.sentimentSpiderEventService.updateById(entity);
  110. return OapResponse.success().setBody(entity);
  111. }
  112. @ServiceMethod(method = "sentiment.spider.event.deleteByIds", title = "删除舆情事件")
  113. public OapResponse deleteByIds(IdsRequest request) {
  114. this.sentimentSpiderEventService.removeByIds(request.getIds());
  115. return OapResponse.success();
  116. }
  117. @ServiceMethod(method = "sentiment.spider.event.startSpider", title = "启动舆情事件采集")
  118. public OapResponse startSpider(IdsRequest request) {
  119. List<SentimentSpiderEvent> listData = this.sentimentSpiderEventService.listByIds(request.getIds());
  120. for (SentimentSpiderEvent event : listData) {
  121. SentimentSpiderSiteRule rule = this.sentimentSpiderRuleService.getById(event.getSiteRuleId());
  122. event.setRule(rule);
  123. this.sentimentSpiderEventService.start(event);
  124. }
  125. return OapResponse.success();
  126. }
  127. @ServiceMethod(method = "sentiment.spider.event.stopSpider", title = "停止舆情事件采集")
  128. public OapResponse stopSpider(IdsRequest request) {
  129. List<SentimentSpiderEvent> listData = this.sentimentSpiderEventService.listByIds(request.getIds());
  130. for (SentimentSpiderEvent event : listData) {
  131. this.sentimentSpiderEventService.stop(event);
  132. }
  133. return OapResponse.success();
  134. }
  135. @ServiceMethod(method = "sentiment.spider.event.findResultPage", title = "分页查询采集结果")
  136. public OapResponse findResultPage(QuerySpiderResultRequest request) {
  137. QueryWrapper<SentimentSpiderResult> wrapper = new QueryWrapper<>();
  138. if (request.getEventId() != null) {
  139. wrapper.eq("event_id", request.getEventId());
  140. }
  141. if (request.getSiteRuleId() != null) {
  142. wrapper.eq("site_rule_id", request.getSiteRuleId());
  143. }
  144. if (StringUtils.isNotBlank(request.getTitle())) {
  145. wrapper.like("title", request.getTitle());
  146. }
  147. wrapper.select("id", "event_id", "site_rule_id", "url", "title", "keywords", "description", "fragments", "spider_time", "update_time");
  148. Page<SentimentSpiderResult> page = new Page<>(request.getCurrent(), request.getPageSize());
  149. page.addOrder(OrderItem.desc("update_time"));
  150. Page<SentimentSpiderResult> resultData = this.sentimentSpiderResultService.page(page, wrapper);
  151. return OapResponse.success().setBody(resultData);
  152. }
  153. @ServiceMethod(method = "sentiment.spider.event.findResultInfo", title = "通过ID查询采集结果详情")
  154. public OapResponse findResultInfo(QuerySpiderResultDetailRequest request) {
  155. SentimentSpiderResult result = this.sentimentSpiderResultService.getById(request.getId());
  156. return OapResponse.success().setBody(result);
  157. }
  158. }