stjdydayou 4 лет назад
Родитель
Сommit
322841445a
19 измененных файлов с 428 добавлено и 61 удалено
  1. 9 0
      src/main/java/com/zhiqiyun/open/core/mapper/sentiment/SentimentSpiderEventMapper.java
  2. 9 0
      src/main/java/com/zhiqiyun/open/core/mapper/sentiment/SentimentSpiderResultMapper.java
  3. 9 0
      src/main/java/com/zhiqiyun/open/core/mapper/sentiment/SentimentSpiderRuleMapper.java
  4. 15 10
      src/main/java/com/zhiqiyun/open/core/models/sentiment/SentimentSpiderEvent.java
  5. 0 31
      src/main/java/com/zhiqiyun/open/core/models/sentiment/SentimentSpiderRule.java
  6. 28 0
      src/main/java/com/zhiqiyun/open/core/models/sentiment/SentimentSpiderSiteRule.java
  7. 29 0
      src/main/java/com/zhiqiyun/open/core/service/SentimentSpiderEventService.java
  8. 7 0
      src/main/java/com/zhiqiyun/open/core/service/SentimentSpiderResultService.java
  9. 7 0
      src/main/java/com/zhiqiyun/open/core/service/SentimentSpiderRuleService.java
  10. 26 0
      src/main/java/com/zhiqiyun/open/core/service/impl/SentimentSpiderEventServiceImpl.java
  11. 11 0
      src/main/java/com/zhiqiyun/open/core/service/impl/SentimentSpiderResultServiceImpl.java
  12. 11 0
      src/main/java/com/zhiqiyun/open/core/service/impl/SentimentSpiderRuleServiceImpl.java
  13. 201 0
      src/main/java/com/zhiqiyun/open/mvc/controller/SentimentSpiderController.java
  14. 13 0
      src/main/java/com/zhiqiyun/open/mvc/params/sentiment/QuerySpiderEventParam.java
  15. 11 0
      src/main/java/com/zhiqiyun/open/mvc/params/sentiment/QuerySpiderSiteRuleParam.java
  16. 10 0
      src/main/java/com/zhiqiyun/open/mvc/params/sentiment/SaveSpiderEventParam.java
  17. 12 0
      src/main/java/com/zhiqiyun/open/mvc/params/sentiment/SaveSpiderSiteRuleParam.java
  18. 18 18
      src/main/resources/db/migration/V1.1.2__sentiment_spider.sql
  19. 2 2
      src/test/java/com/zhiqiyun/TestSdk.java

+ 9 - 0
src/main/java/com/zhiqiyun/open/core/mapper/sentiment/SentimentSpiderEventMapper.java

@@ -0,0 +1,9 @@
+package com.zhiqiyun.open.core.mapper.sentiment;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderEvent;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SentimentSpiderEventMapper extends BaseMapper<SentimentSpiderEvent> {
+}

+ 9 - 0
src/main/java/com/zhiqiyun/open/core/mapper/sentiment/SentimentSpiderResultMapper.java

@@ -0,0 +1,9 @@
+package com.zhiqiyun.open.core.mapper.sentiment;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderResult;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SentimentSpiderResultMapper extends BaseMapper<SentimentSpiderResult> {
+}

+ 9 - 0
src/main/java/com/zhiqiyun/open/core/mapper/sentiment/SentimentSpiderRuleMapper.java

@@ -0,0 +1,9 @@
+package com.zhiqiyun.open.core.mapper.sentiment;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderSiteRule;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SentimentSpiderRuleMapper extends BaseMapper<SentimentSpiderSiteRule> {
+}

+ 15 - 10
src/main/java/com/zhiqiyun/open/core/models/sentiment/SentimentSpiderEvent.java

@@ -10,16 +10,21 @@ import java.util.Date;
 @Data
 @TableName("sentiment_spider_event")
 public class SentimentSpiderEvent {
-    private Long id;
-    private Long ruleId;
-    private String eventTitle;
-    private String keywords;
+	private Long id;
+	private Long siteRuleId;
+	private String eventTitle;
+	private String keywords;
 
-    @TableField(updateStrategy = FieldStrategy.NEVER)
-    private Date createdTime;
-    @TableField(updateStrategy = FieldStrategy.NEVER)
-    private Long createdBy;
+	@TableField(updateStrategy = FieldStrategy.NEVER)
+	private Date createdTime;
+	@TableField(updateStrategy = FieldStrategy.NEVER)
+	private Long createdBy;
 
-    private Date updatedTime;
-    private Long updatedBy;
+	private Date updatedTime;
+	private Long updatedBy;
+
+	@TableField(exist = false)
+	private SentimentSpiderSiteRule rule;
+	@TableField(exist = false)
+	private Integer status;
 }

