|
@@ -198,6 +198,8 @@ public class MqttSubHandle {
|
|
|
msgUserDto.setUserId(userId);
|
|
msgUserDto.setUserId(userId);
|
|
|
msgUserDto.setPhone(userInfo.getPhone());
|
|
msgUserDto.setPhone(userInfo.getPhone());
|
|
|
msgUserDto.setUnionId(userInfo.getUnionId());
|
|
msgUserDto.setUnionId(userInfo.getUnionId());
|
|
|
|
|
+ msgUserDto.setMessageFlag(true);
|
|
|
|
|
+ msgUserDto.setServiceNumberFlag(true);
|
|
|
WxRelation wxRelation = wxRelationService.queryOneByUnionId(userInfo.getUnionId());
|
|
WxRelation wxRelation = wxRelationService.queryOneByUnionId(userInfo.getUnionId());
|
|
|
if (wxRelation != null) {
|
|
if (wxRelation != null) {
|
|
|
msgUserDto.setFwhOpenId(wxRelation.getFwhOpenId());
|
|
msgUserDto.setFwhOpenId(wxRelation.getFwhOpenId());
|
|
@@ -216,15 +218,52 @@ public class MqttSubHandle {
|
|
|
wxMsg.put("msgType", "fall");
|
|
wxMsg.put("msgType", "fall");
|
|
|
wxMsg.put("devName", devName.toString());
|
|
wxMsg.put("devName", devName.toString());
|
|
|
|
|
|
|
|
- log.info("发送网页跌倒主题消息:topic:{}, msg:{}", String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + userInfo.getUserId()), wxMsg.toString());
|
|
|
|
|
|
|
+ log.info("发送微信跌倒主题消息:topic:{}, msg:{}", String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + userInfo.getUserId()), wxMsg.toString());
|
|
|
mqttClient.sendMessage(String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + userInfo.getUserId()), wxMsg.toString(), 2, false);
|
|
mqttClient.sendMessage(String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + userInfo.getUserId()), wxMsg.toString(), 2, false);
|
|
|
- // 2 todo 被分享者
|
|
|
|
|
|
|
|
|
|
|
|
+ // 2 被分享者 - 根据标志位筛选并添加到发送列表
|
|
|
List<DevShare> shares = devShareService.queryConfirmedByDevId(dev.getDevId());
|
|
List<DevShare> shares = devShareService.queryConfirmedByDevId(dev.getDevId());
|
|
|
if (!CollectionUtils.isEmpty(shares)) {
|
|
if (!CollectionUtils.isEmpty(shares)) {
|
|
|
for (DevShare share : shares) {
|
|
for (DevShare share : shares) {
|
|
|
- log.info("发送网页跌倒主题消息:topic:{}, msg:{}", String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + share.getSharedUserId()), wxMsg.toString());
|
|
|
|
|
|
|
+ // 发送微信跌倒主题消息
|
|
|
|
|
+ log.info("发送微信跌倒主题消息:topic:{}, msg:{}", String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + share.getSharedUserId()), wxMsg.toString());
|
|
|
mqttClient.sendMessage(String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + share.getSharedUserId()), wxMsg.toString(), 2, false);
|
|
mqttClient.sendMessage(String.format(TopicConstants.TOPIC_MPS_NOTIC, RedisCacheConstant.WX_USER_PRE + share.getSharedUserId()), wxMsg.toString(), 2, false);
|
|
|
|
|
+
|
|
|
|
|
+ // 创建被分享者的消息用户DTO
|
|
|
|
|
+ SendMsgUserDto msgUserShared = new SendMsgUserDto();
|
|
|
|
|
+ msgUserShared.setUserId(share.getSharedUserId());
|
|
|
|
|
+ msgUserShared.setPhone(share.getSharedPhone());
|
|
|
|
|
+
|
|
|
|
|
+ // 获取完整的分享信息(包含标志位)
|
|
|
|
|
+ DevShare devShare = devShareService.getById(share.getShareId());
|
|
|
|
|
+ if (devShare != null) {
|
|
|
|
|
+ // 将Integer类型的标志位转换为boolean类型:0-授权(true),1-拒绝(false)
|
|
|
|
|
+ boolean messageFlag = devShare.getMessageFlag() != null && devShare.getMessageFlag() == 0;
|
|
|
|
|
+ boolean serviceNumberFlag = devShare.getServiceNumberFlag() != null && devShare.getServiceNumberFlag() == 0;
|
|
|
|
|
+
|
|
|
|
|
+ msgUserShared.setMessageFlag(messageFlag);
|
|
|
|
|
+ msgUserShared.setServiceNumberFlag(serviceNumberFlag);
|
|
|
|
|
+
|
|
|
|
|
+ // 根据标志位决定是否添加到发送列表
|
|
|
|
|
+ // 只有当短信通知或服务号通知任一被授权时,才添加到发送列表
|
|
|
|
|
+ if (messageFlag || serviceNumberFlag) {
|
|
|
|
|
+ // 获取被分享者的微信关系信息
|
|
|
|
|
+ UserInfo sharedUserInfo = userService.queryById(share.getSharedUserId());
|
|
|
|
|
+ if (sharedUserInfo != null) {
|
|
|
|
|
+ msgUserShared.setUnionId(sharedUserInfo.getUnionId());
|
|
|
|
|
+ WxRelation sharedWxRelation = wxRelationService.queryOneByUnionId(sharedUserInfo.getUnionId());
|
|
|
|
|
+ if (sharedWxRelation != null) {
|
|
|
|
|
+ msgUserShared.setFwhOpenId(sharedWxRelation.getFwhOpenId());
|
|
|
|
|
+ }
|
|
|
|
|
+ sendList.add(msgUserShared);
|
|
|
|
|
+ log.info("被分享者已添加到发送列表: userId={}, messageFlag={}, serviceNumberFlag={}",
|
|
|
|
|
+ share.getSharedUserId(), messageFlag, serviceNumberFlag);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("被分享者拒绝所有通知: userId={}, messageFlag={}, serviceNumberFlag={}",
|
|
|
|
|
+ share.getSharedUserId(), messageFlag, serviceNumberFlag);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -273,27 +312,36 @@ public class MqttSubHandle {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// if (!CollectionUtils.isEmpty(sendList)) {
|
|
|
|
|
-// for (SendMsgUserDto sendDto : sendList) {
|
|
|
|
|
-// // 发送跌倒短信
|
|
|
|
|
-// log.info("mqttutil--开始发送跌倒消息");
|
|
|
|
|
-// log.info("mqttutil--sendmsg:phone{}, dev_name:{}", sendDto.getPhone(), devName.toString());
|
|
|
|
|
-// msgClient.sendNotifyMsg(sendDto.getPhone(), devName.toString());
|
|
|
|
|
-// log.info("mqttUtil--消息发完了");
|
|
|
|
|
-//
|
|
|
|
|
-// // 发送微信公众号消息
|
|
|
|
|
-// List<WxRelation> wxRelations = wxRelationService.queryByUnionId(sendDto.getUnionId());
|
|
|
|
|
-// String fwhOpenId = "";
|
|
|
|
|
-// if (wxRelations != null && !wxRelations.isEmpty()) {
|
|
|
|
|
-// fwhOpenId = wxRelations.get(0).getFwhOpenId();
|
|
|
|
|
-// }
|
|
|
|
|
-//// log.info("mqttutil--当前useropenid=" + sendDto.getOpenid() + ", fwhopenId=" + fwhOpenId);
|
|
|
|
|
-// log.info("发送微信公众号信息:devName=" + devName.toString() + ", phoneNo=" + sendDto.getPhone() + "fwhOpenId=" + fwhOpenId);
|
|
|
|
|
-// // 发送微信公告号消息
|
|
|
|
|
-// wxOfficeAccountClient.sendMsg(devId, devName.toString(), sendDto.getPhone(), fwhOpenId, "设备检测到跌倒,请前往小程序查看详细信息");
|
|
|
|
|
-// log.info("发送微信公众号消息发完了");
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(sendList)) {
|
|
|
|
|
+ for (SendMsgUserDto sendDto : sendList) {
|
|
|
|
|
+ log.info("mqttutil--开始处理用户通知: userId={}, messageFlag={}, serviceNumberFlag={}",
|
|
|
|
|
+ sendDto.getUserId(), sendDto.isMessageFlag(), sendDto.isServiceNumberFlag());
|
|
|
|
|
+
|
|
|
|
|
+ // 根据短信标志位决定是否发送短信
|
|
|
|
|
+ if (sendDto.isMessageFlag()) {
|
|
|
|
|
+ log.info("mqttutil--开始发送跌倒短信: phone={}, dev_name={}", sendDto.getPhone(), devName.toString());
|
|
|
|
|
+ msgClient.sendNotifyMsg(sendDto.getPhone(), devName.toString());
|
|
|
|
|
+ log.info("mqttUtil--短信发送完成");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("用户拒绝短信通知: userId={}", sendDto.getUserId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 根据服务号标志位决定是否发送微信公众号消息
|
|
|
|
|
+ if (sendDto.isServiceNumberFlag() && StringUtils.isNotBlank(sendDto.getFwhOpenId())) {
|
|
|
|
|
+ log.info("发送微信公众号信息:devName={}, phoneNo={}, fwhOpenId={}",
|
|
|
|
|
+ devName.toString(), sendDto.getPhone(), sendDto.getFwhOpenId());
|
|
|
|
|
+ // 发送微信公众号消息
|
|
|
|
|
+ wxOfficeAccountClient.sendMsg(devId, devName.toString(), sendDto.getPhone(),
|
|
|
|
|
+ sendDto.getFwhOpenId(), "设备检测到跌倒,请前往小程序查看详细信息");
|
|
|
|
|
+ log.info("微信公众号消息发送完成");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("用户拒绝服务号通知或未绑定微信: userId={}, serviceNumberFlag={}, fwhOpenId={}",
|
|
|
|
|
+ sendDto.getUserId(), sendDto.isServiceNumberFlag(), sendDto.getFwhOpenId());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("没有需要发送通知的用户");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|