Browse Source

Merge remote-tracking branch 'remotes/origin/dev_voice' into dev

dev_shibei_match
jianjun 5 years ago
parent
commit
b6e99fa43d
  1. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
  2. 6
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
  3. 23
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java
  4. 186
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java

@ -36,7 +36,6 @@ import java.util.Set;
* @author: jianjun liu * @author: jianjun liu
*/ */
@Slf4j @Slf4j
@Component
public class HttpClientManager { public class HttpClientManager {
private static int connectionTimeout = 3000;// 连接超时时间,毫秒 private static int connectionTimeout = 3000;// 连接超时时间,毫秒
private static int soTimeout = 10000;// 读取数据超时时间,毫秒 private static int soTimeout = 10000;// 读取数据超时时间,毫秒

6
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java

@ -8,7 +8,6 @@ import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult; import com.epmet.commons.tools.scan.result.SyncScanResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
/** /**
* 扫描内容工具类 * 扫描内容工具类
@ -18,7 +17,6 @@ import org.springframework.stereotype.Component;
* @date 2020-06-08 8:28 * @date 2020-06-08 8:28
**/ **/
@Slf4j @Slf4j
@Component
public class ScanContentUtils { public class ScanContentUtils {
/** /**
* desc:图片同步扫描 * desc:图片同步扫描
@ -26,7 +24,7 @@ public class ScanContentUtils {
* @return * @return
*/ */
public static SyncScanResult imgSyncScan(String url, ImgScanParamDTO param) { public static SyncScanResult imgSyncScan(String url, ImgScanParamDTO param) {
log.debug("imgSyncScan param:",JSON.toJSONString(param)); log.debug("imgSyncScan param:", JSON.toJSONString(param));
if (StringUtils.isBlank(url) || param == null) { if (StringUtils.isBlank(url) || param == null) {
throw new RenException("参数错误"); throw new RenException("参数错误");
} }
@ -47,7 +45,7 @@ public class ScanContentUtils {
* @return * @return
*/ */
public static SyncScanResult textSyncScan(String url, TextScanParamDTO param) { public static SyncScanResult textSyncScan(String url, TextScanParamDTO param) {
log.debug("textSyncScan param:",JSON.toJSONString(param)); log.debug("textSyncScan param:", JSON.toJSONString(param));
if (StringUtils.isBlank(url) || param == null) { if (StringUtils.isBlank(url) || param == null) {
throw new RenException("参数错误"); throw new RenException("参数错误");
} }

23
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java

@ -20,8 +20,6 @@ package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.result.SyncScanResult; import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
@ -32,6 +30,7 @@ import com.epmet.dto.result.*;
import com.epmet.service.ArticleOperateRecordService; import com.epmet.service.ArticleOperateRecordService;
import com.epmet.service.ArticleService; import com.epmet.service.ArticleService;
import com.epmet.service.DraftService; import com.epmet.service.DraftService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -48,6 +47,7 @@ import java.util.List;
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2020-06-02 * @since v1.0.0 2020-06-02
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("article") @RequestMapping("article")
public class ArticleController { public class ArticleController {
@ -217,24 +217,23 @@ public class ArticleController {
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH)
public Result<Boolean> publishArticle(@LoginUser TokenDto tokenDto, @RequestBody PublishArticleFormDTO formDTO) throws Exception { public Result<Boolean> publishArticle(@LoginUser TokenDto tokenDto, @RequestBody PublishArticleFormDTO formDTO) throws Exception {
Boolean isSuccess = articleService.publish(tokenDto, formDTO.getDraftId()); Boolean isSuccess = articleService.publish(tokenDto, formDTO.getDraftId());
if (isSuccess){ if (isSuccess) {
scanContent(tokenDto,formDTO.getDraftId()); scanContent(tokenDto, formDTO.getDraftId());
} }
return new Result<Boolean>().ok(isSuccess); return new Result<Boolean>().ok(isSuccess);
} }
@Async @Async
public void scanContent(TokenDto tokenDto,String draftId){ public void scanContent(TokenDto tokenDto,String draftId){
SyncScanResult syncScanResult = articleService.scanContent(tokenDto,draftId); SyncScanResult syncScanResult = articleService.scanContent(tokenDto, draftId);
if (syncScanResult == null){ if (syncScanResult == null) {
throw new RenException(EpmetErrorCode.ARTICLE_PUBLISH_ERROR.getCode(),EpmetErrorCode.ARTICLE_PUBLISH_ERROR.getMsg()); log.error("scanContent draftId:{} return result null", draftId);
} }
if (syncScanResult.isAllPass()){ if (syncScanResult.isAllPass()) {
articleService.scanAllPassPublishArticle(tokenDto,draftId); articleService.scanAllPassPublishArticle(tokenDto, draftId);
}else{ } else {
articleService.updateAuditStatusFailById(draftId,syncScanResult); articleService.updateAuditStatusFailById(draftId, syncScanResult);
} }
} }

186
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java

@ -847,16 +847,16 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
article.setId(null); article.setId(null);
article.setDraftId(draftId); article.setDraftId(draftId);
baseDao.insert(article); baseDao.insert(article);
int order = NumConstant.ONE;
if(null != draftContents && draftContents.size() > NumConstant.ZERO){ if(null != draftContents && draftContents.size() > NumConstant.ZERO){
draftContents.forEach(content -> { draftContents.forEach(content -> {
content.setOrderNum(order+NumConstant.ONE); content.setAuditStatus(ModuleConstant.AUDIT_STATUS_PASS);
content.setOrderNum(content.getOrderNum());
ArticleContentEntity contentToInsert = ConvertUtils.sourceToTarget(content,ArticleContentEntity.class); ArticleContentEntity contentToInsert = ConvertUtils.sourceToTarget(content,ArticleContentEntity.class);
contentToInsert.setArticleId(article.getId()); contentToInsert.setArticleId(article.getId());
contentToInsert.setId(null); contentToInsert.setId(null);
articleContentDao.insert(contentToInsert); articleContentDao.insert(contentToInsert);
content.setAuditStatus(ModuleConstant.AUDIT_STATUS_PASS);
draftContentDao.updateById(content); draftContentDao.updateById(content);
}); });
} }
@ -868,12 +868,13 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
articlePublishRangeDao.insert(rangeToInsert); articlePublishRangeDao.insert(rangeToInsert);
}); });
if(null != draftCover){ if(null != draftCover){
draftCover.setAuditStatus(ModuleConstant.AUDIT_STATUS_PASS);
ArticleCoverEntity coverToInsert = ConvertUtils.sourceToTarget(draftCover,ArticleCoverEntity.class); ArticleCoverEntity coverToInsert = ConvertUtils.sourceToTarget(draftCover,ArticleCoverEntity.class);
coverToInsert.setArticleId(article.getId()); coverToInsert.setArticleId(article.getId());
coverToInsert.setId(null); coverToInsert.setId(null);
articleCoverDao.insert(coverToInsert); articleCoverDao.insert(coverToInsert);
draftCover.setAuditStatus(ModuleConstant.AUDIT_STATUS_PASS);
draftCoverDao.updateById(draftCover); draftCoverDao.updateById(draftCover);
} }
} }
@ -898,86 +899,96 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
@Override @Override
public SyncScanResult scanContent(TokenDto tokenDto, String draftId) { public SyncScanResult scanContent(TokenDto tokenDto, String draftId) {
DraftEntity draftEntity = draftDao.selectById(draftId); DraftEntity draftEntity = draftDao.selectById(draftId);
if (draftEntity == null){ boolean isOk = true;
log.error("scanContent draftId:{} is not exist",draftId); if (draftEntity == null) {
return null; log.error("scanContent draftId:{} is not exist", draftId);
isOk = false;
} }
if (!DraftConstant.AUDITING.equals(draftEntity.getStatusFlag())){ if (!DraftConstant.AUDITING.equals(draftEntity.getStatusFlag())) {
log.error("scanContent draftId:{} statusFlag:{} is not support 2 modify",draftId,draftEntity.getStatusFlag()); log.error("scanContent draftId:{} statusFlag:{} is not support 2 modify", draftId, draftEntity.getStatusFlag());
return null; isOk = false;
} }
if (!NumConstant.ZERO_STR.equals(draftEntity.getDelFlag())){ if (!NumConstant.ZERO_STR.equals(draftEntity.getDelFlag())) {
log.error("scanContent draftId:{} delFlag:{} is not support 2 modify",draftId,draftEntity.getDelFlag()); log.error("scanContent draftId:{} delFlag:{} is not support 2 modify", draftId, draftEntity.getDelFlag());
return null; isOk = false;
} }
TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); if (!isOk) {
ImgScanParamDTO imgScanParamDTO = new ImgScanParamDTO(); this.sendMsg(draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
DraftCoverDTO draftCoverDTO = draftCoverDao.selectCoverIdAndUrlByDraftId(draftId); this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL);
if (draftCoverDTO != null){ return null;
ImgTaskDTO taskDTO = new ImgTaskDTO();
taskDTO.setDataId(ModuleConstant.SCAN_COVER_PREFIX.concat(draftCoverDTO.getId()));
taskDTO.setUrl(draftCoverDTO.getImgUrl());
imgScanParamDTO.getTasks().add(taskDTO);
}
List<DraftContentEntity> contentDTOList = draftContentDao.selectScanContentByDraftId(draftId);
if(!CollectionUtils.isEmpty(contentDTOList)){
contentDTOList.forEach(content->{
String contentType = content.getContentType();
if (DraftConstant.TEXT.equals(contentType)){
//todo 内容叠加审核吧 id拼起来
TextTaskDTO textTaskDTO = new TextTaskDTO();
textTaskDTO.setDataId(content.getId());
textTaskDTO.setContent(content.getContent());
textScanParamDTO.getTasks().add(textTaskDTO);
}else if (DraftConstant.IMG.equals(contentType)){
ImgTaskDTO taskDTO = new ImgTaskDTO();
taskDTO.setDataId(content.getId());
taskDTO.setUrl(content.getContent());
imgScanParamDTO.getTasks().add(taskDTO);
}
});
} }
SyncScanResult imgSyncScanResult = null; SyncScanResult result = null;
SyncScanResult textSyncScanResult = null;
try { try {
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
ImgScanParamDTO imgScanParamDTO = new ImgScanParamDTO();
DraftCoverDTO draftCoverDTO = draftCoverDao.selectCoverIdAndUrlByDraftId(draftId);
if (draftCoverDTO != null) {
ImgTaskDTO taskDTO = new ImgTaskDTO();
taskDTO.setDataId(ModuleConstant.SCAN_COVER_PREFIX.concat(draftCoverDTO.getId()));
taskDTO.setUrl(draftCoverDTO.getImgUrl());
imgScanParamDTO.getTasks().add(taskDTO);
}
List<DraftContentEntity> contentDTOList = draftContentDao.selectScanContentByDraftId(draftId);
if (!CollectionUtils.isEmpty(contentDTOList)) {
contentDTOList.forEach(content -> {
String contentType = content.getContentType();
if (DraftConstant.TEXT.equals(contentType)) {
//todo 内容叠加审核吧 id拼起来
TextTaskDTO textTaskDTO = new TextTaskDTO();
textTaskDTO.setDataId(content.getId());
textTaskDTO.setContent(content.getContent());
textScanParamDTO.getTasks().add(textTaskDTO);
} else if (DraftConstant.IMG.equals(contentType)) {
ImgTaskDTO taskDTO = new ImgTaskDTO();
taskDTO.setDataId(content.getId());
taskDTO.setUrl(content.getContent());
imgScanParamDTO.getTasks().add(taskDTO);
}
});
}
SyncScanResult imgSyncScanResult = null;
SyncScanResult textSyncScanResult = null;
log.info("scanContent imgScanParamDTO:{}", JSON.toJSONString(imgScanParamDTO)); log.info("scanContent imgScanParamDTO:{}", JSON.toJSONString(imgScanParamDTO));
log.info("scanContent textScanParamDTO:{}", JSON.toJSONString(textScanParamDTO)); log.info("scanContent textScanParamDTO:{}", JSON.toJSONString(textScanParamDTO));
imgSyncScanResult = ScanContentUtils.imgSyncScan(scanApiHost.concat(imgSyncScanMethod),imgScanParamDTO); imgSyncScanResult = ScanContentUtils.imgSyncScan(scanApiHost.concat(imgSyncScanMethod), imgScanParamDTO);
textSyncScanResult = ScanContentUtils.textSyncScan(scanApiHost.concat(textSyncScanMethod),textScanParamDTO); textSyncScanResult = ScanContentUtils.textSyncScan(scanApiHost.concat(textSyncScanMethod), textScanParamDTO);
result = new SyncScanResult();
if (imgSyncScanResult.isAllPass()) {
result.setAllPass(imgSyncScanResult.isAllPass());
result.getSuccessDataIds().addAll(imgSyncScanResult.getSuccessDataIds());
result.getFailDataIds().addAll(imgSyncScanResult.getFailDataIds());
}
if (textSyncScanResult.isAllPass()) {
result.setAllPass(result.isAllPass() ? textSyncScanResult.isAllPass() : false);
result.getSuccessDataIds().addAll(textSyncScanResult.getSuccessDataIds());
result.getFailDataIds().addAll(textSyncScanResult.getFailDataIds());
}
} catch (Exception e) { } catch (Exception e) {
log.error("scanContent exception",e); log.error("scanContent exception", e);
this.sendMsg(draftEntity.getTitle(),String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle())); this.sendMsg(draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
this.updateDraftPublishStatus(draftId,DraftConstant.AUDITFAIL); this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL);
}
SyncScanResult result = new SyncScanResult();
if (imgSyncScanResult.isAllPass()){
result.setAllPass(imgSyncScanResult.isAllPass());
result.getSuccessDataIds().addAll(imgSyncScanResult.getSuccessDataIds());
result.getFailDataIds().addAll(imgSyncScanResult.getFailDataIds());
} }
if (textSyncScanResult.isAllPass()){
result.setAllPass(result.isAllPass()?textSyncScanResult.isAllPass():false);
result.getSuccessDataIds().addAll(textSyncScanResult.getSuccessDataIds());
result.getFailDataIds().addAll(textSyncScanResult.getFailDataIds());
}
return result; return result;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void scanAllPassPublishArticle(TokenDto tokenDto, String draftId){ public void scanAllPassPublishArticle(TokenDto tokenDto, String draftId){
DraftEntity draft = draftDao.selectById(draftId); DraftEntity draft = draftDao.selectById(draftId);
if (draft == null){ if (draft == null) {
throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(),EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg()); log.error("scanAllPassPublishArticle draftId:{} is not exist in db", draftId);
throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg());
} }
try { try {
//审核通过 //审核通过
ArticleEntity articleEntity = this.publishDraftToArticle(draft); this.publishDraftToArticle(draft);
UpdateCustomerTagCacheDTO updateCustomerTagCacheDTO = this.updateCustomerTag(tokenDto, draftId); UpdateCustomerTagCacheDTO updateCustomerTagCacheDTO = this.updateCustomerTag(tokenDto, draftId);
List<UpdateGridTagCacheDTO> updateGridTagCacheDTOS = this.updateGridTag(tokenDto, draftId, updateCustomerTagCacheDTO); List<UpdateGridTagCacheDTO> updateGridTagCacheDTOS = this.updateGridTag(tokenDto, draftId, updateCustomerTagCacheDTO);
this.addArticleTags(updateCustomerTagCacheDTO,draftId,tokenDto); this.addArticleTags(updateCustomerTagCacheDTO, draftId, tokenDto);
//更新redis //更新redis
try { try {
@ -990,32 +1001,42 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
} catch (Exception e) { } catch (Exception e) {
log.error("scanAllPassPublishArticle update db exception", e); log.error("scanAllPassPublishArticle update db exception", e);
this.sendMsg(draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle())); this.sendMsg(draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
this.updateDraftPublishStatus(draftId,DraftConstant.AUDITFAIL); this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
} }
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateAuditStatusFailById(String draftId,SyncScanResult syncScanResult) { public void updateAuditStatusFailById(String draftId,SyncScanResult syncScanResult) {
List<String> failDataIds = syncScanResult.getFailDataIds(); DraftEntity draft = draftDao.selectById(draftId);
failDataIds.forEach(id->{ if (draft == null) {
if (id.indexOf(ModuleConstant.SCAN_COVER_PREFIX)>=0){ log.error("updateAuditStatusFailById draftId:{} is not exist in db", draftId);
draftCoverDao.updateAuditStatusById(id,ModuleConstant.AUDIT_STATUS_FAIL); throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg());
}else{ }
draftContentDao.updateAuditStatusById(id,ModuleConstant.AUDIT_STATUS_FAIL); try {
} List<String> failDataIds = syncScanResult.getFailDataIds();
}); failDataIds.forEach(id -> {
List<String> successDataIds = syncScanResult.getSuccessDataIds(); if (id.indexOf(ModuleConstant.SCAN_COVER_PREFIX) >= NumConstant.ZERO) {
successDataIds.forEach(id->{ draftCoverDao.updateAuditStatusById(id, ModuleConstant.AUDIT_STATUS_FAIL);
if (id.indexOf(ModuleConstant.SCAN_COVER_PREFIX)>=0){ } else {
draftCoverDao.updateAuditStatusById(id,ModuleConstant.AUDIT_STATUS_PASS); draftContentDao.updateAuditStatusById(id, ModuleConstant.AUDIT_STATUS_FAIL);
}else{ }
draftContentDao.updateAuditStatusById(id,ModuleConstant.AUDIT_STATUS_PASS); });
} List<String> successDataIds = syncScanResult.getSuccessDataIds();
}); successDataIds.forEach(id -> {
if (id.indexOf(ModuleConstant.SCAN_COVER_PREFIX) >= 0) {
draftCoverDao.updateAuditStatusById(id, ModuleConstant.AUDIT_STATUS_PASS);
} else {
draftContentDao.updateAuditStatusById(id, ModuleConstant.AUDIT_STATUS_PASS);
}
});
} catch (Exception e) {
log.error("scanAllPassPublishArticle update db exception", e);
this.sendMsg(draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
} }
@Override @Override
@ -1158,7 +1179,6 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
* @param formDto * @param formDto
* @author zxc * @author zxc
*/ */
@Transactional(rollbackFor = Exception.class)
public void addArticleTags(UpdateCustomerTagCacheDTO formDto,String draftId,TokenDto tokenDto){ public void addArticleTags(UpdateCustomerTagCacheDTO formDto,String draftId,TokenDto tokenDto){
List<AddArticleTagsFormDTO> addArticleTags = new ArrayList<>(); List<AddArticleTagsFormDTO> addArticleTags = new ArrayList<>();
List<UpdateTagUseCountsResultDTO> tagsInfo = formDto.getTagsInfo(); List<UpdateTagUseCountsResultDTO> tagsInfo = formDto.getTagsInfo();

Loading…
Cancel
Save