diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftDetailFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftDetailFormDTO.java index 2fed15dcf8..f2672f2b30 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftDetailFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftDetailFormDTO.java @@ -22,4 +22,9 @@ public class DraftDetailFormDTO implements Serializable { */ @NotBlank(message = "草稿id不能为空", groups = {DraftDetailFormDTO.AddUserInternalGroup.class}) private String draftId; + + /** + * 是否展示封面 + */ + private boolean showCover; } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftDetailResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftDetailResultDTO.java index ccd0e9918e..6298a5cfca 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftDetailResultDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftDetailResultDTO.java @@ -59,4 +59,9 @@ public class DraftDetailResultDTO implements Serializable { * 标签名称数组 */ private String[] tagNameList; + + /** + * 封面信息 + */ + private CoverImgDTO coverInfo; } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftListResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftListResultDTO.java index 4f41ee517c..e3f62d12d5 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftListResultDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftListResultDTO.java @@ -31,4 +31,9 @@ public class DraftListResultDTO implements Serializable { * 创建时间 */ private Long createdTime; + + /** + * 审核状态 + */ + private String auditStatus; } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovDraftContentDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovDraftContentDTO.java index 1b0530e3e4..4b4ae98c07 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovDraftContentDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovDraftContentDTO.java @@ -24,4 +24,9 @@ public class GovDraftContentDTO implements Serializable { */ private String content; + /** + * 审核状态 + */ + private String auditStatus; + } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java index f90304f477..65a7f54855 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java @@ -56,4 +56,14 @@ public interface ArticleConstant { * 操作权限异常-自己发表的文章只有自己才能下线 */ String SHIRO_EXCEPTION = "当前人员不是文章发布者,不能下线文章"; + + /** + * 发布方式 人工强制发布 不审核 + */ + String PUBLISH_WAY_MANUAL = "manualNoAudit"; + + /** + * 发布方式 api审核后自动发布 + */ + String PUBLISH_WAY_AUTO_AUDIT = "autoAudit"; } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java index b22716bc16..bf3de1429d 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java @@ -52,308 +52,330 @@ import java.util.List; @RestController @RequestMapping("article") public class ArticleController { - - @Autowired - private ArticleService articleService; - @Autowired - private ArticleOperateRecordService articleOperateRecordService; - @Autowired - private DraftService draftService; - - /** - * @param tokenDTO - * @return - * @Author sun - * @Description 党建声音-政府端-可选发布范围 - **/ - @PostMapping("agencygridlist") - public Result agencyGridList(@LoginUser TokenDto tokenDTO) { - ArticleAgencyGridListResultDTO agencyGridList = new ArticleAgencyGridListResultDTO(); - agencyGridList.setAgencyGridList(articleService.agencyGridList(tokenDTO)); - return new Result().ok(agencyGridList); - } - - /** - * desc:政府端-点击返回按钮时,点击保存草稿 无需校验参数 - * @param fromDTO - * @throws Exception - */ - @PostMapping("savedraft") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) - public Result savedraft(@LoginUser TokenDto tokenDto,@RequestBody DraftContentFromDTO fromDTO) throws Exception { - DraftContentSaveResultDTO draftDTO = articleService.saveDraft(tokenDto, fromDTO); - return new Result().ok(draftDTO); - } - - /** - * desc:保存或修改草稿内容 - * @param fromDTO - * @throws Exception - */ - @PostMapping("savecontent") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) - public Result saveOrUpdateContent(@LoginUser TokenDto tokenDto,@RequestBody DraftContentFromDTO fromDTO) throws Exception { - DraftContentSaveResultDTO resultDTO = articleService.saveOrUpdateContent(tokenDto, fromDTO, true); - return new Result().ok(resultDTO); - } - - /** - * @param formDTO - * @return com.epmet.commons.tools.utils.Result> - * @author yinzuomei@elink-cn.com - * @description 政府端:查询文章操作记录 - * @date 2020/6/2 16:50 - **/ - @PostMapping("oprationlist") - public Result> operationList(@RequestBody ArticleOperationFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, ArticleOperationFormDTO.AddUserInternalGroup.class); - List list = - articleOperateRecordService.listOfArticleOperation(formDTO.getArticleId()); - return new Result>().ok(list); - } - - /** - * @param formDTO - * @return com.epmet.commons.tools.utils.Result - * @author yinzuomei@elink-cn.com - * @description 政府端:(已发布、已下线)文章详情 - * @date 2020/6/3 9:44 - **/ - @PostMapping("articledetail") - public Result articleDetail(@RequestBody GovArticleDetailFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); - GovArticleDetailResultDTO articleDetail = articleService.queryGovArticleDetail(formDTO.getArticleId()); - return new Result().ok(articleDetail); - } - - /** - * @param formDTO 草稿id - * @return com.epmet.commons.tools.utils.Result - * @author yinzuomei@elink-cn.com - * @description 政府端:选中草稿编辑,获取草稿内容 - * @date 2020/6/3 13:18 - **/ - @PostMapping("getcontent") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_DRAFT_EDIT) - public Result getContent(@RequestBody DraftDetailFormDTO formDTO){ - ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); - DraftContentResultDTO draftContent=draftService.queryDraftContent(formDTO); - return new Result().ok(draftContent); - } - - /** - * @param formDTO - * @return com.epmet.commons.tools.utils.Result - * @author yinzuomei@elink-cn.com - * @description 政府端:选中草稿编辑,获取草稿属性 - * @date 2020/6/3 13:51 - **/ - @PostMapping("getattr") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_DRAFT_EDIT) - public Result getAttr(@RequestBody DraftDetailFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); - DraftAttrResultDTO draftAttrResultDTO=draftService.getDraftAttr(formDTO); - return new Result().ok(draftAttrResultDTO); - } - /** - * @param tokenDTO - * @return - * @Author sun - * @Description 党建声音-政府端-可选发布单位 - **/ - @PostMapping("publishagencylist") - public Result publishAgencyList(@LoginUser TokenDto tokenDTO) { - return new Result().ok(articleService.publishAgencyList(tokenDTO)); - } - - /** - * @param tokenDTO formDTO - * @return - * @Author sun - * @Description 党建声音-政府端-下线文章 - **/ - @PostMapping("offlinearticle") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_OFFLINE) - public Result offLineArticle(@LoginUser TokenDto tokenDTO, @RequestBody OffLineArticleFormDTO formDTO) { - formDTO.setStaffId(tokenDTO.getUserId()); - ValidatorUtils.validateEntity(formDTO, OffLineArticleFormDTO.AddUserInternalGroup.class); - articleService.offLineArticle(formDTO); - return new Result(); - } - - /** - * desc:保存草稿属性 - * @param fromDTO - * @throws Exception - */ - @PostMapping("saveattr") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) - public Result saveDraftAttr(@LoginUser TokenDto tokenDto,@RequestBody DraftAttrFromDTO fromDTO) throws Exception { - ValidatorUtils.validateEntity(fromDTO, DefaultGroup.class); - Boolean isSuccess = articleService.saveDraftAttr(tokenDto, fromDTO); - return new Result().ok(isSuccess); - } - - /** - * desc:预览保存草稿属性 - * @param fromDTO - * @throws Exception - */ - @PostMapping("previewsaveattr") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) - public Result previewSaveDraftAttr(@LoginUser TokenDto tokenDto,@RequestBody DraftAttrFromDTO fromDTO) throws Exception { - ValidatorUtils.validateEntity(fromDTO, DefaultGroup.class); - Boolean isSuccess = articleService.previewSaveDraftAttr(tokenDto, fromDTO); - return new Result().ok(isSuccess); - } - - /** - * desc:发布文章 - * @param formDTO - * @throws Exception - */ - @PostMapping("publish") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) - public Result publishArticle(@LoginUser TokenDto tokenDto, @RequestBody PublishArticleFormDTO formDTO) throws Exception { - Boolean isSuccess = articleService.publish(tokenDto, formDTO.getDraftId()); - if (isSuccess) { - scanContent(tokenDto, formDTO.getDraftId()); - } - return new Result().ok(isSuccess); - } - - @Async - public void scanContent(TokenDto tokenDto,String draftId){ - try { - SyncScanResult syncScanResult = articleService.scanContent(tokenDto, draftId); - if (syncScanResult == null) { - log.error("scanContent draftId:{} return result null", draftId); - } - - if (syncScanResult.isAllPass()) { - articleService.scanAllPassPublishArticle(tokenDto, draftId, syncScanResult); - } else { - articleService.updateAuditStatusFailById(draftId, syncScanResult); - } - } catch (Exception e) { - articleService.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL); - log.error("scanContent exception draftId:{} return result null", e); - } - } - - - /** - * 已发布文章列表 - * @author zhaoqifeng - * @date 2020/6/3 16:19 - * @param tokenDto - * @param formDTO - * @return com.epmet.commons.tools.utils.Result - */ - @PostMapping("publishedarticlelist") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISHED_LIST) - public Result> publishedArticleList(@LoginUser TokenDto tokenDto, @RequestBody PublishedListFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO); - List list = articleService.publishedArticleList(tokenDto, formDTO).getList(); - return new Result>().ok(list); - } - - - /** - * 已下线文章列表 - * @author zhaoqifeng - * @date 2020/6/3 16:19 - * @param tokenDto - * @param formDTO - * @return com.epmet.commons.tools.utils.Result - */ - @PostMapping("offlinearticlelist") - @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_OFFLINE_LIST) - public Result > offLineList(@LoginUser TokenDto tokenDto, @RequestBody OfflineListFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO); - List list = articleService.offlineList(tokenDto, formDTO).getList(); - return new Result >().ok(list); - } - /** - * @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 - * @param commonArticleListFormDTO :: getGridId :: getNum - * @return List - * @author wangc - * @date 2020.06.02 16:13 - **/ - @PostMapping("resitoparticlelist") - public Result> resiTopArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ - ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); - return new Result>().ok(articleService.getTopArticleList(commonArticleListFormDTO)); - } - - /** - * @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端首页最新文章列表 - * @param commonArticleListFormDTO :: getGridId :: getNum - * @return List - * @author wangc - * @date 2020.06.03 09:53 - **/ - @PostMapping("resilatestarticlelist") - public Result> resiLatestArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ - ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); - return new Result>().ok(articleService.getLatestArticleList(commonArticleListFormDTO)); - } - - /** - * @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 - * @param articlePageFormDTO - * @return List - * @author wangc - * @date 2020.06.03 14:19 - **/ - @PostMapping("resiarticlelist") - public Result> resiArticleList(@RequestBody ArticlePageFormDTO articlePageFormDTO){ - ValidatorUtils.validateEntity(articlePageFormDTO,ArticlePageFormDTO.ArticlePageInternalGroup.class); - return new Result>().ok(articleService.getArticleList(articlePageFormDTO)); - } - - /** - * @param tokenDTO formDTO - * @return - * @Author sun - * @Description 党建声音-政府端-可下线网格列表 - **/ - @PostMapping("publishgridlist") - public Result publishGridList(@LoginUser TokenDto tokenDTO, @RequestBody PublishGridListFormDTO formDTO) { - formDTO.setStaffId(tokenDTO.getUserId()); - ValidatorUtils.validateEntity(formDTO, PublishGridListFormDTO.AddUserInternalGroup.class); - ArticleAgencyGridListResultDTO agencyGridList = new ArticleAgencyGridListResultDTO(); - agencyGridList.setAgencyGridList(articleService.publishGridList(formDTO)); - return new Result().ok(agencyGridList); - } - - - /** - * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL - * @param articleDetailFormDTO - * @return ArticleDetailResultDTO - * @author wangc - * @date 2020.06.03 18:28 - **/ - @PostMapping("resiarticledetail") - public Result resiArticleDetail(@RequestBody ResiArticleDetailFormDTO articleDetailFormDTO){ - ValidatorUtils.validateEntity(articleDetailFormDTO,ResiArticleDetailFormDTO.ResiArticleDetailInternalGroup.class); - return new Result().ok(articleService.getArticleDetail(articleDetailFormDTO)); - } - - /** - * @param formDTO - * @return com.epmet.commons.tools.utils.Result - * @author yinzuomei@elink-cn.com - * @description 政府端:文章预览 - * @date 2020/6/5 10:56 - **/ - @PostMapping("draftdetail") - public Result queryDraftDetail(@RequestBody DraftDetailFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); - DraftDetailResultDTO draftDetailResultDTO = draftService.queryDraftDetail(formDTO); - return new Result().ok(draftDetailResultDTO); - } + + @Autowired + private ArticleService articleService; + @Autowired + private ArticleOperateRecordService articleOperateRecordService; + @Autowired + private DraftService draftService; + + /** + * @param tokenDTO + * @return + * @Author sun + * @Description 党建声音-政府端-可选发布范围 + **/ + @PostMapping("agencygridlist") + public Result agencyGridList(@LoginUser TokenDto tokenDTO) { + ArticleAgencyGridListResultDTO agencyGridList = new ArticleAgencyGridListResultDTO(); + agencyGridList.setAgencyGridList(articleService.agencyGridList(tokenDTO)); + return new Result().ok(agencyGridList); + } + + /** + * desc:政府端-点击返回按钮时,点击保存草稿 无需校验参数 + * + * @param fromDTO + * @throws Exception + */ + @PostMapping("savedraft") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) + public Result savedraft(@LoginUser TokenDto tokenDto, @RequestBody DraftContentFromDTO fromDTO) throws Exception { + DraftContentSaveResultDTO draftDTO = articleService.saveDraft(tokenDto, fromDTO); + return new Result().ok(draftDTO); + } + + /** + * desc:保存或修改草稿内容 + * + * @param fromDTO + * @throws Exception + */ + @PostMapping("savecontent") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) + public Result saveOrUpdateContent(@LoginUser TokenDto tokenDto, @RequestBody DraftContentFromDTO fromDTO) throws Exception { + DraftContentSaveResultDTO resultDTO = articleService.saveOrUpdateContent(tokenDto, fromDTO, true); + return new Result().ok(resultDTO); + } + + /** + * @param formDTO + * @return com.epmet.commons.tools.utils.Result> + * @author yinzuomei@elink-cn.com + * @description 政府端:查询文章操作记录 + * @date 2020/6/2 16:50 + **/ + @PostMapping("oprationlist") + public Result> operationList(@RequestBody ArticleOperationFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, ArticleOperationFormDTO.AddUserInternalGroup.class); + List list = + articleOperateRecordService.listOfArticleOperation(formDTO.getArticleId()); + return new Result>().ok(list); + } + + /** + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei@elink-cn.com + * @description 政府端:(已发布、已下线)文章详情 + * @date 2020/6/3 9:44 + **/ + @PostMapping("articledetail") + public Result articleDetail(@RequestBody GovArticleDetailFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); + GovArticleDetailResultDTO articleDetail = articleService.queryGovArticleDetail(formDTO.getArticleId()); + return new Result().ok(articleDetail); + } + + /** + * @param formDTO 草稿id + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei@elink-cn.com + * @description 政府端:选中草稿编辑,获取草稿内容 + * @date 2020/6/3 13:18 + **/ + @PostMapping("getcontent") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_DRAFT_EDIT) + public Result getContent(@RequestBody DraftDetailFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); + DraftContentResultDTO draftContent = draftService.queryDraftContent(formDTO); + return new Result().ok(draftContent); + } + + /** + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei@elink-cn.com + * @description 政府端:选中草稿编辑,获取草稿属性 + * @date 2020/6/3 13:51 + **/ + @PostMapping("getattr") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_DRAFT_EDIT) + public Result getAttr(@RequestBody DraftDetailFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); + DraftAttrResultDTO draftAttrResultDTO = draftService.getDraftAttr(formDTO); + return new Result().ok(draftAttrResultDTO); + } + + /** + * @param tokenDTO + * @return + * @Author sun + * @Description 党建声音-政府端-可选发布单位 + **/ + @PostMapping("publishagencylist") + public Result publishAgencyList(@LoginUser TokenDto tokenDTO) { + return new Result().ok(articleService.publishAgencyList(tokenDTO)); + } + + /** + * @param tokenDTO formDTO + * @return + * @Author sun + * @Description 党建声音-政府端-下线文章 + **/ + @PostMapping("offlinearticle") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_OFFLINE) + public Result offLineArticle(@LoginUser TokenDto tokenDTO, @RequestBody OffLineArticleFormDTO formDTO) { + formDTO.setStaffId(tokenDTO.getUserId()); + ValidatorUtils.validateEntity(formDTO, OffLineArticleFormDTO.AddUserInternalGroup.class); + articleService.offLineArticle(formDTO); + return new Result(); + } + + /** + * desc:保存草稿属性 + * + * @param fromDTO + * @throws Exception + */ + @PostMapping("saveattr") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) + public Result saveDraftAttr(@LoginUser TokenDto tokenDto, @RequestBody DraftAttrFromDTO fromDTO) throws Exception { + ValidatorUtils.validateEntity(fromDTO, DefaultGroup.class); + Boolean isSuccess = articleService.saveDraftAttr(tokenDto, fromDTO); + return new Result().ok(isSuccess); + } + + /** + * desc:预览保存草稿属性 + * + * @param fromDTO + * @throws Exception + */ + @PostMapping("previewsaveattr") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) + public Result previewSaveDraftAttr(@LoginUser TokenDto tokenDto, @RequestBody DraftAttrFromDTO fromDTO) throws Exception { + ValidatorUtils.validateEntity(fromDTO, DefaultGroup.class); + Boolean isSuccess = articleService.previewSaveDraftAttr(tokenDto, fromDTO); + return new Result().ok(isSuccess); + } + + /** + * desc:发布文章 + * + * @param formDTO + * @throws Exception + */ + @PostMapping("publish") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) + public Result publishArticle(@LoginUser TokenDto tokenDto, @RequestBody PublishArticleFormDTO formDTO) throws Exception { + Boolean isSuccess = articleService.publish(tokenDto, formDTO.getDraftId()); + if (isSuccess) { + scanContent(tokenDto, formDTO.getDraftId()); + } + return new Result().ok(isSuccess); + } + + /** + * desc:人工确认无误后发布文章,不走审核接口 + * + * @param formDTO + * @throws Exception + */ + @PostMapping("manualpublish") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) + public Result manualPublish(@LoginUser TokenDto tokenDto, @RequestBody PublishArticleFormDTO formDTO) throws Exception { + articleService.manualPublish(tokenDto, formDTO.getDraftId()); + return new Result().ok(true); + } + + @Async + public void scanContent(TokenDto tokenDto, String draftId) { + try { + SyncScanResult syncScanResult = articleService.scanContent(tokenDto, draftId); + if (syncScanResult == null) { + log.error("scanContent draftId:{} return result null", draftId); + } + + if (syncScanResult.isAllPass()) { + articleService.scanAllPassPublishArticle(tokenDto, draftId, syncScanResult); + } else { + articleService.updateAuditStatusFailById(draftId, syncScanResult); + } + } catch (Exception e) { + articleService.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL); + log.error("scanContent exception draftId:{} return result null", e); + } + } + + + /** + * 已发布文章列表 + * + * @param tokenDto + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2020/6/3 16:19 + */ + @PostMapping("publishedarticlelist") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISHED_LIST) + public Result> publishedArticleList(@LoginUser TokenDto tokenDto, @RequestBody PublishedListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + List list = articleService.publishedArticleList(tokenDto, formDTO).getList(); + return new Result>().ok(list); + } + + + /** + * 已下线文章列表 + * + * @param tokenDto + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2020/6/3 16:19 + */ + @PostMapping("offlinearticlelist") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_OFFLINE_LIST) + public Result> offLineList(@LoginUser TokenDto tokenDto, @RequestBody OfflineListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + List list = articleService.offlineList(tokenDto, formDTO).getList(); + return new Result>().ok(list); + } + + /** + * @param commonArticleListFormDTO :: getGridId :: getNum + * @return List + * @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 + * @author wangc + * @date 2020.06.02 16:13 + **/ + @PostMapping("resitoparticlelist") + public Result> resiTopArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO) { + ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); + return new Result>().ok(articleService.getTopArticleList(commonArticleListFormDTO)); + } + + /** + * @param commonArticleListFormDTO :: getGridId :: getNum + * @return List + * @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端首页最新文章列表 + * @author wangc + * @date 2020.06.03 09:53 + **/ + @PostMapping("resilatestarticlelist") + public Result> resiLatestArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO) { + ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); + return new Result>().ok(articleService.getLatestArticleList(commonArticleListFormDTO)); + } + + /** + * @param articlePageFormDTO + * @return List + * @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 + * @author wangc + * @date 2020.06.03 14:19 + **/ + @PostMapping("resiarticlelist") + public Result> resiArticleList(@RequestBody ArticlePageFormDTO articlePageFormDTO) { + ValidatorUtils.validateEntity(articlePageFormDTO, ArticlePageFormDTO.ArticlePageInternalGroup.class); + return new Result>().ok(articleService.getArticleList(articlePageFormDTO)); + } + + /** + * @param tokenDTO formDTO + * @return + * @Author sun + * @Description 党建声音-政府端-可下线网格列表 + **/ + @PostMapping("publishgridlist") + public Result publishGridList(@LoginUser TokenDto tokenDTO, @RequestBody PublishGridListFormDTO formDTO) { + formDTO.setStaffId(tokenDTO.getUserId()); + ValidatorUtils.validateEntity(formDTO, PublishGridListFormDTO.AddUserInternalGroup.class); + ArticleAgencyGridListResultDTO agencyGridList = new ArticleAgencyGridListResultDTO(); + agencyGridList.setAgencyGridList(articleService.publishGridList(formDTO)); + return new Result().ok(agencyGridList); + } + + + /** + * @param articleDetailFormDTO + * @return ArticleDetailResultDTO + * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL + * @author wangc + * @date 2020.06.03 18:28 + **/ + @PostMapping("resiarticledetail") + public Result resiArticleDetail(@RequestBody ResiArticleDetailFormDTO articleDetailFormDTO) { + ValidatorUtils.validateEntity(articleDetailFormDTO, ResiArticleDetailFormDTO.ResiArticleDetailInternalGroup.class); + return new Result().ok(articleService.getArticleDetail(articleDetailFormDTO)); + } + + /** + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei@elink-cn.com + * @description 政府端:文章预览 + * @date 2020/6/5 10:56 + **/ + @PostMapping("draftdetail") + public Result queryDraftDetail(@RequestBody DraftDetailFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); + DraftDetailResultDTO draftDetailResultDTO = draftService.queryDraftDetail(formDTO); + return new Result().ok(draftDetailResultDTO); + } } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java index 2a9837723f..b7ffc4a382 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java @@ -24,7 +24,10 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.DeleteDraftFormDTO; +import com.epmet.dto.form.DraftDetailFormDTO; import com.epmet.dto.form.DraftListFormDTO; +import com.epmet.dto.form.GovArticleDetailFormDTO; +import com.epmet.dto.result.DraftDetailResultDTO; import com.epmet.dto.result.DraftListResultDTO; import com.epmet.service.DraftService; import org.springframework.beans.factory.annotation.Autowired; @@ -70,4 +73,17 @@ public class DraftController { ValidatorUtils.validateEntity(formDTO); return new Result>().ok(draftService.draftList(tokenDto, formDTO).getList()); } + + /** + * desc:政府端:带封面的预览 + * @param formDTO + * @return + */ + @PostMapping("detailwithcover") + public Result detailWithCover(@RequestBody DraftDetailFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class); + formDTO.setShowCover(true); + DraftDetailResultDTO draftDetailResultDTO = draftService.queryDraftDetail(formDTO); + return new Result().ok(draftDetailResultDTO); + } } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java index eb2b026fb7..3b1021a004 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java @@ -103,6 +103,11 @@ public class ArticleEntity extends BaseEpmetEntity { */ private String tags; + /** + * 发布方式 自动审核后发布:autoAudit;人工确认无误发布(不审核):manualNoAudit + */ + private String publishWay; + /** * 组织ID */ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java index 4a5424c8af..6b69368795 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java @@ -206,4 +206,12 @@ public interface ArticleService extends BaseService { * @return */ void updateDraftPublishStatus(String draftId,String statusFlag); + + /** + * desc:人工发布文章 不走审核接口 + * @param tokenDto + * @param draftId + * @return + */ + void manualPublish(TokenDto tokenDto, String draftId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index 2e3d296122..c5c4b74f0f 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -63,7 +63,6 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -322,7 +321,7 @@ public class ArticleServiceImpl extends BaseServiceImpl { offLineGridId.append(StrConstant.COLON).append(off.getGridId()); }); - recordEntity.setGridIds(offLineGridId.toString().replaceFirst(StrConstant.COLON,"")); + recordEntity.setGridIds(offLineGridId.toString().replaceFirst(StrConstant.COLON, "")); recordEntity.setContent(content); recordEntity.setOpType(ArticleConstant.OFFLINE); recordEntity.setOpTime(date); @@ -641,7 +640,7 @@ public class ArticleServiceImpl extends BaseServiceImpl NumConstant.ZERO) { draftContents.forEach(content -> { @@ -1006,16 +1008,16 @@ public class ArticleServiceImpl extends BaseServiceImpl updateGridTagCacheDTOS = this.updateGridTag(tokenDto, draftId, updateCustomerTagCacheDTO); + this.addArticleTags(updateCustomerTagCacheDTO, draftId, tokenDto, articleEntity.getCreatedTime()); + + //更新redis + try { + this.updateCacheCustomerTag(updateCustomerTagCacheDTO); + this.updateCacheGridTag(updateGridTagCacheDTOS); + } catch (Exception e) { + log.error("manualPublish update redis exception", e); + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + } catch (RenException e) { + log.error("manualPublish exception", e); + } + } + /** * @param draftId diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java index 59e311c943..ceb961ac38 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java @@ -26,12 +26,14 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.constant.DraftConstant; +import com.epmet.dao.DraftCoverDao; import com.epmet.dao.DraftDao; import com.epmet.dto.DraftDTO; import com.epmet.dto.form.DeleteDraftFormDTO; import com.epmet.dto.form.DraftDetailFormDTO; import com.epmet.dto.form.DraftListFormDTO; import com.epmet.dto.result.*; +import com.epmet.entity.DraftCoverEntity; import com.epmet.entity.DraftEntity; import com.epmet.service.DraftService; import com.github.pagehelper.PageHelper; @@ -39,6 +41,7 @@ import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -57,6 +60,8 @@ import java.util.Map; public class DraftServiceImpl extends BaseServiceImpl implements DraftService { private Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired + private DraftCoverDao draftCoverDao; @Override public PageData page(Map params) { IPage page = baseDao.selectPage( @@ -179,6 +184,15 @@ public class DraftServiceImpl extends BaseServiceImpl imp }else{ draftDetailResultDTO.setTagNameList(new String[0]); } + if (formDTO.isShowCover()){ + DraftCoverEntity coverEntity = draftCoverDao.selectByDraftId(formDTO.getDraftId(), null); + if (coverEntity != null){ + CoverImgDTO coverImgDTO = ConvertUtils.sourceToTarget(coverEntity, CoverImgDTO.class); + draftDetailResultDTO.setCoverInfo(coverImgDTO); + }else{ + draftDetailResultDTO.setCoverInfo(new CoverImgDTO()); + } + } } return draftDetailResultDTO; } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.2__addAutoPublish.sql b/epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.2__addAutoPublish.sql new file mode 100644 index 0000000000..50dc5ea180 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.2__addAutoPublish.sql @@ -0,0 +1,2 @@ +ALTER TABLE `epmet_gov_voice`.`article` +ADD COLUMN `PUBLISH_WAY` varchar(16) NOT NULL DEFAULT 'autoAudit' COMMENT '发布方式 自动审核后发布:autoAudit;人工确认无误发布(不审核):manualNoAudit' AFTER `TAGS`; \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftDao.xml index e97eb759b1..71330a10b8 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftDao.xml @@ -142,7 +142,9 @@ ID AS "draftId", TITLE AS "title", IFNULL(PREVIEW_CONTENT, "") AS "content", - UNIX_TIMESTAMP(CREATED_TIME) AS "createdTime" + UNIX_TIMESTAMP(CREATED_TIME) AS "createdTime", + AUDIT_STATUS, + AUDIT_REASON FROM draft WHERE DEL_FLAG = '0' AND (STATUS_FLAG = 'unpublish' OR STATUS_FLAG = 'auditfail') @@ -169,7 +171,9 @@