XuqmGroup-Server/im-service/src/main/java/com/xuqm/im/service/ImPushBridgeClient.java

59 行
2.1 KiB
Java

package com.xuqm.im.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Component
public class ImPushBridgeClient {
private static final Logger log = LoggerFactory.getLogger(ImPushBridgeClient.class);
private final HttpClient httpClient = HttpClient.newHttpClient();
private final ObjectMapper objectMapper;
@Value("${im.push-service-url:http://127.0.0.1:8083}")
private String pushServiceUrl;
@Value("${im.internal-token:xuqm-internal-token}")
private String internalToken;
public ImPushBridgeClient(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
2026-05-07 19:39:42 +08:00
public void notifyUsers(String appKey, List<String> userIds, String title, String body, String payload) {
if (userIds == null || userIds.isEmpty()) {
return;
}
try {
Map<String, Object> bodyMap = new LinkedHashMap<>();
2026-05-07 19:39:42 +08:00
bodyMap.put("appKey", appKey);
bodyMap.put("userIds", userIds);
bodyMap.put("title", title);
bodyMap.put("body", body);
bodyMap.put("payload", payload);
String json = objectMapper.writeValueAsString(bodyMap);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(pushServiceUrl + "/api/push/internal/notify"))
.header("Content-Type", "application/json")
.header("X-Internal-Token", internalToken)
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
httpClient.send(request, HttpResponse.BodyHandlers.ofString());
} catch (Exception e) {
2026-05-07 19:39:42 +08:00
log.warn("Failed to notify push-service for appKey={}, userIds={}: {}", appKey, userIds, e.getMessage());
}
}
}