Commit e865e06d by 陈健智

非人工项目增加数据源选择

parent eb7e3d2e
......@@ -308,4 +308,10 @@ public class ProjectController extends BaseController {
ProjectService.adjustNonManualProjectDataBalance(json.getString("projectId"), json.getInteger("count"));
return ResponseResult.success();
}
@ApiOperation("非人工项目-数据源切换")
@PutMapping("/non-manual/data-source/{id}")
public ResponseResult switchExternalDataSource(@PathVariable String id){
return ProjectService.switchExternalDataSource(id);
}
}
......@@ -111,6 +111,11 @@ public class Project extends AbstractProject {
private int dataBalance;
/**
* 仅非人工项目,数据源:true:商业数据(星光)|false:内部数据(底层数据)
*/
private Boolean externalDataSource;
/**
* 项目主品牌配置信息转换
*
* @return 项目对象
......
......@@ -400,12 +400,26 @@ public interface MarkDataService {
ResponseResult addNonManualProjectPlan(NonManualProjectPlanDTO dto);
/**
* 添加非人工项目方案订阅任务
* @param dto
* @return
*/
String addIStarShineSubjectTask(NonManualProjectPlanDTO dto);
/**
* 删除非人工项目方案
* @param id
*/
ResponseResult deleteNonManualProjectPlan(String id);
/**
* 删除非人工项目方案的数据订阅任务
* @param id
* @return
*/
ResponseResult deleteIStarShineSubjectTask(String id);
/**
* 获取非人工项目方案详情
* @param id
*/
......
......@@ -210,4 +210,10 @@ public interface ProjectService {
* @return
*/
ResponseResult getUserProjectPageData(String userId, String keyword, int page, int pageSize);
/**
* 切换非人工项目数据源
* @param projectId
*/
ResponseResult switchExternalDataSource(String projectId);
}
......@@ -1900,13 +1900,21 @@ public class MarkDataServiceImpl implements MarkDataService {
@Override
public ResponseResult deleteNonManualProjectPlan(String id) {
ResponseResult responseResult = deleteIStarShineSubjectTask(id);
if (responseResult.isStatus()){
nonManualProjectPlanDao.deleteOneById(id);
}
return responseResult;
}
@Override
public ResponseResult deleteIStarShineSubjectTask(String id) {
String iStarShineSubjectTaskId = nonManualProjectPlanDao.findOneById(id).getIStarShineSubjectTaskId();
JSONObject body = restTemplate.getForEntity(deleteIStarShineSubjectTaskUrl, JSONObject.class, iStarShineSubjectTaskId, UserThreadLocal.getNickname()).getBody();
if (Objects.isNull(body) || body.isEmpty() || !body.getBoolean("status")){
log.info(id + "-删除快搜订阅任务失败,接口返回信息-" + body);
log.error(id + "-删除快搜订阅任务失败,接口返回信息-" + body);
return ResponseResult.failure("删除失败");
}
nonManualProjectPlanDao.deleteOneById(id);
return ResponseResult.success();
}
......@@ -1935,7 +1943,8 @@ public class MarkDataServiceImpl implements MarkDataService {
* @param dto
* @return
*/
private String addIStarShineSubjectTask(NonManualProjectPlanDTO dto){
@Override
public String addIStarShineSubjectTask(NonManualProjectPlanDTO dto){
JSONObject param = new JSONObject();
param.put("creatUser", UserThreadLocal.getNickname());
param.put("groupId", UserThreadLocal.getProjectId());
......@@ -1954,12 +1963,12 @@ public class MarkDataServiceImpl implements MarkDataService {
HttpEntity<String> request = new HttpEntity<>(param.toJSONString(), httpHeaders);
JSONObject body = restTemplate.postForEntity(addIStarShineSubjectTaskUrl, request, JSONObject.class).getBody();
if (Objects.isNull(body) || body.isEmpty() || !body.getBoolean("status")){
log.info(JSONObject.toJSONString(dto) + "-添加快搜订阅任务失败" + body);
log.error(JSONObject.toJSONString(dto) + "-添加快搜订阅任务失败" + body);
return null;
}
JSONObject data = body.getJSONObject("data");
if (Objects.isNull(data) || data.isEmpty()){
log.info(JSONObject.toJSONString(dto) + "-添加快搜订阅任务失败" + body);
log.error(JSONObject.toJSONString(dto) + "-添加快搜订阅任务失败" + body);
return null;
}
return data.getString("id");
......
......@@ -12,8 +12,10 @@ import com.zhiwei.brandkbs2.exception.ExceptionCast;
import com.zhiwei.brandkbs2.model.CommonCodeEnum;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.*;
import com.zhiwei.brandkbs2.pojo.dto.NonManualProjectPlanDTO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import com.zhiwei.brandkbs2.pojo.vo.ProjectVO;
import com.zhiwei.brandkbs2.service.MarkDataService;
import com.zhiwei.brandkbs2.service.ProjectService;
import com.zhiwei.brandkbs2.service.UserService;
import com.zhiwei.brandkbs2.util.MongoUtil;
......@@ -64,6 +66,9 @@ public class ProjectServiceImpl implements ProjectService {
@Resource(name = "userServiceImpl")
private UserService userService;
@Resource(name = "markDataServiceImpl")
private MarkDataService markDataService;
@Resource(name = "eventMiddlewareDao")
private EventMiddlewareDao eventMiddlewareDao;
......@@ -499,6 +504,8 @@ public class ProjectServiceImpl implements ProjectService {
return ResponseResult.failure(ProjectCodeEnum.PROJECT_EXISTSNAME_ERROR.message());
}
Project project = ProjectVO.createNonManualProject(projectVO);
// 添加时默认商业数据源
project.setExternalDataSource(true);
projectDao.insertOneWithoutId(project);
// 绑定事件标签,默认已绑定情感标签
eventMiddlewareDao.bindBrandkbs(project.getBrandLinkedGroup(), project.getBrandLinkedGroupId(), Collections.emptyList(),
......@@ -547,6 +554,7 @@ public class ProjectServiceImpl implements ProjectService {
result.put("isStart", project.isStart());
result.put("isShow", project.isShow());
result.put("dataBalance", project.getDataBalance());
result.put("externalDataSource", project.getExternalDataSource());
return result;
}).collect(Collectors.toList());
MongoUtil.PageHelper<JSONObject> pageHelper = mongoUtil.pageHelper(count, resList);
......@@ -635,6 +643,54 @@ public class ProjectServiceImpl implements ProjectService {
return ResponseResult.success(PageVO.createPageVo(total, page, pageSize, resList));
}
@Override
public ResponseResult switchExternalDataSource(String projectId) {
Project project = projectDao.findOneById(projectId);
if (Objects.isNull(project)) {
return ResponseResult.failure("项目不存在");
}
List<NonManualProjectPlan> planList = nonManualProjectPlanDao.findList(new Query(Criteria.where("projectId").is(project.getId())));
// 若商业数据切换为内部数据,此时同时删除数据订阅任务
if (project.getExternalDataSource()){
for (NonManualProjectPlan plan : planList) {
markDataService.deleteIStarShineSubjectTask(plan.getId());
}
}
// 若内部数据切换为商业数据,此时进行数据预估同时创建商业数据订阅任务
if (!project.getExternalDataSource()){
// 数据预估
for (NonManualProjectPlan plan : planList) {
Integer dataCount = markDataService.getPlanDataPrediction(plan.getKeyword(), plan.getFilterWord());
if (dataCount > 10000){
return ResponseResult.failure("方案:" + plan.getName() + ",预估数据量超过10000条/天,切换失败");
}
}
List<NonManualProjectPlan> successList = new ArrayList<>(planList.size());
// 添加商业数据订阅任务
for (NonManualProjectPlan plan : planList) {
String taskId = markDataService.addIStarShineSubjectTask(Tools.convertMap(plan, NonManualProjectPlanDTO.class));
if (Objects.isNull(taskId)){
for (NonManualProjectPlan successPlan : successList) {
markDataService.deleteIStarShineSubjectTask(successPlan.getId());
successPlan.setIStarShineSubjectTaskId(null);
successPlan.setUTime(System.currentTimeMillis());
nonManualProjectPlanDao.updateOne(successPlan);
}
return ResponseResult.failure("切换失败");
}
plan.setIStarShineSubjectTaskId(taskId);
plan.setUTime(System.currentTimeMillis());
nonManualProjectPlanDao.updateOne(plan);
successList.add(plan);
}
}
Update update = new Update();
update.set("uTime", System.currentTimeMillis());
update.set("externalDataSource", !project.getExternalDataSource());
projectDao.updateOneByIdWithField(projectId, update);
return ResponseResult.success();
}
/**
* 获取舆情对应项目的情感标签
* @param brandName
......
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