Commit 27f9c81b by liuyu

2023年05/26 过期模板转移到失效缓存,并加锁。模板详情dubbo接口

parent 3491813e
package com.zhiwei.middleware.automatic.server.core;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.base.entity.subclass.mark.MarkInfo;
import com.zhiwei.middleware.automatic.server.dubbo.service.AutoMaticService;
import com.zhiwei.middleware.automatic.server.pojo.MarkInfoMulti;
import com.zhiwei.middleware.automatic.server.pojo.PageVO;
import com.zhiwei.middleware.automatic.server.pojo.TemplateTitleVo;
import java.util.List;
......@@ -53,4 +55,12 @@ public class AutoMaticClient {
public Map<String, Object> compareWithTemplateTileOL(String project, String title) {
return autoMaticService.compareWithTemplateTileOL(project, title);
}
public PageVO<JSONObject> getTemplateDaySumData(int page, int pageSize, String templateId) {
return autoMaticService.getTemplateDaySumData(page, pageSize, templateId);
}
public PageVO<JSONObject> getTemplateTotalSumData(int page, int pageSize, String templateId) {
return autoMaticService.getTemplateTotalSumData(page, pageSize, templateId);
}
}
......@@ -72,13 +72,17 @@ public interface AutoMaticService {
* @return 返回值
*/
Map<String, Object> compareWithTemplateTileOL(String project, String title);
/**
* 分页查询模板声量统计详细数据
* @param templateId 模板id
* @return page
*/
PageVO<JSONObject> getTemplateDaySumData(int page, int pageSize, String templateId);
/**
* 分页查询模板声量统计详细数据
* @param templateId
* @param startTime
* @param endTime
* @return
* @param templateId 模板id
* @return page
*/
PageVO<JSONObject> getTemplateSumData(String templateId, Long startTime, Long endTime);
PageVO<JSONObject> getTemplateTotalSumData(int page, int pageSize, String templateId);
}
......@@ -121,7 +121,8 @@ public class ScheduledMission {
TaskManager.getInstance().putTask(autoTask);
continue;
}
if (value.getUpdateTime().getTime() > (System.currentTimeMillis() - GenericAttribute.WEEK_TIME)) {
if (value.getStatus() == TemplateStatus.已重置 &&
value.getUpdateTime().getTime() > (System.currentTimeMillis() - GenericAttribute.WEEK_TIME)) {
AutoTask autoTask = new AutoTask(TaskType.TEMPLATE_LOST_RESET.getType(), group);
autoTask.getParamSource().put(GenericAttribute.TEMPLATE_TITLE, entry.getKey());
log.info("任务类型:{},项目:{},标题:{}已创建", autoTask.getType(), autoTask.getGroup(), entry.getKey());
......
......@@ -74,12 +74,6 @@ public interface TemplateTitleService {
*/
void setTemplateValue(String group, String title, String fixTag);
/**
* 清除模板
* @param group 项目
* @param title 标题
*/
void deleteTemplate(String group, String title);
/**
* 修改模板特征值信息
......@@ -94,4 +88,11 @@ public interface TemplateTitleService {
* @param group 项目
*/
void clearDaySum(String group, Long startTime, Long endTime);
/**
* 模板转移到失效中
* @param group 项目
* @param templateTitleVo 模板
*/
void transferTemplate(String group, TemplateTitleVo templateTitleVo);
}
......@@ -109,9 +109,8 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
// 只要在运行中的模板 才能重置
if (Objects.isNull(templateTitleVo.getStatus()) || templateTitleVo.getStatus().name().equals(TemplateStatus.运行中.name())) {
templateTitleVo.setStatus(TemplateStatus.已重置);
setTemplateValue(group, templateTitle, templateTitleVo);
redissonUtil.setMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_LOSE_KEY, group), templateTitle, JSONObject.toJSONString(templateTitleVo));
deleteTemplate(group, title);
// setTemplateValue(group, templateTitle, templateTitleVo);
transferTemplate(group, templateTitleVo);
return true;
}
return false;
......@@ -132,24 +131,12 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
setTemplateValue(group, title, null, null, daySum);
}
@Override
public void deleteTemplate(String group, String title) {
redissonUtil.removeMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_KEY, group), title);
}
private Map<String, TemplateTitleVo> getTemplateTitleByProject(String key, String project) {
Map<String, String> mapValue = redissonUtil.getMapValue(Tools.assembleKey(key, project));
if (Tools.isEmpty(mapValue)) {
return new HashMap<>();
}
return Tools.restoreTMap(mapValue, TemplateTitleVo.class);
}
/**
* 模板自动标注的历史数据修改为新标签
* @param title 模板
* @return 是否修改成功
*/
@Override
public boolean modifyTemplateMarkerInfo (String title, String project) {
TemplateTitleVo templateTitleVo = getTemplateTitleByProjectLost(project).get(title);
try {
......@@ -166,7 +153,7 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
// mongo 查询记录信息
List<TemplateRecord> templateRecord = templateRecordDao.findTemplateRecord(query);
// es 查询
SearchHits hits = findByMupdateInfos(templateRecord.stream().map(TemplateRecord::getMupdate).collect(Collectors.toList()));
SearchHits hits = findByMupdateInfos(templateRecord.stream().map(TemplateRecord::getId).collect(Collectors.toList()), project);
// 转换成markInfo
List<MarkInfo> collect = Arrays.stream(hits.getHits())
.map(e -> MarkInfoUtil.distinguishMarkInfo(e, null))
......@@ -197,6 +184,19 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
}
}
@Override
public void transferTemplate(String group, TemplateTitleVo templateTitleVo) {
String lockKey = Tools.assembleKey(GenericAttribute.LOCK, templateTitleVo.getTemplateTitle());
try {
redissonUtil.setMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_LOSE_KEY, group), templateTitleVo.getTemplateTitle(), JSONObject.toJSONString(templateTitleVo));
redissonUtil.removeMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_KEY, group), templateTitleVo.getTemplateTitle());
} catch (Exception e) {
log.error("转移模板失败,项目:{},title:{}", group, templateTitleVo.getTemplateTitle(), e);
} finally {
redissonUtil.unlock(lockKey);
}
}
private void setTemplateValue(String group, String title, TemplateTitleVo templateTitleVo, String fixTag, Long daySum) {
String lockKey = Tools.assembleKey(GenericAttribute.LOCK, title);
try {
......@@ -231,21 +231,31 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
}
}
private Map<String, TemplateTitleVo> getTemplateTitleByProject(String key, String project) {
Map<String, String> mapValue = redissonUtil.getMapValue(Tools.assembleKey(key, project));
if (Tools.isEmpty(mapValue)) {
return new HashMap<>();
}
return Tools.restoreTMap(mapValue, TemplateTitleVo.class);
}
/**
* 根据特征值查询es数据
* @param mupdate 特征值
* @param ids 特征值
* @return es返回值
*/
private SearchHits findByMupdateInfos(List<String> mupdate) throws IOException {
private SearchHits findByMupdateInfos(List<String> ids, String project) throws IOException {
List<String> mark2 = esIndexes.getMarkIndexes(Index.mark2.name());
String [] indexes = new String[mark2.size()];
mark2.toArray(indexes);
// 查询条件
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.termQuery("mperson", GenericAttribute.AUTO_PERSON));
query.must(QueryBuilders.termQuery("mgroup", project));
BoolQueryBuilder should = QueryBuilders.boolQuery();
mupdate.forEach(e -> {
should.should(QueryBuilders.termQuery("mupdate", e));
ids.forEach(e -> {
should.should(QueryBuilders.termQuery("_id", e));
});
query.must(should);
return esDao.search(indexes, null, query, null, 0, 1000, null);
......
......@@ -210,11 +210,12 @@ public class TaskServiceTemplate extends BaseTaskTypePair<TaskServiceTemplate.Ta
// 移除1天有效期外的数据
if (System.currentTimeMillis() - updateTime > ONE_DAY * 1000) {
log.info("{}-移除过期模板标题:{},最后更新时间:{}", group, title, updateTime);
templateTitleService.deleteTemplate(group, title);
templateTitleVo.setStatus(TemplateStatus.待删除);
templateTitleService.transferTemplate(group, templateTitleVo);
return false;
} else if (e.getValue().getStatus() == TemplateStatus.已重置) {
log.info("已重置的模板从内存中删除,模板title:{}", e.getKey());
templateTitleService.deleteTemplate(group, title);
templateTitleService.transferTemplate(group, templateTitleVo);
return false;
}
return true;
......
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