如何将保存的openid循环发送订阅消息?
public class SubMsg {
private static final long serialVersionUID = 1L;
/** 订阅消息ID */
private Integer id;
/** 微信唯一ID(使用 @JsonProperty 映射小写的 openid) */
@JsonProperty("openid")
private String openId;
/** session_key(微信返回的是 session_key,所以可以直接匹配) */
@JsonProperty("session_key")
private String sessionKey; // 如果你想用 sessionKey 而不是 session_key
// /** unionid(微信返回的是 unionid,可以直接匹配) */
// @JsonProperty("unionid")
// private String unionId; // 如果你想用 unionId 而不是 unionid
/** 错误码(微信返回的是 errcode) */
private Integer errcode;
/** 错误信息(微信返回的是 errmsg) */
private String errmsg;
}
if (!newAlarmList.isEmpty()) {
try {
String accessToken = getAccessToken();
// System.out.println("获取到的access_token: " + accessToken);
SubMsg subMsg = new SubMsg();
List<SubMsg> subMsgs = msgService.selectSubMsgList(subMsg);
// 循环发送订阅的所有微信
for (SubMsg msg : subMsgs) {
// 准备告警数据
JSONObject alarmData = new JSONObject();
String currentTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
alarmData.put("time", currentTime);
alarmData.put("status", "未处理");
alarmData.put("describe", "新的设备告警共计:"+newAlarmList.size()+"条");
// 发送告警通知
boolean result = sendSubscribeMessage(
accessToken,
msg.getOpenId(),
TEMPLATE_ID,
alarmData,
"pages/loginWx" // 点击跳转页面
);
System.out.println("消息发送结果: " + (result ? "成功" : "失败"));
}
return success("消息发送完成");
} catch (IOException e) {
e.printStackTrace();
System.err.println("系统异常: " + e.getMessage());
return AjaxResult.error("系统异常: " + e.getMessage());
}
}else {
return success("没有新的告警需要发送");
}