|
|
@ -50,7 +50,6 @@ import com.epmet.entity.*; |
|
|
|
import com.epmet.feign.EpmetMessageOpenFeignClient; |
|
|
|
import com.epmet.feign.EpmetUserOpenFeignClient; |
|
|
|
import com.epmet.feign.GovOrgOpenFeignClient; |
|
|
|
import com.epmet.redis.ArticleRedis; |
|
|
|
import com.epmet.redis.TagRedis; |
|
|
|
import com.epmet.service.*; |
|
|
|
import com.epmet.utils.ModuleConstant; |
|
|
@ -80,8 +79,6 @@ import java.util.stream.Collectors; |
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntity> implements ArticleService { |
|
|
|
@Autowired |
|
|
|
private ArticleRedis articleRedis; |
|
|
|
@Autowired |
|
|
|
private GovOrgOpenFeignClient govOrgOpenFeignClient; |
|
|
|
@Autowired |
|
|
@ -134,8 +131,8 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
private static final String GRID = "grid"; |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ArticleVisitRecordService articleVisitRecordService; |
|
|
|
@Autowired |
|
|
|
private ArticleVisitRecordService articleVisitRecordService; |
|
|
|
|
|
|
|
/** |
|
|
|
* @param tokenDTO |
|
|
@ -146,26 +143,26 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
@Override |
|
|
|
public ArticleGridResultDTO agencyGridList(TokenDto tokenDTO) { |
|
|
|
Result<ArticleGridResultDTO> result = govOrgOpenFeignClient.getAgencyGridList(tokenDTO.getUserId()); |
|
|
|
if(!result.success()){ |
|
|
|
if (!result.success()) { |
|
|
|
throw new RenException(result.getInternalMsg()); |
|
|
|
} |
|
|
|
return result.getData(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param tokenDTO |
|
|
|
* @return |
|
|
|
* @Author sun |
|
|
|
* @Description 党建声音-政府端-可选发布单位 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public PublishAgencyListResultDTO publishAgencyList(TokenDto tokenDTO) { |
|
|
|
Result<PublishAgencyListResultDTO> result = govOrgOpenFeignClient.getPublishAgencyList(tokenDTO.getUserId()); |
|
|
|
if(!result.success()){ |
|
|
|
/** |
|
|
|
* @param tokenDTO |
|
|
|
* @return |
|
|
|
* @Author sun |
|
|
|
* @Description 党建声音-政府端-可选发布单位 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public PublishAgencyListResultDTO publishAgencyList(TokenDto tokenDTO) { |
|
|
|
Result<PublishAgencyListResultDTO> result = govOrgOpenFeignClient.getPublishAgencyList(tokenDTO.getUserId()); |
|
|
|
if (!result.success()) { |
|
|
|
throw new RenException(result.getInternalMsg()); |
|
|
|
} |
|
|
|
return result.getData(); |
|
|
|
} |
|
|
|
return result.getData(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@ -173,12 +170,6 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
log.debug("saveOrUpdateContent param:{}", JSON.toJSONString(fromDTO)); |
|
|
|
if (required) { |
|
|
|
ValidatorUtils.validateEntity(fromDTO); |
|
|
|
if (StringUtils.isBlank(fromDTO.getTitle())){ |
|
|
|
throw new RenException(ModuleConstant.ARTICLE_TITLE_IS_NULL); |
|
|
|
} |
|
|
|
if (CollectionUtils.isEmpty(fromDTO.getContentList())){ |
|
|
|
throw new RenException(ModuleConstant.ARTICLE_CONTENT_IS_NULL); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
DraftEntity draftEntity = null; |
|
|
@ -196,7 +187,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
Result<LoginUserDetailsResultDTO> loginUserDetails = epmetUserOpenFeignClient.getLoginUserDetails(detailsFormDTO); |
|
|
|
if (loginUserDetails == null || loginUserDetails.getData() == null) { |
|
|
|
log.warn("saveOrUpdateContent getloginUserDetails return null"); |
|
|
|
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); |
|
|
|
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), ModuleConstant.GET_USER_DETAIL_ERROR); |
|
|
|
} |
|
|
|
draftEntity = new DraftEntity(); |
|
|
|
draftEntity.setTitle(fromDTO.getTitle()); |
|
|
@ -226,10 +217,10 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
|
|
|
|
private void buildPreviewContent(DraftContentFromDTO fromDTO, DraftEntity draftEntity) { |
|
|
|
if (CollectionUtils.isEmpty(fromDTO.getContentList())){ |
|
|
|
draftEntity.setPreviewContent(""); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (CollectionUtils.isEmpty(fromDTO.getContentList())) { |
|
|
|
draftEntity.setPreviewContent(""); |
|
|
|
return; |
|
|
|
} |
|
|
|
String content = ""; |
|
|
|
for (int i = 0; i < fromDTO.getContentList().size(); i++) { |
|
|
|
if (DraftConstant.TEXT.equals(fromDTO.getContentList().get(i).getContentType())) { |
|
|
@ -248,22 +239,22 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
GovArticleDetailResultDTO articleDetail = baseDao.queryGovArticleDetail(articleId); |
|
|
|
if (null != articleDetail) { |
|
|
|
List<GovArticleContentDTO> articleContentList = baseDao.queryGovArticleContent(articleId); |
|
|
|
if(null!=articleContentList&&articleContentList.size()>0){ |
|
|
|
if (null != articleContentList && articleContentList.size() > 0) { |
|
|
|
articleDetail.setArticleContentList(articleContentList); |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
articleDetail.setArticleContentList(new ArrayList<>()); |
|
|
|
} |
|
|
|
if (StringUtils.isNoneBlank(articleDetail.getTags())) { |
|
|
|
String[] tagNames = articleDetail.getTags().split("\\|"); |
|
|
|
articleDetail.setTagNameList(tagNames); |
|
|
|
}else{ |
|
|
|
if (StringUtils.isNoneBlank(articleDetail.getTags())) { |
|
|
|
String[] tagNames = articleDetail.getTags().split("\\|"); |
|
|
|
articleDetail.setTagNameList(tagNames); |
|
|
|
} else { |
|
|
|
articleDetail.setTagNameList(new String[0]); |
|
|
|
} |
|
|
|
ArticleEntity articleEntity=this.baseDao.selectById(articleId); |
|
|
|
ArticleEntity articleEntity = this.baseDao.selectById(articleId); |
|
|
|
log.info(String.format("当前文章id%s,发布人id%s,当前用户id%s", articleId, articleEntity.getCreatedBy(), loginUserUtil.getLoginUserId())); |
|
|
|
if(articleEntity.getCreatedBy().equals(loginUserUtil.getLoginUserId())){ |
|
|
|
if (articleEntity.getCreatedBy().equals(loginUserUtil.getLoginUserId())) { |
|
|
|
articleDetail.setIsMePublished(true); |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
articleDetail.setIsMePublished(false); |
|
|
|
} |
|
|
|
} |
|
|
@ -272,7 +263,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
|
|
|
|
@Override |
|
|
|
public Boolean saveDraftAttr(TokenDto tokenDto, DraftAttrFromDTO fromDTO) { |
|
|
|
log.debug("saveDraftAttr param:{}",JSON.toJSONString(fromDTO)); |
|
|
|
log.debug("saveDraftAttr param:{}", JSON.toJSONString(fromDTO)); |
|
|
|
|
|
|
|
DraftEntity draftEntity = checkDraftStatus(fromDTO.getDraftId()); |
|
|
|
|
|
|
@ -287,28 +278,23 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
draftEntity.setIsTop(fromDTO.getIsTop()); |
|
|
|
|
|
|
|
//发布单位
|
|
|
|
if (StringUtils.isNotBlank(fromDTO.getPublisher())){ |
|
|
|
String publisherType = fromDTO.getPublisherType(); |
|
|
|
String publisherName = fromDTO.getPublisherName(); |
|
|
|
if (StringUtils.isBlank(publisherType) || StringUtils.isBlank(publisherName)) { |
|
|
|
log.warn("saveDraftAttr publisher info is illegal,publisher:{},publisherType:{},publisherName:{}",fromDTO.getPublisher(),publisherType,publisherName); |
|
|
|
throw new RenException("发布单位不能为空"); |
|
|
|
} |
|
|
|
} |
|
|
|
draftEntity.setPublisherName(fromDTO.getPublisherName()); |
|
|
|
draftEntity.setPublisherId(fromDTO.getPublisher()); |
|
|
|
draftEntity.setPublisherType(fromDTO.getPublisherType()); |
|
|
|
if(DraftConstant.GRID.equals(fromDTO.getPublisherType())) { |
|
|
|
|
|
|
|
//TODO ? 如果为机关 不设置?
|
|
|
|
if (DraftConstant.GRID.equals(fromDTO.getPublisherType())) { |
|
|
|
draftEntity.setGridId(fromDTO.getPublisher()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
draftEntity.setPublishDate(DateUtils.stringToDate(fromDTO.getPublishDate(),DateUtils.DATE_PATTERN)); |
|
|
|
if (StringUtils.isNotBlank(fromDTO.getPublishDate())) { |
|
|
|
draftEntity.setPublishDate(DateUtils.stringToDate(fromDTO.getPublishDate(), DateUtils.DATE_PATTERN)); |
|
|
|
} |
|
|
|
|
|
|
|
//封面
|
|
|
|
DraftCoverEntity coverEntity = buildCoverEntity(tokenDto, fromDTO); |
|
|
|
//发布范围
|
|
|
|
List<DraftPublishRangeEntity> publishRangeEntityList = buildDraftPublishRange(draftEntity,tokenDto, fromDTO); |
|
|
|
List<DraftPublishRangeEntity> publishRangeEntityList = buildDraftPublishRange(draftEntity, tokenDto, fromDTO); |
|
|
|
|
|
|
|
|
|
|
|
executeSaveDraftAttr(draftEntity, coverEntity, publishRangeEntityList); |
|
|
@ -318,50 +304,49 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
private DraftEntity checkDraftStatus(String draftId) { |
|
|
|
DraftEntity draftEntity = draftDao.selectById(draftId); |
|
|
|
if (draftEntity == null) { |
|
|
|
log.warn("saveDraftAttr draftId:{} is not exist in db",draftId); |
|
|
|
throw new RenException("参数错误"); |
|
|
|
log.warn("saveDraftAttr draftId:{} is not exist in db", draftId); |
|
|
|
throw new RenException(ModuleConstant.DRAFT_ID_IS_NOT_EXIST); |
|
|
|
} |
|
|
|
if (NumConstant.ONE_STR.equals(draftEntity.getDelFlag())) { |
|
|
|
log.warn("saveDraftAttr draftId:{} have deleted",draftId); |
|
|
|
throw new RenException("草稿已删除"); |
|
|
|
log.warn("saveDraftAttr draftId:{} have deleted", draftId); |
|
|
|
throw new RenException(ModuleConstant.DRAFT_STATUS_IS_DEL); |
|
|
|
} |
|
|
|
//只有为发布的才能保存修改
|
|
|
|
//只有未发布的和审核失败的才能修改
|
|
|
|
if (DraftConstant.AUDITING.equals(draftEntity.getStatusFlag()) || DraftConstant.PUBLISHED.equals(draftEntity.getStatusFlag())) { |
|
|
|
log.warn("saveDraftAttr draftId:{} publishStatus have published",draftId); |
|
|
|
throw new RenException("草稿发布状态错误"); |
|
|
|
log.warn("saveDraftAttr draftId:{} publishStatus have published", draftId); |
|
|
|
throw new RenException(ModuleConstant.DRAFT_STATUS_IS_NOT_ALLOW_MODIFY); |
|
|
|
} |
|
|
|
return draftEntity; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Boolean previewSaveDraftAttr(TokenDto tokenDto, DraftAttrFromDTO fromDTO) { |
|
|
|
log.debug("previewSaveDraftAttr param:{}",JSON.toJSONString(fromDTO)); |
|
|
|
//校验参数
|
|
|
|
ValidatorUtils.validateEntity(fromDTO); |
|
|
|
if (DraftConstant.TOP.equals(fromDTO.getIsTop()) && StringUtils.isBlank(fromDTO.getCoverImg())) { |
|
|
|
log.warn("saveOrUpdateAttr isTop=1 but coverImg is blank"); |
|
|
|
throw new RenException("文章封面不能为空"); |
|
|
|
throw new RenException(ModuleConstant.DRAFT_CONTENT_IS_NULL); |
|
|
|
} |
|
|
|
if (CollectionUtils.isEmpty(fromDTO.getGridIdList())) { |
|
|
|
log.warn("saveOrUpdateAttr gridIdList is empty"); |
|
|
|
throw new RenException("发布范围不能为空"); |
|
|
|
if (StringUtils.isBlank(fromDTO.getPublisherName()) || StringUtils.isBlank(fromDTO.getPublisherType())) { |
|
|
|
throw new RenException(ModuleConstant.DRAFT_PUBLISHER_IS_NULL); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isBlank(fromDTO.getPublisher())) { |
|
|
|
log.warn("saveOrUpdateAttr publisher is blank"); |
|
|
|
throw new RenException("发布单位不能为空"); |
|
|
|
if (fromDTO.getIsTop() == null || fromDTO.getIsTop() > 1 || fromDTO.getIsTop() < 0) { |
|
|
|
throw new RenException(ModuleConstant.DRAFT_IS_TOP_ERROR); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isBlank(fromDTO.getPublishDate())) { |
|
|
|
log.warn("saveOrUpdateAttr publishDate is blank"); |
|
|
|
throw new RenException("发布时间不能为空"); |
|
|
|
if (!DraftConstant.AGENCY.equals(fromDTO.getPublisherType()) && !DraftConstant.DEPARTMENT.equals(fromDTO.getPublisherType()) |
|
|
|
&& !DraftConstant.GRID.equals(fromDTO.getPublisherType())) { |
|
|
|
throw new RenException(ModuleConstant.DRAFT_PUBLISHER_TYPE_ERROR); |
|
|
|
} |
|
|
|
return saveDraftAttr(tokenDto, fromDTO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Boolean publish(TokenDto tokenDto, String draftId) { |
|
|
|
if (StringUtils.isBlank(draftId)){ |
|
|
|
if (StringUtils.isBlank(draftId)) { |
|
|
|
log.warn("publish param error draftId is blank"); |
|
|
|
throw new RenException("草稿Id不能为空"); |
|
|
|
throw new RenException(ModuleConstant.DRAFT_ID_IS_NULL); |
|
|
|
} |
|
|
|
DraftEntity draftEntity = checkDraftStatus(draftId); |
|
|
|
draftEntity.setStatusFlag(DraftConstant.AUDITING); |
|
|
@ -371,41 +356,40 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void executeSaveDraftAttr(DraftEntity draftEntity, DraftCoverEntity coverEntity, List<DraftPublishRangeEntity> publishRangeEntityList) { |
|
|
|
Map<String,Object> draftIdMap = new HashMap<>(); |
|
|
|
//物理删除
|
|
|
|
draftCoverDao.deleteByDraftId(draftEntity.getId()); |
|
|
|
if (coverEntity != null){ |
|
|
|
if (coverEntity != null) { |
|
|
|
draftCoverDao.insert(coverEntity); |
|
|
|
} |
|
|
|
//物理删除
|
|
|
|
draftPublishRangeDao.deleteByDraftId(draftEntity.getId()); |
|
|
|
if (!CollectionUtils.isEmpty(publishRangeEntityList)){ |
|
|
|
publishRangeEntityList.forEach(publishRange->draftPublishRangeDao.insert(publishRange)); |
|
|
|
if (!CollectionUtils.isEmpty(publishRangeEntityList)) { |
|
|
|
publishRangeEntityList.forEach(publishRange -> draftPublishRangeDao.insert(publishRange)); |
|
|
|
} |
|
|
|
draftDao.updateById(draftEntity); |
|
|
|
} |
|
|
|
|
|
|
|
private List<DraftPublishRangeEntity> buildDraftPublishRange(DraftEntity draftEntity, TokenDto tokenDto, DraftAttrFromDTO fromDTO) { |
|
|
|
if (CollectionUtils.isEmpty(fromDTO.getGridIdList())){ |
|
|
|
return null; |
|
|
|
} |
|
|
|
if (CollectionUtils.isEmpty(fromDTO.getGridIdList())) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
List<DraftPublishRangeEntity> publishRangeEntityList = new ArrayList<>(); |
|
|
|
List<String> agencyGridNameList = new ArrayList<>(); |
|
|
|
|
|
|
|
ArticleGridResultDTO articleGridResultDTO = this.agencyGridList(tokenDto); |
|
|
|
if (articleGridResultDTO == null) { |
|
|
|
log.warn("saveDraftAttr userId:{} have not right access publishRange", tokenDto.getUserId()); |
|
|
|
throw new RenException("参数错误"); |
|
|
|
throw new RenException(ModuleConstant.GET_USER_CAN_SELECT_GRID_ERROR); |
|
|
|
} |
|
|
|
buildName(tokenDto,agencyGridNameList,publishRangeEntityList, fromDTO, articleGridResultDTO); |
|
|
|
buildAgencyGridNames(tokenDto,agencyGridNameList,publishRangeEntityList, fromDTO, articleGridResultDTO); |
|
|
|
draftEntity.setPublishRangeDesc(StringUtils.join(agencyGridNameList,"、")); |
|
|
|
buildName(tokenDto, agencyGridNameList, publishRangeEntityList, fromDTO, articleGridResultDTO); |
|
|
|
buildAgencyGridNames(tokenDto, agencyGridNameList, publishRangeEntityList, fromDTO, articleGridResultDTO); |
|
|
|
draftEntity.setPublishRangeDesc(StringUtils.join(agencyGridNameList, StrConstant.COMMA_ZH)); |
|
|
|
return publishRangeEntityList; |
|
|
|
} |
|
|
|
|
|
|
|
private DraftCoverEntity buildCoverEntity(TokenDto tokenDto, DraftAttrFromDTO fromDTO) { |
|
|
|
String coverImg = fromDTO.getCoverImg(); |
|
|
|
if (StringUtils.isBlank(coverImg)){ |
|
|
|
if (StringUtils.isBlank(coverImg)) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
DraftCoverEntity coverEntity = new DraftCoverEntity(); |
|
|
@ -420,7 +404,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
|
|
|
|
private void buildAgencyGridNames(TokenDto tokenDto, List<String> agencyGridNameList, List<DraftPublishRangeEntity> publishRangeEntityList, DraftAttrFromDTO fromDTO, ArticleGridResultDTO articleGridResultDTO) { |
|
|
|
articleGridResultDTO.getSubAgencyGridList().forEach(subAgencyGrid -> { |
|
|
|
buildName(tokenDto,agencyGridNameList, publishRangeEntityList,fromDTO, subAgencyGrid); |
|
|
|
buildName(tokenDto, agencyGridNameList, publishRangeEntityList, fromDTO, subAgencyGrid); |
|
|
|
}); |
|
|
|
if (!CollectionUtils.isEmpty(articleGridResultDTO.getSubAgencyGridList())) { |
|
|
|
articleGridResultDTO.getSubAgencyGridList().forEach(subAgencyGrid -> { |
|
|
@ -433,10 +417,10 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
private void buildName(TokenDto tokenDto, List<String> agencyGridNameList, List<DraftPublishRangeEntity> publishRangeEntityList, DraftAttrFromDTO fromDTO, ArticleGridResultDTO articleGridResultDTO) { |
|
|
|
List<String> gridIdList = fromDTO.getGridIdList(); |
|
|
|
List<AgencyGridListResultDTO> gridList = articleGridResultDTO.getGridList(); |
|
|
|
if (!CollectionUtils.isEmpty(gridList)&&!CollectionUtils.isEmpty(gridIdList)) { |
|
|
|
if (!CollectionUtils.isEmpty(gridList) && !CollectionUtils.isEmpty(gridIdList)) { |
|
|
|
gridList.forEach(grid -> { |
|
|
|
if (gridIdList.contains(grid.getGridId())) { |
|
|
|
String agencyGridName = articleGridResultDTO.getAgencyName().concat("-").concat(grid.getGridName()); |
|
|
|
String agencyGridName = articleGridResultDTO.getAgencyName().concat(StrConstant.HYPHEN).concat(grid.getGridName()); |
|
|
|
agencyGridNameList.add(agencyGridName); |
|
|
|
DraftPublishRangeEntity draftPublishRangeEntity = new DraftPublishRangeEntity(); |
|
|
|
draftPublishRangeEntity.setCustomerId(tokenDto.getCustomerId()); |
|
|
@ -471,19 +455,17 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
List<DraftContentEntity> newContentList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < contentList.size(); i++) { |
|
|
|
for (int i = NumConstant.ZERO; i < contentList.size(); i++) { |
|
|
|
DraftContentFromDTO.DraftContentDTO content = contentList.get(i); |
|
|
|
DraftContentEntity entity = ConvertUtils.sourceToTarget(content, DraftContentEntity.class); |
|
|
|
entity.setId(content.getDraftContentId()); |
|
|
|
entity.setCustomerId(tokenDto.getCustomerId()); |
|
|
|
entity.setDraftId(fromDTO.getDraftId()); |
|
|
|
entity.setOrderNum(i + 1); |
|
|
|
//默认通过
|
|
|
|
entity.setOrderNum(i + NumConstant.ONE); |
|
|
|
//默认为空
|
|
|
|
entity.setAuditStatus(""); |
|
|
|
newContentList.add(entity); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return newContentList; |
|
|
|
} |
|
|
|
|
|
|
@ -496,14 +478,14 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void offLineArticle(OffLineArticleFormDTO formDTO) { |
|
|
|
//0:查询文章表数据,判断当前操作人是否是当初发表文章的人(谁发布的文章水才能下线)
|
|
|
|
ArticleEntity articleEntity = baseDao.selectById(formDTO.getArticleId()); |
|
|
|
if (null == articleEntity) { |
|
|
|
throw new RenException(ArticleConstant.SELECT_ARTICLE_EXCEPTION); |
|
|
|
} |
|
|
|
if(!formDTO.getStaffId().equals(articleEntity.getCreatedBy())){ |
|
|
|
throw new RenException(ArticleConstant.SHIRO_EXCEPTION); |
|
|
|
} |
|
|
|
//0:查询文章表数据,判断当前操作人是否是当初发表文章的人(谁发布的文章水才能下线)
|
|
|
|
ArticleEntity articleEntity = baseDao.selectById(formDTO.getArticleId()); |
|
|
|
if (null == articleEntity) { |
|
|
|
throw new RenException(ArticleConstant.SELECT_ARTICLE_EXCEPTION); |
|
|
|
} |
|
|
|
if (!formDTO.getStaffId().equals(articleEntity.getCreatedBy())) { |
|
|
|
throw new RenException(ArticleConstant.SHIRO_EXCEPTION); |
|
|
|
} |
|
|
|
|
|
|
|
//1:根据文章Id查询全部(已发布、已下线)发布范围数据
|
|
|
|
ArticlePublishRangeEntity rangeEntity = new ArticlePublishRangeEntity(); |
|
|
@ -543,16 +525,16 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
ArticleEntity entity = new ArticleEntity(); |
|
|
|
entity.setId(formDTO.getArticleId()); |
|
|
|
StringBuffer publishRangeDesc = new StringBuffer(); |
|
|
|
if (null == publishedList || publishedList.size() < NumConstant.ONE) { |
|
|
|
if (CollectionUtils.isEmpty(publishedList)) { |
|
|
|
entity.setStatusFlag(ArticleConstant.OFFLINE); |
|
|
|
entity.setOffLineTime(date); |
|
|
|
rangeEntityList.forEach(range -> { |
|
|
|
publishRangeDesc.append(publishRangeDesc.length() > NumConstant.ZERO ? "、" : ""); |
|
|
|
publishRangeDesc.append(publishRangeDesc.length() > NumConstant.ZERO ? StrConstant.COMMA_ZH : ""); |
|
|
|
publishRangeDesc.append(range.getAgencyGridName()); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
publishedList.forEach(pub -> { |
|
|
|
publishRangeDesc.append(publishRangeDesc.length() > NumConstant.ZERO ? "、" : ""); |
|
|
|
publishRangeDesc.append(publishRangeDesc.length() > NumConstant.ZERO ? StrConstant.COMMA_ZH : ""); |
|
|
|
publishRangeDesc.append(pub.getAgencyGridName()); |
|
|
|
}); |
|
|
|
} |
|
|
@ -566,20 +548,25 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
ArticleOperateRecordEntity recordEntity = new ArticleOperateRecordEntity(); |
|
|
|
recordEntity.setCustomerId(articleEntity.getCustomerId()); |
|
|
|
recordEntity.setArticleId(formDTO.getArticleId()); |
|
|
|
recordEntity.setOpUser(articleEntity.getPublisherName() + "-" + staffDTO.getRealName()); |
|
|
|
//下线文案,分为全部下线和部分下线
|
|
|
|
String content = ""; |
|
|
|
if (null == publishedList || publishedList.size() < NumConstant.ONE) { |
|
|
|
content = String.format(ArticleConstant.OFF_LINE_ALL_ARTICLE_MSG, articleEntity.getPublisherName(), staffDTO.getRealName(), articleEntity.getTitle()); |
|
|
|
} else { |
|
|
|
StringBuffer offLineRangeDesc = new StringBuffer(); |
|
|
|
offLineList.forEach(off -> { |
|
|
|
offLineRangeDesc.append(offLineRangeDesc.length() > NumConstant.ZERO ? "、" : ""); |
|
|
|
offLineRangeDesc.append(off.getAgencyGridName()); |
|
|
|
}); |
|
|
|
content = String.format(ArticleConstant.OFF_LINE_ARTICLE_MSG, articleEntity.getPublisherName(), staffDTO.getRealName(), articleEntity.getTitle(), offLineRangeDesc); |
|
|
|
} |
|
|
|
recordEntity.setContent(content); |
|
|
|
recordEntity.setOpUser(articleEntity.getPublisherName() + StrConstant.HYPHEN + staffDTO.getRealName()); |
|
|
|
//下线文案,分为全部下线和部分下线
|
|
|
|
String content = ""; |
|
|
|
StringBuffer offLineGridId = new StringBuffer(); |
|
|
|
if (null == publishedList || publishedList.size() < NumConstant.ONE) { |
|
|
|
content = String.format(ArticleConstant.OFF_LINE_ALL_ARTICLE_MSG, articleEntity.getPublisherName(), staffDTO.getRealName(), articleEntity.getTitle()); |
|
|
|
} else { |
|
|
|
StringBuffer offLineRangeDesc = new StringBuffer(); |
|
|
|
offLineList.forEach(off -> { |
|
|
|
offLineRangeDesc.append(offLineRangeDesc.length() > NumConstant.ZERO ? StrConstant.COMMA_ZH : ""); |
|
|
|
offLineRangeDesc.append(off.getAgencyGridName()); |
|
|
|
}); |
|
|
|
content = String.format(ArticleConstant.OFF_LINE_ARTICLE_MSG, articleEntity.getPublisherName(), staffDTO.getRealName(), articleEntity.getTitle(), offLineRangeDesc); |
|
|
|
} |
|
|
|
offLineList.forEach(off -> { |
|
|
|
offLineGridId.append(StrConstant.COLON).append(off.getGridId()); |
|
|
|
}); |
|
|
|
recordEntity.setGridIds(offLineGridId.toString().replaceFirst(StrConstant.COLON,"")); |
|
|
|
recordEntity.setContent(content); |
|
|
|
recordEntity.setOpType(ArticleConstant.OFFLINE); |
|
|
|
recordEntity.setOpTime(date); |
|
|
|
articleOperateRecordService.insert(recordEntity); |
|
|
@ -595,7 +582,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageData publishedArticleList(TokenDto tokenDto, PublishedListFormDTO formDTO) { |
|
|
|
PageHelper.startPage(formDTO.getPageNo(),formDTO.getPageSize()); |
|
|
|
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); |
|
|
|
List<PublishedListResultDTO> resultList; |
|
|
|
List<CustomerStaffRoleResultDTO> roles = epmetUserOpenFeignClient.getStaffRoles(tokenDto.getUserId()).getData(); |
|
|
|
LoginUserDetailsFormDTO loginUserDetailsFormDTO = new LoginUserDetailsFormDTO(); |
|
|
@ -620,12 +607,16 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
if (AGENCY.equals(staffLevel)) { |
|
|
|
resultList = baseDao.selectArticleListForAgency(tokenDto.getCustomerId(), formDTO.getTagIdList()); |
|
|
|
} else { |
|
|
|
resultList = baseDao.selectArticleListForGrid(tokenDto.getCustomerId(), formDTO.getTagIdList(), userInfo.getGridIdList()); |
|
|
|
Set<String> gridList = new HashSet<>(); |
|
|
|
if (null != userInfo.getGridIdList()) { |
|
|
|
gridList = userInfo.getGridIdList(); |
|
|
|
} |
|
|
|
resultList = baseDao.selectArticleListForGrid(tokenDto.getCustomerId(), formDTO.getTagIdList(), gridList); |
|
|
|
} |
|
|
|
resultList.forEach(result -> { |
|
|
|
String tags = result.getTags(); |
|
|
|
List<String> tagList = new ArrayList<>(); |
|
|
|
tagList= Arrays.asList(tags.split("[|]")); |
|
|
|
tagList = Arrays.asList(tags.split("[|]")); |
|
|
|
result.setTagNameList(tagList); |
|
|
|
}); |
|
|
|
PageInfo<PublishedListResultDTO> pageInfo = new PageInfo<>(resultList); |
|
|
@ -634,7 +625,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageData offlineList(TokenDto tokenDto, OfflineListFormDTO formDTO) { |
|
|
|
PageHelper.startPage(formDTO.getPageNo(),formDTO.getPageSize()); |
|
|
|
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); |
|
|
|
|
|
|
|
LoginUserDetailsFormDTO loginUserDetailsFormDTO = new LoginUserDetailsFormDTO(); |
|
|
|
loginUserDetailsFormDTO.setApp(tokenDto.getApp()); |
|
|
@ -646,46 +637,46 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
return new PageData<>(resultList, pageInfo.getTotal()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 |
|
|
|
* @param commonArticleListFormDTO :: getGridId :: getNum |
|
|
|
* @return List<ArticleBannerResultDTO> |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.02 16:13 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<ArticleBannerResultDTO> getTopArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { |
|
|
|
return baseDao.selectTopArticleMsg(commonArticleListFormDTO.getGridId(), |
|
|
|
null == commonArticleListFormDTO.getNum() || commonArticleListFormDTO.getNum() <= NumConstant.ZERO ? |
|
|
|
NumConstant.THREE : commonArticleListFormDTO.getNum()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端首页最新文章列表 |
|
|
|
* @param commonArticleListFormDTO :: getGridId :: getNum |
|
|
|
* @return List<ArticleLatestResultDTO> |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.03 09:53 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<ArticleLatestResultDTO> getLatestArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { |
|
|
|
return baseDao.selectLatestArticleMsg(commonArticleListFormDTO.getGridId(), |
|
|
|
null == commonArticleListFormDTO.getNum() || commonArticleListFormDTO.getNum() <= NumConstant.ZERO ? |
|
|
|
NumConstant.FIVE : commonArticleListFormDTO.getNum()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 |
|
|
|
* @param articlePageFormDTO |
|
|
|
* @return List<ArticleListResultDTO> |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.03 14:19 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<ArticleListResultDTO> getArticleList(ArticlePageFormDTO articlePageFormDTO) { |
|
|
|
PageHelper.startPage(articlePageFormDTO.getPageNo(),articlePageFormDTO.getPageSize()); |
|
|
|
return baseDao.selectArticleList(articlePageFormDTO.getGridId(),articlePageFormDTO.getTagIdList()); |
|
|
|
} |
|
|
|
/** |
|
|
|
* @param commonArticleListFormDTO :: getGridId :: getNum |
|
|
|
* @return List<ArticleBannerResultDTO> |
|
|
|
* @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.02 16:13 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<ArticleBannerResultDTO> getTopArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { |
|
|
|
return baseDao.selectTopArticleMsg(commonArticleListFormDTO.getGridId(), |
|
|
|
null == commonArticleListFormDTO.getNum() || commonArticleListFormDTO.getNum() <= NumConstant.ZERO ? |
|
|
|
NumConstant.THREE : commonArticleListFormDTO.getNum()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param commonArticleListFormDTO :: getGridId :: getNum |
|
|
|
* @return List<ArticleLatestResultDTO> |
|
|
|
* @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端首页最新文章列表 |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.03 09:53 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<ArticleLatestResultDTO> getLatestArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { |
|
|
|
return baseDao.selectLatestArticleMsg(commonArticleListFormDTO.getGridId(), |
|
|
|
null == commonArticleListFormDTO.getNum() || commonArticleListFormDTO.getNum() <= NumConstant.ZERO ? |
|
|
|
NumConstant.FIVE : commonArticleListFormDTO.getNum()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param articlePageFormDTO |
|
|
|
* @return List<ArticleListResultDTO> |
|
|
|
* @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.03 14:19 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<ArticleListResultDTO> getArticleList(ArticlePageFormDTO articlePageFormDTO) { |
|
|
|
PageHelper.startPage(articlePageFormDTO.getPageNo(), articlePageFormDTO.getPageSize()); |
|
|
|
return baseDao.selectArticleList(articlePageFormDTO.getGridId(), articlePageFormDTO.getTagIdList()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param formDTO |
|
|
@ -709,7 +700,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
loginUserDetailsFormDTO.setClient("wxmp"); |
|
|
|
loginUserDetailsFormDTO.setUserId(formDTO.getStaffId()); |
|
|
|
Result<LoginUserDetailsResultDTO> resultDTOResult = epmetUserOpenFeignClient.getLoginUserDetails(loginUserDetailsFormDTO); |
|
|
|
String agencyId = resultDTOResult.getData().getOrgIdPath().substring(resultDTOResult.getData().getOrgIdPath().lastIndexOf(":")+NumConstant.ONE); |
|
|
|
String agencyId = resultDTOResult.getData().getOrgIdPath().substring(resultDTOResult.getData().getOrgIdPath().lastIndexOf(":") + NumConstant.ONE); |
|
|
|
//存放树的每一个节点对象,用于将同一节点下的网格列表合并(主键:agencyId 值:节点对象)
|
|
|
|
Map<String, ArticleGridResultDTO> map = new HashMap<>(); |
|
|
|
//3:循环可下线网格列表,根据pids组织每一个树节点对象信息
|
|
|
@ -717,9 +708,9 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
//当前网格的所有机关id
|
|
|
|
String gridPids = range.getPids() + ":" + range.getAgencyId(); |
|
|
|
//当前网格的所有机关名称
|
|
|
|
String gridAgencyNames = range.getAllParentName() + "-" + range.getAgencyGridName().substring(NumConstant.ZERO, range.getAgencyGridName().lastIndexOf("-")); |
|
|
|
String gridAgencyNames = range.getAllParentName() + StrConstant.HYPHEN + range.getAgencyGridName().substring(NumConstant.ZERO, range.getAgencyGridName().lastIndexOf(StrConstant.HYPHEN)); |
|
|
|
String[] pids = gridPids.split(":"); |
|
|
|
String[] names = gridAgencyNames.split("-"); |
|
|
|
String[] names = gridAgencyNames.split(StrConstant.HYPHEN); |
|
|
|
//倒序遍历
|
|
|
|
for (int i = (pids.length - NumConstant.ONE); i >= NumConstant.ZERO; i--) { |
|
|
|
//遍历到当前人员所属组织的上一级组织时停止遍历
|
|
|
@ -738,7 +729,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
List<AgencyGridListResultDTO> gridList = new ArrayList<>(); |
|
|
|
AgencyGridListResultDTO gridDto = new AgencyGridListResultDTO(); |
|
|
|
gridDto.setGridId(range.getGridId()); |
|
|
|
gridDto.setGridName(range.getAgencyGridName().substring(range.getAgencyGridName().lastIndexOf("-") + NumConstant.ONE)); |
|
|
|
gridDto.setGridName(range.getAgencyGridName().substring(range.getAgencyGridName().lastIndexOf(StrConstant.HYPHEN) + NumConstant.ONE)); |
|
|
|
gridList.add(gridDto); |
|
|
|
dto.setGridList(gridList); |
|
|
|
} |
|
|
@ -749,7 +740,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
List<AgencyGridListResultDTO> gridList = dto1.getGridList(); |
|
|
|
AgencyGridListResultDTO gridDto = new AgencyGridListResultDTO(); |
|
|
|
gridDto.setGridId(range.getGridId()); |
|
|
|
gridDto.setGridName(range.getAgencyGridName().substring(range.getAgencyGridName().lastIndexOf("-") + NumConstant.ONE)); |
|
|
|
gridDto.setGridName(range.getAgencyGridName().substring(range.getAgencyGridName().lastIndexOf(StrConstant.HYPHEN) + NumConstant.ONE)); |
|
|
|
gridList.add(gridDto); |
|
|
|
dto1.setGridList(gridList); |
|
|
|
map.put(pids[i], dto1); |
|
|
@ -762,6 +753,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
List<ArticleGridResultDTO> list = agencyGridListToTree(resultDTOList); |
|
|
|
return list.get(NumConstant.ZERO); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Author sun |
|
|
|
* @Description 可下线网格列表-将list转为Tree结构 |
|
|
@ -799,6 +791,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
return listParentRecord; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Author sun |
|
|
|
* @Description 可下线网格列表-将list转为Tree结构-递归查询每一个根节点的下级节点集合 |
|
|
@ -827,9 +820,9 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL |
|
|
|
* @param articleDetailFormDTO |
|
|
|
* @return ArticleDetailResultDTO |
|
|
|
* @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.03 18:28 |
|
|
|
**/ |
|
|
@ -837,20 +830,20 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public ArticleDetailResultDTO getArticleDetail(ResiArticleDetailFormDTO articleDetailFormDTO) { |
|
|
|
//1.查询文章详情信息
|
|
|
|
ArticleDetailResultDTO articleInfo = baseDao.selectArticleDetail(articleDetailFormDTO.getGridId(),articleDetailFormDTO.getArticleId()); |
|
|
|
if(null == articleInfo) { |
|
|
|
throw new RenException(String.format(ModuleConstant.SPECIFIED_ARTICLE_NOT_FOUND_EXCEPTION_TEMPLATE,articleDetailFormDTO.getArticleId(),articleDetailFormDTO.getGridId())); |
|
|
|
ArticleDetailResultDTO articleInfo = baseDao.selectArticleDetail(articleDetailFormDTO.getGridId(), articleDetailFormDTO.getArticleId()); |
|
|
|
if (null == articleInfo) { |
|
|
|
throw new RenException(String.format(ModuleConstant.SPECIFIED_ARTICLE_NOT_FOUND_EXCEPTION_TEMPLATE, articleDetailFormDTO.getArticleId(), articleDetailFormDTO.getGridId())); |
|
|
|
} |
|
|
|
//2.判断当前用户当前文章当前网格是否存在访问记录
|
|
|
|
Map<String,Object> params = new HashMap<>(); |
|
|
|
params.put(ModuleConstant.FIELD_GRID_ID_CAMEL,articleDetailFormDTO.getGridId()); |
|
|
|
params.put(ModuleConstant.FIELD_USER_ID_CAMEL,articleDetailFormDTO.getUserId()); |
|
|
|
params.put(ModuleConstant.FIELD_ARTICLE_ID_CAMEL,articleDetailFormDTO.getArticleId()); |
|
|
|
params.put(ModuleConstant.FIELD_CUSTOMER_ID_CAMEL,articleInfo.getCustomerId()); |
|
|
|
params.put(FieldConstant.DEL_FLAG_HUMP,NumConstant.ZERO_STR); |
|
|
|
Map<String, Object> params = new HashMap<>(); |
|
|
|
params.put(ModuleConstant.FIELD_GRID_ID_CAMEL, articleDetailFormDTO.getGridId()); |
|
|
|
params.put(ModuleConstant.FIELD_USER_ID_CAMEL, articleDetailFormDTO.getUserId()); |
|
|
|
params.put(ModuleConstant.FIELD_ARTICLE_ID_CAMEL, articleDetailFormDTO.getArticleId()); |
|
|
|
params.put(ModuleConstant.FIELD_CUSTOMER_ID_CAMEL, articleInfo.getCustomerId()); |
|
|
|
params.put(FieldConstant.DEL_FLAG_HUMP, NumConstant.ZERO_STR); |
|
|
|
List<ArticleVisitRecordDTO> existedVisitRecord = articleVisitRecordService.list(params); |
|
|
|
//3.没有则插入
|
|
|
|
if(null == existedVisitRecord || existedVisitRecord.size() < NumConstant.ONE){ |
|
|
|
if (null == existedVisitRecord || existedVisitRecord.size() < NumConstant.ONE) { |
|
|
|
ArticleVisitRecordEntity recordToInsert = new ArticleVisitRecordEntity(); |
|
|
|
recordToInsert.setArticleId(articleDetailFormDTO.getArticleId()); |
|
|
|
recordToInsert.setGridId(articleDetailFormDTO.getGridId()); |
|
|
@ -865,9 +858,9 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 草稿发布文章 |
|
|
|
* @param draft |
|
|
|
* @return String 返回新发布文章的Id |
|
|
|
* @Description 草稿发布文章 |
|
|
|
* @author wangc |
|
|
|
* @date 2020.06.05 09:10 |
|
|
|
**/ |
|
|
@ -875,40 +868,40 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
public ArticleEntity publishDraftToArticle(DraftEntity draft) { |
|
|
|
//1.查找草稿内容
|
|
|
|
|
|
|
|
if(null != draft){ |
|
|
|
if (null != draft) { |
|
|
|
//2.查找草稿内容、封面、发布范围
|
|
|
|
String draftId = draft.getId(); |
|
|
|
//直接查询改草稿的 封面及内容
|
|
|
|
List<DraftContentEntity> draftContents = draftContentDao.selectByDraftId(draftId,null); |
|
|
|
DraftCoverEntity draftCover = draftCoverDao.selectByDraftId(draftId,null); |
|
|
|
List<DraftContentEntity> draftContents = draftContentDao.selectByDraftId(draftId, null); |
|
|
|
DraftCoverEntity draftCover = draftCoverDao.selectByDraftId(draftId, null); |
|
|
|
List<DraftPublishRangeEntity> draftPublishRange = draftPublishRangeDao.selectByDraftId(draftId); |
|
|
|
|
|
|
|
//3.生成文章以及相关记录
|
|
|
|
ArticleEntity article = ConvertUtils.sourceToTarget(draft,ArticleEntity.class); |
|
|
|
ArticleEntity article = ConvertUtils.sourceToTarget(draft, ArticleEntity.class); |
|
|
|
article.setId(null); |
|
|
|
article.setDraftId(draftId); |
|
|
|
article.setStatusFlag(DraftConstant.PUBLISHED); |
|
|
|
baseDao.insert(article); |
|
|
|
if(null != draftContents && draftContents.size() > NumConstant.ZERO){ |
|
|
|
if (null != draftContents && draftContents.size() > NumConstant.ZERO) { |
|
|
|
draftContents.forEach(content -> { |
|
|
|
content.setOrderNum(content.getOrderNum()); |
|
|
|
ArticleContentEntity contentToInsert = ConvertUtils.sourceToTarget(content,ArticleContentEntity.class); |
|
|
|
ArticleContentEntity contentToInsert = ConvertUtils.sourceToTarget(content, ArticleContentEntity.class); |
|
|
|
contentToInsert.setArticleId(article.getId()); |
|
|
|
contentToInsert.setId(null); |
|
|
|
articleContentDao.insert(contentToInsert); |
|
|
|
}); |
|
|
|
} |
|
|
|
if(null != draftPublishRange && draftPublishRange.size() > NumConstant.ZERO){ |
|
|
|
if (null != draftPublishRange && draftPublishRange.size() > NumConstant.ZERO) { |
|
|
|
draftPublishRange.forEach(range -> { |
|
|
|
range.setPublishStatus(DraftConstant.PUBLISHED); |
|
|
|
ArticlePublishRangeEntity rangeToInsert = ConvertUtils.sourceToTarget(range,ArticlePublishRangeEntity.class); |
|
|
|
ArticlePublishRangeEntity rangeToInsert = ConvertUtils.sourceToTarget(range, ArticlePublishRangeEntity.class); |
|
|
|
rangeToInsert.setArticleId(article.getId()); |
|
|
|
rangeToInsert.setId(null); |
|
|
|
articlePublishRangeDao.insert(rangeToInsert); |
|
|
|
draftPublishRangeDao.updateById(range); |
|
|
|
}); |
|
|
|
if(null != draftCover){ |
|
|
|
ArticleCoverEntity coverToInsert = ConvertUtils.sourceToTarget(draftCover,ArticleCoverEntity.class); |
|
|
|
if (null != draftCover) { |
|
|
|
ArticleCoverEntity coverToInsert = ConvertUtils.sourceToTarget(draftCover, ArticleCoverEntity.class); |
|
|
|
coverToInsert.setArticleId(article.getId()); |
|
|
|
coverToInsert.setId(null); |
|
|
|
articleCoverDao.insert(coverToInsert); |
|
|
@ -929,7 +922,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
return article; |
|
|
|
} |
|
|
|
|
|
|
|
throw new RenException(String.format(ModuleConstant.SPECIFIED_DRAFT_NOT_FOUNT_EXCEPTION_TEMPLATE,draft.getId())); |
|
|
|
throw new RenException(String.format(ModuleConstant.SPECIFIED_DRAFT_NOT_FOUNT_EXCEPTION_TEMPLATE, draft.getId())); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -951,7 +944,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
|
|
|
|
if (!isOk) { |
|
|
|
this.sendMsg(draftEntity.getCustomerId(),draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle())); |
|
|
|
this.sendMsg(draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle())); |
|
|
|
this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL); |
|
|
|
return null; |
|
|
|
} |
|
|
@ -986,20 +979,26 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
Result<SyncScanResult> imgSyncScanResult = null; |
|
|
|
Result<SyncScanResult> textSyncScanResult = null; |
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(imgScanParamDTO.getTasks())){ |
|
|
|
log.info("scanContent imgScanParamDTO:{}", JSON.toJSONString(imgScanParamDTO)); |
|
|
|
if (!CollectionUtils.isEmpty(imgScanParamDTO.getTasks())) { |
|
|
|
log.info("scanContent imgScanParamDTO:{}", JSON.toJSONString(imgScanParamDTO)); |
|
|
|
imgSyncScanResult = ScanContentUtils.imgSyncScan(scanApiUrl.concat(imgSyncScanMethod), imgScanParamDTO); |
|
|
|
log.info("scanContent imgSyncScanResult:{}", JSON.toJSONString(imgSyncScanResult)); |
|
|
|
if (!imgSyncScanResult.success()){ |
|
|
|
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(),imgSyncScanResult.getMsg()); |
|
|
|
} |
|
|
|
} |
|
|
|
if(!CollectionUtils.isEmpty(textScanParamDTO.getTasks())){ |
|
|
|
log.info("scanContent textScanParamDTO:{}", JSON.toJSONString(textScanParamDTO)); |
|
|
|
if (!CollectionUtils.isEmpty(textScanParamDTO.getTasks())) { |
|
|
|
log.info("scanContent textScanParamDTO:{}", JSON.toJSONString(textScanParamDTO)); |
|
|
|
textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); |
|
|
|
log.info("scanContent textSyncScanResult:{}", JSON.toJSONString(textSyncScanResult)); |
|
|
|
if (!textSyncScanResult.success()){ |
|
|
|
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(),textSyncScanResult.getMsg()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
result = new SyncScanResult(); |
|
|
|
if (imgSyncScanResult != null){ |
|
|
|
if (imgSyncScanResult != null) { |
|
|
|
SyncScanResult imgSyncScanResultData = imgSyncScanResult.getData(); |
|
|
|
if (imgSyncScanResult.success()) { |
|
|
|
result.setAllPass(imgSyncScanResultData.isAllPass()); |
|
|
@ -1017,15 +1016,16 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("scanContent exception", e); |
|
|
|
this.sendMsg(draftEntity.getCustomerId(),draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle())); |
|
|
|
this.sendMsg(draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle())); |
|
|
|
this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL); |
|
|
|
} |
|
|
|
log.debug("scanContent result:{}", JSON.toJSONString(result)); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED) |
|
|
|
public void scanAllPassPublishArticle(TokenDto tokenDto, String draftId, SyncScanResult syncScanResult){ |
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) |
|
|
|
public void scanAllPassPublishArticle(TokenDto tokenDto, String draftId, SyncScanResult syncScanResult) { |
|
|
|
|
|
|
|
DraftEntity draft = draftDao.selectById(draftId); |
|
|
|
if (draft == null) { |
|
|
@ -1037,7 +1037,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
this.updateAuditStatusFailById(draftId, syncScanResult); |
|
|
|
this.publishDraftToArticle(draft); |
|
|
|
UpdateCustomerTagCacheDTO updateCustomerTagCacheDTO = this.updateCustomerTag(tokenDto, draftId); |
|
|
|
if (updateCustomerTagCacheDTO == null){ |
|
|
|
if (updateCustomerTagCacheDTO == null) { |
|
|
|
return; |
|
|
|
} |
|
|
|
List<UpdateGridTagCacheDTO> updateGridTagCacheDTOS = this.updateGridTag(tokenDto, draftId, updateCustomerTagCacheDTO); |
|
|
@ -1053,31 +1053,31 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("scanAllPassPublishArticle update db exception", e); |
|
|
|
this.sendMsg(draft.getCustomerId(),draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle())); |
|
|
|
this.sendMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle())); |
|
|
|
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void updateAuditStatusFailById(String draftId,SyncScanResult syncScanResult) { |
|
|
|
public void updateAuditStatusFailById(String draftId, SyncScanResult syncScanResult) { |
|
|
|
DraftEntity draft = draftDao.selectById(draftId); |
|
|
|
if (draft == null) { |
|
|
|
log.error("updateAuditStatusFailById draftId:{} is not exist in db", draftId); |
|
|
|
throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg()); |
|
|
|
} |
|
|
|
if (syncScanResult.isAllPass()){ |
|
|
|
if (syncScanResult.isAllPass()) { |
|
|
|
this.updateDraftPublishStatus(draftId, DraftConstant.PUBLISHED); |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL); |
|
|
|
} |
|
|
|
|
|
|
|
boolean coverFail = false,contentFail = false; |
|
|
|
boolean coverFail = false, contentFail = false; |
|
|
|
try { |
|
|
|
List<String> failDataIds = syncScanResult.getFailDataIds(); |
|
|
|
for(String id:failDataIds) { |
|
|
|
for (String id : failDataIds) { |
|
|
|
if (id.indexOf(ModuleConstant.SCAN_COVER_PREFIX) >= NumConstant.ZERO) { |
|
|
|
draftCoverDao.updateAuditStatusById(id.replace(ModuleConstant.SCAN_COVER_PREFIX.concat(StrConstant.UNDER_LINE),""), ModuleConstant.AUDIT_STATUS_FAIL); |
|
|
|
draftCoverDao.updateAuditStatusById(id.replace(ModuleConstant.SCAN_COVER_PREFIX.concat(StrConstant.UNDER_LINE), ""), ModuleConstant.AUDIT_STATUS_FAIL); |
|
|
|
coverFail = true; |
|
|
|
} else { |
|
|
|
draftContentDao.updateAuditStatusById(id, ModuleConstant.AUDIT_STATUS_FAIL); |
|
|
@ -1087,21 +1087,22 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
List<String> successDataIds = syncScanResult.getSuccessDataIds(); |
|
|
|
successDataIds.forEach(id -> { |
|
|
|
if (id.indexOf(ModuleConstant.SCAN_COVER_PREFIX) >= NumConstant.ZERO) { |
|
|
|
draftCoverDao.updateAuditStatusById(id.replace(ModuleConstant.SCAN_COVER_PREFIX.concat(StrConstant.UNDER_LINE),""), ModuleConstant.AUDIT_STATUS_PASS); |
|
|
|
draftCoverDao.updateAuditStatusById(id.replace(ModuleConstant.SCAN_COVER_PREFIX.concat(StrConstant.UNDER_LINE), ""), ModuleConstant.AUDIT_STATUS_PASS); |
|
|
|
} else { |
|
|
|
draftContentDao.updateAuditStatusById(id, ModuleConstant.AUDIT_STATUS_PASS); |
|
|
|
} |
|
|
|
}); |
|
|
|
if (coverFail || contentFail){ |
|
|
|
if (coverFail || contentFail) { |
|
|
|
String auditMsg = ""; |
|
|
|
if (coverFail&&contentFail){ |
|
|
|
auditMsg = "内容和封面"; |
|
|
|
}else if (contentFail){ |
|
|
|
auditMsg = "内容"; |
|
|
|
}else if (coverFail){ |
|
|
|
auditMsg = "封面"; |
|
|
|
if (coverFail && contentFail) { |
|
|
|
auditMsg = ModuleConstant.DRAFT_CONTENT_AND_COVER; |
|
|
|
} else if (contentFail) { |
|
|
|
auditMsg = ModuleConstant.DRAFT_CONTENT; |
|
|
|
} else if (coverFail) { |
|
|
|
auditMsg = ModuleConstant.DRAFT_COVER; |
|
|
|
; |
|
|
|
} |
|
|
|
this.sendMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_AUDIT_CONTENT, draft.getTitle(),auditMsg)); |
|
|
|
this.sendMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_AUDIT_CONTENT, draft.getTitle(), auditMsg)); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("scanAllPassPublishArticle update db exception", e); |
|
|
@ -1116,37 +1117,37 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
return this.saveOrUpdateContent(tokenDto, fromDTO, false); |
|
|
|
} |
|
|
|
|
|
|
|
public Result sendMsg(String customerId, String title,String content) { |
|
|
|
public Result sendMsg(String customerId, String title, String content) { |
|
|
|
UserMessageFormDTO formDTO = new UserMessageFormDTO(); |
|
|
|
formDTO.setCustomerId(customerId); |
|
|
|
formDTO.setGridId(""); |
|
|
|
formDTO.setUserId(loginUserUtil.getLoginUserId()); |
|
|
|
formDTO.setApp(AppClientConstant.APP_GOV); |
|
|
|
formDTO.setTitle(String.format(ModuleConstant.MSG_TITLE,title)); |
|
|
|
formDTO.setTitle(String.format(ModuleConstant.MSG_TITLE, title)); |
|
|
|
formDTO.setMessageContent(content); |
|
|
|
formDTO.setReadFlag(ReadFlagConstant.UN_READ); |
|
|
|
return epmetMessageOpenFeignClient.saveUserMessage(formDTO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateDraftPublishStatus(String draftId,String statusFlag){ |
|
|
|
draftDao.updateAuditStatusById(draftId,statusFlag); |
|
|
|
public void updateDraftPublishStatus(String draftId, String statusFlag) { |
|
|
|
draftDao.updateAuditStatusById(draftId, statusFlag); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 更新DB的标签使用次数 政府端 |
|
|
|
* @param draftId |
|
|
|
* @Description 更新DB的标签使用次数 政府端 |
|
|
|
* @author zxc |
|
|
|
*/ |
|
|
|
public UpdateCustomerTagCacheDTO updateCustomerTag(TokenDto tokenDto, String draftId){ |
|
|
|
public UpdateCustomerTagCacheDTO updateCustomerTag(TokenDto tokenDto, String draftId) { |
|
|
|
//获取草稿基本信息
|
|
|
|
DraftDTO draft = draftService.get(draftId); |
|
|
|
String tags = draft.getTags(); |
|
|
|
String customerId = draft.getCustomerId(); |
|
|
|
String userId = tokenDto.getUserId(); |
|
|
|
UpdateCustomerTagCacheDTO result = null; |
|
|
|
if (StringUtils.isNotBlank(tags)){ |
|
|
|
UpdateCustomerTagCacheDTO result = null; |
|
|
|
if (StringUtils.isNotBlank(tags)) { |
|
|
|
result = new UpdateCustomerTagCacheDTO(); |
|
|
|
List<String> tagsList = Arrays.asList(tags.split("\\|")); |
|
|
|
List<UpdateTagUseCountsResultDTO> tagsInfo = new ArrayList<>(); |
|
|
@ -1164,37 +1165,37 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 更新redis 标签使用数量 和 标签级联 政府端 |
|
|
|
* @param formDto |
|
|
|
* @Description 更新redis 标签使用数量 和 标签级联 政府端 |
|
|
|
* @author zxc |
|
|
|
*/ |
|
|
|
public void updateCacheCustomerTag(UpdateCustomerTagCacheDTO formDto){ |
|
|
|
public void updateCacheCustomerTag(UpdateCustomerTagCacheDTO formDto) { |
|
|
|
List<UpdateTagUseCountsResultDTO> tagsInfo = formDto.getTagsInfo(); |
|
|
|
String customerId = formDto.getCustomerId(); |
|
|
|
//更新缓存标签使用数量
|
|
|
|
tagsInfo.forEach(resultDTO -> { |
|
|
|
String customerKey = TagConstant.GOV_TAG_KEY+customerId; |
|
|
|
tagRedis.updateTagUseCounts(customerKey,resultDTO); |
|
|
|
String customerKey = TagConstant.GOV_TAG_KEY + customerId; |
|
|
|
tagRedis.updateTagUseCounts(customerKey, resultDTO); |
|
|
|
}); |
|
|
|
//政府端更新redis的级联标签(set)
|
|
|
|
List<UpdateTagUseCountsResultDTO> tagsInfoCopy = new ArrayList<>(); |
|
|
|
for (int i = 0; i < tagsInfo.size(); i++) { |
|
|
|
tagsInfoCopy.addAll(tagsInfo); |
|
|
|
String key = TagConstant.GOV_RETAG_KEY+customerId+TagConstant.COLON+tagsInfo.get(i).getTagId(); |
|
|
|
String key = TagConstant.GOV_RETAG_KEY + customerId + TagConstant.COLON + tagsInfo.get(i).getTagId(); |
|
|
|
tagsInfoCopy.remove(tagsInfo.get(i)); |
|
|
|
Set<UpdateTagUseCountsResultDTO> setTag = new HashSet<>(tagsInfoCopy); |
|
|
|
tagRedis.updateMoreTag(key,setTag); |
|
|
|
tagRedis.updateMoreTag(key, setTag); |
|
|
|
tagsInfoCopy.clear(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 更新数据库 网格下的标签使用数量 居民端 |
|
|
|
* @param draftId |
|
|
|
* @param formDto |
|
|
|
* @Description 更新数据库 网格下的标签使用数量 居民端 |
|
|
|
* @author zxc |
|
|
|
*/ |
|
|
|
public List<UpdateGridTagCacheDTO> updateGridTag(TokenDto tokenDto,String draftId,UpdateCustomerTagCacheDTO formDto){ |
|
|
|
public List<UpdateGridTagCacheDTO> updateGridTag(TokenDto tokenDto, String draftId, UpdateCustomerTagCacheDTO formDto) { |
|
|
|
//获取草稿基本信息
|
|
|
|
DraftDTO draft = draftService.get(draftId); |
|
|
|
String customerId = draft.getCustomerId(); |
|
|
@ -1202,7 +1203,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
String userId = tokenDto.getUserId(); |
|
|
|
//根据草稿id查询发布范围id集合
|
|
|
|
List<String> gridIds = draftPublishRangeDao.selectGridIdByDraftId(draftId); |
|
|
|
if (gridIds.size() == NumConstant.ZERO){ |
|
|
|
if (gridIds.size() == NumConstant.ZERO) { |
|
|
|
throw new RenException(TagConstant.SELECT_GRIDIDLIST_FAILURE); |
|
|
|
} |
|
|
|
List<UpdateGridTagsFormDTO> gridTags = new ArrayList<>(); |
|
|
@ -1214,7 +1215,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
gridTagCache.add(cache); |
|
|
|
tagsInfo.forEach(resultDTO -> { |
|
|
|
UpdateGridTagsFormDTO tag = new UpdateGridTagsFormDTO(); |
|
|
|
BeanUtils.copyProperties(resultDTO,tag); |
|
|
|
BeanUtils.copyProperties(resultDTO, tag); |
|
|
|
tag.setCreatedBy(userId); |
|
|
|
tag.setUpdatedBy(userId); |
|
|
|
tag.setCustomerId(customerId); |
|
|
@ -1222,43 +1223,43 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
gridTags.add(tag); |
|
|
|
}); |
|
|
|
}); |
|
|
|
tagGridDao.updateGridTag(gridTags,userId); |
|
|
|
tagGridDao.updateGridTag(gridTags, userId); |
|
|
|
return gridTagCache; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 更新redis 网格下的 标签使用数量 和 级联标签 居民端 |
|
|
|
* @param gridTagCache |
|
|
|
* @Description 更新redis 网格下的 标签使用数量 和 级联标签 居民端 |
|
|
|
* @author zxc |
|
|
|
*/ |
|
|
|
public void updateCacheGridTag(List<UpdateGridTagCacheDTO> gridTagCache){ |
|
|
|
public void updateCacheGridTag(List<UpdateGridTagCacheDTO> gridTagCache) { |
|
|
|
//更新 网格下 标签使用数量
|
|
|
|
List<UpdateTagUseCountsResultDTO> gridTagCacheCopy = new ArrayList<>(); |
|
|
|
gridTagCache.forEach(cacheDTO -> { |
|
|
|
String gridId = cacheDTO.getGridId(); |
|
|
|
String key = TagConstant.GRID_TAG_KEY+gridId; |
|
|
|
String key = TagConstant.GRID_TAG_KEY + gridId; |
|
|
|
List<UpdateTagUseCountsResultDTO> tagsInfo = cacheDTO.getTagsInfo(); |
|
|
|
tagsInfo.forEach(resultDTO -> { |
|
|
|
tagRedis.updateTagUseCounts(key,resultDTO); |
|
|
|
tagRedis.updateTagUseCounts(key, resultDTO); |
|
|
|
}); |
|
|
|
//级联
|
|
|
|
for (int i = 0; i < tagsInfo.size(); i++) { |
|
|
|
gridTagCacheCopy.addAll(tagsInfo); |
|
|
|
String moreKey = TagConstant.GRID_RETAG_KEY+gridId+TagConstant.COLON+tagsInfo.get(i).getTagId(); |
|
|
|
String moreKey = TagConstant.GRID_RETAG_KEY + gridId + TagConstant.COLON + tagsInfo.get(i).getTagId(); |
|
|
|
gridTagCacheCopy.remove(tagsInfo.get(i)); |
|
|
|
Set<UpdateTagUseCountsResultDTO> setTag = new HashSet<>(gridTagCacheCopy); |
|
|
|
tagRedis.updateMoreTag(moreKey,setTag); |
|
|
|
tagRedis.updateMoreTag(moreKey, setTag); |
|
|
|
gridTagCacheCopy.clear(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 给文章挂标签 article_tags |
|
|
|
* @param formDto |
|
|
|
* @Description 给文章挂标签 article_tags |
|
|
|
* @author zxc |
|
|
|
*/ |
|
|
|
public void addArticleTags(UpdateCustomerTagCacheDTO formDto,String draftId,TokenDto tokenDto){ |
|
|
|
public void addArticleTags(UpdateCustomerTagCacheDTO formDto, String draftId, TokenDto tokenDto) { |
|
|
|
List<AddArticleTagsFormDTO> addArticleTags = new ArrayList<>(); |
|
|
|
List<UpdateTagUseCountsResultDTO> tagsInfo = formDto.getTagsInfo(); |
|
|
|
DraftDTO draft = draftService.get(draftId); |
|
|
@ -1271,7 +1272,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit |
|
|
|
addArticleTag.setUpdatedBy(userId); |
|
|
|
addArticleTag.setCustomerId(customerId); |
|
|
|
addArticleTag.setArticleId(articleId); |
|
|
|
BeanUtils.copyProperties(resultDTO,addArticleTag); |
|
|
|
BeanUtils.copyProperties(resultDTO, addArticleTag); |
|
|
|
addArticleTags.add(addArticleTag); |
|
|
|
}); |
|
|
|
articleTagsDao.addArticleTags(addArticleTags); |
|
|
|