From 334230fa31080caf471a035e7cbb5ee7e0a0a4bc Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 15 Mar 2022 17:18:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=85=E6=B0=91=E7=AB=AF=20=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=9C=80=E5=90=8E=E4=B8=80=E6=AC=A1=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=20=E6=B7=BB=E5=8A=A0=E5=BC=83=E7=94=A8?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redis/common/bean/GridInfoCache.java | 5 +++ .../service/impl/ResiMineGridServiceImpl.java | 38 ++++++++++++++++--- .../epmet/dto/form/LatestGridInfoFormDTO.java | 5 +++ .../epmet/feign/EpmetUserOpenFeignClient.java | 3 +- .../EpmetUserOpenFeignClientFallback.java | 2 +- .../controller/GridLatestController.java | 4 +- .../java/com/epmet/dao/GridLatestDao.java | 2 +- .../com/epmet/service/GridLatestService.java | 2 +- .../service/impl/GridLatestServiceImpl.java | 3 +- .../main/resources/mapper/GridLatestDao.xml | 2 +- 10 files changed, 50 insertions(+), 16 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/GridInfoCache.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/GridInfoCache.java index cf90afee5b..63114e5794 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/GridInfoCache.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/GridInfoCache.java @@ -113,4 +113,9 @@ public class GridInfoCache implements Serializable { * 坐标区域 */ private String coordinates; + + /** + * 弃用标记 + */ + private Integer abandonFlag; } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java index de5e28a457..f77f59e033 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONObject; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.HttpClientManager; @@ -116,26 +118,50 @@ public class ResiMineGridServiceImpl implements ResiMineGridService { JSONObject toResult = JSON.parseObject(data); Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class); if (null != toResult.get("code")) { - mapToResult.setCode(((Integer) toResult.get("code")).intValue()); + mapToResult.setCode((Integer) toResult.get("code")); } if (!mapToResult.success()) { logger.error(String.format("根据appId查询客户信息失败,对应appId->" + formDTO.getAppId())); throw new RenException(mapToResult.getMsg()); } - Object PublicCustomerResultDTO = mapToResult.getData(); - JSONObject json = JSON.parseObject(PublicCustomerResultDTO.toString()); - Map map = (Map) json.get("customer"); + Object publicCustomerResultDTO = mapToResult.getData(); + JSONObject json = JSON.parseObject(publicCustomerResultDTO.toString()); + Map map = (Map) json.get("customer"); PaCustomerDTO customer = ConvertUtils.mapToEntity(map, PaCustomerDTO.class); logger.info("小程序登陆third服务获取客户用户信息PaCustomerDTO->" + customer); //2.调用epmet-user服务,根据客户Id和用户Id查询最后一次访问记录 + LatestGridInfoResultDTO result = null; formDTO.setCustomerId(customer.getId()); - Result userResult = epmetUserOpenFeignClient.latestGridInfo(formDTO); + Result> userResult = epmetUserOpenFeignClient.latestGridList(formDTO); if (!userResult.success()) { logger.error(String.format("居民端获取用户最近访问网格失败,接口入参客户Id->%s,appId->%s,调用epmet-user-server服务返回->%s", formDTO.getCustomerId(), formDTO.getAppId(), JSON.toJSONString(userResult))); + return result; } - return userResult.getData(); + for (LatestGridInfoResultDTO girdInfo : userResult.getData()) { + try { + GridInfoCache grid = CustomerOrgRedis.getGridInfo(girdInfo.getGridId()); + if (grid == null) { + logger.warn("latestGridInfo get gridInfo return null,gridId:{}", girdInfo.getGridId()); + continue; + } else { + Integer abandonFlag = grid.getAbandonFlag(); + if (NumConstant.ONE == abandonFlag) { + logger.warn("latestGridInfo gridId:{} has abandoned", girdInfo.getGridId()); + continue; + } else { + result = girdInfo; + //匹配到了未弃用的网格 跳出 + break; + } + } + } catch (Exception e) { + logger.warn("latestGridInfo get gridInfo exception,gridId:{}", girdInfo.getGridId()); + } + } + + return result; } /** diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestGridInfoFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestGridInfoFormDTO.java index 3df970fc0c..7f32733eb8 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestGridInfoFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestGridInfoFormDTO.java @@ -35,4 +35,9 @@ public class LatestGridInfoFormDTO implements Serializable { */ private String userId; + /** + * 前n个 默认10 + */ + private Integer top = 10; + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 415f818abe..849850e01a 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -1,7 +1,6 @@ package com.epmet.feign; -import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.security.dto.TokenDto; @@ -260,7 +259,7 @@ public interface EpmetUserOpenFeignClient { * @Date 2020/8/3 **/ @PostMapping(value = "epmetuser/gridlatest/latestgridinfo") - Result latestGridInfo(@RequestBody LatestGridInfoFormDTO formDTO); + Result> latestGridList(@RequestBody LatestGridInfoFormDTO formDTO); /** * @Description 查询工作人员的信息 diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 0f9f38ea5c..f614e8ea46 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -180,7 +180,7 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien } @Override - public Result latestGridInfo(LatestGridInfoFormDTO formDTO) { + public Result> latestGridList(LatestGridInfoFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "latestGridInfo", formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java index c470d793a9..f1faa9a29a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java @@ -139,8 +139,8 @@ public class GridLatestController { * @Date 2020/8/3 **/ @PostMapping("latestgridinfo") - public Result latestGridInfo(@RequestBody LatestGridInfoFormDTO formDTO){ - return new Result().ok(gridLatestService.latestGridInfo(formDTO)); + public Result> latestGridInfo(@RequestBody LatestGridInfoFormDTO formDTO){ + return new Result>().ok(gridLatestService.latestGridInfo(formDTO)); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java index 979ac85a5f..7e28dc8154 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java @@ -73,5 +73,5 @@ public interface GridLatestDao extends BaseDao { * @Description 单客户-根据客户Id和userId查询用户最后一次访问的网格 * @Date 2020/8/3 **/ - LatestGridInfoResultDTO selectLatestGridInfo(LatestGridInfoFormDTO formDTO); + List selectLatestGridInfo(LatestGridInfoFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java index e9ff239d1e..4716ff8bcd 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java @@ -139,5 +139,5 @@ public interface GridLatestService extends BaseService { * @Description 单客户-根据客户Id和userId查询用户最后一次访问的网格 * @Date 2020/8/3 **/ - LatestGridInfoResultDTO latestGridInfo(LatestGridInfoFormDTO formDTO); + List latestGridInfo(LatestGridInfoFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java index 58f9383078..ad2f79f266 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java @@ -36,7 +36,6 @@ import com.epmet.dto.result.CustomerUser4PointResultDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.entity.GridLatestEntity; -import com.epmet.feign.EpmetHeartOpenFeignClient; import com.epmet.redis.UserBaseInfoRedis; import com.epmet.service.GridLatestService; import com.epmet.util.ModuleConstant; @@ -205,7 +204,7 @@ public class GridLatestServiceImpl extends BaseServiceImpl latestGridInfo(LatestGridInfoFormDTO formDTO) { return baseDao.selectLatestGridInfo(formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml index 59f1be1af7..b06b1a8069 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml @@ -109,6 +109,6 @@ AND gl.CUSTOMER_USER_ID = #{userId} ORDER BY gl.LATEST_TIME DESC - LIMIT 1 + LIMIT #{top}