+ 0 - 31
src/main/java/com/zhiqiyun/open/core/models/sentiment/SentimentSpiderRule.java

@@ -1,31 +0,0 @@
-package com.zhiqiyun.open.core.models.sentiment;
-
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.zhiqiyun.open.core.typeHandler.FastjsonTypeHandler;
-import lombok.Data;
-
-import java.util.Date;
-import java.util.List;
-
-@Data
-@TableName(value = "sentiment_spider_rule", autoResultMap = true)
-public class SentimentSpiderRule {
-    private Long id;
-    private String siteName;
-    private String urlPatterns;
-
-    @TableField(typeHandler = FastjsonTypeHandler.class)
-    private List<String> startUrls;
-
-    private String xpath;
-
-    @TableField(updateStrategy = FieldStrategy.NEVER)
-    private Date createdTime;
-    @TableField(updateStrategy = FieldStrategy.NEVER)
-    private Long createdBy;
-
-    private Date updatedTime;
-    private Long updatedBy;
-}

+ 28 - 0
src/main/java/com/zhiqiyun/open/core/models/sentiment/SentimentSpiderSiteRule.java

@@ -0,0 +1,28 @@
+package com.zhiqiyun.open.core.models.sentiment;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zhiqiyun.open.core.typeHandler.FastjsonTypeHandler;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@TableName(value = "sentiment_spider_site_rule", autoResultMap = true)
+public class SentimentSpiderSiteRule {
+	private Long id;
+	private String siteName;
+	private String urlPatterns;
+	private String startUrls;
+	private String xpath;
+
+	@TableField(updateStrategy = FieldStrategy.NEVER)
+	private Date createdTime;
+	@TableField(updateStrategy = FieldStrategy.NEVER)
+	private Long createdBy;
+
+	private Date updatedTime;
+	private Long updatedBy;
+}

+ 29 - 0
src/main/java/com/zhiqiyun/open/core/service/SentimentSpiderEventService.java

@@ -0,0 +1,29 @@
+package com.zhiqiyun.open.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderEvent;
+import com.zhiqiyun.open.core.models.statistics.PopularFeelings;
+
+public interface SentimentSpiderEventService extends IService<SentimentSpiderEvent> {
+	/**
+	 * 启动采集
+	 *
+	 * @param popular
+	 */
+	void start(PopularFeelings popular);
+
+	/**
+	 * 停止采集
+	 *
+	 * @param popular
+	 */
+	void stop(PopularFeelings popular);
+
+	/**
+	 * 查询运行状态
+	 *
+	 * @param popularFeelingsId
+	 */
+	int getStatus(Long popularFeelingsId);
+
+}

+ 7 - 0
src/main/java/com/zhiqiyun/open/core/service/SentimentSpiderResultService.java

@@ -0,0 +1,7 @@
+package com.zhiqiyun.open.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderResult;
+
+public interface SentimentSpiderResultService extends IService<SentimentSpiderResult> {
+}

+ 7 - 0
src/main/java/com/zhiqiyun/open/core/service/SentimentSpiderRuleService.java

@@ -0,0 +1,7 @@
+package com.zhiqiyun.open.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderSiteRule;
+
+public interface SentimentSpiderRuleService extends IService<SentimentSpiderSiteRule> {
+}

+ 26 - 0
src/main/java/com/zhiqiyun/open/core/service/impl/SentimentSpiderEventServiceImpl.java

