Browse Source

异步执行校验组织待校验数据 暂存

dev_shibei_match
jianjun 5 years ago
parent
commit
00293a7af4
  1. 65
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java
  2. 7
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/DraftContentDao.java
  3. 11
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/DraftCoverDao.java
  4. 71
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java
  5. 94
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java
  6. 5
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/utils/ModuleConstant.java
  7. 12
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftContentDao.xml
  8. 5
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftCoverDao.xml

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

@ -22,26 +22,19 @@ import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.ArticleDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.excel.ArticleExcel;
import com.epmet.service.ArticleOperateRecordService;
import com.epmet.service.ArticleService;
import com.epmet.service.DraftService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
@ -61,48 +54,6 @@ public class ArticleController {
@Autowired
private DraftService draftService;
@GetMapping("page")
public Result<PageData<ArticleDTO>> page(@RequestParam Map<String, Object> params){
PageData<ArticleDTO> page = articleService.page(params);
return new Result<PageData<ArticleDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<ArticleDTO> get(@PathVariable("id") String id){
ArticleDTO data = articleService.get(id);
return new Result<ArticleDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody ArticleDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
articleService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody ArticleDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
articleService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
articleService.delete(ids);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ArticleDTO> list = articleService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ArticleExcel.class);
}
/**
* @param tokenDTO
* @return
@ -222,9 +173,6 @@ public class ArticleController {
public Result<Boolean> saveDraftAttr(@LoginUser TokenDto tokenDto,@RequestBody DraftAttrFromDTO fromDTO) throws Exception {
ValidatorUtils.validateEntity(fromDTO, DefaultGroup.class);
Boolean isSuccess = articleService.saveDraftAttr(tokenDto, fromDTO);
if (isSuccess){
//TODO 异步校验内容
}
return new Result<Boolean>().ok(isSuccess);
}
@ -250,9 +198,19 @@ public class ArticleController {
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH)
public Result<Boolean> publishArticle(@LoginUser TokenDto tokenDto, String draftId) throws Exception {
Boolean isSuccess = articleService.publish(tokenDto, draftId);
if (isSuccess){
//TODO 异步校验内容
scanContent(draftId);
}
return new Result<Boolean>().ok(isSuccess);
}
@Async
public void scanContent(String draftId){
articleService.scanContent(draftId);
}
/**
* 已发布文章列表
@ -363,4 +321,5 @@ public class ArticleController {
DraftDetailResultDTO draftDetailResultDTO = draftService.queryDraftDetail(formDTO);
return new Result<DraftDetailResultDTO>().ok(draftDetailResultDTO);
}
}

7
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/DraftContentDao.java

@ -43,4 +43,11 @@ public interface DraftContentDao extends BaseDao<DraftContentEntity> {
* @date 2020.06.05 10:28
**/
List<DraftContentDTO> selectByDraftId(@Param("draftId")String draftId,@Param("auditStatus")String auditStatus);
/**
* desc:查询需要审核的内容
* @param draftId
* @return
*/
List<DraftContentDTO> selectScanContentByDraftId(String draftId);
}

11
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/DraftCoverDao.java

@ -23,8 +23,6 @@ import com.epmet.entity.DraftCoverEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 草稿封面表
*
@ -43,4 +41,13 @@ public interface DraftCoverDao extends BaseDao<DraftCoverEntity> {
* @date 2020.06.05 10:28
**/
DraftCoverDTO selectByDraftId(@Param("draftId")String draftId,@Param("auditStatus")String auditStatus);
/**
* @Description 通过草稿Id 获取未删除的草稿封面id及地址
* @param draftId
* @return DraftCoverDTO
* @author wangc
* @date 2020.06.05 10:28
**/
DraftCoverDTO selectCoverIdAndUrlByDraftId(@Param("draftId")String draftId);
}

71
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java

