diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java index 189c43de65..f955e2b125 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java @@ -1,11 +1,11 @@ package com.epmet.dto.feign; + import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.feign.fallback.GovVoiceFeignClientFallBack; -import com.epmet.dto.form.ResiTagListFormDTO; -import com.epmet.dto.form.TagCascadeListFormDTO; -import com.epmet.dto.result.TagInfoResultDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -37,5 +37,47 @@ public interface GovVoiceFeignClient { @PostMapping("/gov/voice/tag/tagcascadelist") Result> tagCascadeList(@RequestBody TagCascadeListFormDTO formDto); + /** + * @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 + * @param commonArticleListFormDTO :: getGridId :: getNum + * @return List + * @author wangc + * @date 2020.06.02 16:13 + **/ + @PostMapping("/gov/voice/article/resitoparticlelist") + Result> resiTopArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO); + + + + /** + * @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端首页最新文章列表 + * @param commonArticleListFormDTO :: getGridId :: getNum + * @return List + * @author wangc + * @date 2020.06.03 09:53 + **/ + @PostMapping("/gov/voice/article/resilatestarticlelist") + Result> resiLatestArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO); + + + /** + * @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 + * @param articlePageFormDTO + * @return List + * @author wangc + * @date 2020.06.03 14:19 + **/ + @PostMapping("/gov/voice/article/resiarticlelist") + Result> resiArticleList(@RequestBody ArticlePageFormDTO articlePageFormDTO); + + /** + * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL + * @param articleDetailFormDTO + * @return ArticleDetailResultDTO + * @author wangc + * @date 2020.06.03 18:28 + **/ + @PostMapping("/gov/voice/article/resiarticledetail") + Result resiArticleDetail(@RequestBody ResiArticleDetailFormDTO articleDetailFormDTO); } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java index 25cafda2ba..3e707a86f6 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java @@ -4,9 +4,8 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.feign.GovVoiceFeignClient; -import com.epmet.dto.form.ResiTagListFormDTO; -import com.epmet.dto.form.TagCascadeListFormDTO; -import com.epmet.dto.result.TagInfoResultDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; import org.springframework.stereotype.Component; import java.util.List; @@ -26,4 +25,24 @@ public class GovVoiceFeignClientFallBack implements GovVoiceFeignClient { public Result> tagCascadeList(TagCascadeListFormDTO formDto) { return ModuleUtils.feignConError(ServiceConstant.GOV_VOICE_SERVER, "tagCascadeList", formDto); } + + @Override + public Result> resiTopArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_VOICE_SERVER, "resiTopArticleList", commonArticleListFormDTO); + } + + @Override + public Result> resiLatestArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_VOICE_SERVER, "resiLatestArticleList", commonArticleListFormDTO); + } + + @Override + public Result> resiArticleList(ArticlePageFormDTO articlePageFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_VOICE_SERVER, "resiArticleList", articlePageFormDTO); + } + + @Override + public Result resiArticleDetail(ResiArticleDetailFormDTO articleDetailFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_VOICE_SERVER, "resiArticleDetail", articleDetailFormDTO); + } } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticlePageFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticlePageFormDTO.java index 938349fbcc..f15a296854 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticlePageFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticlePageFormDTO.java @@ -7,7 +7,7 @@ import java.io.Serializable; import java.util.List; /** - * @Description + * @Description 居民端查看文章列表参数DTO * @ClassName ArticlePageFormDTO * @Auth wangc * @Date 2020-06-03 14:21 diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiArticleDetailFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiArticleDetailFormDTO.java new file mode 100644 index 0000000000..87de7f5045 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiArticleDetailFormDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 居民端查看文章详情传参DTO + * @ClassName ResiArticleDetailFormDTO + * @Auth wangc + * @Date 2020-06-04 09:20 + */ +@Data +public class ResiArticleDetailFormDTO implements Serializable { + private static final long serialVersionUID = -7197489284630455909L; + + public interface ResiArticleDetailInternalGroup{} + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空",groups = ResiArticleDetailInternalGroup.class) + private String gridId; + + /** + * 文章Id + * */ + @NotBlank(message = "文章Id不能为空",groups = ResiArticleDetailInternalGroup.class) + private String articleId; + + /** + * 用户Id + * */ + @NotBlank(message = "用户Id不能为空",groups = ResiArticleDetailInternalGroup.class) + private String userId; +} diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/ArticleDetailResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/ArticleDetailResultDTO.java index 059772e738..be9299e914 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/ArticleDetailResultDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/ArticleDetailResultDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto.result; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; import java.io.Serializable; @@ -11,6 +12,7 @@ import java.util.List; * @Auth wangc * @Date 2020-06-03 16:36 */ +@JsonIgnoreProperties(ignoreUnknown = true) @Data public class ArticleDetailResultDTO implements Serializable { private static final long serialVersionUID = 4659147595194692686L; @@ -49,4 +51,9 @@ public class ArticleDetailResultDTO implements Serializable { * 文章内容 * */ private List articleContentList; + + /** + * 客户Id + * */ + private String customerId; } 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 60cc6cb411..84e93b7568 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 @@ -296,8 +296,8 @@ public class ArticleController { * @author wangc * @date 2020.06.02 16:13 **/ - @PostMapping("toparticlelist") - public Result> topArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ + @PostMapping("resitoparticlelist") + public Result> resiTopArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); return new Result>().ok(articleService.getTopArticleList(commonArticleListFormDTO)); } @@ -309,10 +309,10 @@ public class ArticleController { * @author wangc * @date 2020.06.03 09:53 **/ - @PostMapping("latestarticlemsg") - public Result> latestArticleMsg(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ + @PostMapping("resilatestarticlelist") + public Result> resiLatestArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); - return new Result>().ok(articleService.getLatestArticleMsg(commonArticleListFormDTO)); + return new Result>().ok(articleService.getLatestArticleList(commonArticleListFormDTO)); } /** @@ -322,9 +322,22 @@ public class ArticleController { * @author wangc * @date 2020.06.03 14:19 **/ - @PostMapping("articlelist") - public Result> articleList(@RequestBody ArticlePageFormDTO articlePageFormDTO){ + @PostMapping("resiarticlelist") + public Result> resiArticleList(@RequestBody ArticlePageFormDTO articlePageFormDTO){ ValidatorUtils.validateEntity(articlePageFormDTO,ArticlePageFormDTO.ArticlePageInternalGroup.class); return new Result>().ok(articleService.getArticleList(articlePageFormDTO)); } + + /** + * @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)); + } } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java index fbb71c63ce..57fa72015c 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java @@ -129,7 +129,7 @@ public interface ArticleDao extends BaseDao { List selectArticleList(@Param("gridId") String gridId,@Param("tagIdList")List tagIdList); /** - * @Description 查询文章详情 + * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL * @param gridId * @param articleId * @return ArticleDetailResultDTO 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 e925a7607c..7936148774 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 @@ -22,14 +22,9 @@ 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.ArticleGridResultDTO; -import com.epmet.dto.result.GovArticleDetailResultDTO; -import com.epmet.dto.result.PublishAgencyListResultDTO; +import com.epmet.dto.result.*; import com.epmet.dto.form.ArticlePageFormDTO; import com.epmet.dto.form.CommonArticleListFormDTO; -import com.epmet.dto.result.ArticleBannerResultDTO; -import com.epmet.dto.result.ArticleLatestResultDTO; -import com.epmet.dto.result.ArticleListResultDTO; import com.epmet.entity.ArticleEntity; @@ -208,7 +203,7 @@ public interface ArticleService extends BaseService { * @author wangc * @date 2020.06.03 09:53 **/ - List getLatestArticleMsg(CommonArticleListFormDTO commonArticleListFormDTO); + List getLatestArticleList(CommonArticleListFormDTO commonArticleListFormDTO); /** * @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 @@ -218,4 +213,13 @@ public interface ArticleService extends BaseService { * @date 2020.06.03 14:19 **/ List getArticleList(ArticlePageFormDTO articlePageFormDTO); + + /** + * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL + * @param articleDetailFormDTO + * @return ArticleDetailResultDTO + * @author wangc + * @date 2020.06.03 18:28 + **/ + ArticleDetailResultDTO getArticleDetail(ResiArticleDetailFormDTO articleDetailFormDTO); } \ 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 dcdcf9daa5..b2ab64eb21 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 @@ -37,6 +37,7 @@ import com.epmet.constant.DraftConstant; import com.epmet.constant.RoleKeyConstants; import com.epmet.dao.*; import com.epmet.dto.ArticleDTO; +import com.epmet.dto.ArticleVisitRecordDTO; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerStaffDTO; import com.epmet.dto.feign.GovOrgSelfFeignClient; @@ -54,6 +55,7 @@ import com.epmet.redis.ArticleRedis; import com.epmet.service.ArticleOperateRecordService; import com.epmet.service.ArticlePublishRangeService; import com.epmet.service.ArticleService; +import com.epmet.utils.ModuleConstant; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -622,7 +624,7 @@ public class ArticleServiceImpl extends BaseServiceImpl getLatestArticleMsg(CommonArticleListFormDTO commonArticleListFormDTO) { + public List getLatestArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { return baseDao.selectLatestArticleMsg(commonArticleListFormDTO.getGridId(), null == commonArticleListFormDTO.getNum() || commonArticleListFormDTO.getNum() <= NumConstant.ZERO ? NumConstant.FIVE : commonArticleListFormDTO.getNum()); @@ -641,4 +643,38 @@ public class ArticleServiceImpl extends BaseServiceImpl 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 existedVisitRecord = articleVisitRecordService.list(params); + //3.没有则插入 + if(null == existedVisitRecord || existedVisitRecord.size() < NumConstant.ONE){ + ArticleVisitRecordEntity recordToInsert = new ArticleVisitRecordEntity(); + recordToInsert.setArticleId(articleDetailFormDTO.getArticleId()); + recordToInsert.setGridId(articleDetailFormDTO.getGridId()); + recordToInsert.setUserId(articleDetailFormDTO.getUserId()); + recordToInsert.setCustomerId(articleInfo.getCustomerId()); + articleVisitRecordService.insert(recordToInsert); + } + + return articleInfo; + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java index dc622799f3..e0f5c0d74e 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java @@ -28,11 +28,13 @@ import com.epmet.dto.ArticleVisitRecordDTO; import com.epmet.entity.ArticleVisitRecordEntity; import com.epmet.redis.ArticleVisitRecordRedis; import com.epmet.service.ArticleVisitRecordService; +import com.epmet.utils.ModuleConstant; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + import java.util.Arrays; import java.util.List; import java.util.Map; @@ -67,10 +69,16 @@ public class ArticleVisitRecordServiceImpl extends BaseServiceImpl getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); - + String gridId = (String)params.get(ModuleConstant.FIELD_GRID_ID_CAMEL); + String userId = (String)params.get(ModuleConstant.FIELD_USER_ID_CAMEL); + String articleId = (String)params.get(ModuleConstant.FIELD_ARTICLE_ID_CAMEL); + String delFlag = (String)params.get(FieldConstant.DEL_FLAG_HUMP); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - + wrapper.eq(StringUtils.isNotBlank(gridId),ModuleConstant.FIELD_GRID_ID,gridId); + wrapper.eq(StringUtils.isNotBlank(userId),ModuleConstant.FIELD_USER_ID,userId); + wrapper.eq(StringUtils.isNotBlank(articleId), ModuleConstant.FIELD_ARTICLE_ID,articleId); + wrapper.eq(StringUtils.isNotBlank(delFlag),FieldConstant.DEL_FLAG,delFlag); return wrapper; } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/utils/ModuleConstant.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/utils/ModuleConstant.java new file mode 100644 index 0000000000..1aa334094d --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/utils/ModuleConstant.java @@ -0,0 +1,52 @@ +package com.epmet.utils; + +/** + * 常量类 + * */ +public interface ModuleConstant { + /** + * 数据库列名 - 网格ID + * */ + String FIELD_GRID_ID = "GRID_ID"; + + /** + * 实体属性名 - 网格ID + * */ + String FIELD_GRID_ID_CAMEL = "gridId"; + + /** + * 数据库列名 - 客户ID + * */ + String FIELD_CUSTOMER_ID = "CUSTOMER_ID"; + + /** + * 实体属性名 - 客户ID + * */ + String FIELD_CUSTOMER_ID_CAMEL = "customerId"; + + /** + * 数据库列名 - 用户ID + * */ + String FIELD_USER_ID = "USER_ID"; + + /** + * 实体属性名 - 用户ID + * */ + String FIELD_USER_ID_CAMEL = "userId"; + + /** + * 数据库列名 - 文章ID + * */ + String FIELD_ARTICLE_ID = "ARTICLE_ID"; + + /** + * 实体属性名 - 文章ID + * */ + String FIELD_ARTICLE_ID_CAMEL = "articleId"; + + /** + * 文章未找到异常模板 + * */ + String SPECIFIED_ARTICLE_NOT_FOUND_EXCEPTION_TEMPLATE = "未找到指定文章,文章Id:【%s】,发布网格Id:【%s】,可能原因:没有该文章或者请求网格不在该文章发布范围内。"; + +} diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml index 033ff015c9..c41aafc19f 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml @@ -159,7 +159,7 @@ ARTICLE_COVER cover WHERE NOT EXISTS( - SELECT 1 FROM ARTICLE_COVER WHERE DEL_FLAG = '0' AND ARTICLE_ID = cover.ARTICLE_ID AND AUDIT_STATUS = 'pass' AND cover.CREATED_TIME < CREATED_TIME) + SELECT 1 FROM ARTICLE_COVER WHERE DEL_FLAG = '0' AND ARTICLE_ID = cover.ARTICLE_ID AND AUDIT_STATUS = 'pass' AND cover.CREATED_TIME CREATED_TIME) AND cover.DEL_FLAG = '0' AND cover.AUDIT_STATUS = 'pass' @@ -238,7 +238,8 @@ art.TAGS AS tags, content2.CONTENT, content2.CONTENT_TYPE, - (SELECT COUNT(1) FROM ARTICLE_VISIT_RECORD WHERE DEL_FLAG = '0' AND ARTICLE_ID = #{articleId} AND GRID_ID = #{gridId}) AS visitRecordCount + (SELECT COUNT(1) FROM ARTICLE_VISIT_RECORD WHERE DEL_FLAG = '0' AND ARTICLE_ID = #{articleId} AND GRID_ID = #{gridId}) AS visitRecordCount, + art.CUSTOMER_ID FROM ARTICLE art LEFT JOIN ( diff --git a/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java b/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java new file mode 100644 index 0000000000..5602cabf48 --- /dev/null +++ b/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 居民端首页轮播查询接口DTO + * @ClassName ArticleBannerFormDTO + * @Auth wangc + * @Date 2020-06-02 11:20 + */ +@Data +public class CommonArticleListFormDTO implements Serializable { + private static final long serialVersionUID = 5996259506950697451L; + + /** + * 内部错误分组 + * */ + public interface ArticleBannerInternalGroup{} + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空" , groups = {ArticleBannerInternalGroup.class}) + private String gridId; + + /** + * 客户定制化条数(高级配置里的参数) + * */ + private Integer num; + +} diff --git a/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ArticleBannerResultDTO.java b/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ArticleBannerResultDTO.java new file mode 100644 index 0000000000..c88dc10f22 --- /dev/null +++ b/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ArticleBannerResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @ClassName ArticleBannerResultDTO + * @Auth wangc + * @Date 2020-06-02 13:55 + */ +@Data +public class ArticleBannerResultDTO implements Serializable { + private static final long serialVersionUID = 7764443348626371305L; + + /** + * 文章Id + * */ + private String articleId; + + /** + * 封面图url + * */ + private String coverImg; + + /** + * 标题 + * */ + private String title; +} diff --git a/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ArticleLatestResultDTO.java b/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ArticleLatestResultDTO.java new file mode 100644 index 0000000000..ce5420f22e --- /dev/null +++ b/epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ArticleLatestResultDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @ClassName ArticleLatestResultDTO + * @Auth wangc + * @Date 2020-06-02 17:11 + */ +@Data +public class ArticleLatestResultDTO implements Serializable { + private static final long serialVersionUID = 6953266228209247094L; + + /** + * 文章Id + * */ + private String articleId; + + /** + * 文章封面图片url + * */ + private String articleCoverImg; + + /** + * 文章标题 + * */ + private String articleTitle; + + /** + * 发布单位名称 + * */ + private String publishName; + + /** + * 发布时间(天级别) 时间戳 + * */ + private String publishDate; +} diff --git a/epmet-module/resi-home/resi-home-server/pom.xml b/epmet-module/resi-home/resi-home-server/pom.xml index cb97219777..d95ed1fd32 100644 --- a/epmet-module/resi-home/resi-home-server/pom.xml +++ b/epmet-module/resi-home/resi-home-server/pom.xml @@ -62,6 +62,12 @@ 2.0.0 compile + + com.epmet + gov-voice-client + 2.0.0 + compile + diff --git a/epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/controller/VoiceController.java b/epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/controller/VoiceController.java index 7e05f3c359..da34a9f1e0 100644 --- a/epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/controller/VoiceController.java +++ b/epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/controller/VoiceController.java @@ -1,11 +1,50 @@ package com.epmet.controller; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.feign.GovVoiceFeignClient; +import com.epmet.dto.form.CommonArticleListFormDTO; +import com.epmet.dto.result.ArticleBannerResultDTO; +import com.epmet.dto.result.ArticleLatestResultDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("voice") public class VoiceController { - //最新党建声音列表 - //首页轮播图列表 + + @Autowired + private GovVoiceFeignClient govVoiceFeignClient; + + /** + * @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 + * @param commonArticleListFormDTO :: getGridId :: getNum + * @return List + * @author wangc + * @date 2020.06.02 16:13 + **/ + @PostMapping("toparticlelist") + public Result> topArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ + ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); + return govVoiceFeignClient.resiTopArticleList(commonArticleListFormDTO); + } + + /** + * @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端首页最新文章列表 + * @param commonArticleListFormDTO :: getGridId :: getNum + * @return List + * @author wangc + * @date 2020.06.03 09:53 + **/ + @PostMapping("latestarticlelist") + public Result> latestArticleList(@RequestBody CommonArticleListFormDTO commonArticleListFormDTO){ + ValidatorUtils.validateEntity(commonArticleListFormDTO, CommonArticleListFormDTO.ArticleBannerInternalGroup.class); + return govVoiceFeignClient.resiLatestArticleList(commonArticleListFormDTO); + } + } diff --git a/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ArticlePageFormDTO.java b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ArticlePageFormDTO.java new file mode 100644 index 0000000000..f15a296854 --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ArticlePageFormDTO.java @@ -0,0 +1,43 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @Description 居民端查看文章列表参数DTO + * @ClassName ArticlePageFormDTO + * @Auth wangc + * @Date 2020-06-03 14:21 + */ + +@Data +public class ArticlePageFormDTO implements Serializable { + private static final long serialVersionUID = -6201259689082896334L; + + public interface ArticlePageInternalGroup{} + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空" , groups = {ArticlePageInternalGroup.class}) + private String gridId; + + /** + * 标签Id集合 + * */ + private List tagIdList; + + /** + * 页码 + * */ + private Integer pageNo = 1; + + /** + * 每页显示量 + * */ + private Integer pageSize = 10; + +} diff --git a/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java new file mode 100644 index 0000000000..5602cabf48 --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 居民端首页轮播查询接口DTO + * @ClassName ArticleBannerFormDTO + * @Auth wangc + * @Date 2020-06-02 11:20 + */ +@Data +public class CommonArticleListFormDTO implements Serializable { + private static final long serialVersionUID = 5996259506950697451L; + + /** + * 内部错误分组 + * */ + public interface ArticleBannerInternalGroup{} + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空" , groups = {ArticleBannerInternalGroup.class}) + private String gridId; + + /** + * 客户定制化条数(高级配置里的参数) + * */ + private Integer num; + +} diff --git a/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiArticleDetailFormDTO.java b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiArticleDetailFormDTO.java new file mode 100644 index 0000000000..87de7f5045 --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiArticleDetailFormDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 居民端查看文章详情传参DTO + * @ClassName ResiArticleDetailFormDTO + * @Auth wangc + * @Date 2020-06-04 09:20 + */ +@Data +public class ResiArticleDetailFormDTO implements Serializable { + private static final long serialVersionUID = -7197489284630455909L; + + public interface ResiArticleDetailInternalGroup{} + + /** + * 网格Id + * */ + @NotBlank(message = "网格Id不能为空",groups = ResiArticleDetailInternalGroup.class) + private String gridId; + + /** + * 文章Id + * */ + @NotBlank(message = "文章Id不能为空",groups = ResiArticleDetailInternalGroup.class) + private String articleId; + + /** + * 用户Id + * */ + @NotBlank(message = "用户Id不能为空",groups = ResiArticleDetailInternalGroup.class) + private String userId; +} diff --git a/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleContentResultDTO.java b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleContentResultDTO.java new file mode 100644 index 0000000000..9b12f89213 --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleContentResultDTO.java @@ -0,0 +1,26 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @ClassName ArticleContentResultDTO + * @Auth wangc + * @Date 2020-06-03 16:41 + */ +@Data +public class ArticleContentResultDTO implements Serializable { + private static final long serialVersionUID = 2853197212163051558L; + + /** + * 内容类型(图片:img;文字:text) + * */ + private String contentType; + + /** + * 内容 + * */ + private String content; +} diff --git a/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleDetailResultDTO.java b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleDetailResultDTO.java new file mode 100644 index 0000000000..30adfb5e3e --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleDetailResultDTO.java @@ -0,0 +1,55 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @ClassName ArticleDetailResultDTO + * @Auth wangc + * @Date 2020-06-03 16:36 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class ArticleDetailResultDTO implements Serializable { + private static final long serialVersionUID = 4659147595194692686L; + + /** + * 文章Id + * */ + private String articleId; + + /** + * 文章标题 + * */ + private String articleTitle; + + /** + * 文章发布单位名称 + * */ + private String publishUnitDesc; + + /** + * 发布时间 + * */ + private String publishDate; + + /** + * 文章当前网格阅读量(article_visit_record统计数) + * */ + private Integer visitRecordCount; + + /** + * 标签名称集合(竖线分隔) + * */ + private String tags; + + /** + * 文章内容 + * */ + private List articleContentList; + +} diff --git a/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleListResultDTO.java b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleListResultDTO.java new file mode 100644 index 0000000000..04d4f14a27 --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/result/ArticleListResultDTO.java @@ -0,0 +1,46 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @ClassName ArticleListResultDTO + * @Auth wangc + * @Date 2020-06-03 10:59 + */ +@Data +public class ArticleListResultDTO implements Serializable { + private static final long serialVersionUID = 293527138997974861L; + /** + * 文章Id + * */ + private String articleId; + + /** + * 文章标题 + * */ + private String articleTitle; + + /** + * 发布单位名称 + * */ + private String publishName; + + /** + * 发布时间(天级别) + * */ + private String publishDate; + + /** + * 文章发布内容(只截取前50字) + * */ + private String articleContent; + + /** + * 标签名称集合(竖线分隔) + * */ + private String tagName; + +} diff --git a/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/controller/ArticleController.java b/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/controller/ArticleController.java index acccfad232..9096383be1 100644 --- a/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/controller/ArticleController.java +++ b/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/controller/ArticleController.java @@ -6,9 +6,9 @@ import com.epmet.commons.tools.enums.RequirePermissionEnum; 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.ResiTagListFormDTO; -import com.epmet.dto.form.TagCascadeListFormDTO; -import com.epmet.dto.result.TagInfoResultDTO; +import com.epmet.dto.feign.GovVoiceFeignClient; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; import com.epmet.service.ArticleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -24,6 +24,8 @@ public class ArticleController { @Autowired private ArticleService articleService; + @Autowired + private GovVoiceFeignClient govVoiceFeignClient; /** * @Description 首页标签及更多——居民端 @@ -49,4 +51,31 @@ public class ArticleController { return new Result>().ok(articleService.tagCascadeList(tokenDto,formDto)); } + /** + * @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 + * @param articlePageFormDTO + * @return List + * @author wangc + * @date 2020.06.03 14:19 + **/ + @PostMapping("articlelist") + public Result> articleList(@RequestBody ArticlePageFormDTO articlePageFormDTO){ + ValidatorUtils.validateEntity(articlePageFormDTO,ArticlePageFormDTO.ArticlePageInternalGroup.class); + return govVoiceFeignClient.resiArticleList(articlePageFormDTO); + } + + /** + * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL + * @param articleDetailFormDTO + * @return ArticleDetailResultDTO + * @author wangc + * @date 2020.06.03 18:28 + **/ + @PostMapping("articledetail") + public Result articleDetail(@LoginUser TokenDto tokenDto,@RequestBody ResiArticleDetailFormDTO articleDetailFormDTO){ + articleDetailFormDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(articleDetailFormDTO,ResiArticleDetailFormDTO.ResiArticleDetailInternalGroup.class); + return govVoiceFeignClient.resiArticleDetail(articleDetailFormDTO); + } + }