@@ -0,0 +1,26 @@
+package com.zhiqiyun.open.core.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhiqiyun.open.core.mapper.sentiment.SentimentSpiderEventMapper;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderEvent;
+import com.zhiqiyun.open.core.models.statistics.PopularFeelings;
+import com.zhiqiyun.open.core.service.SentimentSpiderEventService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SentimentSpiderEventServiceImpl extends ServiceImpl<SentimentSpiderEventMapper, SentimentSpiderEvent> implements SentimentSpiderEventService {
+	@Override
+	public void start(PopularFeelings popular) {
+
+	}
+
+	@Override
+	public void stop(PopularFeelings popular) {
+
+	}
+
+	@Override
+	public int getStatus(Long popularFeelingsId) {
+		return 0;
+	}
+}

+ 11 - 0
src/main/java/com/zhiqiyun/open/core/service/impl/SentimentSpiderResultServiceImpl.java

@@ -0,0 +1,11 @@
+package com.zhiqiyun.open.core.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhiqiyun.open.core.mapper.sentiment.SentimentSpiderResultMapper;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderResult;
+import com.zhiqiyun.open.core.service.SentimentSpiderResultService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SentimentSpiderResultServiceImpl extends ServiceImpl<SentimentSpiderResultMapper, SentimentSpiderResult> implements SentimentSpiderResultService {
+}

+ 11 - 0
src/main/java/com/zhiqiyun/open/core/service/impl/SentimentSpiderRuleServiceImpl.java

@@ -0,0 +1,11 @@
+package com.zhiqiyun.open.core.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhiqiyun.open.core.mapper.sentiment.SentimentSpiderRuleMapper;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderSiteRule;
+import com.zhiqiyun.open.core.service.SentimentSpiderRuleService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SentimentSpiderRuleServiceImpl extends ServiceImpl<SentimentSpiderRuleMapper, SentimentSpiderSiteRule> implements SentimentSpiderRuleService {
+}

+ 201 - 0
src/main/java/com/zhiqiyun/open/mvc/controller/SentimentSpiderController.java