@ -20,16 +20,11 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.ArticleDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.dto.form.ArticlePageFormDTO;
import com.epmet.dto.form.CommonArticleListFormDTO;
import com.epmet.entity.ArticleEntity;
import java.util.List;
import java.util.Map;
/**
* 文章表
@ -39,66 +34,6 @@ import java.util.Map;
*/
public interface ArticleService extends BaseService<ArticleEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<ArticleDTO>
* @author generator
* @date 2020-06-02
*/
PageData<ArticleDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<ArticleDTO>
* @author generator
* @date 2020-06-02
*/
List<ArticleDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return ArticleDTO
* @author generator
* @date 2020-06-02
*/
ArticleDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-06-02
*/
void save(ArticleDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-06-02
*/
void update(ArticleDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-06-02
*/
void delete(String[] ids);
/**
* @param tokenDTO
* @return
@ -239,4 +174,10 @@ public interface ArticleService extends BaseService<ArticleEntity> {
* @date 2020.06.05 09:10
**/
String publishDraftToArticle(String draftId);
/**
* desc:异步执行审核如果审核通过则 发布文章否则发送站内信
* @param draftId
*/
void scanContent(String draftId);
}

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

@ -18,8 +18,6 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
@ -46,8 +44,8 @@ import com.epmet.entity.*;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.redis.ArticleRedis;
import com.epmet.service.*;
import com.epmet.redis.TagRedis;
import com.epmet.service.*;
import com.epmet.utils.ModuleConstant;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -117,58 +115,6 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
@Autowired
private ArticleVisitRecordService articleVisitRecordService;
@Override
public PageData<ArticleDTO> page(Map<String, Object> params) {
IPage<ArticleEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, ArticleDTO.class);
}
@Override
public List<ArticleDTO> list(Map<String, Object> params) {
List<ArticleEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, ArticleDTO.class);
}
private QueryWrapper<ArticleEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP);
QueryWrapper<ArticleEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public ArticleDTO get(String id) {
ArticleEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, ArticleDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(ArticleDTO dto) {
ArticleEntity entity = ConvertUtils.sourceToTarget(dto, ArticleEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ArticleDTO dto) {
ArticleEntity entity = ConvertUtils.sourceToTarget(dto, ArticleEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param tokenDTO
* @return
@ -901,6 +847,44 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
throw new RenException(String.format(ModuleConstant.SPECIFIED_DRAFT_NOT_FOUNT_EXCEPTION_TEMPLATE,draftId));
}
@Override
public void scanContent(String draftId) {
DraftEntity draftEntity = draftDao.selectById(draftId);
if (draftEntity == null){
log.error("scanContent draftId:{} is not exist",draftId);
return;
}
if (!DraftConstant.AUDITING.equals(draftEntity.getStatusFlag())){
log.error("scanContent draftId:{} statusFlag:{} is not support 2 modify",draftId,draftEntity.getStatusFlag());
return;
}
if (!NumConstant.ONE_STR.equals(draftEntity.getDelFlag())){
log.error("scanContent draftId:{} delFlag:{} is not support 2 modify",draftId,draftEntity.getDelFlag());
return;
}
Map<String,String> imgMap = new HashMap<>();
Map<String,String> textMap = new HashMap<>();
DraftCoverDTO draftCoverDTO = draftCoverDao.selectCoverIdAndUrlByDraftId(draftId);
if (draftCoverDTO != null){
imgMap.put(ModuleConstant.SCAN_COVER_PREFIX.concat(draftCoverDTO.getId()), draftCoverDTO.getImgUrl());
}
List<DraftContentDTO> contentDTOList = draftContentDao.selectScanContentByDraftId(draftId);
if(!CollectionUtils.isEmpty(contentDTOList)){
contentDTOList.forEach(content->{
String contentType = content.getContentType();
if (DraftConstant.TEXT.equals(contentType)){
//todo 内容叠加审核吧 id拼起来
textMap.put(content.getId(),content.getContent());
}else if (DraftConstant.IMG.equals(contentType)){
imgMap.put(draftCoverDTO.getId(), draftCoverDTO.getImgUrl());
}
});
}
//todo 执行审核
}
/**
* @Description 更新DB的标签使用次数
* @param draftId

5
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/utils/ModuleConstant.java

@ -64,4 +64,9 @@ public interface ModuleConstant {
* */
String SPECIFIED_DRAFT_NOT_FOUNT_EXCEPTION_TEMPLATE = "未找到指定草稿,草稿Id:【%s】";
/**
* 内容审核 封面图片前缀用于标识这个Id是封面图片
* */
String SCAN_COVER_PREFIX = "cover_";
}

12
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftContentDao.xml

@ -16,7 +16,7 @@
DRAFT_CONTENT
<where>
DRAFT_ID = #{draftId}
AND DEL_FLAG = '0'
AND DEL_FLAG = 0
<if test='null != auditStatus and "" != auditStatus'>
AND AUDIT_STATUS = #{auditStatus}
</if>
@ -24,5 +24,15 @@
ORDER BY
ORDER_NUM
</select>
<select id="selectScanContentByDraftId" resultType="com.epmet.dto.DraftContentDTO">
SELECT
ID,
CONTENT,
CONTENT_TYPE
FROM
DRAFT_CONTENT
WHERE
DEL_FLAG = 0 AND DRAFT_ID = #{draftId,jdbcType=VARCHAR}
</select>
</mapper>

5
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftCoverDao.xml

@ -14,12 +14,15 @@
DRAFT_COVER cover
<where>
cover.DRAFT_ID = #{draftId}
AND cover.DEL_FLAG = '0'
AND cover.DEL_FLAG = 0
<if test = 'null != auditStatus and "" != auditStatus'>
AND cover.AUDIT_STATUS = #{auditStatus}
</if>
AND NOT EXISTS ( SELECT 1 FROM DRAFT_COVER WHERE cover.CREATED_TIME <![CDATA[ < ]]> CREATED_TIME )
</where>
</select>
<select id="selectCoverIdAndUrlByDraftId" resultType="com.epmet.dto.DraftCoverDTO">
SELECT ID,IMG_URL FROM DRAFT_COVER WHERE DEL_FLAG = 0 AND DRAFT_ID = #{draftId,jdbcType=VARCHAR}
</select>
</mapper>
Loading…
Cancel
Save