Commit 31c97c4e by shenjunjie

Merge branch 'feature' into 'release'

Feature

See merge request !386
parents e9ddade4 07da5aee
package com.zhiwei.brandkbs2.aop;
import com.zhiwei.brandkbs2.exception.ExceptionCast;
import com.zhiwei.brandkbs2.model.CommonCodeEnum;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.DownloadTask;
import com.zhiwei.brandkbs2.service.DownloadTaskService;
import io.swagger.annotations.ApiOperation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.lang.reflect.Method;
/**
* @author cjz
* @ClassName AopDownloadTask
* @Description 下载任务Aop
* @date 2023-09-11 09:25
*/
@Aspect
@Component
@Order(2)
public class AopDownloadTask {
public static final Logger log = LogManager.getLogger(AopDownloadTask.class);
@Resource(name = "downloadTaskServiceImpl")
DownloadTaskService downloadTaskService;
@Around(value = "execution(public * com..controller..app..AppDownloadController.*(..)))")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
Signature signature = joinPoint.getSignature();
Method method = ((MethodSignature) signature).getMethod();
// 生成下载任务
String taskName = method.getAnnotation(ApiOperation.class).value() + "下载";
String description = method.getAnnotation(ApiOperation.class).value();
String taskId = downloadTaskService.createDownloadTask(taskName, description);
Object proceed = null;
String fileAddress;
// 执行目标方法
try {
proceed = joinPoint.proceed();
}catch (Exception e){
// 目标方法出错时更新下载任务
downloadTaskService.updateDownloadTask(taskId, 100, DownloadTask.Status.FAILED.getName(), null);
ExceptionCast.cast(CommonCodeEnum.FAIL, "下载异常", e);
}
// 更新下载任务
fileAddress = ((ResponseResult) proceed).getData().toString();
downloadTaskService.updateDownloadTask(taskId, 100, DownloadTask.Status.FINISH.getName(), fileAddress);
return proceed;
}
}
...@@ -18,6 +18,7 @@ import org.aspectj.lang.annotation.Aspect; ...@@ -18,6 +18,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature; import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
...@@ -38,6 +39,7 @@ import java.util.Map; ...@@ -38,6 +39,7 @@ import java.util.Map;
*/ */
@Aspect @Aspect
@Component @Component
@Order(1)
public class AuthAspect { public class AuthAspect {
public static final Logger log = LogManager.getLogger(AuthAspect.class); public static final Logger log = LogManager.getLogger(AuthAspect.class);
......
...@@ -44,6 +44,8 @@ import java.util.Set; ...@@ -44,6 +44,8 @@ import java.util.Set;
@RequestMapping("/admin/event") @RequestMapping("/admin/event")
@Api(tags = "事件管理", description = "提供事件的增、删、改、查等功能") @Api(tags = "事件管理", description = "提供事件的增、删、改、查等功能")
@Auth(role = RoleEnum.COMMON_ADMIN) @Auth(role = RoleEnum.COMMON_ADMIN)
@Deprecated
// 事件后台管理已下线,改用事件中间件
public class EventController extends BaseController { public class EventController extends BaseController {
@Resource(name = "eventServiceImpl") @Resource(name = "eventServiceImpl")
......
...@@ -26,6 +26,8 @@ import org.springframework.web.client.RestTemplate; ...@@ -26,6 +26,8 @@ import org.springframework.web.client.RestTemplate;
@RequestMapping("/app/crisis") @RequestMapping("/app/crisis")
@Api(tags = "前台危机库",description = "提供前台危机相关信息展示") @Api(tags = "前台危机库",description = "提供前台危机相关信息展示")
@Auth(role = RoleEnum.CUSTOMER) @Auth(role = RoleEnum.CUSTOMER)
@Deprecated
// 2023/9/7 全部迁移至事件模块
public class AppCrisisController extends BaseController { public class AppCrisisController extends BaseController {
@Value("${crisis.searchTags.url}") @Value("${crisis.searchTags.url}")
......
...@@ -52,6 +52,18 @@ public class AppEventController extends BaseController { ...@@ -52,6 +52,18 @@ public class AppEventController extends BaseController {
@Value("${ef.checkCaptcha.url}") @Value("${ef.checkCaptcha.url}")
private String efCheckCaptchaUrl; private String efCheckCaptchaUrl;
@Value("${crisis.top3.url}")
private String crisisTop3Url;
@Value("${crisis.searchCriteria.url}")
private String crisisSearchCriteriaUrl;
@Value("${crisis.list.url}")
private String crisisListUrl;
@Value("${crisis.share.url}")
private String crisisEventShareUrl;
private final EventService eventService; private final EventService eventService;
public AppEventController(EventService eventService) { public AppEventController(EventService eventService) {
...@@ -105,7 +117,7 @@ public class AppEventController extends BaseController { ...@@ -105,7 +117,7 @@ public class AppEventController extends BaseController {
return ResponseResult.success(eventService.getEventTopArticlesAnalysis(id, type, emotion, aggTitle)); return ResponseResult.success(eventService.getEventTopArticlesAnalysis(id, type, emotion, aggTitle));
} }
@ApiOperation("前台事件库-全网事件库-搜索") @ApiOperation("前台事件库-全网事件库-行业热点-搜索")
@GetMapping("/getWholeNetworkEvents") @GetMapping("/getWholeNetworkEvents")
public ResponseResult getWholeNetworkEvents(@RequestParam("keyword") String keyword, public ResponseResult getWholeNetworkEvents(@RequestParam("keyword") String keyword,
@RequestParam(value = "page", defaultValue = "1") Integer page) { @RequestParam(value = "page", defaultValue = "1") Integer page) {
...@@ -115,7 +127,7 @@ public class AppEventController extends BaseController { ...@@ -115,7 +127,7 @@ public class AppEventController extends BaseController {
return ResponseResult.success(jsonObject); return ResponseResult.success(jsonObject);
} }
@ApiOperation("前台事件库-全网事件库-搜索条件") @ApiOperation("前台事件库-全网事件库-行业热点-搜索条件")
@GetMapping("/getWholeNetworkSearchCriteria") @GetMapping("/getWholeNetworkSearchCriteria")
public ResponseResult getWholeNetworkSearchCriteria() { public ResponseResult getWholeNetworkSearchCriteria() {
ResponseEntity<String> responseEntity = restTemplate.getForEntity(getEfSearchCriteriaUrl, String.class); ResponseEntity<String> responseEntity = restTemplate.getForEntity(getEfSearchCriteriaUrl, String.class);
...@@ -123,8 +135,8 @@ public class AppEventController extends BaseController { ...@@ -123,8 +135,8 @@ public class AppEventController extends BaseController {
return ResponseResult.success(jsonObject); return ResponseResult.success(jsonObject);
} }
@ApiOperation("前台事件库-全网事件库-列表") @ApiOperation("前台事件库-全网事件库-行业热点-列表")
@LogRecord(description = "事件库-全网事件库") @LogRecord(description = "事件库-全网事件库-行业热点")
@GetMapping("/getWholeNetworkEventsList") @GetMapping("/getWholeNetworkEventsList")
public ResponseResult getWholeNetworkEventsList(@RequestParam(value = "firstType", required = false, defaultValue = "") String firstType, public ResponseResult getWholeNetworkEventsList(@RequestParam(value = "firstType", required = false, defaultValue = "") String firstType,
@RequestParam(value = "start", required = false, defaultValue = "0") long start, @RequestParam(value = "start", required = false, defaultValue = "0") long start,
...@@ -135,7 +147,7 @@ public class AppEventController extends BaseController { ...@@ -135,7 +147,7 @@ public class AppEventController extends BaseController {
return ResponseResult.success(jsonObject); return ResponseResult.success(jsonObject);
} }
@ApiOperation("前台事件库-全网事件库-得到验证码") @ApiOperation("前台事件库-全网事件库-行业热点-得到验证码")
@GetMapping("/getWholeNetworkCaptcha") @GetMapping("/getWholeNetworkCaptcha")
public ResponseResult getWholeNetworkCaptcha() { public ResponseResult getWholeNetworkCaptcha() {
ResponseEntity<String> responseEntity = restTemplate.getForEntity(efCaptchaUrl, String.class); ResponseEntity<String> responseEntity = restTemplate.getForEntity(efCaptchaUrl, String.class);
...@@ -143,7 +155,7 @@ public class AppEventController extends BaseController { ...@@ -143,7 +155,7 @@ public class AppEventController extends BaseController {
return ResponseResult.success(jsonObject); return ResponseResult.success(jsonObject);
} }
@ApiOperation("前台事件库-全网事件库-校验验证码") @ApiOperation("前台事件库-全网事件库-行业热点-校验验证码")
@GetMapping("/checkWholeNetworkCaptcha") @GetMapping("/checkWholeNetworkCaptcha")
public ResponseResult checkWholeNetworkCaptcha(@RequestParam(value = "id", required = false, defaultValue = "") String id, public ResponseResult checkWholeNetworkCaptcha(@RequestParam(value = "id", required = false, defaultValue = "") String id,
@RequestParam(value = "captcha", required = false, defaultValue = "") String captcha) { @RequestParam(value = "captcha", required = false, defaultValue = "") String captcha) {
...@@ -152,6 +164,43 @@ public class AppEventController extends BaseController { ...@@ -152,6 +164,43 @@ public class AppEventController extends BaseController {
return ResponseResult.success(jsonObject); return ResponseResult.success(jsonObject);
} }
@ApiOperation("前台事件库-全网事件库-企业危机-近期热点危机")
@GetMapping("/recentHotCrisis")
public ResponseResult recentHotCrisis(){
ResponseEntity<String> responseEntity = restTemplate.getForEntity(crisisTop3Url, String.class);
Object data = JSON.parseObject(responseEntity.getBody()).get("data");
return ResponseResult.success(data);
}
@ApiOperation("前台事件库-全网事件库-企业危机-危机搜索条件")
@GetMapping("/crisisSearchCriteria")
public ResponseResult crisisSearchCriteria(){
ResponseEntity<String> responseEntity = restTemplate.getForEntity(crisisSearchCriteriaUrl, String.class);
Object data = JSON.parseObject(responseEntity.getBody()).get("data");
return ResponseResult.success(data);
}
@ApiOperation("前台事件库-全网事件库-企业危机-危机库列表")
@LogRecord(description = "事件库-全网事件库-企业危机")
@GetMapping("/crisisList")
public ResponseResult crisisList(@RequestParam(value = "page",defaultValue = "1") Integer page,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize,
@RequestParam(value = "startTime",required = false) String startTime,
@RequestParam(value = "endTime",required = false) String endTime,
@RequestParam(value = "category",defaultValue = "不限") String category){
ResponseEntity<String> responseEntity = restTemplate.getForEntity(crisisListUrl, String.class, page, pageSize, startTime, endTime, category);
Object data = JSON.parseObject(responseEntity.getBody()).get("data");
return ResponseResult.success(data);
}
@ApiOperation("前台事件库-全网事件库-企业危机-获取危机事件分享id")
@GetMapping("/getCrisisEventShareId/{id}")
public ResponseResult getCrisisEventShareId(@PathVariable int id){
ResponseEntity<String> responseEntity = restTemplate.getForEntity(crisisEventShareUrl, String.class, id);
Object data = JSON.parseObject(responseEntity.getBody()).get("data");
return ResponseResult.success(data);
}
@ApiOperation("关联事件") @ApiOperation("关联事件")
@ApiImplicitParam(name = "keyword", value = "关键词", paramType = "query", dataType = "String") @ApiImplicitParam(name = "keyword", value = "关键词", paramType = "query", dataType = "String")
@GetMapping("/getRelevanceEvent") @GetMapping("/getRelevanceEvent")
......
...@@ -4,7 +4,10 @@ import com.zhiwei.brandkbs2.auth.Auth; ...@@ -4,7 +4,10 @@ import com.zhiwei.brandkbs2.auth.Auth;
import com.zhiwei.brandkbs2.controller.BaseController; import com.zhiwei.brandkbs2.controller.BaseController;
import com.zhiwei.brandkbs2.enmus.RoleEnum; import com.zhiwei.brandkbs2.enmus.RoleEnum;
import com.zhiwei.brandkbs2.model.ResponseResult; import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.DownloadTask;
import com.zhiwei.brandkbs2.service.DownloadTaskService;
import com.zhiwei.brandkbs2.service.NoticeInfoService; import com.zhiwei.brandkbs2.service.NoticeInfoService;
import com.zhiwei.brandkbs2.util.Tools;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
...@@ -28,6 +31,9 @@ public class AppUserCenterController extends BaseController { ...@@ -28,6 +31,9 @@ public class AppUserCenterController extends BaseController {
@Resource(name = "noticeInfoServiceImpl") @Resource(name = "noticeInfoServiceImpl")
private NoticeInfoService noticeInfoService; private NoticeInfoService noticeInfoService;
@Resource(name = "downloadTaskServiceImpl")
DownloadTaskService downloadTaskService;
@ApiOperation("个人中心-系统通知-公告列表") @ApiOperation("个人中心-系统通知-公告列表")
@ApiImplicitParams({@ApiImplicitParam(name = "page", value = "页码", required = false, defaultValue = "1", paramType = "query", dataType = "int"), @ApiImplicitParams({@ApiImplicitParam(name = "page", value = "页码", required = false, defaultValue = "1", paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "size", value = "每页记录数", required = false, defaultValue = "10", paramType = "query", dataType = "int")}) @ApiImplicitParam(name = "size", value = "每页记录数", required = false, defaultValue = "10", paramType = "query", dataType = "int")})
...@@ -50,4 +56,30 @@ public class AppUserCenterController extends BaseController { ...@@ -50,4 +56,30 @@ public class AppUserCenterController extends BaseController {
noticeInfoService.updateReadUserId(id); noticeInfoService.updateReadUserId(id);
return ResponseResult.success(); return ResponseResult.success();
} }
@ApiOperation("任务中心-下拉选项列表")
@GetMapping("/download-task/options")
public ResponseResult getDownloadTaskCriteria() {
return ResponseResult.success(downloadTaskService.getDownloadTaskOptions());
}
@ApiOperation("任务中心-下载任务列表")
@ApiImplicitParams({@ApiImplicitParam(name = "page", value = "页码", required = false, defaultValue = "1", paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "size", value = "每页记录数", required = false, defaultValue = "10", paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "keyword", value = "关键词", required = false, paramType = "query", dataType = "string")})
@GetMapping("/download-task/list")
public ResponseResult getDownloadTaskList(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "size", defaultValue = "10") int size,
@RequestParam(value = "keyword", required = false) String keyword) {
return ResponseResult.success(downloadTaskService.getDownloadTaskList(page, size, keyword));
}
@ApiOperation("任务中心-下载")
@ApiImplicitParam(name = "id", value = "任务id", required = true, paramType = "path", dataType = "string")
@GetMapping("/download-task/download/{id}")
public ResponseResult 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.DownloadTask;
import org.springframework.data.mongodb.core.query.Query;
import java.util.List;
/**
* @ClassName: NoticeInfoDao
* @Description NoticeInfoDao
* @author: cjz
* @date: 2023-08-08 14:49
*/
public interface DownloadTaskDao extends BaseMongoDao<DownloadTask>{
List<String> findDistinct(Query query, String filed);
}
package com.zhiwei.brandkbs2.dao.impl;
import com.zhiwei.brandkbs2.dao.DownloadTaskDao;
import com.zhiwei.brandkbs2.pojo.DownloadTask;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.List;
@Component("downloadTaskDao")
public class DownloadTaskDaoImpl extends BaseMongoDaoImpl<DownloadTask> implements DownloadTaskDao {
private static final String COLLECTION_NAME = "brandkbs_download_task";
public DownloadTaskDaoImpl() {
super(COLLECTION_NAME);
}
@Override
public List<String> findDistinct(Query query, String filed) {
return mongoTemplate.findDistinct(query, filed, COLLECTION_NAME, String.class);
}
}
...@@ -14,8 +14,14 @@ import org.apache.logging.log4j.Logger; ...@@ -14,8 +14,14 @@ import org.apache.logging.log4j.Logger;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -27,6 +33,7 @@ import java.util.List; ...@@ -27,6 +33,7 @@ import java.util.List;
*/ */
public class EasyExcelUtil { public class EasyExcelUtil {
private static final Logger log = LogManager.getLogger(EasyExcelUtil.class); private static final Logger log = LogManager.getLogger(EasyExcelUtil.class);
private EasyExcelUtil() { private EasyExcelUtil() {
} }
...@@ -190,6 +197,55 @@ public class EasyExcelUtil { ...@@ -190,6 +197,55 @@ public class EasyExcelUtil {
} }
} }
/**
* 将excel文件保存至指定路径
* @param filePath
* @param fileName
* @param sheetName
* @param clazz
* @param datas
* @param <T>
*/
public static <T> String saveExcelWithPath(String filePath, String fileName, String sheetName, Class<T> clazz, List<T> datas){
try {
formatExcelExports(clazz, datas);
String fileAddress = filePath + fileName + ".xlsx";
FileOutputStream out = new FileOutputStream(fileAddress);
EasyExcel.write(out, clazz).sheet(sheetName).doWrite(datas);
return fileAddress;
}catch (Exception e){
log.error("file:{},saveExcelWithPath error:", fileName, e);
return null;
}
}
/**
* InputStream转换excel文件保存至指定路径
* @param filePath
* @param fileName
* @param input
* @return
*/
public static String saveExcelWithPath(String filePath, String fileName, InputStream input){
try {
String fileAddress = filePath + fileName + ".xlsx";
FileOutputStream output = new FileOutputStream(fileAddress);
ReadableByteChannel inputChannel = Channels.newChannel(input);
WritableByteChannel outputChannel = Channels.newChannel(output);
ByteBuffer buffer = ByteBuffer.allocateDirect(10240);
long size = 0;
while (inputChannel.read(buffer) != -1) {
buffer.flip();
size += outputChannel.write(buffer);
buffer.clear();
}
return fileAddress;
}catch (Exception e){
log.error("file:{},saveExcelWithPath error:", fileName, e);
return null;
}
}
private static <T> void formatExcelExports(Class<T> clazz, List<T> datas){ private static <T> void formatExcelExports(Class<T> clazz, List<T> datas){
List<Field> stringFields = new ArrayList<>(); List<Field> stringFields = new ArrayList<>();
// 记录需要设置的部分 // 记录需要设置的部分
......
package com.zhiwei.brandkbs2.pojo;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @ClassName: DownloadTask
* @Description 下载任务
* @author: cjz
* @date: 2023-09-01 12:13
*/
@Getter
@Setter
@AllArgsConstructor
public class DownloadTask extends AbstractBaseMongo{
/**
* 任务名
*/
private String taskName;
/**
* 数据内容
*/
private String description;
/**
* 进度
*/
private Integer schedule;
/**
* 任务状态
*/
private String status;
/**
* 文件地址
*/
private String fileAddress;
/**
* 项目名
*/
private String project;
/**
* 项目
*/
private String projectId;
/**
* 用户id
*/
private String userId;
/**
* nickname
*/
private String nickname;
/**
* uTime 更新时间
*/
private Long uTime;
/**
* cTime 创建时间
*/
private Long cTime;
@Getter
public enum Status {
GENERATING("generating", "生成中"),
FINISH("finish", "完成"),
FAILED("failed", "任务失败");
private String name;
private String description;
Status(String name, String description){
this.name = name;
this.description = description;
}
}
}
...@@ -21,11 +21,6 @@ import java.util.Map; ...@@ -21,11 +21,6 @@ import java.util.Map;
public class Project extends AbstractProject { public class Project extends AbstractProject {
/** /**
* 全网搜数据源(1:舆情库,2:商业数据库)
*/
private Integer wholeSearchDataSource;
/**
* 数据起始时间(能够绑定关联关系的时间点) * 数据起始时间(能够绑定关联关系的时间点)
*/ */
private Long importTime; private Long importTime;
...@@ -106,7 +101,6 @@ public class Project extends AbstractProject { ...@@ -106,7 +101,6 @@ public class Project extends AbstractProject {
projectVO.setId(this.getId()); projectVO.setId(this.getId());
// 主品牌 // 主品牌
projectVO.setProjectName(this.getProjectName()); projectVO.setProjectName(this.getProjectName());
projectVO.setWholeSearchDataSource(this.getWholeSearchDataSource());
projectVO.setImportTime(new Date(this.getImportTime())); projectVO.setImportTime(new Date(this.getImportTime()));
projectVO.setBrandName(this.getBrandName()); projectVO.setBrandName(this.getBrandName());
projectVO.setBrandLinkedGroup(this.getBrandLinkedGroup()); projectVO.setBrandLinkedGroup(this.getBrandLinkedGroup());
......
...@@ -38,12 +38,6 @@ public class ProjectVO { ...@@ -38,12 +38,6 @@ public class ProjectVO {
private String projectName; private String projectName;
/** /**
* 全网搜数据源(1:舆情库,2:商业数据库)
*/
@ApiModelProperty("全网搜数据源(1:舆情库,2:商业数据库)")
private Integer wholeSearchDataSource;
/**
* 数据起始时间 * 数据起始时间
*/ */
@ApiModelProperty("数据起始时间") @ApiModelProperty("数据起始时间")
...@@ -149,7 +143,6 @@ public class ProjectVO { ...@@ -149,7 +143,6 @@ public class ProjectVO {
} else { } else {
project.setAvatarUrl(this.getAvatarUrl()); project.setAvatarUrl(this.getAvatarUrl());
} }
project.setWholeSearchDataSource(this.getWholeSearchDataSource());
project.setImportTime(this.getImportTime().getTime()); project.setImportTime(this.getImportTime().getTime());
project.setHasContend(null != this.getContendList()); project.setHasContend(null != this.getContendList());
project.setContendList(this.getContendList().stream().peek(contend -> { project.setContendList(this.getContendList().stream().peek(contend -> {
......
package com.zhiwei.brandkbs2.service;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.pojo.DownloadTask;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import java.util.List;
/**
* @ClassName: DownloadTaskService
* @Description 下载任务业务接口
* @author: cjz
* @date: 2023-09-04 10:32
*/
public interface DownloadTaskService {
/**
* 新建下载任务
* @param taskName
* @param description
*/
String createDownloadTask(String taskName, String description);
/**
* 更新下载任务信息
* @param id
* @param schedule
* @param status
* @param fileAddress
*/
void updateDownloadTask(String id, Integer schedule, String status, String fileAddress);
/**
* 获取任务中心下拉选项
* @return
*/
List<String> getDownloadTaskOptions();
/**
* 下载任务列表
* @param page
* @param size
* @return
*/
PageVO<JSONObject> getDownloadTaskList(int page, int size, String keyword);
/**
* 获取单个任务
* @param id
* @return
*/
DownloadTask findTask(String id);
}
package com.zhiwei.brandkbs2.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.auth.UserThreadLocal;
import com.zhiwei.brandkbs2.dao.DownloadTaskDao;
import com.zhiwei.brandkbs2.pojo.DownloadTask;
import com.zhiwei.brandkbs2.pojo.Project;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import com.zhiwei.brandkbs2.service.DownloadTaskService;
import com.zhiwei.brandkbs2.service.ProjectService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service("downloadTaskServiceImpl")
public class DownloadTaskServiceImpl implements DownloadTaskService {
@Resource(name = "downloadTaskDao")
DownloadTaskDao downloadTaskDao;
@Resource(name = "projectServiceImpl")
ProjectService projectService;
@Resource(name = "mongoUtil")
private com.zhiwei.brandkbs2.util.MongoUtil mongoUtil;
@Override
public String createDownloadTask(String taskName, String description) {
Project project = projectService.getProjectById(UserThreadLocal.getProjectId());
long now = System.currentTimeMillis();
DownloadTask task = new DownloadTask(taskName, description, 0, DownloadTask.Status.GENERATING.getName(), null,
project.getProjectName(), project.getId(), UserThreadLocal.getUserId(), UserThreadLocal.getNickname(), now, now);
downloadTaskDao.insertOne(task);
return task.getId();
}
@Override
public void updateDownloadTask(String id, Integer schedule, String status, String fileAddress) {
DownloadTask task = downloadTaskDao.findOneById(id);
if (Objects.nonNull(schedule)){
task.setSchedule(schedule);
}
if (Objects.nonNull(status)){
task.setStatus(status);
}
if (Objects.nonNull(fileAddress)){
task.setFileAddress(fileAddress);
}
downloadTaskDao.updateOne(task);
}
@Override
public List<String> getDownloadTaskOptions() {
Query query = new Query();
query.addCriteria(Criteria.where("projectId").is(UserThreadLocal.getProjectId()));
query.addCriteria(Criteria.where("userId").is(UserThreadLocal.getUserId()));
List<String> tasks = downloadTaskDao.findDistinct(query, "description");
return tasks.stream().sorted().collect(Collectors.toList());
}
@Override
public PageVO<JSONObject> getDownloadTaskList(int page, int size, String keyword) {
Query query = new Query();
query.addCriteria(Criteria.where("projectId").is(UserThreadLocal.getProjectId()));
query.addCriteria(Criteria.where("userId").is(UserThreadLocal.getUserId()));
if (StringUtils.isNotBlank(keyword)) {
query.addCriteria(Criteria.where("description").is(keyword));
}
query.with(Sort.by(Sort.Direction.DESC, "cTime"));
long total = downloadTaskDao.count(query);
mongoUtil.start(page, size, query);
List<DownloadTask> taskList = downloadTaskDao.findList(query);
List<JSONObject> res = new ArrayList<>();
for (DownloadTask task : taskList) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", task.getId());
jsonObject.put("taskName", task.getTaskName());
jsonObject.put("description", task.getDescription());
jsonObject.put("schedule", task.getSchedule());
jsonObject.put("status", task.getStatus());
jsonObject.put("cTime", task.getCTime());
res.add(jsonObject);
}
return PageVO.createPageVo(total, page, size, res);
}
@Override
public DownloadTask findTask(String id) {
return downloadTaskDao.findOneById(id);
}
}
...@@ -196,8 +196,10 @@ public class EsSearchServiceImpl implements EsSearchService { ...@@ -196,8 +196,10 @@ public class EsSearchServiceImpl implements EsSearchService {
} }
helper.setSort(sort); helper.setSort(sort);
// from size // from size
helper.setFrom((dto.getPage() - 1) * dto.getPageSize()); if (null != dto.getPageSize()) {
helper.setSize(dto.getPageSize()); helper.setFrom((dto.getPage() - 1) * dto.getPageSize());
helper.setSize(dto.getPageSize());
}
// HighlightBuilder ??? // HighlightBuilder ???
return helper; return helper;
} }
......
...@@ -1121,24 +1121,8 @@ public class MarkDataServiceImpl implements MarkDataService { ...@@ -1121,24 +1121,8 @@ public class MarkDataServiceImpl implements MarkDataService {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
// 搜索时间 // 搜索时间
result.put("times", Arrays.asList("今天", "24小时", "三天", "七天", "近30天")); result.put("times", Arrays.asList("今天", "24小时", "三天", "七天", "近30天"));
result.put("ninetyDays", DateUtils.addDays(Tools.truncDate(new Date(), Constant.DAY_PATTERN), -89).getTime()); result.put("ninetyDays", DateUtils.addDays(Tools.truncDate(new Date(), Constant.DAY_PATTERN), -89).getTime());
result.put("platformList", commonService.getQbjcPlatform("id", "name").stream().filter(s -> !s.get("name").equals("脉脉")).collect(Collectors.toList()));
List<JSONObject> platformList = new ArrayList<>();
if (2 == project.getWholeSearchDataSource()) {
result.put("origin", "商业");
JSONObject backUpPlatform = getBackUpPlatform();
for (Map.Entry<String, Object> entry : backUpPlatform.entrySet()) {
JSONObject platformJSONObject = new JSONObject();
platformJSONObject.put("name", entry.getKey());
platformJSONObject.put("id", entry.getValue());
platformList.add(platformJSONObject);
}
} else {
result.put("origin", "舆情");
platformList = commonService.getQbjcPlatform("id", "name").stream().filter(s -> !s.get("name").equals("脉脉")).collect(Collectors.toList());
}
result.put("platformList", platformList);
return result; return result;
} }
......
...@@ -61,7 +61,7 @@ public class MarkDataServiceTest { ...@@ -61,7 +61,7 @@ public class MarkDataServiceTest {
@Test @Test
public void getYuqingMarkCriteriaTest(){ public void getYuqingMarkCriteriaTest(){
JSONObject yuqingMarkCriteria = markDataService.getYuqingMarkCriteria(null); JSONObject yuqingMarkCriteria = markDataService.getYuqingMarkCriteria();
System.out.println(yuqingMarkCriteria); System.out.println(yuqingMarkCriteria);
} }
...@@ -179,9 +179,8 @@ public class MarkDataServiceTest { ...@@ -179,9 +179,8 @@ public class MarkDataServiceTest {
@Test @Test
public void searchWholeNetworkTest(){ public void searchWholeNetworkTest(){
SearchFilterDTO dto = new SearchFilterDTO(); SearchFilterDTO dto = new SearchFilterDTO();
dto.setProjectId("62beadd1bbf8eb20f96d2f2f");
dto.setSearch("阿里"); dto.setSearch("阿里");
JSONObject jsonObject = markDataService.searchWholeNetwork(dto); JSONObject jsonObject = markDataService.searchWholeNetworkWithBalance(dto).getLeft();
System.out.println(jsonObject); System.out.println(jsonObject);
} }
......
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