@@ -0,0 +1,201 @@
+package com.zhiqiyun.open.mvc.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zhiqiyun.open.annotation.Permission;
+import com.zhiqiyun.open.core.models.place.PlaceBaseInfo;
+import com.zhiqiyun.open.core.models.place.PlaceCategory;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderEvent;
+import com.zhiqiyun.open.core.models.sentiment.SentimentSpiderSiteRule;
+import com.zhiqiyun.open.core.models.user.OauthInfo;
+import com.zhiqiyun.open.core.service.OauthService;
+import com.zhiqiyun.open.core.service.SentimentSpiderEventService;
+import com.zhiqiyun.open.core.service.SentimentSpiderRuleService;
+import com.zhiqiyun.open.core.service.SequenceService;
+import com.zhiqiyun.open.mvc.Result;
+import com.zhiqiyun.open.mvc.params.sentiment.QuerySpiderEventParam;
+import com.zhiqiyun.open.mvc.params.sentiment.QuerySpiderSiteRuleParam;
+import com.zhiqiyun.open.mvc.params.sentiment.SaveSpiderEventParam;
+import com.zhiqiyun.open.mvc.params.sentiment.SaveSpiderSiteRuleParam;
+import com.zhiqiyun.open.utils.DateUtil;
+import com.zhiqiyun.open.utils.ServletContext;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/sentiment/spider")
+public class SentimentSpiderController {
+
+	@Autowired
+	private SentimentSpiderEventService sentimentSpiderEventService;
+
+	@Autowired
+	private SentimentSpiderRuleService sentimentSpiderRuleService;
+
+	@Autowired
+	private OauthService oauthService;
+
+	@Autowired
+	private SequenceService sequenceService;
+
+	@Permission(value = "sentiment.spider.rule.find", tags = "查询采集网站规则")
+	@PostMapping("/rule/findPage")
+	public Result findRulePage(@RequestBody QuerySpiderSiteRuleParam param) {
+		QueryWrapper<SentimentSpiderSiteRule> wrapper = new QueryWrapper<>();
+		if (StringUtils.isNotBlank(param.getSiteName())) {
+			wrapper.like("site_name", param.getSiteName());
+		}
+
+		Page<SentimentSpiderSiteRule> page = param.getPage();
+		page.addOrder(OrderItem.desc("id"));
+
+		Page<SentimentSpiderSiteRule> resultData = this.sentimentSpiderRuleService.page(page, wrapper);
+
+		return Result.instance(Result.Code.SUCCESS).setData(resultData);
+	}
+
+
+	@ResponseBody
+	@PostMapping("/rule/findSelectByKeyword")
+	public Result findSelectByKeyword(String keyword) {
+		QueryWrapper<SentimentSpiderSiteRule> queryWrapper = new QueryWrapper<>();
+
+		if (StringUtils.isNotBlank(keyword)) {
+			queryWrapper.like("site_name", keyword);
+			queryWrapper.or();
+			queryWrapper.like("id", keyword);
+		}
+		queryWrapper.last("limit 10");
+		queryWrapper.orderByDesc("id");
+
+		List<SentimentSpiderSiteRule> listData = this.sentimentSpiderRuleService.list(queryWrapper);
+		return Result.instance(Result.Code.SUCCESS).setData(listData);
+	}
+
+	@Permission(value = "sentiment.spider.rule.add", tags = "添加采集网站规则")
+	@PostMapping("/rule/save")
+	public Result saveRule(@Valid @RequestBody SaveSpiderSiteRuleParam param) throws Exception {
+
+		SentimentSpiderSiteRule entity = new SentimentSpiderSiteRule();
+		BeanUtils.copyProperties(param, entity);
+
+		OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
+
+		entity.setCreatedTime(DateUtil.current());
+		entity.setCreatedBy(oauthInfo.getId());
+
+		entity.setUpdatedTime(DateUtil.current());
+		entity.setUpdatedBy(oauthInfo.getId());
+		entity.setId(this.sequenceService.nextId());
+
+		this.sentimentSpiderRuleService.save(entity);
+
+		return Result.instance(Result.Code.MESSAGE_SUCCESS);
+	}
+
+	@Permission(value = "sentiment.spider.rule.edit", tags = "修改采集网站规则")
+	@PostMapping("/rule/updateById")
+	public Result updateRuleById(Long id, @Valid @RequestBody SaveSpiderSiteRuleParam param) {
+		SentimentSpiderSiteRule entity = new SentimentSpiderSiteRule();
+		BeanUtils.copyProperties(param, entity);
+
+		OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
+
+		entity.setUpdatedBy(oauthInfo.getId());
+		entity.setUpdatedTime(DateUtil.current());
+		entity.setId(id);
+
+		this.sentimentSpiderRuleService.updateById(entity);
+
+		return Result.instance(Result.Code.MESSAGE_SUCCESS);
+	}
+
+	@Permission(value = "sentiment.spider.rule.delete", tags = "采集网站规则删除")
+	@PostMapping("/rule/deleteByIds")
+	public Result deleteRuleByIds(@RequestBody List<Long> ids) {
+		this.sentimentSpiderRuleService.removeByIds(ids);
+		return Result.instance(Result.Code.MESSAGE_SUCCESS);
+	}
+
+
+	@Permission(value = "sentiment.spider.event.find", tags = "查询舆情事件")
+	@PostMapping("/event/findPage")
+	public Result findEventPage(@RequestBody QuerySpiderEventParam param) {
+		QueryWrapper<SentimentSpiderEvent> wrapper = new QueryWrapper<>();
+		if (param.getSiteRuleId() != null) {
+			wrapper.eq("site_rule_id", param.getSiteRuleId());
+		}
+		if (StringUtils.isNotBlank(param.getEventTitle())) {
+			wrapper.like("event_title", param.getEventTitle());
+		}
+		if (StringUtils.isNotBlank(param.getKeywords())) {
+			wrapper.like("keywords", param.getKeywords());
+		}
+
+		Page<SentimentSpiderEvent> page = param.getPage();
+		page.addOrder(OrderItem.desc("id"));
+
+		Page<SentimentSpiderEvent> resultData = this.sentimentSpiderEventService.page(page, wrapper);
+		for (SentimentSpiderEvent event : resultData.getRecords()) {
+			SentimentSpiderSiteRule rule = this.sentimentSpiderRuleService.getById(event.getSiteRuleId());
+			event.setRule(rule);
+			event.setStatus(this.sentimentSpiderEventService.getStatus(event.getId()));
+		}
+
+		return Result.instance(Result.Code.SUCCESS).setData(resultData);
+	}
+
+
+	@Permission(value = "sentiment.spider.event.add", tags = "添加采集网站规则")
+	@PostMapping("/event/save")
+	public Result saveEvent(@Valid @RequestBody SaveSpiderEventParam param) throws Exception {
+
+		SentimentSpiderEvent entity = new SentimentSpiderEvent();
+		BeanUtils.copyProperties(param, entity);
+
+		OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
+
+		entity.setCreatedTime(DateUtil.current());
+		entity.setCreatedBy(oauthInfo.getId());
+
+		entity.setUpdatedTime(DateUtil.current());
+		entity.setUpdatedBy(oauthInfo.getId());
+		entity.setId(this.sequenceService.nextId());
+
+		this.sentimentSpiderEventService.save(entity);
+
+		return Result.instance(Result.Code.MESSAGE_SUCCESS);
+	}
+
+	@Permission(value = "sentiment.spider.event.edit", tags = "修改采集网站规则")
+	@PostMapping("/event/updateById")
+	public Result updateRuleById(Long id, @Valid @RequestBody SaveSpiderEventParam param) {
+		SentimentSpiderEvent entity = new SentimentSpiderEvent();
+		BeanUtils.copyProperties(param, entity);
+
+		OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
+
+		entity.setUpdatedBy(oauthInfo.getId());
+		entity.setUpdatedTime(DateUtil.current());
+		entity.setId(id);
+
+		this.sentimentSpiderEventService.updateById(entity);
+
+		return Result.instance(Result.Code.MESSAGE_SUCCESS);
+	}
+
+	@Permission(value = "sentiment.spider.event.delete", tags = "采集网站规则删除")
+	@PostMapping("/event/deleteByIds")
+	public Result deleteEventByIds(@RequestBody List<Long> ids) {
+		this.sentimentSpiderEventService.removeByIds(ids);
+		return Result.instance(Result.Code.MESSAGE_SUCCESS);
+	}
+}

