diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index 01e91beca0..0aae470684 100644 --- a/epmet-module/epmet-job/epmet-job-server/pom.xml +++ b/epmet-module/epmet-job/epmet-job-server/pom.xml @@ -79,6 +79,12 @@ feign-httpclient 10.3.0 + + com.epmet + resi-group-client + 2.0.0 + compile + diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/TopicAutoAuditService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/TopicAutoAuditService.java new file mode 100644 index 0000000000..0102b54370 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/TopicAutoAuditService.java @@ -0,0 +1,12 @@ +package com.epmet.service; + +import com.epmet.commons.tools.utils.Result; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/12/29 17:45 + */ +public interface TopicAutoAuditService { + Result autoAudit(); +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/TopicAutoAuditServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/TopicAutoAuditServiceImpl.java new file mode 100644 index 0000000000..00fb618f5b --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/TopicAutoAuditServiceImpl.java @@ -0,0 +1,22 @@ +package com.epmet.service.impl; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; +import com.epmet.service.TopicAutoAuditService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/12/29 17:46 + */ +public class TopicAutoAuditServiceImpl implements TopicAutoAuditService { + + @Autowired + private ResiGroupOpenFeignClient resiGroupOpenFeignClient; + + @Override + public Result autoAudit() { + return resiGroupOpenFeignClient.autoAudit(); + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/TopicAutoAuditTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/TopicAutoAuditTask.java new file mode 100644 index 0000000000..6bc7bb3c4b --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/TopicAutoAuditTask.java @@ -0,0 +1,31 @@ +package com.epmet.task; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.service.TopicAutoAuditService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/12/29 17:43 + */ +@Slf4j +@Component("topicAutoAuditTask") +public class TopicAutoAuditTask implements ITask { + + @Autowired + private TopicAutoAuditService topicAutoAuditService; + + @Override + public void run(String params) { + log.info("TopicAutoAuditTask定时任务正在执行,参数为:{}", params); + Result result = topicAutoAuditService.autoAudit(); + if (result.success()) { + log.info("TopicAutoAuditTask定时任务执行成功"); + } else { + log.error("TopicAutoAuditTask定时任务执行失败:" + result.getMsg()); + } + } +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java index ad9a19903f..d2ffdb794a 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java @@ -164,4 +164,14 @@ public interface ResiGroupOpenFeignClient { */ @PostMapping("resi/group/topicsharelinkvisitrecord/checkinviterelationship") Result checkInviteRelationship(@RequestBody SharableTopicAndInviteeFormDTO param); + + + /** + * 自动审核 + * @author zhaoqifeng + * @date 2020/12/30 10:11 + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("resi/group/topicdraft/autoAudit") + Result autoAudit(); } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java index 1b6f214fa0..38dfbcb199 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java @@ -110,4 +110,16 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien public Result checkInviteRelationship(SharableTopicAndInviteeFormDTO param) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectTopicBelongGroup", param); } + + /** + * 自动审核 + * + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2020/12/30 10:11 + */ + @Override + public Result autoAudit() { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "autoAudit"); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java index 89081680fd..1c99d983c3 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java @@ -180,4 +180,16 @@ public class TopicDraftController { formDTO.setUserId(tokenDto.getUserId()); return new Result>().ok(topicDraftService.myAuditingList(formDTO)); } + + /** + * 自动审核 + * @author zhaoqifeng + * @date 2020/12/30 10:11 + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("autoAudit") + public Result autoAudit() { + topicDraftService.autoAudit(); + return new Result(); + } } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java index 3b1608a18c..003b716a97 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java @@ -96,4 +96,14 @@ public interface TopicDraftScanTaskService extends BaseService + */ + List getScanTaskList(String draftId, String status); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java index 87b99bc51c..b6646cf19c 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java @@ -153,4 +153,13 @@ public interface TopicDraftService extends BaseService { * @Description 个人中心-我发表的话题-审核中列表 **/ List myAuditingList(MyAuditingListFormDTO formDTO); + + /** + * 自动审核 + * @author zhaoqifeng + * @date 2020/12/29 17:51 + * @param + * @return void + */ + void autoAudit(); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java index 9f4b2f42d9..9890bf5c79 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java @@ -26,6 +26,7 @@ import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.modules.topic.dao.TopicDraftScanTaskDao; import com.epmet.modules.topic.entity.TopicDraftScanTaskEntity; import com.epmet.modules.topic.service.TopicDraftScanTaskService; +import com.epmet.resi.group.constant.TopicConstant; import com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -107,4 +108,21 @@ public class TopicDraftScanTaskServiceImpl extends BaseServiceImpl + * @author zhaoqifeng + * @date 2020/12/29 17:57 + */ + @Override + public List getScanTaskList(String draftId, String status) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(draftId), "TOPIC_DRAFT_ID", draftId); + wrapper.eq(StringUtils.isNotBlank(status),"STATUS", status); + List entityList = baseDao.selectList(wrapper); + return ConvertUtils.sourceToTarget(entityList, TopicDraftScanTaskDTO.class); + + } + } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java index 084010e040..da10cf9b67 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java @@ -239,6 +239,110 @@ public class TopicDraftServiceImpl extends BaseServiceImpl taskList = topicDraftScanTaskService.getScanTaskList(null, TopicConstant.AUDITING); + if (CollectionUtils.isNotEmpty(taskList)) { + List taskIds = taskList.stream().map(TopicDraftScanTaskDTO :: getTaskId).collect(Collectors.toList()); + List draftIds = taskList.stream().map(TopicDraftScanTaskDTO :: getTopicDraftId).collect(Collectors.toList()); + Result> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds); + if (voiceResults.success()) { + List list = voiceResults.getData(); + for (VoiceResultDTO item : list) { + TopicDraftScanTaskDTO taskDTO = topicDraftScanTaskService.getScanByTask(item.getTaskId()); + if (TopicConstant.REVIEW.equals(item.getSuggestion())) { + //结果不确定 + TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); + dto.setId(taskDTO.getTopicDraftAttachmentId()); + dto.setStatus(TopicConstant.REVIEW); + dto.setReason(item.getLabelDesc()); + topicDraftAttachmentService.update(dto); + + taskDTO.setStatus(TopicConstant.REVIEW); + topicDraftScanTaskService.update(taskDTO); + + } else if (TopicConstant.BLOCK.equals(item.getSuggestion())) { + //结果违规 + TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); + dto.setId(taskDTO.getTopicDraftAttachmentId()); + dto.setStatus(TopicConstant.BLOCK); + dto.setReason(item.getLabelDesc()); + topicDraftAttachmentService.update(dto); + + taskDTO.setStatus(TopicConstant.BLOCK); + topicDraftScanTaskService.update(taskDTO); + } else { + //审核通过 + TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); + dto.setId(taskDTO.getTopicDraftAttachmentId()); + dto.setStatus(TopicConstant.AUTO_PASSED); + dto.setReason(item.getLabelDesc()); + topicDraftAttachmentService.update(dto); + + taskDTO.setStatus(TopicConstant.AUTO_PASSED); + topicDraftScanTaskService.update(taskDTO); + } + } + + //判断草稿是否审核完成 + draftIds.forEach(draftId -> { + List tasks = topicDraftScanTaskService.getScanTaskList(draftId, null); + String status = TopicConstant.AUTO_PASSED; + for (TopicDraftScanTaskDTO task : tasks) { + if (TopicConstant.AUDITING.equals(task.getStatus())) { + status = TopicConstant.AUDITING; + break; + } else if(TopicConstant.BLOCK.equals(task.getStatus())) { + status = TopicConstant.BLOCK; + } else if(TopicConstant.REVIEW.equals(task.getStatus())) { + if (!TopicConstant.BLOCK.equals(status)) { + status = TopicConstant.REVIEW; + } + } else { + if (!TopicConstant.BLOCK.equals(status) && !TopicConstant.REVIEW.equals(status)) { + status = TopicConstant.AUTO_PASSED; + } + } + } + + if (TopicConstant.BLOCK.equals(status)) { + //草稿状态更新为block + TopicDraftEntity draftEntity = new TopicDraftEntity(); + draftEntity.setId(draftId); + draftEntity.setDraftStatus(TopicConstant.REVIEW); + draftEntity.setDraftReason("需要人工审核"); + baseDao.updateById(draftEntity); + + } else if(TopicConstant.REVIEW.equals(status)) { + //草稿状态更新为review + TopicDraftEntity draftEntity = new TopicDraftEntity(); + draftEntity.setId(draftId); + draftEntity.setDraftStatus(TopicConstant.BLOCK); + draftEntity.setDraftReason("语音存在违规内容"); + baseDao.updateById(draftEntity); + + } else if(TopicConstant.AUTO_PASSED.equals(status)) { + //草稿状态更新为auto_passed + AuditDraftTopicFormDTO formDTO = new AuditDraftTopicFormDTO(); + formDTO.setTopicDraftId(draftId); + formDTO.setAuditType(TopicConstant.AUTO_PASSED); + audit(null, formDTO); + } + }); + + + } + } + } + /** * 发布话题 * @@ -429,77 +533,67 @@ public class TopicDraftServiceImpl extends BaseServiceImpl { - while (true) { - Result> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds); - if (voiceResults.success()) { - boolean isAllPass = true; - List list = voiceResults.getData(); - for (VoiceResultDTO item : list) { - TopicDraftScanTaskDTO taskDTO = topicDraftScanTaskService.getScanByTask(item.getTaskId()); - if (TopicConstant.REVIEW.equals(item.getSuggestion())) { - //结果不确定 - TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); - dto.setId(taskDTO.getTopicDraftAttachmentId()); - dto.setStatus(TopicConstant.REVIEW); - dto.setReason(item.getLabelDesc()); - topicDraftAttachmentService.update(dto); - - taskDTO.setStatus(TopicConstant.REVIEW); - topicDraftScanTaskService.update(taskDTO); - - TopicDraftEntity draftEntity = new TopicDraftEntity(); - draftEntity.setId(topic.getId()); - draftEntity.setDraftStatus(TopicConstant.REVIEW); - draftEntity.setDraftReason("需要人工审核"); - baseDao.updateById(draftEntity); - - isAllPass = false; - } else if (TopicConstant.BLOCK.equals(item.getSuggestion())) { - //结果违规 - TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); - dto.setId(taskDTO.getTopicDraftAttachmentId()); - dto.setStatus(TopicConstant.BLOCK); - dto.setReason(item.getLabelDesc()); - topicDraftAttachmentService.update(dto); - - taskDTO.setStatus(TopicConstant.BLOCK); - topicDraftScanTaskService.update(taskDTO); - - TopicDraftEntity draftEntity = new TopicDraftEntity(); - draftEntity.setId(topic.getId()); - draftEntity.setDraftStatus(TopicConstant.BLOCK); - draftEntity.setDraftReason(item.getLabelDesc()); - baseDao.updateById(draftEntity); - - isAllPass = false; - } else { - //审核通过 - TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); - dto.setId(taskDTO.getTopicDraftAttachmentId()); - dto.setStatus(TopicConstant.AUTO_PASSED); - dto.setReason(item.getLabelDesc()); - topicDraftAttachmentService.update(dto); - - taskDTO.setStatus(TopicConstant.AUTO_PASSED); - topicDraftScanTaskService.update(taskDTO); - } - //审核通过,发布话题 - if(isAllPass) { - saveTopic(tokenDto, formDTO, topic.getId()); - } - } - break; - } - try { - Thread.sleep(600000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }); +// Result> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds); +// if (voiceResults.success()) { +// boolean isAllPass = true; +// List list = voiceResults.getData(); +// for (VoiceResultDTO item : list) { +// TopicDraftScanTaskDTO taskDTO = topicDraftScanTaskService.getScanByTask(item.getTaskId()); +// if (TopicConstant.REVIEW.equals(item.getSuggestion())) { +// //结果不确定 +// TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); +// dto.setId(taskDTO.getTopicDraftAttachmentId()); +// dto.setStatus(TopicConstant.REVIEW); +// dto.setReason(item.getLabelDesc()); +// topicDraftAttachmentService.update(dto); +// +// taskDTO.setStatus(TopicConstant.REVIEW); +// topicDraftScanTaskService.update(taskDTO); +// +// TopicDraftEntity draftEntity = new TopicDraftEntity(); +// draftEntity.setId(topic.getId()); +// draftEntity.setDraftStatus(TopicConstant.REVIEW); +// draftEntity.setDraftReason("需要人工审核"); +// baseDao.updateById(draftEntity); +// +// isAllPass = false; +// } else if (TopicConstant.BLOCK.equals(item.getSuggestion())) { +// //结果违规 +// TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); +// dto.setId(taskDTO.getTopicDraftAttachmentId()); +// dto.setStatus(TopicConstant.BLOCK); +// dto.setReason(item.getLabelDesc()); +// topicDraftAttachmentService.update(dto); +// +// taskDTO.setStatus(TopicConstant.BLOCK); +// topicDraftScanTaskService.update(taskDTO); +// +// TopicDraftEntity draftEntity = new TopicDraftEntity(); +// draftEntity.setId(topic.getId()); +// draftEntity.setDraftStatus(TopicConstant.BLOCK); +// draftEntity.setDraftReason(item.getLabelDesc()); +// baseDao.updateById(draftEntity); +// +// isAllPass = false; +// } else { +// //审核通过 +// TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); +// dto.setId(taskDTO.getTopicDraftAttachmentId()); +// dto.setStatus(TopicConstant.AUTO_PASSED); +// dto.setReason(item.getLabelDesc()); +// topicDraftAttachmentService.update(dto); +// +// taskDTO.setStatus(TopicConstant.AUTO_PASSED); +// topicDraftScanTaskService.update(taskDTO); +// } +// //审核通过,发布话题 +// if (isAllPass) { +// saveTopic(tokenDto, formDTO, topic.getId()); +// } +// } +// +// } } } else { @@ -611,6 +705,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl attachmentList = topicDraftAttachmentService.getFileList(formDTO.getTopicDraftId(), null); List topicAttachments = ConvertUtils.sourceToTarget(attachmentList, ResiTopicAttachmentEntity.class); + topicAttachments.forEach(item -> { + item.setTopicId(resiTopic.getId()); + }); topicAttachments.forEach(item -> { item.setId(null); }); resiTopicAttachmentDao.insertBatch(topicAttachments); //将音频状态改为approved - List voiceList = - attachmentList.stream().filter(item -> TopicConstant.VOICE.equals(item.getAttachmentType()) && TopicConstant.REVIEW.equals(item.getStatus())).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(voiceList)) { - voiceList.forEach(item -> item.setStatus(TopicConstant.APPROVED)); - topicDraftAttachmentService.updateBatchById(ConvertUtils.sourceToTarget(voiceList, TopicDraftAttachmentEntity.class)); + if (TopicConstant.APPROVED.equals(formDTO.getAuditType())) { + List voiceList = + attachmentList.stream().filter(item -> TopicConstant.VOICE.equals(item.getAttachmentType()) && TopicConstant.REVIEW.equals(item.getStatus())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(voiceList)) { + voiceList.forEach(item -> item.setStatus(TopicConstant.APPROVED)); + topicDraftAttachmentService.updateBatchById(ConvertUtils.sourceToTarget(voiceList, TopicDraftAttachmentEntity.class)); + } } //发送积分 @@ -672,7 +773,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl