WindChat/windchat-business/src/main/java/com/windchat/im/business/push/PushNotification.java

97 lines
3.6 KiB
Java
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.windchat.im.business.push;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.windchat.common.constant.CommandConst;
import com.windchat.common.utils.StringHelper;
import com.akaxin.proto.core.ConfigProto;
import com.akaxin.proto.core.PushProto;
import com.akaxin.proto.platform.ApiPushNotificationProto;
import com.windchat.im.message.dao.ImUserProfileDao;
import com.windchat.im.message.push.PushClient;
import com.windchat.im.message.threads.MultiPushThreadExecutor;
import com.windchat.im.message.utils.SiteConfigHelper;
public class PushNotification {
private static final Logger logger = LoggerFactory.getLogger(PushNotification.class);
public static void sendAddFriend(String siteUserId, String siteFriendId) {
try {
String pushContent = PushText.applyFriendText(siteUserId);
String pushGoto = PushText.applyFriendGoto(siteFriendId);
send(siteUserId, siteFriendId, null, pushContent, pushGoto);
} catch (Exception e) {
logger.error("add friend push error", e);
}
}
/**
* siteUserId 同意了 siteFriendId 的好友添加请求
*
* @param siteUserId
* @param siteFriendId
*/
public static void agreeAddFriend(String siteUserId, String siteFriendId) {
try {
String pushContent = PushText.agreeFriendText(siteUserId);
// 接受到别人同意添加你为好友点击goto跳转到消息对话框
String pushGoto = PushText.messageGoto(siteUserId);
send(siteUserId, siteFriendId, null, pushContent, pushGoto);
} catch (Exception e) {
logger.error("agree add friend push error", e);
}
}
public static void send(String siteUserId, String siteFriendId, String subTitle, String pushContent,
String pushGoto) {
MultiPushThreadExecutor.getExecutor().execute(new Runnable() {
@Override
public void run() {
try {
String globalUserId = ImUserProfileDao.getInstance().getGlobalUserId(siteFriendId);
// 一、用户对站点是否消息免打扰
if (ImUserProfileDao.getInstance().isMute(siteFriendId)) {
return;
}
ApiPushNotificationProto.ApiPushNotificationRequest.Builder requestBuilder = ApiPushNotificationProto.ApiPushNotificationRequest
.newBuilder();
PushProto.Notification.Builder notification = PushProto.Notification.newBuilder();
notification.setUserId(globalUserId);
notification.setPushBadge(1);
String siteName = SiteConfigHelper.getConfig(ConfigProto.ConfigKey.SITE_NAME);
if (StringUtils.isNotBlank(siteName)) {
notification.setPushTitle(siteName);
}
String address = SiteConfigHelper.getConfig(ConfigProto.ConfigKey.SITE_ADDRESS);
String port = SiteConfigHelper.getConfig(ConfigProto.ConfigKey.SITE_PORT);
notification.setSiteServer(address + ":" + port);
notification.setPushFromId(siteUserId);
if (StringUtils.isNotEmpty(subTitle)) {
notification.setPushFromName(subTitle);
}
notification.setPushAlert(pushContent);
notification.setPushGoto(pushGoto);
List<String> userTokens = ImUserProfileDao.getInstance().getUserToken(siteFriendId);
if (userTokens != null && userTokens.size() > 0) {
notification.addAllUserTokens(userTokens);
requestBuilder.setNotification(notification.build());
requestBuilder.setPushType(PushProto.PushType.PUSH_NOTICE);
PushClient.asyncWrite(CommandConst.API_PUSH_NOTIFICATION, requestBuilder.build().toByteArray());
}
} catch (Exception e) {
logger.error(StringHelper.format("siteUserId={} siteFriendId={} subtitle={} content={}", siteUserId,
siteFriendId, subTitle, pushContent), e);
}
}
});
}
}