+ 13 - 0
src/main/java/com/zhiqiyun/open/mvc/params/sentiment/QuerySpiderEventParam.java

@@ -0,0 +1,13 @@
+package com.zhiqiyun.open.mvc.params.sentiment;
+
+import com.zhiqiyun.open.mvc.params.QueryPageParams;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class QuerySpiderEventParam extends QueryPageParams {
+	private Long siteRuleId;
+	private String eventTitle;
+	private String keywords;
+}

+ 11 - 0
src/main/java/com/zhiqiyun/open/mvc/params/sentiment/QuerySpiderSiteRuleParam.java

@@ -0,0 +1,11 @@
+package com.zhiqiyun.open.mvc.params.sentiment;
+
+import com.zhiqiyun.open.mvc.params.QueryPageParams;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class QuerySpiderSiteRuleParam extends QueryPageParams {
+	private String siteName;
+}

+ 10 - 0
src/main/java/com/zhiqiyun/open/mvc/params/sentiment/SaveSpiderEventParam.java

@@ -0,0 +1,10 @@
+package com.zhiqiyun.open.mvc.params.sentiment;
+
+import lombok.Data;
+
+@Data
+public class SaveSpiderEventParam {
+	private Long siteRuleId;
+	private String eventTitle;
+	private String keywords;
+}

+ 12 - 0
src/main/java/com/zhiqiyun/open/mvc/params/sentiment/SaveSpiderSiteRuleParam.java

@@ -0,0 +1,12 @@
+package com.zhiqiyun.open.mvc.params.sentiment;
+
+import lombok.Data;
+
+@Data
+public class SaveSpiderSiteRuleParam {
+	private Long id;
+	private String siteName;
+	private String urlPatterns;
+	private String startUrls;
+	private String xpath;
+}

+ 18 - 18
src/main/resources/db/migration/V1.1.2__sentiment_spider.sql

@@ -1,5 +1,5 @@
 REPLACE
-    INTO `authority_info` (`id`, `parent_id`, `name`, `remark`)
+INTO `authority_info` (`id`, `parent_id`, `name`, `remark`)
 VALUES (2300, 0, 'sentiment.spider', '舆情监控管理'),
        (2301, 2300, 'sentiment.spider.event.find', '舆情事件查询'),
        (2302, 2300, 'sentiment.spider.event.add', '舆情事件添加'),
