Commit 76d0c1a6 by liuyu

2023年05/30 过滤词添加

parent 2cc05d90
package com.zhiwei.middleware.automatic.server.pojo;
public class AutoMarkShieldWord {
private String id;
private String shieldWord;
/**
* project 项目
*/
private String project;
/**
* 项目id
*/
private String projectId;
/**
* createAt 创建时间
*/
private Long createAt;
/**
* creator 创建者
*/
private String creator;
/**
* creatorId 创建者id
*/
private String creatorId;
/**
* updateAt 更新时间
*/
private Long updateAt;
/**
* submitter 最后提交人 用于呈现最后操作者
*/
private String submitter;
/**
* submitterId 最后提交人id 用于记录最后操作者
*/
private String submitterId;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getShieldWord() {
return shieldWord;
}
public void setShieldWord(String shieldWord) {
this.shieldWord = shieldWord;
}
public String getProject() {
return project;
}
public void setProject(String project) {
this.project = project;
}
public String getProjectId() {
return projectId;
}
public void setProjectId(String projectId) {
this.projectId = projectId;
}
public Long getCreateAt() {
return createAt;
}
public void setCreateAt(Long createAt) {
this.createAt = createAt;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public Long getUpdateAt() {
return updateAt;
}
public void setUpdateAt(Long updateAt) {
this.updateAt = updateAt;
}
public String getSubmitter() {
return submitter;
}
public void setSubmitter(String submitter) {
this.submitter = submitter;
}
public String getSubmitterId() {
return submitterId;
}
public void setSubmitterId(String submitterId) {
this.submitterId = submitterId;
}
}
...@@ -65,6 +65,8 @@ public class PageVO <T> implements Serializable { ...@@ -65,6 +65,8 @@ public class PageVO <T> implements Serializable {
this.list = list; this.list = list;
} }
public PageVO() {}
public PageVO (int page, int pageSize, int total, List<T> t) { public PageVO (int page, int pageSize, int total, List<T> t) {
this.page = page; this.page = page;
this.pageLimit = pageSize; this.pageLimit = pageSize;
......
...@@ -200,7 +200,7 @@ public class TemplateTitleServiceImpl implements TemplateTitleService { ...@@ -200,7 +200,7 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
if (count == 0) { if (count == 0) {
return new PageVO<>(skip, pageSize, (int) count, Collections.emptyList()); return new PageVO<>(skip, pageSize, (int) count, Collections.emptyList());
} }
return new PageVO<>(skip, pageSize, (int) count, templateRecordDao.findTemplateRecord(query).stream().map(TemplateRecord::toJson).collect(Collectors.toList())); return new PageVO<>(page, pageSize, (int) count, templateRecordDao.findTemplateRecord(query).stream().map(TemplateRecord::toJson).collect(Collectors.toList()));
} }
......
package com.zhiwei.middleware.automatic.son.config; package com.zhiwei.middleware.automatic.son.config;
import com.zhiwei.middleware.automatic.server.pojo.AutoMarkShieldWord;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform; import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import java.util.List; import java.util.List;
import java.util.Map;
public class GlobalPojo { public class GlobalPojo {
public static List<MessagePlatform> MESSAGE_PLATFORM; public static List<MessagePlatform> MESSAGE_PLATFORM;
public static Map<String, List<AutoMarkShieldWord>> PROJECT_SHIELD_WORD;
} }
package com.zhiwei.middleware.automatic.son.mission; package com.zhiwei.middleware.automatic.son.mission;
import com.zhiwei.middleware.automatic.server.pojo.AutoMarkShieldWord;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform; import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component @Component
public class AsyncTask { public class AsyncTask {
...@@ -20,4 +23,8 @@ public class AsyncTask { ...@@ -20,4 +23,8 @@ public class AsyncTask {
return mongoTemplate.findAll(MessagePlatform.class); return mongoTemplate.findAll(MessagePlatform.class);
} }
public Map<String, List<AutoMarkShieldWord>> getAutoMarkShieldWord() {
return mongoTemplate.findAll(AutoMarkShieldWord.class, "qbjc_auto_mark_shield_word")
.stream().collect(Collectors.groupingBy(AutoMarkShieldWord::getProject, Collectors.toList()));
}
} }
package com.zhiwei.middleware.automatic.son.mission; package com.zhiwei.middleware.automatic.son.mission;
import com.zhiwei.middleware.automatic.son.config.GlobalPojo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@EnableScheduling
public class ScheduledMission { public class ScheduledMission {
private static final Logger log = LogManager.getLogger(ScheduledMission.class);
private final AsyncTask asyncTask;
public ScheduledMission(AsyncTask asyncTask) {
this.asyncTask = asyncTask;
}
@Scheduled(cron = "0 0/10 * * * ?")
public void cacheSync() {
try {
GlobalPojo.MESSAGE_PLATFORM = asyncTask.getMessagePlatform();
GlobalPojo.PROJECT_SHIELD_WORD = asyncTask.getAutoMarkShieldWord();
} catch (Exception e) {
log.error("定时同步静态缓存错误", e);
}
}
} }
...@@ -17,6 +17,7 @@ public class StartTask { ...@@ -17,6 +17,7 @@ public class StartTask {
@PostConstruct @PostConstruct
public void start() { public void start() {
GlobalPojo.MESSAGE_PLATFORM = asyncTask.getMessagePlatform(); GlobalPojo.MESSAGE_PLATFORM = asyncTask.getMessagePlatform();
GlobalPojo.PROJECT_SHIELD_WORD = asyncTask.getAutoMarkShieldWord();
} }
} }
...@@ -5,10 +5,7 @@ import com.zhiwei.base.category.ClassB; ...@@ -5,10 +5,7 @@ import com.zhiwei.base.category.ClassB;
import com.zhiwei.base.entity.subclass.mark.*; import com.zhiwei.base.entity.subclass.mark.*;
import com.zhiwei.middleware.automatic.server.common.GenericAttribute; import com.zhiwei.middleware.automatic.server.common.GenericAttribute;
import com.zhiwei.middleware.automatic.server.core.TaskManager; import com.zhiwei.middleware.automatic.server.core.TaskManager;
import com.zhiwei.middleware.automatic.server.pojo.AutoTask; import com.zhiwei.middleware.automatic.server.pojo.*;
import com.zhiwei.middleware.automatic.server.pojo.MarkInfoMulti;
import com.zhiwei.middleware.automatic.server.pojo.TemplateRecord;
import com.zhiwei.middleware.automatic.server.pojo.TemplateTitleVo;
import com.zhiwei.middleware.automatic.server.pojo.enums.TaskType; import com.zhiwei.middleware.automatic.server.pojo.enums.TaskType;
import com.zhiwei.middleware.automatic.server.pojo.enums.TemplateStatus; import com.zhiwei.middleware.automatic.server.pojo.enums.TemplateStatus;
import com.zhiwei.middleware.automatic.server.util.RedissonUtil; import com.zhiwei.middleware.automatic.server.util.RedissonUtil;
...@@ -203,11 +200,14 @@ public class TaskServiceCommon extends BaseTaskTypePair<TaskServiceCommon.TaskCo ...@@ -203,11 +200,14 @@ public class TaskServiceCommon extends BaseTaskTypePair<TaskServiceCommon.TaskCo
* @param titleVoMap 模板集 * @param titleVoMap 模板集
*/ */
private void oneTitleMark(String group, List<MarkInfo> markInfos, Map<String, TemplateTitleVo> titleVoMap) { private void oneTitleMark(String group, List<MarkInfo> markInfos, Map<String, TemplateTitleVo> titleVoMap) {
List<AutoMarkShieldWord> autoMarkShieldWords = GlobalPojo.PROJECT_SHIELD_WORD.get(group);
// 移除标题长度小于6的部分 // 移除标题长度小于6的部分
List<MarkInfo> newList = markInfos.stream().filter(markInfo -> { List<MarkInfo> newList = markInfos.stream()
.filter(markInfo -> {
String title = Tools.filterSymbol(markInfo.getSourceObj().getString(GenericAttribute.ES_TITLE)); String title = Tools.filterSymbol(markInfo.getSourceObj().getString(GenericAttribute.ES_TITLE));
return null != title && title.length() > 6; return autoFilter(autoMarkShieldWords, title);
}).filter(e -> autoMark(group, e, titleVoMap)).collect(Collectors.toList()); })
.filter(e -> autoMark(group, e, titleVoMap)).collect(Collectors.toList());
if (newList.isEmpty()) { if (newList.isEmpty()) {
return; return;
} }
...@@ -222,6 +222,19 @@ public class TaskServiceCommon extends BaseTaskTypePair<TaskServiceCommon.TaskCo ...@@ -222,6 +222,19 @@ public class TaskServiceCommon extends BaseTaskTypePair<TaskServiceCommon.TaskCo
dubboHandler.markUpsert(newList); dubboHandler.markUpsert(newList);
} }
private boolean autoFilter(List<AutoMarkShieldWord> autoMarkShieldWords, String title) {
// 文本长度过滤
if (Objects.isNull(title) || title.length() < 6) {
return false;
}
// 表示不需要关键字过滤
if (Objects.isNull(autoMarkShieldWords) || autoMarkShieldWords.isEmpty()) {
return true;
}
// 没有命中过滤词
return autoMarkShieldWords.stream().noneMatch(e -> Tools.approximateStringMatching(e.getShieldWord(), title));
}
private boolean autoMark(String group, MarkInfo markInfo, Map<String, TemplateTitleVo> titleVoMap) { private boolean autoMark(String group, MarkInfo markInfo, Map<String, TemplateTitleVo> titleVoMap) {
JSONObject sourceObj = markInfo.getSourceObj(); JSONObject sourceObj = markInfo.getSourceObj();
String title = Tools.filterSymbol(sourceObj.getString(GenericAttribute.ES_TITLE)); String title = Tools.filterSymbol(sourceObj.getString(GenericAttribute.ES_TITLE));
......
...@@ -102,4 +102,18 @@ public class Tools { ...@@ -102,4 +102,18 @@ public class Tools {
} }
return sb.toString(); return sb.toString();
} }
/**
* 模糊匹配
* @return boolean 返回类型
*/
public static boolean approximateStringMatching(String beMatching, String mathingWord) {
boolean res = false;
beMatching = beMatching.toLowerCase();
mathingWord = mathingWord.toLowerCase();
if (beMatching.contains(mathingWord)) {
res = true;
}
return res;
}
} }
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