Pārlūkot izejas kodu

开门超时事件增加商户推送

tanbin 1 gadu atpakaļ
vecāks
revīzija
62f4cbda86

+ 27 - 1
device-api-service/src/main/java/com/xy/service/DeviceMqttConsumerImpl.java

@@ -305,6 +305,7 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
             Long mercId = deviceEventMsg.getMercId();
             LocalDateTime createTime = deviceEventMsg.getCreateTime();
             String msg = deviceEventMsg.getMsg();
+            String code = deviceEventMsg.getCode();
             Long configId = MsgConfigId.DEVICE_EXCEPTION.getId();
             MsgConfigDto.Vo msgConfig = R.feignCheckData(msgSendApiService.getMsgConfig(new MsgConfigDto.Vo().setId(configId)));
             List<MsgConfigTestDto.BizParam> bizParams = R.feignCheckData(msgSendApiService.getBizParamByMsgConfig(new MsgConfigTestDto.MsgConfig().setConfigId(configId)));
@@ -318,9 +319,34 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
                 } else {
                     deviceName = deviceName + "(" + deviceId + ")";
                 }
-                //TODO 获取售后及售后创建的角色用户
+                //  获取售后及售后创建的角色用户
                 UserInfoDto.SaleBackUsersVO saleBackUsersVO = R.feignCheckData(userInfoService.getSaleBackUsers());
                 List<String> mpOpenIds = saleBackUsersVO.getMpOpenIds();
+                //开门超时事件增加商户推送 ERR0020
+                if ("ERR0020".equals(code)) {
+                    MercDto.Vo merc = R.feignCheckData(mercFeignService.obj(new MercDto.ListDTO().setId(mercId)));
+                    Long userInfoId = merc.getUserInfoId();
+                    List<Long> userInfoIdList = new ArrayList<>();
+                    userInfoIdList.add(userInfoId);
+                    List<MercUserDeviceDto.Vo> mercUserDevices = R.feignCheckData(mercFeignService.mercDeviceUsers(
+                            new MercUserDeviceDto.Vo().setMercId(mercId).setDeviceId(deviceId)));
+                    if (CollUtil.isNotEmpty(mercUserDevices)) {
+                        mercUserDevices.forEach(mud -> {
+                            Long deviceIdUser = mud.getDeviceId();
+                            if (deviceId == deviceIdUser) {
+                                userInfoIdList.add(mud.getUserId());
+                            }
+                        });
+                    }
+                    List<UserInfoDto.Vo> userInfoList = R.feignCheckData(userInfoService.list(new UserInfoDto.SelectListDto().setUserIds(userInfoIdList)));
+                    if (CollUtil.isNotEmpty(userInfoList)) {
+                        Set<String> mercMpOpenIds = userInfoList.stream().filter(u -> ObjectUtil.isNotEmpty(u.getMpOpenid()))
+                                .map(UserInfoDto.Vo::getMpOpenid)
+                                .collect(Collectors.toSet());
+                        mpOpenIds.addAll(mercMpOpenIds);
+                    }
+                }
+
                 if (CollUtil.isNotEmpty(mpOpenIds)) {
                     Set<String> mpIds = new HashSet<>(mpOpenIds);
                     for (MsgConfigTestDto.BizData b : bizDataList) {