@@ -17,30 +17,30 @@ VALUES (2300, 0, 'sentiment.spider', '舆情监控管理'),
 DROP TABLE IF EXISTS `sentiment_spider_site_rule`;
 CREATE TABLE `sentiment_spider_site_rule`
 (
-    `id`           BIGINT(20)  NOT NULL COMMENT 'ID',
+    `id`           BIGINT(20) NOT NULL COMMENT 'ID',
     `site_name`    VARCHAR(50) NOT NULL COMMENT '网站名称',
-    `url_patterns` VARCHAR(50) NOT NULL COMMENT '匹配URL地址',
-    `start_urls`   VARCHAR(50) NOT NULL COMMENT '启动地址',
-    `xpath`        VARCHAR(50) NOT NULL COMMENT '提取内容的xpath',
+    `url_patterns` text        NOT NULL COMMENT '匹配URL地址',
+    `start_urls`   text        NOT NULL COMMENT '启动地址',
+    `xpath`        VARCHAR(200) NOT NULL COMMENT '提取内容的xpath',
     `created_time` DATETIME    NOT NULL COMMENT '创建时间',
-    `created_by`   BIGINT(20)  NOT NULL COMMENT '创建人',
-    `updated_time` DATETIME    NULL DEFAULT NULL COMMENT '修改时间',
-    `updated_by`   BIGINT(20)  NULL DEFAULT NULL COMMENT '修改人',
+    `created_by`   BIGINT(20) NOT NULL COMMENT '创建人',
+    `updated_time` DATETIME NULL DEFAULT NULL COMMENT '修改时间',
+    `updated_by`   BIGINT(20) NULL DEFAULT NULL COMMENT '修改人',
     PRIMARY KEY (`id`)
 ) COMMENT ='采集网站规则' ENGINE = InnoDB;
 
 DROP TABLE IF EXISTS `sentiment_spider_event`;
 CREATE TABLE `sentiment_spider_event`
 (
-    `id`           BIGINT(20)   NOT NULL COMMENT 'ID',
-    `site_rule_id` BIGINT(20)   NOT NULL COMMENT '采集站点ID',
+    `id`           BIGINT(20) NOT NULL COMMENT 'ID',
+    `site_rule_id` BIGINT(20) NOT NULL COMMENT '采集站点ID',
     `event_title`  VARCHAR(500) NOT NULL COMMENT '事件名称',
     `keywords`     VARCHAR(500) NOT NULL COMMENT '匹配关键词',
     `created_time` DATETIME     NOT NULL COMMENT '创建时间',
-    `created_by`   BIGINT(20)   NOT NULL COMMENT '创建人',
-    `updated_time` DATETIME     NULL DEFAULT NULL COMMENT '修改时间',
-    `updated_by`   BIGINT(20)   NULL DEFAULT NULL COMMENT '修改人',
-    KEY `site_rule_id_index` (`site_rule_id`),
+    `created_by`   BIGINT(20) NOT NULL COMMENT '创建人',
+    `updated_time` DATETIME NULL DEFAULT NULL COMMENT '修改时间',
+    `updated_by`   BIGINT(20) NULL DEFAULT NULL COMMENT '修改人',
+    KEY            `site_rule_id_index` (`site_rule_id`),
     PRIMARY KEY (`id`)
 ) COMMENT ='舆情事件' ENGINE = InnoDB;
 
@@ -48,8 +48,8 @@ DROP TABLE IF EXISTS `sentiment_spider_result`;
 CREATE TABLE `sentiment_spider_result`
 (
     `id`           VARCHAR(50)  NOT NULL COMMENT 'ID',
-    `event_id`     BIGINT(20)   NOT NULL COMMENT '舆情事件ID',
-    `site_rule_id` BIGINT(20)   NOT NULL COMMENT '网站规则ID',
+    `event_id`     BIGINT(20) NOT NULL COMMENT '舆情事件ID',
+    `site_rule_id` BIGINT(20) NOT NULL COMMENT '网站规则ID',
     `url`          VARCHAR(500) NOT NULL COMMENT 'URL地址',
     `title`        VARCHAR(500) NOT NULL COMMENT '标题',
     `keywords`     VARCHAR(500) NOT NULL COMMENT '关键词',
@@ -59,7 +59,7 @@ CREATE TABLE `sentiment_spider_result`
     `html`         LONGTEXT     NOT NULL COMMENT '全文本HTML',
     `spider_time`  DATETIME     NOT NULL COMMENT '采集时间',
     `update_time`  DATETIME     NOT NULL COMMENT '更新采集时间',
-    KEY `event_id_index` (`event_id`),
-    KEY `site_rule_id_index` (`site_rule_id`),
+    KEY            `event_id_index` (`event_id`),
+    KEY            `site_rule_id_index` (`site_rule_id`),
     PRIMARY KEY (`id`)
 ) COMMENT ='舆情采集结果' ENGINE = InnoDB;

