Commit 06a55dc7 by shenjunjie

mongo-Date 调整至Long

parent 98cac6df
...@@ -97,6 +97,11 @@ ...@@ -97,6 +97,11 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId> <artifactId>spring-boot-starter-quartz</artifactId>
</dependency> </dependency>
<!-- retry -->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<!-- swagger2 --> <!-- swagger2 -->
<dependency> <dependency>
<groupId>io.springfox</groupId> <groupId>io.springfox</groupId>
...@@ -221,6 +226,13 @@ ...@@ -221,6 +226,13 @@
<version>1.7.5</version> <version>1.7.5</version>
</dependency> </dependency>
<!-- nlp 聚合工具包 -->
<dependency>
<groupId>com.zhiwei.nlp</groupId>
<artifactId>nlp-aggree</artifactId>
<version>0.0.5-SNAPSHOT</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
package com.zhiwei.brandkbs2.common; package com.zhiwei.brandkbs2.common;
import com.zhiwei.brandkbs2.es.ITaskService; import com.zhiwei.brandkbs2.service.ITaskService;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
......
...@@ -14,8 +14,20 @@ public class GenericAttribute { ...@@ -14,8 +14,20 @@ public class GenericAttribute {
* es index * es index
*/ */
public static final String ES_INDEX_PRE = "brandkbs2"; public static final String ES_INDEX_PRE = "brandkbs2";
public static final String ES_INDEX_TEST = "brandkbs_test"; public static final String ES_INDEX_TEST = "brandkbs2_test";
/**
* es ind_title
**/
public static final String ES_IND_TITLE = "ind_title";
/**
* es ind_full_text
**/
public static final String ES_IND_FULL_TEXT = "ind_full_text";
/**
* es gid
**/
public static final String ES_GID = "gid";
public static final String ES_CNAME = "cname";
/** es c2 **/ /** es c2 **/
public static final String ES_C2 = "c2"; public static final String ES_C2 = "c2";
/** es c5 **/ /** es c5 **/
......
...@@ -2,24 +2,37 @@ package com.zhiwei.brandkbs2.controller; ...@@ -2,24 +2,37 @@ package com.zhiwei.brandkbs2.controller;
import com.zhiwei.brandkbs2.auth.Auth; import com.zhiwei.brandkbs2.auth.Auth;
import com.zhiwei.brandkbs2.enmus.RoleEnum; import com.zhiwei.brandkbs2.enmus.RoleEnum;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO;
import com.zhiwei.brandkbs2.service.IMarkDataService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/** /**
* @ClassName: AppArticleController * @ClassName AppArticleController
* @Description 提供前台稿件相关信息展示 * @Description 提供前台稿件相关信息展示
* @author: sjj * @author sjj
* @date: 2022-06-20 09:27 * @date 2022-06-20 09:27
*/ */
@RestController @RestController
@RequestMapping("/app/articles") @RequestMapping("/app/yuqing")
@Api(tags = "前台稿件展示接口", description = "提供前台稿件相关信息展示") @Api(tags = "前台稿件展示接口", description = "提供前台稿件相关信息展示")
@Auth(role = RoleEnum.CUSTOMER) @Auth(role = RoleEnum.CUSTOMER)
public class AppArticleController extends BaseController{ public class AppArticleController extends BaseController{
@Resource(name = "markDataServiceImpl")
IMarkDataService markDataService;
@ApiOperation("舆情标注数据列表")
@GetMapping("/list/mark")
public ResponseResult getYuqingMarkList(MarkSearchDTO markSearchDTO) {
return ResponseResult.success(markDataService.getYuqingMarkList(markSearchDTO));
}
......
...@@ -73,12 +73,12 @@ public class UploadEventDataDTO { ...@@ -73,12 +73,12 @@ public class UploadEventDataDTO {
eventData.setRealSource(this.getRealSource()); eventData.setRealSource(this.getRealSource());
eventData.setSource(this.getSource()); eventData.setSource(this.getSource());
eventData.setUrl(this.getUrl()); eventData.setUrl(this.getUrl());
eventData.setTime(this.getTime()); eventData.setTime(this.getTime().getTime());
//如果标题不为空,取前64个字符作为标题,如果为空,取内容的前32位作为标题 //如果标题不为空,取前64个字符作为标题,如果为空,取内容的前32位作为标题
eventData.setTitle(Strings.isNotBlank(title) ? (title.length() > 64 ? title.substring(0, 64) : title) : content.length() > 32 ? content.substring(0, 32) : content); eventData.setTitle(Strings.isNotBlank(title) ? (title.length() > 64 ? title.substring(0, 64) : title) : content.length() > 32 ? content.substring(0, 32) : content);
eventData.setAggTitle(Tools.filterSpecialCharacter(title)); eventData.setAggTitle(Tools.filterSpecialCharacter(title));
eventData.setContent(content); eventData.setContent(content);
eventData.setTime(this.getTime()); eventData.setTime(this.getTime().getTime());
JSONObject tagInfo = new JSONObject(); JSONObject tagInfo = new JSONObject();
Optional.ofNullable(this.getEmotion()).ifPresent(emotion -> tagInfo.put(GenericAttribute.EMOTION_LABEL_KEY, emotion)); Optional.ofNullable(this.getEmotion()).ifPresent(emotion -> tagInfo.put(GenericAttribute.EMOTION_LABEL_KEY, emotion));
Optional.ofNullable(this.getBrand()).ifPresent(brand -> tagInfo.put(GenericAttribute.BRAND_LABEL_KEY, brand)); Optional.ofNullable(this.getBrand()).ifPresent(brand -> tagInfo.put(GenericAttribute.BRAND_LABEL_KEY, brand));
...@@ -89,7 +89,7 @@ public class UploadEventDataDTO { ...@@ -89,7 +89,7 @@ public class UploadEventDataDTO {
eventData.setEventId(event.getId()); eventData.setEventId(event.getId());
eventData.setProjectId(event.getProjectId()); eventData.setProjectId(event.getProjectId());
eventData.setLinkedGroupId(event.getLinkedGroupId()); eventData.setLinkedGroupId(event.getLinkedGroupId());
eventData.setCTime(new Date()); eventData.setCTime(System.currentTimeMillis());
// TODO Type字段类型是否需要??? // TODO Type字段类型是否需要???
return eventData; return eventData;
} }
......
package com.zhiwei.brandkbs2.es;
import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.pushlog.tools.Tools;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import java.util.*;
/**
* @ClassName: EsQueryTool
* @Description es语句辅助类
* @author: sjj
* @date: 2022-06-29 15:27
*/
public class EsQueryTools {
public static final String ES_QUERY_AND = "must";
public static final String ES_QUERY_OR = "should";
public static final String ES_QUERY_NOT = "not";
/**
* 多字段 keyword格式为【腾讯 马化腾|京东 刘强东】 这是(腾讯且马化腾)或(京东且刘强东)
*
* @param @param keyword
* @param @param strings
* @param @return 设定文件
* @return QueryBuilder 返回类型
* @Title: assembleNormalKeywordQuery
* @Description: 多字段 search格式为【腾讯 马化腾|京东 刘强东】 这是(腾讯且马化腾)或(京东且刘强东)
*/
public static BoolQueryBuilder assembleNormalKeywordQuery(String keyword, String[] fieldList) {
String orStr = "|";
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
if (Tools.isEmpty(keyword)) {
return queryBuilder;
} else if (keyword.contains(StringUtils.SPACE) && !keyword.contains(orStr)) {
// 单组关键词
BoolQueryBuilder mixBoolQueryBuilder = QueryBuilders.boolQuery();
String[] words = keyword.split(" +");
for (String word : words) {
mixBoolQueryBuilder.must(
EsQueryTools.matchPhraseQueryFields(QueryBuilders.boolQuery(), ES_QUERY_OR, word, fieldList));
}
queryBuilder.should(mixBoolQueryBuilder);
} else if (keyword.contains(orStr)) {
// 多组关键词
BoolQueryBuilder mixBoolQueryBuilder = QueryBuilders.boolQuery();
String[] wordGroups = keyword.split("\\|");
for (String wordGroup : wordGroups) {
BoolQueryBuilder wordBoolQueryBuilder = QueryBuilders.boolQuery();
String[] words = wordGroup.split(" +");
for (String word : words) {
wordBoolQueryBuilder.must(EsQueryTools.matchPhraseQueryFields(QueryBuilders.boolQuery(),
ES_QUERY_OR, word, fieldList));
}
mixBoolQueryBuilder.should(wordBoolQueryBuilder);
}
queryBuilder.should(mixBoolQueryBuilder);
} else {
// 单个关键词
EsQueryTools.matchPhraseQueryFields(queryBuilder, ES_QUERY_OR, keyword, fieldList);
}
return queryBuilder;
}
/**
* 标签请求匹配
*
* @param tagIds
* @return
*/
public static BoolQueryBuilder assembleTagQuery(List<String> tagIds) {
BoolQueryBuilder tagQuery = QueryBuilders.boolQuery();
tagIds.forEach(e -> {
tagQuery.should(QueryBuilders.termQuery("mark_cache_maps.unique_id.keyword", e));
});
return tagQuery;
}
/**
* platform 组合语句
*
* @param @param platforms
* @param @return 设定文件
* @return BoolQueryBuilder 返回类型
* @Title: assemblePlatformQuery
* @Description: platform 组合语句
*/
public static BoolQueryBuilder assemblePlatformQuery(List<MessagePlatform> platforms) {
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
Map<String, List<Integer>> queryMap = newQueryMap(platforms);
for (Map.Entry<String, List<Integer>> queryEntry : queryMap.entrySet()) {
if (Tools.isEmpty(queryEntry.getValue())) {
continue;
}
BoolQueryBuilder ptBuilder = QueryBuilders.boolQuery();
ptBuilder.must(QueryBuilders.termQuery(GenericAttribute.ES_FOREIGN, Integer.parseInt(queryEntry.getKey())))
.must(QueryBuilders.termsQuery(GenericAttribute.ES_C5, queryEntry.getValue()));
queryBuilder.should(ptBuilder);
}
return queryBuilder;
}
/**
* 字段不拆封,多字段 同关键词
*
* @param @param boolQueryBuilder
* @param @param esQuery
* @param @param word
* @param @param fields
* @param @return 设定文件
* @return BoolQueryBuilder 返回类型
* @Title: matchPhraseQueryFields
* @Description: 字段不拆封, 多字段 同关键词
*/
public static BoolQueryBuilder matchPhraseQueryFields(BoolQueryBuilder boolQueryBuilder, String esQuery,
String word, String... fields) {
if (ES_QUERY_AND.equals(esQuery)) {
for (String field : fields) {
boolQueryBuilder.must(QueryBuilders.matchPhraseQuery(field, word));
}
} else if (ES_QUERY_OR.equals(esQuery)) {
for (String field : fields) {
boolQueryBuilder.should(QueryBuilders.matchPhraseQuery(field, word));
}
} else if (ES_QUERY_NOT.equals(esQuery)) {
for (String field : fields) {
boolQueryBuilder.mustNot(QueryBuilders.matchPhraseQuery(field, word));
}
}
return boolQueryBuilder;
}
/**
* new QueryMap
*
* @param platforms
* @return Map<String, List < Integer>>
*/
private static Map<String, List<Integer>> newQueryMap(List<MessagePlatform> platforms) {
Map<String, List<Integer>> queryMap = new HashMap<>(6);
for (MessagePlatform messagePlatform : platforms) {
// 按templateHeaderIds来组装查询语句,按origin+foreign分组
for (String templateHeaderId : messagePlatform.getTemplateHeaders()) {
String[] templateHeader = templateHeaderId.split("_");
String c5 = templateHeader[0];
String foreign = templateHeader[1];
if (Objects.isNull(queryMap.get(foreign))) {
queryMap.put(foreign, new ArrayList<>());
}
queryMap.get(foreign).add(Integer.parseInt(c5));
}
}
return queryMap;
}
}
package com.zhiwei.brandkbs2.es;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.retry.backoff.ExponentialBackOffPolicy;
import org.springframework.retry.policy.SimpleRetryPolicy;
import org.springframework.retry.support.RetryTemplate;
/**
* @ClassName: EsRetryTools
* @Description: es重试
* @author: sjj
* @date: 2022年6月28日17:11:20
**/
@Configuration
public class EsRetryTools {
@Bean(name = "retryTemplate")
public RetryTemplate getRetryTemplate() {
RetryTemplate template = new RetryTemplate();
SimpleRetryPolicy policy = new SimpleRetryPolicy();
ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
// 策略
policy.setMaxAttempts(2);// 重试次数
template.setRetryPolicy(policy);
backOffPolicy.setInitialInterval(1000);// 初始休眠
backOffPolicy.setMultiplier(2);// 指定乘数 下次休眠 = multiplier * 当前休眠时间
backOffPolicy.setMaxInterval(5000);// 最大休眠时间
template.setBackOffPolicy(backOffPolicy);
return template;
}
}
...@@ -15,17 +15,24 @@ public class CustomException extends RuntimeException { ...@@ -15,17 +15,24 @@ public class CustomException extends RuntimeException {
*/ */
private final ResultCode resultCode; private final ResultCode resultCode;
public CustomException(String errorReason,ResultCode resultCode) { private final Exception exception;
super(errorReason);
public CustomException(ResultCode resultCode) {
this.resultCode = resultCode; this.resultCode = resultCode;
this.exception = null;
} }
public CustomException(ResultCode resultCode){
public CustomException(ResultCode resultCode, Exception e) {
this.resultCode = resultCode; this.resultCode = resultCode;
this.exception = e;
} }
public ResultCode getResultCode(){ public ResultCode getResultCode() {
return resultCode; return resultCode;
} }
public Exception getException() {
return exception;
}
} }
...@@ -11,7 +11,11 @@ import com.zhiwei.brandkbs2.model.ResultCode; ...@@ -11,7 +11,11 @@ import com.zhiwei.brandkbs2.model.ResultCode;
*/ */
public class ExceptionCast { public class ExceptionCast {
public static void cast(ResultCode resultCode){ public static void cast(ResultCode resultCode) {
throw new CustomException(resultCode); throw new CustomException(resultCode);
} }
public static void cast(ResultCode resultCode, Exception e) {
throw new CustomException(resultCode, e);
}
} }
...@@ -27,12 +27,7 @@ public class ExceptionCatch { ...@@ -27,12 +27,7 @@ public class ExceptionCatch {
/** /**
* 定义map,配置异常类型所对应的错误代码 * 定义map,配置异常类型所对应的错误代码
*/ */
private static ImmutableMap<Class<? extends Throwable>, ResultCode> EXCEPTIONS; private static final ImmutableMap<Class<? extends Throwable>, ResultCode> EXCEPTIONS;
/**
* 定义map的builder对象,去构建ImmutableMap
*/
protected static ImmutableMap.Builder<Class<? extends Throwable>, ResultCode> builder = ImmutableMap.builder();
/** /**
* 捕获CustomException此类异常 * 捕获CustomException此类异常
...@@ -43,8 +38,13 @@ public class ExceptionCatch { ...@@ -43,8 +38,13 @@ public class ExceptionCatch {
@ExceptionHandler(CustomException.class) @ExceptionHandler(CustomException.class)
public ResponseResult customException(CustomException customException) { public ResponseResult customException(CustomException customException) {
ResultCode resultCode = customException.getResultCode(); ResultCode resultCode = customException.getResultCode();
Exception exception = customException.getException();
//记录日志 //记录日志
log.error("catch customException:{}", resultCode.message()); if (null == exception) {
log.error("catch exception-custom:{}", resultCode.message());
} else {
log.error("catch exception-custom:{}", resultCode.message(), exception);
}
return new ResponseResult(resultCode, Collections.EMPTY_LIST); return new ResponseResult(resultCode, Collections.EMPTY_LIST);
} }
...@@ -58,10 +58,6 @@ public class ExceptionCatch { ...@@ -58,10 +58,6 @@ public class ExceptionCatch {
public ResponseResult exception(Exception exception) { public ResponseResult exception(Exception exception) {
//记录日志 //记录日志
log.error("catch exception:", exception); log.error("catch exception:", exception);
if (Objects.isNull(EXCEPTIONS)) {
//EXCEPTIONS构建成功
EXCEPTIONS = builder.build();
}
//从EXCEPTIONS中找异常类型所对应的错误代码 //从EXCEPTIONS中找异常类型所对应的错误代码
ResultCode resultCode = EXCEPTIONS.get(exception.getClass()); ResultCode resultCode = EXCEPTIONS.get(exception.getClass());
if (Objects.nonNull(resultCode)) { if (Objects.nonNull(resultCode)) {
...@@ -74,7 +70,9 @@ public class ExceptionCatch { ...@@ -74,7 +70,9 @@ public class ExceptionCatch {
static { static {
//定义异常类型所对应的错误代码 //定义异常类型所对应的错误代码
ImmutableMap.Builder<Class<? extends Throwable>, ResultCode> builder = ImmutableMap.builder();
builder.put(HttpMessageNotReadableException.class, CommonCodeEnum.INVALID_PARAM); builder.put(HttpMessageNotReadableException.class, CommonCodeEnum.INVALID_PARAM);
builder.put(NullPointerException.class, CommonCodeEnum.NULL_POINTER_EXCEPTION); builder.put(NullPointerException.class, CommonCodeEnum.NULL_POINTER_EXCEPTION);
EXCEPTIONS = builder.build();
} }
} }
...@@ -3,8 +3,6 @@ package com.zhiwei.brandkbs2.pojo; ...@@ -3,8 +3,6 @@ package com.zhiwei.brandkbs2.pojo;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date;
/** /**
* @ClassName: Behavior * @ClassName: Behavior
* @Description 用户行为实体类 * @Description 用户行为实体类
...@@ -30,7 +28,7 @@ public class Behavior extends AbstractBaseMongo { ...@@ -30,7 +28,7 @@ public class Behavior extends AbstractBaseMongo {
/** /**
* 创建时间 * 创建时间
*/ */
private Date cTime; private Long cTime;
/** /**
* 访问页面 * 访问页面
*/ */
......
...@@ -20,12 +20,12 @@ public class Channel extends ChannelIndex { ...@@ -20,12 +20,12 @@ public class Channel extends ChannelIndex {
/** /**
* 创建时间 * 创建时间
*/ */
private Date cTime; private Long cTime;
/** /**
* 最近发文 * 最近发文
*/ */
private Date lastTime; private Long lastTime;
/** /**
* 图片地址 * 图片地址
...@@ -50,7 +50,7 @@ public class Channel extends ChannelIndex { ...@@ -50,7 +50,7 @@ public class Channel extends ChannelIndex {
/** /**
* 渠道倾向 * 渠道倾向
*/ */
private String emotion ="未定义"; private String emotion = "未定义";
/** /**
* 渠道指数 * 渠道指数
...@@ -67,8 +67,8 @@ public class Channel extends ChannelIndex { ...@@ -67,8 +67,8 @@ public class Channel extends ChannelIndex {
*/ */
private boolean show = true; private boolean show = true;
public void setLastTime(Date lastTime) { public void setLastTime(Long lastTime) {
if (null == this.lastTime || this.lastTime.before(lastTime)) { if (null == this.lastTime || this.lastTime < lastTime) {
this.lastTime = lastTime; this.lastTime = lastTime;
} }
} }
...@@ -81,18 +81,18 @@ public class Channel extends ChannelIndex { ...@@ -81,18 +81,18 @@ public class Channel extends ChannelIndex {
} }
} }
public void setChannelRecord(ChannelRecord channelRecord){ public void setChannelRecord(ChannelRecord channelRecord) {
setLastTime(channelRecord.getLastTime()); setLastTime(channelRecord.getLastTime());
setArticleIds(channelRecord.getArticleIds()); setArticleIds(channelRecord.getArticleIds());
} }
public ChannelIndex getChannelIndex(){ public ChannelIndex getChannelIndex() {
return Tools.convertMap(this,ChannelIndex.class); return Tools.convertMap(this, ChannelIndex.class);
} }
public static Channel createFromChannelIndexRecord(ChannelIndex channelIndex, ChannelRecord channelRecord) { public static Channel createFromChannelIndexRecord(ChannelIndex channelIndex, ChannelRecord channelRecord) {
Channel channel = new Channel(); Channel channel = new Channel();
channel.setCTime(new Date()); channel.setCTime(new Date().getTime());
channel.setLinkedGroupId(channelIndex.getLinkedGroupId()); channel.setLinkedGroupId(channelIndex.getLinkedGroupId());
channel.setPlatform(channelIndex.getPlatform()); channel.setPlatform(channelIndex.getPlatform());
channel.setRealSource(channelIndex.getRealSource()); channel.setRealSource(channelIndex.getRealSource());
......
...@@ -7,7 +7,6 @@ import lombok.AllArgsConstructor; ...@@ -7,7 +7,6 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import org.elasticsearch.search.SearchHit;
import java.util.*; import java.util.*;
...@@ -62,19 +61,19 @@ public class ChannelIndex extends AbstractBaseMongo { ...@@ -62,19 +61,19 @@ public class ChannelIndex extends AbstractBaseMongo {
@Getter @Getter
public static class ChannelRecord { public static class ChannelRecord {
private Date lastTime; private Long lastTime;
private LinkedHashSet<String> articleIds = new LinkedHashSet<>(); private LinkedHashSet<String> articleIds = new LinkedHashSet<>();
public ChannelRecord() { public ChannelRecord() {
} }
public ChannelRecord(Date lastTime, String articleId) { public ChannelRecord(Long lastTime, String articleId) {
this.lastTime = lastTime; this.lastTime = lastTime;
this.articleIds.add(articleId); this.articleIds.add(articleId);
} }
private void setLastTime(Date lastTime) { private void setLastTime(Long lastTime) {
if (null == this.lastTime || this.lastTime.before(lastTime)) { if (null == this.lastTime || this.lastTime<lastTime) {
this.lastTime = lastTime; this.lastTime = lastTime;
} }
} }
......
...@@ -8,7 +8,6 @@ import lombok.Getter; ...@@ -8,7 +8,6 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
import java.util.Objects; import java.util.Objects;
/** /**
...@@ -34,11 +33,11 @@ public class Event extends AbstractBaseMongo { ...@@ -34,11 +33,11 @@ public class Event extends AbstractBaseMongo {
/** /**
* 开始时间 * 开始时间
*/ */
private Date startTime; private Long startTime;
/** /**
* 结束时间 * 结束时间
*/ */
private Date endTime; private Long endTime;
/** /**
* 关键字 * 关键字
*/ */
...@@ -58,7 +57,7 @@ public class Event extends AbstractBaseMongo { ...@@ -58,7 +57,7 @@ public class Event extends AbstractBaseMongo {
/** /**
* 创建时间 * 创建时间
*/ */
private Date cTime; private Long cTime;
/** /**
* 影响力 * 影响力
*/ */
...@@ -98,8 +97,8 @@ public class Event extends AbstractBaseMongo { ...@@ -98,8 +97,8 @@ public class Event extends AbstractBaseMongo {
Event event = new Event(); Event event = new Event();
event.setCollectionName(collectionName); event.setCollectionName(collectionName);
event.setTitle(eventDTO.getTitle()); event.setTitle(eventDTO.getTitle());
event.setStartTime(eventDTO.getStartTime()); event.setStartTime(eventDTO.getStartTime().getTime());
event.setEndTime(eventDTO.getEndTime()); event.setEndTime(eventDTO.getEndTime().getTime());
event.setEndStatus(Objects.nonNull(eventDTO.getEndTime())); event.setEndStatus(Objects.nonNull(eventDTO.getEndTime()));
event.setKeyword(eventDTO.getKeyword()); event.setKeyword(eventDTO.getKeyword());
event.setEmotion(eventDTO.getEmotion()); event.setEmotion(eventDTO.getEmotion());
......
...@@ -6,9 +6,7 @@ import com.zhiwei.brandkbs2.pojo.dto.EventDataDTO; ...@@ -6,9 +6,7 @@ import com.zhiwei.brandkbs2.pojo.dto.EventDataDTO;
import com.zhiwei.brandkbs2.util.Tools; import com.zhiwei.brandkbs2.util.Tools;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.apache.poi.ss.formula.functions.Even;
import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
...@@ -68,11 +66,11 @@ public class EventData extends AbstractBaseMongo { ...@@ -68,11 +66,11 @@ public class EventData extends AbstractBaseMongo {
/** /**
* 文章时间 * 文章时间
*/ */
private Date time; private Long time;
/** /**
* 创建时间 * 创建时间
*/ */
private Date cTime; private Long cTime;
/** /**
* 标签数据 * 标签数据
*/ */
...@@ -97,9 +95,9 @@ public class EventData extends AbstractBaseMongo { ...@@ -97,9 +95,9 @@ public class EventData extends AbstractBaseMongo {
data.setAggTitle(Tools.filterSpecialCharacter(baseMap.getTitle())); data.setAggTitle(Tools.filterSpecialCharacter(baseMap.getTitle()));
data.setContent(baseMap.getContent()); data.setContent(baseMap.getContent());
data.setEmotion(baseMap.getEmotion()); data.setEmotion(baseMap.getEmotion());
data.setTime(new Date(baseMap.getTime())); data.setTime(baseMap.getTime());
data.setForward(baseMap.isForward()); data.setForward(baseMap.isForward());
data.setCTime(new Date(jsonMap.getLong(GenericAttribute.ES_CTIME))); data.setCTime(jsonMap.getLong(GenericAttribute.ES_CTIME));
// TagInfo // TagInfo
data.setTagInfo(Tools.change2TagInfoByMtag(jsonMap.getString(GenericAttribute.ES_MTAG)).toJSONString()); data.setTagInfo(Tools.change2TagInfoByMtag(jsonMap.getString(GenericAttribute.ES_MTAG)).toJSONString());
return data; return data;
......
package com.zhiwei.brandkbs2.pojo; package com.zhiwei.brandkbs2.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
...@@ -28,7 +27,7 @@ public class HighWord extends AbstractBaseMongo { ...@@ -28,7 +27,7 @@ public class HighWord extends AbstractBaseMongo {
/** /**
* 创建时间 * 创建时间
*/ */
private Date cTime; private Long cTime;
/** /**
* 上传人 * 上传人
...@@ -42,7 +41,7 @@ public class HighWord extends AbstractBaseMongo { ...@@ -42,7 +41,7 @@ public class HighWord extends AbstractBaseMongo {
public static List<HighWord> createFromList(List<String> keywords, String projectId, String submitter) { public static List<HighWord> createFromList(List<String> keywords, String projectId, String submitter) {
List<HighWord> res = new ArrayList<>(); List<HighWord> res = new ArrayList<>();
Date now = new Date(); Long now = new Date().getTime();
for (String keyword : keywords) { for (String keyword : keywords) {
HighWord highWord = new HighWord(); HighWord highWord = new HighWord();
highWord.setKeyword(keyword); highWord.setKeyword(keyword);
......
package com.zhiwei.brandkbs2.pojo;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.base.category.ClassB;
import com.zhiwei.base.entity.subclass.CompleteText;
import com.zhiwei.base.entity.subclass.IncompleteText;
import com.zhiwei.base.entity.subclass.QAText;
import com.zhiwei.base.entity.subclass.Video;
import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.brandkbs2.util.FlowEntityUtil;
import com.zhiwei.brandkbs2.util.Tools;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.commons.lang3.ObjectUtils;
import org.elasticsearch.search.SearchHit;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName: MarkFlowEntity
* @Description 标注流实体
* @author: sjj
* @date: 2022-06-29 16:39
*/
@Getter
@Setter
@NoArgsConstructor
public class MarkFlowEntity {
/**
* 消息类型
*/
private JSONObject type;
/**
* 消息内容
*/
private Object data;
public static MarkFlowEntity getInstance(List<JSONObject> tJons) {
// 首条数据为主
MarkFlowEntity entity = new MarkFlowEntity(tJons.get(0));
if (tJons.size() > 1) {
entity.getType().put("fold", true);
entity.getType().put("size", tJons.size());
entity.setData(tJons.stream().map(json -> new MarkFlowEntity(json).getData()).collect(Collectors.toList()));
}
return entity;
}
/**
* Constructor
*
* @param hit
*/
public MarkFlowEntity(SearchHit hit) {
this(new JSONObject(hit.getSourceAsMap()));
}
/**
* Constructor
*
* @param tJson
*/
public MarkFlowEntity(JSONObject tJson) {
if (Objects.isNull(tJson.getString(GenericAttribute.ES_CNAME))) {
tJson.put(GenericAttribute.ES_CNAME, "采集来源缺失");
}
int c2 = tJson.getIntValue(GenericAttribute.ES_C2);
switch (ClassB.TypeB.fromEncode(c2)) {
case COMPLETE:
if (!Tools.isEmpty(tJson.get("ind_full_text"))) {
tJson.put("ind_full_text", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_full_text"), "[\"\",\"\"]")));
}
if (!Tools.isEmpty(tJson.get("ind_title"))) {
tJson.put("ind_title", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_title"), "[\"\"]")));
}
CompleteText completeText = CompleteText.restoreFromEs(tJson);
this.type = FlowEntityUtil.getCompleteTextType(completeText);
this.data = completeText;
break;
case INCOMPLETE:
if (!Tools.isEmpty(tJson.get("ind_full_text"))) {
tJson.put("ind_full_text", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_full_text"), "[\"\",\"\"]")));
}
IncompleteText incompleteText = IncompleteText.restoreFromEs(tJson);
this.type = FlowEntityUtil.getIncompleteTextType(incompleteText);
this.data = incompleteText;
break;
case QA:
if (!Tools.isEmpty(tJson.get("ind_full_text"))) {
tJson.put("ind_full_text", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_full_text"), "[\"\",\"\",\"\"]")));
}
if (!Tools.isEmpty(tJson.get("ind_title"))) {
tJson.put("ind_title", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_title"), "[\"\",\"\"]")));
}
if (!Tools.isEmpty(tJson.get("ind_content"))) {
tJson.put("ind_content", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_content"), "[\"\"]")));
}
QAText qaText = QAText.restoreFromEs(tJson);
this.type = FlowEntityUtil.getQaTextType(qaText);
this.data = qaText;
break;
case VIDEO:
if (!Tools.isEmpty(tJson.get("ind_full_text"))) {
tJson.put("ind_full_text", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_full_text"), "[\"\",\"\"]")));
}
if (!Tools.isEmpty(tJson.get("ind_title"))) {
tJson.put("ind_title", Tools.filterStrHtmlTag(ObjectUtils.defaultIfNull(tJson.getString("ind_title"), "[\"\"]")));
}
Video video = Video.restoreFromEs(tJson);
this.type = FlowEntityUtil.getVideoType(video);
this.data = video;
break;
default:
break;
}
}
}
...@@ -28,7 +28,7 @@ public class Project extends AbstractProject { ...@@ -28,7 +28,7 @@ public class Project extends AbstractProject {
/** /**
* 数据起始时间(能够绑定关联关系的时间点) * 数据起始时间(能够绑定关联关系的时间点)
*/ */
private Date importTime; private Long importTime;
/** /**
* 是否有竞品 * 是否有竞品
...@@ -79,12 +79,12 @@ public class Project extends AbstractProject { ...@@ -79,12 +79,12 @@ public class Project extends AbstractProject {
/** /**
* 创建时间 * 创建时间
*/ */
private Date cTime; private Long cTime;
/** /**
* 修改时间 * 修改时间
*/ */
private Date uTime; private Long uTime;
/** /**
* 项目主品牌配置信息转换 * 项目主品牌配置信息转换
...@@ -97,7 +97,7 @@ public class Project extends AbstractProject { ...@@ -97,7 +97,7 @@ public class Project extends AbstractProject {
// 主品牌 // 主品牌
projectVO.setProjectName(this.getProjectName()); projectVO.setProjectName(this.getProjectName());
projectVO.setWholeSearchDataSource(this.getWholeSearchDataSource()); projectVO.setWholeSearchDataSource(this.getWholeSearchDataSource());
projectVO.setImportTime(this.getImportTime()); projectVO.setImportTime(new Date(this.getImportTime()));
projectVO.setBrandName(this.getBrandName()); projectVO.setBrandName(this.getBrandName());
projectVO.setBrandLinkedGroup(this.getBrandLinkedGroup()); projectVO.setBrandLinkedGroup(this.getBrandLinkedGroup());
projectVO.setBrandLinkedGroupId(this.getBrandLinkedGroupId()); projectVO.setBrandLinkedGroupId(this.getBrandLinkedGroupId());
......
...@@ -4,7 +4,6 @@ import lombok.Getter; ...@@ -4,7 +4,6 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -25,15 +24,15 @@ public class Report extends AbstractBaseMongo{ ...@@ -25,15 +24,15 @@ public class Report extends AbstractBaseMongo{
/** /**
* 开始时间 * 开始时间
*/ */
private Date startTime; private Long startTime;
/** /**
* 结束时间 * 结束时间
*/ */
private Date endTime; private Long endTime;
/** /**
* 发布时间 * 发布时间
*/ */
private Date publishTime; private Long publishTime;
/** /**
* 报告类型 * 报告类型
*/ */
......
...@@ -6,7 +6,6 @@ import lombok.Getter; ...@@ -6,7 +6,6 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -32,7 +31,7 @@ public class ReportSettings extends AbstractBaseMongo { ...@@ -32,7 +31,7 @@ public class ReportSettings extends AbstractBaseMongo {
/** /**
* 更新时间 * 更新时间
*/ */
private Date uTime; private Long uTime;
/** /**
* 对比竞品(存放对比竞品的linkedGroupId) * 对比竞品(存放对比竞品的linkedGroupId)
*/ */
......
...@@ -43,7 +43,7 @@ public class User extends AbstractBaseMongo { ...@@ -43,7 +43,7 @@ public class User extends AbstractBaseMongo {
/** /**
* 创建时间 * 创建时间
*/ */
private Date cTime; private Long cTime;
/** /**
* 用户角色列表 * 用户角色列表
...@@ -77,7 +77,7 @@ public class User extends AbstractBaseMongo { ...@@ -77,7 +77,7 @@ public class User extends AbstractBaseMongo {
user.setUsername(centerUser.getName()); user.setUsername(centerUser.getName());
user.setPhoneNumber(Long.parseLong(centerUser.getPhone())); user.setPhoneNumber(Long.parseLong(centerUser.getPhone()));
user.setAvatarUrl(centerUser.getAvatarUrl()); user.setAvatarUrl(centerUser.getAvatarUrl());
user.setCTime(new Date()); user.setCTime(new Date().getTime());
user.setRoles(new ArrayList<>()); user.setRoles(new ArrayList<>());
return user; return user;
} }
......
...@@ -45,7 +45,7 @@ public class UserRole { ...@@ -45,7 +45,7 @@ public class UserRole {
/** /**
* 过期时间,仅客户 * 过期时间,仅客户
*/ */
private Date expiredTime; private Long expiredTime;
/** /**
* 舆情导出数量默认1000,超管默认10000 * 舆情导出数量默认1000,超管默认10000
*/ */
...@@ -54,7 +54,7 @@ public class UserRole { ...@@ -54,7 +54,7 @@ public class UserRole {
public UserRole(String projectId, int roleId, Date expiredTime, Integer exportAmount) { public UserRole(String projectId, int roleId, Date expiredTime, Integer exportAmount) {
this.projectId = projectId; this.projectId = projectId;
this.roleId = roleId; this.roleId = roleId;
this.expiredTime = expiredTime; this.expiredTime = expiredTime.getTime();
this.exportAmount = exportAmount; this.exportAmount = exportAmount;
} }
......
...@@ -7,8 +7,6 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -7,8 +7,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date;
/** /**
* @ClassName: EventDataDTO * @ClassName: EventDataDTO
* @Description 事件数据传输类 * @Description 事件数据传输类
...@@ -30,7 +28,7 @@ public class EventDataDTO { ...@@ -30,7 +28,7 @@ public class EventDataDTO {
private String title; private String title;
@ApiModelProperty("发布时间") @ApiModelProperty("发布时间")
private Date time; private Long time;
@ApiModelProperty("报道地址") @ApiModelProperty("报道地址")
private String url; private String url;
......
package com.zhiwei.brandkbs2.pojo.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import java.util.List;
@Data
@ToString
@ApiModel("标注数据搜索传输类")
public class MarkSearchDTO {
/**
* 页码
*/
@ApiModelProperty("页码")
private int page;
/**
* 大小
*/
@ApiModelProperty("每页记录数")
private int pageSize;
// postFilter
/**
* 关联项目组id
*/
@ApiModelProperty(value = "关联项目组id", required = true)
private String linkedGroupId;
/**
* 时间类型
*/
@ApiModelProperty("时间类型")
private String timeType = "mtime";
/**
* 开始时间戳
*/
@ApiModelProperty(value = "开始时间")
private Long startTime;
/**
* 结束时间戳
*/
@ApiModelProperty("结束时间")
private Long endTime;
/**
* 平台
*/
@ApiModelProperty(value = "平台")
private List<String> platforms;
/**
* 媒体类型
*/
@ApiModelProperty(value = "重要发声方")
private List<String> mediaTypes;
/**
* 标签筛选
*/
@ApiModelProperty(value = "舆情标签筛选")
private List<String> tags;
/**
* 自定义标签筛选
*/
@ApiModelProperty(value = "自定义标签筛选")
private List<String> customTags;
// query部分
/**
* 检索字段
*/
@ApiModelProperty(value = "检索字段")
private String searchField;
/**
* 关键字
*/
@ApiModelProperty(value = "关键字")
private String keyword;
/**
* 渠道关键词
*/
@ApiModelProperty(value = "渠道关键词")
private String sourceKeyword;
// sort
/**
* 排序字段
*/
@ApiModelProperty(value = "排序字段")
private String sorter;
/**
* 是否聚合
*/
@ApiModelProperty(value = "是否聚合")
private boolean aggregation;
}
...@@ -7,8 +7,6 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -7,8 +7,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.ToString; import lombok.ToString;
import java.util.Date;
/** /**
* @author sjj * @author sjj
* @version 1.0 * @version 1.0
...@@ -38,12 +36,12 @@ public class YqEventDTO { ...@@ -38,12 +36,12 @@ public class YqEventDTO {
* 开始时间 * 开始时间
*/ */
@ApiModelProperty("开始时间") @ApiModelProperty("开始时间")
private Date startTime; private Long startTime;
/** /**
* 结束时间 * 结束时间
*/ */
@ApiModelProperty("结束时间") @ApiModelProperty("结束时间")
private Date endTime; private Long endTime;
/** /**
* 关键字 * 关键字
*/ */
......
package com.zhiwei.brandkbs2.pojo.vo; package com.zhiwei.brandkbs2.pojo.vo;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.util.MongoUtil; import com.zhiwei.brandkbs2.util.MongoUtil;
import lombok.Data; import lombok.Data;
import lombok.ToString; import lombok.ToString;
...@@ -22,6 +23,7 @@ public class PageVO<T> { ...@@ -22,6 +23,7 @@ public class PageVO<T> {
private Long pages; private Long pages;
private List<T> list; private List<T> list;
private Boolean hasNext; private Boolean hasNext;
private JSONObject info;
public static <K, T> PageVO<K> createPageVo(MongoUtil.PageHelper<T> pageHelper, List<K> jsonObjects) { public static <K, T> PageVO<K> createPageVo(MongoUtil.PageHelper<T> pageHelper, List<K> jsonObjects) {
PageVO<K> pageVO = new PageVO<>(); PageVO<K> pageVO = new PageVO<>();
...@@ -46,6 +48,10 @@ public class PageVO<T> { ...@@ -46,6 +48,10 @@ public class PageVO<T> {
return pageVO; return pageVO;
} }
public static <T> PageVO<T> createPageVo(long total, int pageNum, int size, List<T> tList) {
return createPageVo(total, pageNum, (total + size - 1) / size, size, tList);
}
public static <T> PageVO<T> createPageVoNew(long total, int pageNum, int size, List<T> tList) { public static <T> PageVO<T> createPageVoNew(long total, int pageNum, int size, List<T> tList) {
PageVO<T> pageVO = new PageVO<>(); PageVO<T> pageVO = new PageVO<>();
long pages = (total + size - 1) / size; long pages = (total + size - 1) / size;
...@@ -57,4 +63,9 @@ public class PageVO<T> { ...@@ -57,4 +63,9 @@ public class PageVO<T> {
pageVO.setHasNext(pageNum < pages); pageVO.setHasNext(pageNum < pages);
return pageVO; return pageVO;
} }
public PageVO<T> setInfo(JSONObject info){
this.info = info;
return this;
}
} }
...@@ -138,7 +138,7 @@ public class ProjectVO { ...@@ -138,7 +138,7 @@ public class ProjectVO {
project.setMergeSensitive(this.isMergeSensitive()); project.setMergeSensitive(this.isMergeSensitive());
project.setAvatarUrl(this.getAvatarUrl()); project.setAvatarUrl(this.getAvatarUrl());
project.setWholeSearchDataSource(this.getWholeSearchDataSource()); project.setWholeSearchDataSource(this.getWholeSearchDataSource());
project.setImportTime(this.getImportTime()); project.setImportTime(this.getImportTime().getTime());
project.setHasContend(null != this.getContendList()); project.setHasContend(null != this.getContendList());
project.setContendList(this.getContendList()); project.setContendList(this.getContendList());
project.setModuleShowList(this.getModuleShowList()); project.setModuleShowList(this.getModuleShowList());
...@@ -148,8 +148,8 @@ public class ProjectVO { ...@@ -148,8 +148,8 @@ public class ProjectVO {
project.setBlackChannelGroup(this.getBlackChannelGroup()); project.setBlackChannelGroup(this.getBlackChannelGroup());
project.setShow(true); project.setShow(true);
project.setStart(false); project.setStart(false);
project.setCTime(time); project.setCTime(time.getTime());
project.setUTime(time); project.setUTime(time.getTime());
return project; return project;
} }
......
package com.zhiwei.brandkbs2.service;
import com.zhiwei.brandkbs2.pojo.MarkFlowEntity;
import com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
/**
* @ClassName: IMarkDataService
* @Description: 标注数据服务抽象类
* @author: sjj
* @date: 2022-06-28 14:04
*/
public interface IMarkDataService {
/**
* @param markSearchDTO 标注数据搜索传输类
* @return 返回结果
*/
PageVO<MarkFlowEntity> getYuqingMarkList(MarkSearchDTO markSearchDTO);
}
package com.zhiwei.brandkbs2.es; package com.zhiwei.brandkbs2.service;
/** /**
* @ClassName: ITaskService * @ClassName: ITaskService
......
...@@ -62,7 +62,7 @@ public class BehaviorServiceImpl implements IBehaviorService { ...@@ -62,7 +62,7 @@ public class BehaviorServiceImpl implements IBehaviorService {
behavior.setUserId(userId); behavior.setUserId(userId);
behavior.setProjectId(projectId); behavior.setProjectId(projectId);
behavior.setIp(Tools.getIpAddress(request)); behavior.setIp(Tools.getIpAddress(request));
behavior.setCTime(new Date()); behavior.setCTime(new Date().getTime());
behavior.setPage(operation.getPage()); behavior.setPage(operation.getPage());
behavior.setModule(module); behavior.setModule(module);
behavior.setBackstage(operation.isBackstage()); behavior.setBackstage(operation.isBackstage());
...@@ -113,7 +113,7 @@ public class BehaviorServiceImpl implements IBehaviorService { ...@@ -113,7 +113,7 @@ public class BehaviorServiceImpl implements IBehaviorService {
Pair<String, Integer> nicknameAndRoleId = getNicknameAndRoleId(behavior.getUserId(), behavior.getProjectId()); Pair<String, Integer> nicknameAndRoleId = getNicknameAndRoleId(behavior.getUserId(), behavior.getProjectId());
exportBehaviorDTO.setNickname(nicknameAndRoleId.getLeft()); exportBehaviorDTO.setNickname(nicknameAndRoleId.getLeft());
exportBehaviorDTO.setIp(behavior.getIp()); exportBehaviorDTO.setIp(behavior.getIp());
exportBehaviorDTO.setTime(behavior.getCTime()); exportBehaviorDTO.setTime(new Date(behavior.getCTime()));
exportBehaviorDTO.setPage(behavior.getPage()); exportBehaviorDTO.setPage(behavior.getPage());
exportBehaviorDTO.setModule(behavior.getModule()); exportBehaviorDTO.setModule(behavior.getModule());
exportBehaviorDTO.setRole(RoleEnum.getNameByState(nicknameAndRoleId.getRight())); exportBehaviorDTO.setRole(RoleEnum.getNameByState(nicknameAndRoleId.getRight()));
......
...@@ -109,7 +109,7 @@ public class ChannelServiceImpl implements IChannelService { ...@@ -109,7 +109,7 @@ public class ChannelServiceImpl implements IChannelService {
}); });
return PageVO.createPageVoNew(articleIds.size(), page, size, resList); return PageVO.createPageVoNew(articleIds.size(), page, size, resList);
} catch (IOException e) { } catch (IOException e) {
ExceptionCast.cast(CommonCodeEnum.FAIL.message("查询异常")); ExceptionCast.cast(CommonCodeEnum.FAIL.message("查询异常"), e);
} }
return null; return null;
} }
......
...@@ -15,7 +15,6 @@ import org.springframework.stereotype.Service; ...@@ -15,7 +15,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -43,11 +42,11 @@ public class EventDataServiceImpl implements IEventDataService { ...@@ -43,11 +42,11 @@ public class EventDataServiceImpl implements IEventDataService {
@Override @Override
public void analysisEvent(Event event) { public void analysisEvent(Event event) {
Date startTime = event.getStartTime(); long startTime = event.getStartTime();
Date endTime = event.isEndStatus() ? event.getEndTime() : new Date(); long endTime = event.isEndStatus() ? event.getEndTime() : System.currentTimeMillis();
Period periodDay = new Period(startTime.getTime(), endTime.getTime(), PeriodType.days()); Period periodDay = new Period(startTime, endTime, PeriodType.days());
//时间区间大于40天 就不更新 //时间区间大于40天 就不更新
if (periodDay.getDays() >= 40 || startTime.after(new Date())) { if (periodDay.getDays() >= 40 || startTime > System.currentTimeMillis()) {
event.setEndTime(endTime); event.setEndTime(endTime);
event.setEndStatus(true); event.setEndStatus(true);
eventDao.updateOne(event); eventDao.updateOne(event);
...@@ -55,7 +54,7 @@ public class EventDataServiceImpl implements IEventDataService { ...@@ -55,7 +54,7 @@ public class EventDataServiceImpl implements IEventDataService {
return; return;
} }
//查询可能符合该事件时间段内的所有数据 //查询可能符合该事件时间段内的所有数据
List<EventData> eventDataList = esClientDao.searchByEvent(event).stream().map(map -> EventData.createFromEsMap(map, event)).collect(Collectors.toList()); List<EventData> eventDataList = esClientDao.searchMarkDataByEvent(event).stream().map(map -> EventData.createFromEsMap(map, event)).collect(Collectors.toList());
log.info("analysisEvent-eventId:{},查询可能符合该事件时间段内的所有数据:{}条", event.getId(), eventDataList.size()); log.info("analysisEvent-eventId:{},查询可能符合该事件时间段内的所有数据:{}条", event.getId(), eventDataList.size());
//更新事件稿件信息 //更新事件稿件信息
this.updateEventData(event, eventDataList); this.updateEventData(event, eventDataList);
......
...@@ -131,7 +131,7 @@ public class EventServiceImpl implements IEventService { ...@@ -131,7 +131,7 @@ public class EventServiceImpl implements IEventService {
event.setCTime(existEvent.getCTime()); event.setCTime(existEvent.getCTime());
eventDao.updateOne(event); eventDao.updateOne(event);
} else { } else {
event.setCTime(new Date()); event.setCTime(new Date().getTime());
eventDao.insertOne(event); eventDao.insertOne(event);
} }
if (count.incrementAndGet() == yqEventList.size()) { if (count.incrementAndGet() == yqEventList.size()) {
...@@ -300,7 +300,7 @@ public class EventServiceImpl implements IEventService { ...@@ -300,7 +300,7 @@ public class EventServiceImpl implements IEventService {
public void updateEvent(EventVO eventVO) { public void updateEvent(EventVO eventVO) {
Event event = getEventById(eventVO.getId()); Event event = getEventById(eventVO.getId());
event.setTitle(eventVO.getTitle()); event.setTitle(eventVO.getTitle());
event.setStartTime(eventVO.getStartTime()); event.setStartTime(eventVO.getStartTime().getTime());
event.setKeyword(eventVO.getKeyword()); event.setKeyword(eventVO.getKeyword());
// event.setEventTag(EventTagEnum.eventType(eventVO.getEventType())); // event.setEventTag(EventTagEnum.eventType(eventVO.getEventType()));
//对事件信息进行更新 //对事件信息进行更新
...@@ -432,7 +432,7 @@ public class EventServiceImpl implements IEventService { ...@@ -432,7 +432,7 @@ public class EventServiceImpl implements IEventService {
return; return;
} }
Event event = Event.createFromUploadEventDTO(eventDTO, eventDataDao.generateCollectionName(), projectId, linkedGroupId); Event event = Event.createFromUploadEventDTO(eventDTO, eventDataDao.generateCollectionName(), projectId, linkedGroupId);
event.setCTime(new Date()); event.setCTime(new Date().getTime());
eventDao.insertOne(event); eventDao.insertOne(event);
} }
...@@ -470,8 +470,7 @@ public class EventServiceImpl implements IEventService { ...@@ -470,8 +470,7 @@ public class EventServiceImpl implements IEventService {
} }
String group = projectService.getProjectByLinkedGroupId(linkedGroupId).getBrandLinkedGroup(); String group = projectService.getProjectByLinkedGroupId(linkedGroupId).getBrandLinkedGroup();
ResponseEntity<JSONObject> entity = restTemplate.getForEntity(qbjcEventTagUrl, JSONObject.class, group); ResponseEntity<JSONObject> entity = restTemplate.getForEntity(qbjcEventTagUrl, JSONObject.class, group);
List<JSONObject> tagGroupList = List<JSONObject> tagGroupList = Objects.requireNonNull(entity.getBody()).getJSONObject("data").getJSONObject("tagList").getJSONArray(tagGroupName).toJavaList(JSONObject.class);
Objects.requireNonNull(entity.getBody()).getJSONObject("data").getJSONObject("tagList").getJSONArray(tagGroupName).toJavaList(JSONObject.class);
List<List<JSONObject>> partition = Lists.partition(tagGroupList, size); List<List<JSONObject>> partition = Lists.partition(tagGroupList, size);
List<JSONObject> resultList = partition.get(page - 1); List<JSONObject> resultList = partition.get(page - 1);
resultList = resultList.stream().peek(json -> { resultList = resultList.stream().peek(json -> {
...@@ -506,7 +505,7 @@ public class EventServiceImpl implements IEventService { ...@@ -506,7 +505,7 @@ public class EventServiceImpl implements IEventService {
private List<ExportEventDataDTO> eventDataChange2ExportEventDataDTO(Event event, List<EventData> eventDataList) { private List<ExportEventDataDTO> eventDataChange2ExportEventDataDTO(Event event, List<EventData> eventDataList) {
return eventDataList.stream().map(eventData -> { return eventDataList.stream().map(eventData -> {
ExportEventDataDTO eventDataDTO = new ExportEventDataDTO(); ExportEventDataDTO eventDataDTO = new ExportEventDataDTO();
eventDataDTO.setTime(eventData.getTime()); eventDataDTO.setTime(new Date(eventData.getTime()));
eventDataDTO.setUrl(eventData.getUrl()); eventDataDTO.setUrl(eventData.getUrl());
eventDataDTO.setTitle(eventData.getTitle()); eventDataDTO.setTitle(eventData.getTitle());
eventDataDTO.setPlatform(eventData.getPlatform()); eventDataDTO.setPlatform(eventData.getPlatform());
...@@ -527,8 +526,8 @@ public class EventServiceImpl implements IEventService { ...@@ -527,8 +526,8 @@ public class EventServiceImpl implements IEventService {
private List<ExportEventDTO> getEventResult(List<Event> eventList) { private List<ExportEventDTO> getEventResult(List<Event> eventList) {
return eventList.stream().map(event -> { return eventList.stream().map(event -> {
ExportEventDTO eventDTO = new ExportEventDTO(); ExportEventDTO eventDTO = new ExportEventDTO();
eventDTO.setStartTime(event.getStartTime()); eventDTO.setStartTime(new Date(event.getStartTime()));
eventDTO.setEndTime(event.getEndTime()); eventDTO.setEndTime(new Date(event.getEndTime()));
eventDTO.setTitle(event.getTitle()); eventDTO.setTitle(event.getTitle());
//根据事件ID获取首发稿件信息 //根据事件ID获取首发稿件信息
EventData eventData = eventDataDao.findFirstData(event.getId(), event.getCollectionName()); EventData eventData = eventDataDao.findFirstData(event.getId(), event.getCollectionName());
......
package com.zhiwei.brandkbs2.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap;
import com.zhiwei.brandkbs2.auth.UserThreadLocal;
import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.brandkbs2.common.GlobalPojo;
import com.zhiwei.brandkbs2.es.EsClientDao;
import com.zhiwei.brandkbs2.es.EsQueryTools;
import com.zhiwei.brandkbs2.exception.ExceptionCast;
import com.zhiwei.brandkbs2.model.CommonCodeEnum;
import com.zhiwei.brandkbs2.pojo.MarkFlowEntity;
import com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import com.zhiwei.brandkbs2.service.IMarkDataService;
import com.zhiwei.brandkbs2.service.IProjectService;
import com.zhiwei.brandkbs2.util.AggreeUtil;
import com.zhiwei.brandkbs2.util.Tools;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName: MarkDataServiceImpl
* @Description
* @author: sjj
* @date: 2022-06-28 14:07
*/
@Service("markDataServiceImpl")
public class MarkDataServiceImpl implements IMarkDataService {
@Resource(name = "projectServiceImpl")
private IProjectService projectService;
@Resource(name = "esClientDao")
private EsClientDao esClientDao;
@Override
public PageVO<MarkFlowEntity> getYuqingMarkList(MarkSearchDTO markSearchDTO) {
try {
defaultMarkSearch(markSearchDTO);
// 搜索es数据
Pair<SearchHits, Map<String, Long>> hitsAndCounts = searchMarkHitsAndCount(markSearchDTO);
// 总量
long total = hitsAndCounts.getLeft().getTotalHits().value > 10000 ? 10000 : hitsAndCounts.getLeft().getTotalHits().value;
// 消息流结果
List<MarkFlowEntity> flowEntityList;
// 是否需要聚合,文档数>1才能聚合
if (markSearchDTO.isAggregation() && total > 1) {
List<List<JSONObject>> groupList = aggregation(hitsAndCounts.getLeft(), "id");
flowEntityList = groupList.stream().map(MarkFlowEntity::getInstance).collect(Collectors.toList());
} else {
flowEntityList = Arrays.stream(hitsAndCounts.getLeft().getHits()).map(MarkFlowEntity::new).collect(Collectors.toList());
}
return PageVO.createPageVo(total, markSearchDTO.getPage(), markSearchDTO.getPageSize(), flowEntityList)
// 各平台计量
.setInfo(new JSONObject(ImmutableMap.of("count", hitsAndCounts.getRight())));
} catch (IOException e) {
ExceptionCast.cast(CommonCodeEnum.FAIL.message("es检索异常"));
}
return null;
}
private void defaultMarkSearch(MarkSearchDTO markSearchDTO) {
// 时间范围默认一个月
if (Objects.isNull(markSearchDTO.getStartTime()) || Objects.isNull(markSearchDTO.getEndTime())) {
Date now = new Date();
markSearchDTO.setEndTime(now.getTime());
markSearchDTO.setStartTime(DateUtils.addDays(now, -29).getTime());
}
// 页码默认
if (markSearchDTO.getPage() < 1) {
markSearchDTO.setPage(1);
}
if (markSearchDTO.getPageSize() <= 0 || markSearchDTO.getPageSize() > 10000) {
markSearchDTO.setPageSize(20);
}
}
private Pair<SearchHits, Map<String, Long>> searchMarkHitsAndCount(MarkSearchDTO dto) throws IOException {
// 获取索引
String[] indexes = esClientDao.getIndexes();
// PostFilter 后置过滤器
BoolQueryBuilder postFilter = QueryBuilders.boolQuery();
// linkedGroupId projectId
postFilter.must(QueryBuilders.termQuery("brandkbs_cache_maps.linkedGroupId.keyword", dto.getLinkedGroupId())).must(
QueryBuilders.termQuery("brandkbs_cache_maps.projectId.keyword", UserThreadLocal.getProjectId())
);
// time
postFilter.must(QueryBuilders.rangeQuery(dto.getTimeType()).lte(dto.getStartTime()).lt(dto.getEndTime()));
// platform
if (CollectionUtils.isNotEmpty(dto.getPlatforms())) {
postFilter.must(EsQueryTools.assemblePlatformQuery(Tools.getPlatformByIds(dto.getPlatforms())));
}
// mediaTypes ???
// tags
if (CollectionUtils.isNotEmpty(dto.getTags())) {
postFilter.must(EsQueryTools.assembleTagQuery(dto.getTags()));
}
// customTags
if (CollectionUtils.isNotEmpty(dto.getCustomTags())) {
postFilter.must(EsQueryTools.assembleTagQuery(dto.getCustomTags()));
}
// Query 查询条件
BoolQueryBuilder query = QueryBuilders.boolQuery();
// keyword
if (StringUtils.isNotEmpty(dto.getKeyword())) {
// Query
String[] fieldSearch = "标题".equals(dto.getSearchField()) ? new String[]{GenericAttribute.ES_IND_TITLE}
: new String[]{GenericAttribute.ES_IND_FULL_TEXT};
query.must(EsQueryTools.assembleNormalKeywordQuery(dto.getKeyword(), fieldSearch));
}
// sourceKeyword
if (StringUtils.isNotEmpty(dto.getSourceKeyword())) {
query.must(QueryBuilders.matchQuery(GenericAttribute.ES_SOURCE, dto.getSourceKeyword()));
}
// sort
FieldSortBuilder sort = SortBuilders.fieldSort(GenericAttribute.ES_GID).order(SortOrder.DESC);
// from size
int from = (dto.getPage() - 1) * dto.getPageSize();
// HighlightBuilder ???
SearchHits searchHits = esClientDao.searchHits(indexes, postFilter, query, sort, from, dto.getPageSize(), null);
//平台计量统计 仅第一页且无平台限制
Map<String, Long> counts = new HashMap<>();
if (1 == dto.getPage() && CollectionUtils.isEmpty(dto.getPlatforms())) {
for (MessagePlatform platform : GlobalPojo.PLATFORMS) {
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(query)
.must(EsQueryTools.assemblePlatformQuery(Collections.singletonList(platform)));
Long count = esClientDao.count(indexes, postFilter, queryBuilder);
counts.put(platform.getName(), count);
}
}
return Pair.of(searchHits, counts);
}
private List<List<JSONObject>> aggregation(SearchHits searchHits, String uniqueField) {
List<JSONObject> jsonList =
Arrays.stream(searchHits.getHits()).map(hit -> new JSONObject(hit.getSourceAsMap())).collect(Collectors.toList());
Map<String, String> idTitle = jsonList.stream().collect(Collectors.toMap(json -> json.getString(uniqueField),
json -> Tools.getBaseFromEsMap(json).getTitle()));
List<List<String>> kResult = AggreeUtil.getKResult(idTitle);
return AggreeUtil.sortByTimeAsc(kResult, jsonList, uniqueField);
}
}
\ No newline at end of file
...@@ -248,7 +248,7 @@ public class ProjectServiceImpl implements IProjectService { ...@@ -248,7 +248,7 @@ public class ProjectServiceImpl implements IProjectService {
lists = new ArrayList<>(); lists = new ArrayList<>();
user.getRoles().forEach(userRole -> { user.getRoles().forEach(userRole -> {
lists.add(projectDao.findOneById(userRole.getProjectId())); lists.add(projectDao.findOneById(userRole.getProjectId()));
roleExpired.put(userRole.getProjectId(), userRole.getExpiredTime()); roleExpired.put(userRole.getProjectId(), new Date(userRole.getExpiredTime()));
}); });
} }
return lists.stream().filter(Project::isShow).map(project -> { return lists.stream().filter(Project::isShow).map(project -> {
......
...@@ -3,9 +3,9 @@ package com.zhiwei.brandkbs2.service.impl; ...@@ -3,9 +3,9 @@ package com.zhiwei.brandkbs2.service.impl;
import com.zhiwei.brandkbs2.dao.IChannelDao; import com.zhiwei.brandkbs2.dao.IChannelDao;
import com.zhiwei.brandkbs2.dao.IEventDataDao; import com.zhiwei.brandkbs2.dao.IEventDataDao;
import com.zhiwei.brandkbs2.es.EsClientDao; import com.zhiwei.brandkbs2.es.EsClientDao;
import com.zhiwei.brandkbs2.es.ITaskService;
import com.zhiwei.brandkbs2.pojo.Channel; import com.zhiwei.brandkbs2.pojo.Channel;
import com.zhiwei.brandkbs2.pojo.ChannelIndex; import com.zhiwei.brandkbs2.pojo.ChannelIndex;
import com.zhiwei.brandkbs2.service.ITaskService;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
......
...@@ -167,9 +167,7 @@ public class UserServiceImpl implements IUserService { ...@@ -167,9 +167,7 @@ public class UserServiceImpl implements IUserService {
user.getRoles().stream().filter(userRoles -> userRoles.getProjectId().equals(userDTO.getProjectId())).findAny().ifPresent(userRole -> { user.getRoles().stream().filter(userRoles -> userRoles.getProjectId().equals(userDTO.getProjectId())).findAny().ifPresent(userRole -> {
// 更新原userRole // 更新原userRole
userRole.setRoleId(userDTO.getRoleId()); userRole.setRoleId(userDTO.getRoleId());
OptionalLong.of(userDTO.getExpiredTime()).ifPresent(expiredTime -> { OptionalLong.of(userDTO.getExpiredTime()).ifPresent(userRole::setExpiredTime);
userRole.setExpiredTime(new Date(expiredTime));
});
OptionalInt.of(userDTO.getExportAmount()).ifPresent(userRole::setExportAmount); OptionalInt.of(userDTO.getExportAmount()).ifPresent(userRole::setExportAmount);
userDao.updateOneByIdWithField(userDTO.getId(), new Update().set("roles", roles)); userDao.updateOneByIdWithField(userDTO.getId(), new Update().set("roles", roles));
}); });
...@@ -282,7 +280,7 @@ public class UserServiceImpl implements IUserService { ...@@ -282,7 +280,7 @@ public class UserServiceImpl implements IUserService {
User user = new User(); User user = new User();
user.setId(userDTO.getId()); user.setId(userDTO.getId());
user.setNickname(userDTO.getNickname()); user.setNickname(userDTO.getNickname());
user.setCTime(new Date()); user.setCTime(System.currentTimeMillis());
user.setUsername(userDTO.getUsername()); user.setUsername(userDTO.getUsername());
user.setPhoneNumber(userDTO.getPhoneNumber()); user.setPhoneNumber(userDTO.getPhoneNumber());
if (RoleEnum.SUPER_ADMIN.getState() == userDTO.getRoleId()) { if (RoleEnum.SUPER_ADMIN.getState() == userDTO.getRoleId()) {
......
package com.zhiwei.brandkbs2.util;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.nlp.AggreeBootStarter;
import com.zhiwei.nlp.common.AggreeConfig;
import com.zhiwei.nlp.vo.KResult;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName: AggreeUtil
* @Description 聚合工具类
* @author: sjj
* @date: 2022-06-29 17:07
*/
public class AggreeUtil {
private static final Double LIMIT = 0.1;
private static final String DEFAULT_SORT_FIELD = GenericAttribute.ES_TIME;
static {
// 开启符号过滤以及关闭英文字母和数字过滤
AggreeConfig.getSetter().setFilterSymbol(true).setFilterEng(false).setSimplifiedChinese(true);
}
public static <T> List<List<T>> getKResult(Map<T, String> listMap) {
return AggreeBootStarter.getKResult(listMap, LIMIT).stream().map(KResult::getDataPoints).collect(Collectors.toList());
}
public static <T> List<List<JSONObject>> sortByTimeAsc(List<List<T>> kResultList, List<JSONObject> sourceList, String tField) {
ImmutableMap<T, JSONObject> idMap = Maps.uniqueIndex(sourceList, json -> (T) json.get(tField));
// 还原数据
return kResultList.stream().map(gList ->
gList.stream().map(idMap::get).sorted(Comparator.comparingLong(o -> o.getLong(DEFAULT_SORT_FIELD))).collect(Collectors.toList())
).collect(Collectors.toList());
}
}
package com.zhiwei.brandkbs2.util;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.base.category.ClassB;
import com.zhiwei.base.entity.subclass.CompleteText;
import com.zhiwei.base.entity.subclass.IncompleteText;
import com.zhiwei.base.entity.subclass.QAText;
import com.zhiwei.base.entity.subclass.Video;
import com.zhiwei.brandkbs2.common.GenericAttribute;
/**
* @Description:FlowEntityUtil 消息流实体工具类
* @Author: shentao
* @Date: 2021/11/30 15:44
*/
public class FlowEntityUtil {
public static JSONObject getVideoType(Video info) {
JSONObject type = new JSONObject();
type.put("type", getType(info.getC2()));
type.put("fold", false);
return type;
}
public static JSONObject getQaTextType(QAText info) {
JSONObject type = new JSONObject();
type.put("type", getType(info.getC2()));
type.put("question", info.question());
type.put("fold", false);
return type;
}
public static JSONObject getCompleteTextType(CompleteText info) {
JSONObject type = new JSONObject();
type.put("type", getType(info.getC2()));
type.put("fold", false);
return type;
}
public static JSONObject getIncompleteTextType(IncompleteText info) {
JSONObject type = new JSONObject();
type.put("type", getType(info.getC2()));
type.put("forward", info.getIsForward());
type.put("fold", false);
return type;
}
private static String getType(int c2) {
// COMPLETE(1), INCOMPLETE(2), QA(3), IMAGE(4), VIDEO(5), VOICE(6), OTHER(7);
switch (ClassB.TypeB.fromEncode(c2)) {
case COMPLETE:
return "complete_text";
case INCOMPLETE:
return "incomplete_text";
case QA:
return "qa_text";
case VIDEO:
return "video";
default:
break;
}
return null;
}
public static JSONObject getMessageFlowEntityType(JSONObject msgJson) {
int c2 = msgJson.getIntValue(GenericAttribute.ES_C2);
switch (ClassB.TypeB.fromEncode(c2)) {
case COMPLETE:
CompleteText completeText = CompleteText.restoreFromEs(msgJson);
return getCompleteTextType(completeText);
case INCOMPLETE:
IncompleteText incompleteText = IncompleteText.restoreFromEs(msgJson);
return getIncompleteTextType(incompleteText);
case QA:
QAText qaText = QAText.restoreFromEs(msgJson);
return getQaTextType(qaText);
case VIDEO:
Video video = Video.restoreFromEs(msgJson);
return getVideoType(video);
default:
break;
}
return null;
}
}
...@@ -13,8 +13,11 @@ import com.zhiwei.brandkbs2.common.GlobalPojo; ...@@ -13,8 +13,11 @@ import com.zhiwei.brandkbs2.common.GlobalPojo;
import com.zhiwei.brandkbs2.easyexcel.dto.UploadKeywordDTO; import com.zhiwei.brandkbs2.easyexcel.dto.UploadKeywordDTO;
import com.zhiwei.brandkbs2.model.ResponseResult; import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.BaseMap; import com.zhiwei.brandkbs2.pojo.BaseMap;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import com.zhiwei.qbjc.bean.pojo.common.Tag; import com.zhiwei.qbjc.bean.pojo.common.Tag;
import com.zhiwei.qbjc.bean.tools.BeanTools; import com.zhiwei.qbjc.bean.tools.BeanTools;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.FastDateFormat; import org.apache.commons.lang3.time.FastDateFormat;
import org.dozer.DozerBeanMapper; import org.dozer.DozerBeanMapper;
...@@ -34,6 +37,7 @@ import java.util.regex.Pattern; ...@@ -34,6 +37,7 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.zhiwei.brandkbs2.common.GenericAttribute.ES_MARK_CACHE_MAPS; import static com.zhiwei.brandkbs2.common.GenericAttribute.ES_MARK_CACHE_MAPS;
import static java.util.Objects.nonNull;
/** /**
* @ClassName: Tools * @ClassName: Tools
...@@ -348,6 +352,11 @@ public class Tools { ...@@ -348,6 +352,11 @@ public class Tools {
return BeanTools.filterPlatform(GlobalPojo.PLATFORMS, c5, foreign).getName(); return BeanTools.filterPlatform(GlobalPojo.PLATFORMS, c5, foreign).getName();
} }
public static List<MessagePlatform> getPlatformByIds(List<String> ids) {
return GlobalPojo.PLATFORMS.stream().filter(pt -> ids.contains(pt.getId()))
.collect(Collectors.toList());
}
public static String getEmotion(Map<String, Object> map) { public static String getEmotion(Map<String, Object> map) {
List<Map<String, Object>> cacheMaps = (List<Map<String, Object>>) map.get(ES_MARK_CACHE_MAPS); List<Map<String, Object>> cacheMaps = (List<Map<String, Object>>) map.get(ES_MARK_CACHE_MAPS);
for (Map<String, Object> cacheMap : cacheMaps) { for (Map<String, Object> cacheMap : cacheMaps) {
...@@ -374,6 +383,41 @@ public class Tools { ...@@ -374,6 +383,41 @@ public class Tools {
return res; return res;
} }
/**
* 过滤 html
* @param str
* @return
*/
public static String filterStrHtmlTag(String str) {
str = str.replaceAll("<","&lt;");
return str.replaceAll(">","&gt;");
}
/**
* 是否为空,数据为空
*
* @param @param obj
* @param @return 设定文件
* @return boolean 返回类型
* @Title: isEmpty
* @Description: 是否为空,数据为空
*/
public static boolean isEmpty(Object obj) {
if (!nonNull(obj)) {
return true;
}
if ((obj instanceof List)) {
return CollectionUtils.isEmpty((List<?>) obj);
}
if ((obj instanceof String)) {
return StringUtils.isEmpty((String) obj);
}
if ((obj instanceof Map)) {
return MapUtils.isEmpty((Map<?, ?>) obj);
}
return false;
}
// public static String getEmotionByMtag(String mtag, String group) { // public static String getEmotionByMtag(String mtag, String group) {
// if (StringUtils.isEmpty(mtag)) { // if (StringUtils.isEmpty(mtag)) {
// return null; // return null;
......
application.name = brandkbs2 application.name = brandkbs2
test = false
#jwt #jwt
jwt.key=Token jwt.key=Token
jwt.hour=120 jwt.hour=120
...@@ -7,7 +6,7 @@ jwt.hour=120 ...@@ -7,7 +6,7 @@ jwt.hour=120
brandkbs.file.url=/usr/local/sources/brandkbs2/files/ brandkbs.file.url=/usr/local/sources/brandkbs2/files/
brandkbs.img.url=/usr/local/sources/brandkbs2/images/ brandkbs.img.url=/usr/local/sources/brandkbs2/images/
brandkbs.head.url=/usr/local/sources/brandkbs2/head/ brandkbs.head.url=/usr/local/sources/brandkbs2/head/
brandkbs.image.url=https://brandkbs2.zhiweidata.com/brandkbs2/images/ brandkbs.image.url=https://brandkbs2.test.zhiweidata.com/brandkbs2/images/
#redis #redis
spring.redis.host=192.168.0.39 spring.redis.host=192.168.0.39
...@@ -23,18 +22,19 @@ mongo.autoConnectRetry=true ...@@ -23,18 +22,19 @@ mongo.autoConnectRetry=true
mongo.socketKeepAlive=true mongo.socketKeepAlive=true
mongo.socketTimeout=120000 mongo.socketTimeout=120000
mongo.slaveOk=true mongo.slaveOk=true
primary.uri=mongodb://qbjcuser:qbjc1q2w3e4r@202.107.192.94:30000/qbjc?authSource=admin primary.uri=mongodb://brandkbs2:3vh65l$i6qQA@192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017/qbjc?authSource=admin
secondary.uri=mongodb://qbjcuser:qbjc1q2w3e4r@202.107.192.94:30000/qbjc?authSource=admin secondary.uri=mongodb://qbjcuser:qbjc1q2w3e4r@192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017/qbjc?authSource=admin
#es #es
es.clusterNodes=192.168.0.130:9200 es.clusterNodes=192.168.0.130:9200
es.clusterName=zhiweidata-new-es es.clusterName=zhiweidata-new-es
es.httpClusterNodes=192.168.0.130:9200:qbjc-back:yuqing.zhiweidata.com,192.168.0.51:9400:elastic:qWxZRW42OHkuOhmF5AXX es.httpClusterNodes=192.168.0.130:9200:qbjc-back:yuqing.zhiweidata.com,192.168.0.51:9400:elastic:qWxZRW42OHkuOhmF5AXX
es.username= es.username=brandkbs2
es.password= es.password=3vh65l$i6qQA
es.index.test = true
#channel-index #channel-index
channel.index.registry=zookeeper://192.168.0.203:2182?backup=192.168.0.104:2182,192.168.0.105:2182 channel.index.registry=zookeeper://192.168.0.104:2182?backup=192.168.0.105:2182,192.168.0.203:2182
channel.index.consumer.group=channel-index-release channel.index.consumer.group=channel-index-release
channel.index.application.name=brandkbs2 channel.index.application.name=brandkbs2
#\u5916\u90E8\u63A5\u53E3 #\u5916\u90E8\u63A5\u53E3
......
application.name = brandkbs2 application.name = brandkbs2
test = true
#jwt #jwt
jwt.key=Token jwt.key=Token
jwt.hour=120 jwt.hour=120
...@@ -33,6 +32,7 @@ es.clusterName=my-application ...@@ -33,6 +32,7 @@ es.clusterName=my-application
es.httpClusterNodes=127.0.0.1:9300 es.httpClusterNodes=127.0.0.1:9300
es.username= es.username=
es.password= es.password=
es.index.test = true
#channel-index #channel-index
channel.index.registry=zookeeper://192.168.0.11:2182?backup=192.168.0.30:2182,192.168.0.35:2182&timeout=60000 channel.index.registry=zookeeper://192.168.0.11:2182?backup=192.168.0.30:2182,192.168.0.35:2182&timeout=60000
......
application.name = brandkbs2 application.name = brandkbs2
test = false
#jwt #jwt
jwt.key=Token jwt.key=Token
...@@ -24,18 +23,19 @@ mongo.autoConnectRetry=true ...@@ -24,18 +23,19 @@ mongo.autoConnectRetry=true
mongo.socketKeepAlive=true mongo.socketKeepAlive=true
mongo.socketTimeout=120000 mongo.socketTimeout=120000
mongo.slaveOk=true mongo.slaveOk=true
primary.uri=mongodb://qbjcuser:qbjc1q2w3e4r@202.107.192.94:30000/qbjc?authSource=admin primary.uri=mongodb://brandkbs2:3vh65l$i6qQA@192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017/qbjc?authSource=admin
secondary.uri=mongodb://qbjcuser:qbjc1q2w3e4r@202.107.192.94:30000/qbjc?authSource=admin secondary.uri=mongodb://qbjcuser:qbjc1q2w3e4r@192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017/qbjc?authSource=admin
#es #es
es.clusterNodes=192.168.0.130:9200 es.clusterNodes=192.168.0.130:9200
es.clusterName=zhiweidata-new-es es.clusterName=zhiweidata-new-es
es.httpClusterNodes=192.168.0.130:9200:qbjc-back:yuqing.zhiweidata.com,192.168.0.51:9400:elastic:qWxZRW42OHkuOhmF5AXX es.httpClusterNodes=192.168.0.130:9200:qbjc-back:yuqing.zhiweidata.com,192.168.0.51:9400:elastic:qWxZRW42OHkuOhmF5AXX
es.username= es.username=brandkbs2
es.password= es.password=3vh65l$i6qQA
es.index.test = true
#channel-index #channel-index
channel.index.registry=zookeeper://192.168.0.203:2182?backup=192.168.0.104:2182,192.168.0.105:2182 channel.index.registry=zookeeper://192.168.0.104:2182?backup=192.168.0.105:2182,192.168.0.203:2182
channel.index.consumer.group=channel-index-release channel.index.consumer.group=channel-index-release
channel.index.application.name=brandkbs2 channel.index.application.name=brandkbs2
#\u5916\u90E8\u63A5\u53E3 #\u5916\u90E8\u63A5\u53E3
......
server.port=8888 server.port=8888
spring.profiles.active=local spring.profiles.active=local
spring.flyway.encoding=UTF-8 spring.flyway.encoding=UTF-8
server.servlet.context-path=/brandkbs2
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<!-- log4j2 自身的日志级别 -->
<Configuration status="WARN">
<Properties> <!-- 配置日志文件输出目录 -->
<Property name="LOG_HOME">./log/</Property>
<property name="APP_NAME">brandkbs2</property>
</Properties>
<Appenders>
<!-- 定义日志输出地 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} [%t] - %msg%n" />
</Console>
<!--[%t] -->
<!-- INFO级别日志 -->
<RollingFile name="info_appender"
fileName="${LOG_HOME}/${APP_NAME}.log"
filePattern="${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} [%t] - %msg%n" />
<Filters>
<PushLogFilter onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
<AppenderRef ref="info_appender" />
</Root>
<!--<AsyncLogger level="info"> -->
<!--<AppenderRef ref="Console"/> -->
<!--<AppenderRef ref="info_appender"/> -->
<!--</AsyncLogger> -->
<!-- 所有的 logger 均继承 Root 当 additivity 为 true 时, 父子 logger 均会打印 当 additivity
为 false 时, 仅子 logger 会打印 -->
<Logger name="mylog" level="error" additivity="false">
<AppenderRef ref="Console" />
</Logger>
<!-- 屏蔽不需要的日志 -->
<Logger name="org.apache.dubbo.monitor"
level="OFF" />
<Logger name="com.zhiwei.wechat.search" level="OFF" />
</Loggers>
</Configuration>
...@@ -10,8 +10,8 @@ dev.robot.push.filterclass=org.apache.dubbo.common.Version,com.alibaba.dubbo.com ...@@ -10,8 +10,8 @@ dev.robot.push.filterclass=org.apache.dubbo.common.Version,com.alibaba.dubbo.com
dev.robot.push.level=error dev.robot.push.level=error
dev.robot.push.app.name=brandkbs2 dev.robot.push.app.name=brandkbs2
pro.robot.push.address=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=e2218c6e-af6a-4296-9d75-7178b941a3b5 prod.robot.push.address=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=e2218c6e-af6a-4296-9d75-7178b941a3b5
pro.robot.push.enable=false prod.robot.push.enable=false
pro.robot.push.filterclass=org.apache.dubbo.common.Version,com.alibaba.dubbo.common.Version,org.apache.dubbo.monitor.dubbo.DubboMonitor,com.alibaba.dubbo.monitor.dubbo.DubboMonitor prod.robot.push.filterclass=org.apache.dubbo.common.Version,com.alibaba.dubbo.common.Version,org.apache.dubbo.monitor.dubbo.DubboMonitor,com.alibaba.dubbo\.monitor.dubbo.DubboMonitor
pro.robot.push.level=error prod.robot.push.level=error
pro.robot.push.app.name=brandkbs2 prod.robot.push.app.name=brandkbs2
\ No newline at end of file \ No newline at end of file
...@@ -3,7 +3,7 @@ package com.zhiwei.brandkbs2; ...@@ -3,7 +3,7 @@ package com.zhiwei.brandkbs2;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.dao.IChannelLabelDao; import com.zhiwei.brandkbs2.dao.IChannelLabelDao;
import com.zhiwei.brandkbs2.dao.IEventDataDao; import com.zhiwei.brandkbs2.dao.IEventDataDao;
import com.zhiwei.brandkbs2.es.ITaskService; import com.zhiwei.brandkbs2.service.ITaskService;
import com.zhiwei.brandkbs2.pojo.ChannelIndex; import com.zhiwei.brandkbs2.pojo.ChannelIndex;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.Test; import org.junit.Test;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment