Commit 909ff046 by shenjunjie

Merge branch 'feature' into 'release'

Feature

See merge request !489
parents dda6e7ed 61c259df
......@@ -61,7 +61,7 @@ public class AopLogRecord {
private static final List<String> URL_PATTERNS = Arrays.asList("/getNewAll", "/getNew", "/schedule");
@AfterReturning(value = "execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..)) || execution(* com..controller..LoginController.checkBind())", returning = "ResponseResult")
private void beforeLog(JoinPoint joinPoint, ResponseResult ResponseResult) {
private void beforeLog(JoinPoint joinPoint, Object ResponseResult) {
try {
long now = System.currentTimeMillis();
// RequestContextHolder 顾名思义 持有 request 上下文的容器
......@@ -128,7 +128,7 @@ public class AopLogRecord {
}
}
private UserLogRecord userLogRecord(String projectId, UserInfo userInfo, JoinPoint joinPoint, MethodSignature methodSignature, ResponseResult responseResult) {
private UserLogRecord userLogRecord(String projectId, UserInfo userInfo, JoinPoint joinPoint, MethodSignature methodSignature, Object responseResult) {
long now = System.currentTimeMillis();
Object[] args = joinPoint.getArgs();
Method method = methodSignature.getMethod();
......@@ -193,10 +193,11 @@ public class AopLogRecord {
return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix + suffix, userInfo.getRoleId(), now, now);
}
// 获取接口返回值(value为获取返回值的具体字段)并与操作描述description拼接返回,返回值为实体
if (!method.getAnnotation(LogRecord.class).arguments() && method.getAnnotation(LogRecord.class).entity()) {
if (!method.getAnnotation(LogRecord.class).arguments() && method.getAnnotation(LogRecord.class).entity() && Objects.nonNull(responseResult)) {
List<Object> res = new ArrayList<>(value.length);
for (String v : value) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(responseResult.getData());
ResponseResult result = (ResponseResult) responseResult;
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(result.getData());
String s = String.valueOf(jsonObject.get(v));
if (Objects.nonNull(s)) {
res.add(s);
......
......@@ -9,6 +9,7 @@ import com.zhiwei.brandkbs2.enmus.RoleEnum;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.dto.EventSearchDTO;
import com.zhiwei.brandkbs2.service.EventService;
import com.zhiwei.brandkbs2.service.MarkDataService;
import com.zhiwei.middleware.event.pojo.dto.BrandkbsEventSearchDTO;
import com.zhiwei.middleware.event.pojo.dto.EventDTO;
import io.swagger.annotations.Api;
......@@ -20,6 +21,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.List;
/**
......@@ -64,6 +66,9 @@ public class AppEventController extends BaseController {
private final EventService eventService;
@Resource(name = "markDataServiceImpl")
MarkDataService markDataService;
public AppEventController(EventService eventService) {
this.eventService = eventService;
}
......@@ -355,4 +360,43 @@ public class AppEventController extends BaseController {
public ResponseResult aggTitleAnalyze(@RequestBody EventDTO dto){
return eventService.aggTitleAnalyze(dto);
}
@ApiOperation("新-舆情分析-高频标题-基础信息")
@GetMapping("/analyze/frequent-title/info")
public ResponseResult getAggTitleBaseInfo(@RequestParam(value = "startTime") Long startTime,
@RequestParam(value = "endTime") Long endTime,
@RequestParam(value = "aggTitle") String aggTitle,
@RequestParam(value = "planId", required = false) String planId) {
return ResponseResult.success(markDataService.getAggTitleBaseInfo(aggTitle, startTime, endTime, planId));
}
@ApiOperation("新-舆情分析-高频标题-发布节点")
@GetMapping("/analyze/frequent-title/article-point")
public ResponseResult getArticlePoints(@RequestParam(value = "startTime") Long startTime,
@RequestParam(value = "endTime") Long endTime,
@RequestParam(value = "aggTitle") String aggTitle,
@RequestParam(value = "planId", required = false) String planId) {
return ResponseResult.success(markDataService.getAggTitleArticlePoints(aggTitle, startTime, endTime, planId));
}
@ApiOperation("新-舆情分析-高频标题-平台分布")
@GetMapping("/analyze/frequent-title/platform-percent")
public ResponseResult getAggTitlePlatformPercentage(@RequestParam(value = "startTime") Long startTime,
@RequestParam(value = "endTime") Long endTime,
@RequestParam(value = "aggTitle") String aggTitle,
@RequestParam(value = "planId", required = false) String planId) {
return ResponseResult.success(markDataService.getAggTitlePlatformPercentage(aggTitle, startTime, endTime, planId));
}
@ApiOperation("新-舆情分析-高频标题-发文列表")
@GetMapping("/analyze/frequent-title/articles")
public ResponseResult getArticleList(@RequestParam(value = "startTime") Long startTime,
@RequestParam(value = "endTime") Long endTime,
@RequestParam(value = "aggTitle") String aggTitle,
@RequestParam(value = "platform") String platform,
@RequestParam(value = "planId", required = false) String planId,
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
return ResponseResult.success(markDataService.getArticleList(aggTitle, startTime, endTime, planId, platform, page, pageSize));
}
}
......@@ -77,9 +77,8 @@ public class AppUserCenterController extends BaseController {
@ApiOperation("任务中心-下载")
@ApiImplicitParam(name = "id", value = "任务id", required = true, paramType = "path", dataType = "string")
@GetMapping("/download-task/download/{id}")
public ResponseResult download(@PathVariable String id) {
public void download(@PathVariable String id) {
DownloadTask task = downloadTaskService.findTask(id);
Tools.downloadFile(task.getFileAddress(), response);
return ResponseResult.success();
}
}
package com.zhiwei.brandkbs2.dao;
import com.zhiwei.brandkbs2.pojo.MarkSearchAnalyzeTask;
public interface MarkSearchAnalyzeTaskDao extends BaseMongoDao<MarkSearchAnalyzeTask>{
}
package com.zhiwei.brandkbs2.dao.impl;
import com.zhiwei.brandkbs2.dao.MarkSearchAnalyzeTaskDao;
import com.zhiwei.brandkbs2.pojo.MarkSearchAnalyzeTask;
import org.springframework.stereotype.Component;
@Component("markSearchAnalyzeTaskDao")
public class MarkSearchAnalyzeTaskDaoImpl extends BaseMongoDaoImpl<MarkSearchAnalyzeTask> implements MarkSearchAnalyzeTaskDao {
private static final String COLLECTION_NAME = "brandkbs_search_analyze_task";
public MarkSearchAnalyzeTaskDaoImpl() {
super(COLLECTION_NAME);
}
}
package com.zhiwei.brandkbs2.pojo;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @ClassName: YuqingSearchAnalyzeTask
* @Description 查舆情数据分析任务
* @author: cjz
* @date: 2024-04-16 14:21
*/
@Getter
@Setter
@AllArgsConstructor
public class MarkSearchAnalyzeTask extends AbstractBaseMongo {
/**
* 查舆情搜索条件
*/
private MarkSearchDTO markSearchDTO;
/**
* 数据分析结果-词云
*/
List<JSONObject> highWord;
/**
* 词云计算是否已完成
*/
private Boolean finish;
/**
* 创建时间
*/
private Long cTime;
}
......@@ -195,4 +195,9 @@ public class MarkSearchDTO {
*/
@ApiModelProperty(value = "gid限制")
private Long pageGid;
/**
* 聚合标题
*/
@ApiModelProperty(value = "聚合标题")
private String aggTitle;
}
......@@ -5,11 +5,7 @@ import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.BaseMap;
import com.zhiwei.brandkbs2.pojo.Event;
import com.zhiwei.brandkbs2.pojo.MarkFlowEntity;
import com.zhiwei.brandkbs2.pojo.dto.ExportAppYuqingDTO;
import com.zhiwei.brandkbs2.pojo.dto.ExportSearchWholeDTO;
import com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO;
import com.zhiwei.brandkbs2.pojo.dto.SearchFilterDTO;
import com.zhiwei.brandkbs2.pojo.dto.NonManualProjectPlanDTO;
import com.zhiwei.brandkbs2.pojo.dto.*;
import com.zhiwei.brandkbs2.pojo.vo.LineVO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import org.apache.commons.lang3.tuple.Pair;
......@@ -545,95 +541,88 @@ public interface MarkDataService {
/**
* 新-舆情分析-舆情总量
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
* @throws IOException
*/
JSONObject getYuqingAmount(Long startTime, Long endTime, String planId);
JSONObject getYuqingAmount(MarkSearchDTO dto);
/**
* 新-舆情分析-情感分布
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
* @throws IOException
*/
JSONObject getYuqingEmotionDistribution(Long startTime, Long endTime, String planId);
JSONObject getYuqingEmotionDistribution(MarkSearchDTO dto);
/**
* 新-舆情分析-重点平台
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
*/
JSONObject getImportantPlatformPercentage(Long startTime, Long endTime, String planId);
JSONObject getImportantPlatformPercentage(MarkSearchDTO dto);
/**
* 新-舆情分析-平台占比
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
*/
List<JSONObject> getPlatformPercentage(Long startTime, Long endTime, String planId);
List<JSONObject> geAnalyzePlatformPercentage(MarkSearchDTO dto);
/**
* 新-舆情分析-舆情走势图
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
*/
JSONObject getSpreadTendency(Long startTime, Long endTime, String planId);
JSONObject getSpreadTendency(MarkSearchDTO dto);
/**
* 新-舆情分析-活跃渠道
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
*/
List<JSONObject> getActiveChannels(Long startTime, Long endTime, String planId);
List<JSONObject> getActiveChannels(MarkSearchDTO dto);
/**
* 新-舆情分析-ip分布
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
*/
List<JSONObject> getArticleIpLocated(Long startTime, Long endTime, String planId, int size);
List<JSONObject> getArticleIpLocated(MarkSearchDTO dto);
/**
* 新-舆情分析-活跃渠道、ip分布、词云详情页面
* @param dto
* @param dto 标注数据搜索传输类
* @return
*/
PageVO<MarkFlowEntity> getYuqingAnalyzeDetail(MarkSearchDTO dto);
void cacheHighWord(Long startTime, Long endTime, String planId, boolean cache);
/**
* 新-舆情分析-词云
* @param startTime
* @param endTime
* @param planId
* @param dto 标注数据搜索传输类
* @return
*/
List<JSONObject> getHighWord(Long startTime, Long endTime, String planId, boolean cache);
List<JSONObject> getAnalyzeHighWord(MarkSearchDTO dto, boolean cache);
/**
* 查舆情-数据分析-生成词云
* @param dto
* @return
*/
List<JSONObject> getSearchAnalyzeHighWord(MarkSearchDTO dto);
/**
* 新-舆情分析-高频标题
* @param startTime
* @param endTime
* @param planId
* @param size
* @param include
* @return
*/
List<JSONObject> getLastNews(Long startTime, Long endTime, String planId, int size, boolean include);
List<JSONObject> getLastNews(Long startTime, Long endTime, int size);
List<JSONObject> getLastNews(MarkSearchDTO dto, int size);
/**
* 舆情分析-高频标题详情页-基础信息
......@@ -645,6 +634,8 @@ public interface MarkDataService {
*/
JSONObject getAggTitleBaseInfo(String aggTitle, Long startTime, Long endTime, String planId);
JSONObject getAggTitleBaseInfo(MarkSearchDTO dto);
/**
* 舆情分析-高频标题详情页-发布节点
* @param aggTitle
......@@ -655,6 +646,8 @@ public interface MarkDataService {
*/
List<JSONObject> getAggTitleArticlePoints(String aggTitle, Long startTime, Long endTime, String planId);
List<JSONObject> getAggTitleArticlePoints(MarkSearchDTO dto);
/**
* 舆情分析-高频标题详情页-平台分布
* @param aggTitle
......@@ -665,6 +658,8 @@ public interface MarkDataService {
*/
List<JSONObject> getAggTitlePlatformPercentage(String aggTitle, Long startTime, Long endTime, String planId);
List<JSONObject> getAggTitlePlatformPercentage(MarkSearchDTO dto);
/**
* 舆情分析-高频标题详情页-发文列表
* @param aggTitle
......@@ -676,4 +671,6 @@ public interface MarkDataService {
* @return
*/
PageVO<JSONObject> getArticleList(String aggTitle, Long startTime, Long endTime, String planId, String platform, int page, int pageSize);
PageVO<JSONObject> getArticleList(MarkSearchDTO dto);
}
......@@ -903,7 +903,7 @@ public class EventServiceImpl implements EventService {
if (cache && StringUtils.isNotEmpty(resultStr)) {
return JSON.parseArray(resultStr, JSONObject.class);
}
List<JSONObject> resultList = markDataService.getLastNews(startTime, endTime, null, 50, true);
List<JSONObject> resultList = markDataService.getLastNews(startTime, endTime, 50);
redisUtil.setExpire(redisKey, JSON.toJSONString(resultList));
return resultList;
}
......
......@@ -384,14 +384,14 @@ public class TaskServiceImpl implements TaskService {
Long[] time = commonService.getTimeRangeMonth();
List<CompletableFuture<Object>> projectFutures = GlobalPojo.PROJECT_MAP.values().stream().map(project -> CompletableFuture.supplyAsync(() -> {
UserThreadLocal.set(new UserInfo().setProjectId(project.getId()));
markDataService.getHighWord(time[0], time[1], null, false);
markDataService.cacheHighWord(time[0], time[1], null, false);
log.info("项目:{}-{}-词云缓存已完成:{}个", project.getProjectName(), project.getId(), total.incrementAndGet());
return null;
}, cacheServiceExecutor)).collect(Collectors.toList());
AtomicInteger total2 = new AtomicInteger();
List<CompletableFuture<Object>> planFutures = nonManualProjectPlanDao.findList(new Query()).stream().map(plan -> CompletableFuture.supplyAsync(() -> {
UserThreadLocal.set(new UserInfo().setProjectId(plan.getProjectId()));
markDataService.getHighWord(time[0], time[1], plan.getId(), false);
markDataService.cacheHighWord(time[0], time[1], plan.getId(), false);
log.info("方案:{}-{}-词云缓存已完成:{}个", plan.getName(), plan.getId(), total2.incrementAndGet());
return null;
}, cacheServiceExecutor)).collect(Collectors.toList());
......
......@@ -78,7 +78,7 @@ public class Tools {
/**
* 须过滤的标题
*/
public static final List<String> FILTER_TITLE = Arrays.asList("Notitle", "分享一篇文章", "暂无标题");
public static final List<String> FILTER_TITLE = Arrays.asList("Notitle", "分享一篇文章", "分享一篇文章。", "暂无标题");
/**
* 须过滤的渠道
......
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