+ 2 - 2
src/test/java/com/zhiqiyun/TestSdk.java

@@ -105,8 +105,8 @@ public class TestSdk {
 	@Test
 	public void socialRemove() throws ClientException {
 		Map<String, Object> dataMap = new HashMap<>();
-		dataMap.put("accessToken", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRfaWQiOm51bGwsInVzZXJfbmFtZSI6IjE4ODEyMzQ1Njc4IiwicmVhbF9uYW1lIjoiYWRtaW4iLCJhdmF0YXIiOiIiLCJjbGllbnRfaWQiOiJzYWJlciIsInJvbGVfbmFtZSI6IiIsImxpY2Vuc2UiOiJwb3dlcmVkIGJ5IGJsYWRleCIsImFjY291bnRfaWQiOiIxNTAyMTg0MDY4OTg3NDMyOTYyIiwicG9zdF9pZCI6IiIsInVzZXJfaWQiOiIiLCJyb2xlX2lkIjoiIiwic2NvcGUiOlsiYWxsIl0sIm5pY2tfbmFtZSI6ImFkbWluIiwib2F1dGhfaWQiOiIiLCJkZXRhaWwiOm51bGwsImV4cCI6MTY0NzAyMDI0NCwiZGVwdF9pZCI6IiIsImp0aSI6IjMwNWM0M2MwLWQ1NTAtNDhiMi05Yjk4LTkzNTM2NDllMGI1NyIsImFjY291bnQiOiIxODgxMjM0NTY3OCJ9.wtdQahB8Fn_lixfoDbYyLZ-HWB0p6H8T3TRV3timWaQ");
-		dataMap.put("id", "1502187187179827201");
+		dataMap.put("accessToken", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRfaWQiOiIxMDQ3ODQiLCJ1c2VyX25hbWUiOiIxMzY2NjY2NjY2NiIsInJlYWxfbmFtZSI6ImFkbWluIiwiYXZhdGFyIjoiIiwiYXV0aG9yaXRpZXMiOlsiYWRtaW4iXSwiY2xpZW50X2lkIjoic2FiZXIiLCJyb2xlX25hbWUiOiJhZG1pbiIsImxpY2Vuc2UiOiJwb3dlcmVkIGJ5IGJsYWRleCIsImFjY291bnRfaWQiOiIxNDg0MTI3ODYwMzI5NDcyMDAxIiwicG9zdF9pZCI6IjE0ODQxMjc4NTk2MzcxNTc4ODkiLCJ1c2VyX2lkIjoiMTQ4NDEyNzg2MDI0MTM5MTYxOCIsInJvbGVfaWQiOiIxNDg0MTI3ODU3MzUxMjYyMjEwIiwic2NvcGUiOlsiYWxsIl0sIm5pY2tfbmFtZSI6bnVsbCwib2F1dGhfaWQiOiIiLCJkZXRhaWwiOnsidHlwZSI6IndlYiJ9LCJleHAiOjE2NDcyODczODQsImRlcHRfaWQiOiIxNDg0MTI3ODU5NjIwMzgwNjc0IiwianRpIjoiMzgzZTYyZTItY2JiYS00MzBiLWIwMmUtODE1MmE4Yzg4MGE4IiwiYWNjb3VudCI6IjEzNjY2NjY2NjY2In0.JBjhpDVrmzdSyJTU2ebBtNP-6qhrAuPgXLfUztPAYe4");
+		dataMap.put("id", "1253564710732921783");
 		Response<Map<String, Object>> response = this.getClient().execute("oauth2.social.remove", "1.0.0", dataMap);
 		System.out.println(JSON.toJSONString(response));
 	}