收藏
回答

如何将保存的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("没有新的告警需要发送");
        }


回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    星期四 14:25

    java for循环,List也得教?

    星期四 14:25
    有用
    回复
登录 后发表内容