From 0a2ed77683ea2b61d9cbcb79dedb5340c945be8a Mon Sep 17 00:00:00 2001 From: zxc <954985706@qq.com> Date: Tue, 2 Jun 2020 17:22:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=85=E6=B0=91=E7=AB=AF=E5=B7=B2=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E5=88=97=E8=A1=A8=E9=A1=B5=E7=9A=84=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/feign/GovVoiceFeignClient.java | 31 +++++++++++++++++ .../fallback/GovVoiceFeignClientFallBack.java | 23 +++++++++++++ .../epmet/dto/form/ResiTagListFormDto.java | 30 ++++++++++++++++ .../gov-voice/gov-voice-server/pom.xml | 5 +++ .../java/com/epmet/constant/TagConstant.java | 5 +++ .../com/epmet/controller/TagController.java | 7 +++- .../main/java/com/epmet/dao/ArticleDao.java | 10 +++++- .../main/java/com/epmet/redis/TagRedis.java | 27 +++++++++++++++ .../java/com/epmet/service/TagService.java | 11 +++++- .../service/impl/ArticleServiceImpl.java | 3 -- .../epmet/service/impl/TagServiceImpl.java | 28 +++++++++++---- .../src/main/resources/mapper/ArticleDao.xml | 12 +++++++ .../epmet/dto/form/ResiTagListFormDto.java | 31 +++++++++++++++++ .../resi-voice/resi-voice-server/pom.xml | 5 +++ .../epmet/controller/ArticleController.java | 25 ++++++++++++++ .../com/epmet/service/ArticleService.java | 21 ++++++++++++ .../service/impl/ArticleServiceImpl.java | 34 +++++++++++++++++++ 17 files changed, 295 insertions(+), 13 deletions(-) create mode 100644 epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java create mode 100644 epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java create mode 100644 epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java create mode 100644 epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java create mode 100644 epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/ArticleService.java create mode 100644 epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java 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 new file mode 100644 index 0000000000..aa60bb70f0 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java @@ -0,0 +1,31 @@ +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.result.TagInfoResultDto; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * @Author zxc + * @CreateTime 2020/6/2 16:05 + * , url = "localhost:8105" + */ +@FeignClient(name = ServiceConstant.GOV_VOICE_SERVER, fallback = GovVoiceFeignClientFallBack.class, url = "localhost:8105") +public interface GovVoiceFeignClient { + + /** + * @Description 已发布列表页的标签——居民端 + * @param formDto + * @author zxc + */ + @PostMapping("/gov/voice/tag/resitaglist") + Result> resiTagList(@RequestBody ResiTagListFormDto formDto); + +} 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 new file mode 100644 index 0000000000..a8ad4e7af3 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java @@ -0,0 +1,23 @@ +package com.epmet.dto.feign.fallback; + +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.result.TagInfoResultDto; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @Author zxc + * @CreateTime 2020/6/2 16:07 + */ +@Component +public class GovVoiceFeignClientFallBack implements GovVoiceFeignClient { + @Override + public Result> resiTagList(ResiTagListFormDto formDto) { + return ModuleUtils.feignConError(ServiceConstant.GOV_VOICE_SERVER, "resiTagList", formDto); + } +} diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java new file mode 100644 index 0000000000..b63fa61a8f --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java @@ -0,0 +1,30 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @CreateTime 2020/6/2 15:50 + */ +@Data +public class ResiTagListFormDto implements Serializable { + + private static final long serialVersionUID = 4337657473061285656L; + /** + * 网格id + */ + private String gridId; + + /** + * 用户id + */ + private String customerId; + + /** + * 用户id + */ + private String userId; +} diff --git a/epmet-module/gov-voice/gov-voice-server/pom.xml b/epmet-module/gov-voice/gov-voice-server/pom.xml index 09030c6c9b..1ae17d3e45 100644 --- a/epmet-module/gov-voice/gov-voice-server/pom.xml +++ b/epmet-module/gov-voice/gov-voice-server/pom.xml @@ -24,6 +24,11 @@ epmet-user-client 2.0.0 + + com.epmet + resi-voice-client + 2.0.0 + com.epmet epmet-commons-tools diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/TagConstant.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/TagConstant.java index 1ca78d3ac2..30697d832c 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/TagConstant.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/TagConstant.java @@ -25,6 +25,11 @@ public interface TagConstant { */ String GOV_RETAG_KEY = "epmet:customer:article:retag:"; + /** + * 网格热度标签 key的前缀 【zset】 + */ + String GRID_TAG_KEY = "epmet:grid:articletag:"; + /** * 冒号 */ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java index 61cb7fc94f..b7e0a0b73f 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java @@ -3,6 +3,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.ResiTagListFormDto; import com.epmet.dto.result.TagInfoResultDto; import com.epmet.service.TagService; import org.springframework.beans.factory.annotation.Autowired; @@ -20,7 +21,7 @@ public class TagController { private TagService tagService; /** - * @Description 已发布列表页的标签 + * @Description 已发布列表页的标签——政府端 * @param tokenDto * @author zxc */ @@ -29,5 +30,9 @@ public class TagController { return new Result>().ok(tagService.tagList(tokenDto)); } + @PostMapping("resitaglist") + public Result> resiTagList(@LoginUser ResiTagListFormDto formDto){ + return new Result>().ok(tagService.resiTagList(formDto)); + } } 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 d9c4204004..e04c6d8231 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 @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.ResiTagListFormDto; import com.epmet.entity.ArticleEntity; import org.apache.ibatis.annotations.Mapper; @@ -29,5 +30,12 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ArticleDao extends BaseDao { - + + /** + * @Description + * @param formDto + * @author zxc + */ + Integer checkPublishArticle(ResiTagListFormDto formDto); + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/redis/TagRedis.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/redis/TagRedis.java index 35117b41c3..143a86df45 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/redis/TagRedis.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/redis/TagRedis.java @@ -48,6 +48,11 @@ public class TagRedis { return null; } + /** + * @Description 获取标签(政府端),按使用次数倒叙 + * @param key == customerId + * @author zxc + */ public List zRevRange(String key){ long start = 0; long end = -1; @@ -65,4 +70,26 @@ public class TagRedis { return result; } + /** + * @Description 获取标签(居民端) + * @param key == gridId + * @author zxc + */ + public List zGridRevRange(String key){ + long start = 0; + long end = -1; + String tagKey = TagConstant.GRID_TAG_KEY+key; + Set objects = redisUtils.zRevRange(tagKey, start, end); + if (objects.size()== NumConstant.ZERO){ + return new ArrayList<>(); + } + List result = new ArrayList(); + ObjectMapper objectMapper = new ObjectMapper(); + for (Object object : objects) { + TagInfoResultDto tagInfoResultDto = objectMapper.convertValue(object, TagInfoResultDto.class); + result.add(tagInfoResultDto); + } + return result; + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagService.java index 681d43da18..10f325e9d3 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagService.java @@ -1,6 +1,8 @@ package com.epmet.service; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.form.ResiTagListFormDto; import com.epmet.dto.result.TagInfoResultDto; import java.util.List; @@ -8,10 +10,17 @@ import java.util.List; public interface TagService { /** - * @Description 已发布列表页的标签 + * @Description 已发布列表页的标签——政府端 * @param tokenDto * @author zxc */ List tagList(TokenDto tokenDto); + /** + * @Description 已发布列表页的标签——居民端 + * @param formDto + * @author zxc + */ + List resiTagList( ResiTagListFormDto formDto); + } \ 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 3b082d2776..afd4c22b29 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 @@ -69,9 +69,6 @@ public class ArticleServiceImpl extends BaseServiceImpl tagList(TokenDto tokenDto) { - TagCustomerFormDTO formDTO = new TagCustomerFormDTO(); - formDTO.setUserId(tokenDto.getUserId()); - TagCustomerResultDTO data = epmetUserFeignClient.getCustomerIdByUserId(formDTO).getData(); - if (StringUtils.isBlank(data.getCustomerId())){ + String customerId = tokenDto.getCustomerId(); + List resultDtos = tagRedis.zRevRange(customerId); + return resultDtos; + } + + /** + * @Description 已发布列表页的标签——居民端 + * @param formDto + * @author zxc + */ + @Override + public List resiTagList(ResiTagListFormDto formDto) { + Integer articleCounts = articleDao.checkPublishArticle(formDto); + if (articleCounts== NumConstant.ZERO){ return new ArrayList<>(); } - List resultDtos = tagRedis.zRevRange(data.getCustomerId()); - return resultDtos; + return tagRedis.zGridRevRange(formDto.getGridId()); } } \ No newline at end of file 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 488e2fe7cd..12c869c5f2 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 @@ -3,4 +3,16 @@ + + \ No newline at end of file diff --git a/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java new file mode 100644 index 0000000000..1c7de733b7 --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java @@ -0,0 +1,31 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @CreateTime 2020/6/2 15:50 + */ +@Data +public class ResiTagListFormDto implements Serializable { + private static final long serialVersionUID = -794399801200532922L; + + /** + * 网格id + */ + @NotBlank(message = "网格id不能为空") + private String gridId; + + /** + * 客户id + */ + private String customerId; + + /** + * 用户id + */ + private String userId; +} diff --git a/epmet-module/resi-voice/resi-voice-server/pom.xml b/epmet-module/resi-voice/resi-voice-server/pom.xml index 702124f779..836d94fe43 100644 --- a/epmet-module/resi-voice/resi-voice-server/pom.xml +++ b/epmet-module/resi-voice/resi-voice-server/pom.xml @@ -19,6 +19,11 @@ resi-voice-client 2.0.0 + + com.epmet + gov-voice-client + 2.0.0 + com.epmet epmet-commons-tools 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 46cce7aeed..68cd236d45 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 @@ -1,9 +1,34 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.ResiTagListFormDto; +import com.epmet.dto.result.TagInfoResultDto; +import com.epmet.service.ArticleService; +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("article") public class ArticleController { + + @Autowired + private ArticleService articleService; + + /** + * @Description 首页标签及更多——居民端 + * @param formDto + * @author zxc + */ + @PostMapping("taglist") + public Result> resiTagList(@LoginUser TokenDto tokenDto, @RequestBody ResiTagListFormDto formDto){ + return new Result>().ok(articleService.resiTagList(tokenDto,formDto)); + } + } diff --git a/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/ArticleService.java b/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/ArticleService.java new file mode 100644 index 0000000000..5d58c7f4cd --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/ArticleService.java @@ -0,0 +1,21 @@ +package com.epmet.service; + +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.form.ResiTagListFormDto; +import com.epmet.dto.result.TagInfoResultDto; + +import java.util.List; + +/** + * @Author zxc + * @CreateTime 2020/6/2 15:59 + */ +public interface ArticleService { + + /** + * @Description 首页标签及更多——居民端 + * @param formDto + * @author zxc + */ + List resiTagList(TokenDto tokenDto, ResiTagListFormDto formDto); +} diff --git a/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java new file mode 100644 index 0000000000..96f8addfd4 --- /dev/null +++ b/epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -0,0 +1,34 @@ +package com.epmet.service.impl; + +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.feign.GovVoiceFeignClient; +import com.epmet.dto.form.ResiTagListFormDto; +import com.epmet.dto.result.TagInfoResultDto; +import com.epmet.service.ArticleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author zxc + * @CreateTime 2020/6/2 16:00 + */ +@Service +public class ArticleServiceImpl implements ArticleService { + + @Autowired + private GovVoiceFeignClient govVoiceFeignClient; + + /** + * @Description 首页标签及更多——居民端 + * @param formDto + * @author zxc + */ + @Override + public List resiTagList(TokenDto tokenDto, ResiTagListFormDto formDto) { + formDto.setCustomerId(tokenDto.getCustomerId()); + formDto.setUserId(tokenDto.getUserId()); + return govVoiceFeignClient.resiTagList(formDto).getData(); + } +}