package com.stylefeng.guns.modular.system.util;
|
|
import com.stylefeng.guns.core.exception.GunsException;
|
import io.rong.RongCloud;
|
import io.rong.messages.BaseMessage;
|
import io.rong.messages.TxtMessage;
|
import io.rong.methods.group.Group;
|
import io.rong.methods.user.User;
|
import io.rong.models.Result;
|
import io.rong.models.group.GroupMember;
|
import io.rong.models.group.GroupModel;
|
import io.rong.models.message.GroupMessage;
|
import io.rong.models.message.PrivateMessage;
|
import io.rong.models.message.SystemMessage;
|
import io.rong.models.response.ResponseResult;
|
import io.rong.models.response.TokenResult;
|
import io.rong.models.user.UserModel;
|
|
import java.io.BufferedReader;
|
import java.io.IOException;
|
import java.io.InputStreamReader;
|
import java.io.PrintWriter;
|
import java.net.URL;
|
import java.net.URLConnection;
|
import java.security.MessageDigest;
|
import java.util.HashMap;
|
import java.util.List;
|
|
/**
|
* 融云
|
*/
|
public class RongCloudUtil {
|
public static String appKey = "bmdehs6pbnozs";
|
public static String appSecret = "RovVwtABN1";
|
|
// 海外token获取RongCloud.getSingaporeInstance(appKey, appSecret);
|
private static RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret);
|
public static void main(String[] args) throws Exception {
|
TokenResult token = getToken("1", "1", "1");
|
System.out.println(token.toString());
|
}
|
/**
|
* 融云注册
|
* @param id
|
* @param name
|
* @param portrait
|
* @return
|
* @throws Exception
|
*/
|
public static TokenResult getToken(String id, String name, String portrait) throws Exception{
|
User user = rongCloud.user;
|
// rongCloud.message.group.recall()
|
UserModel userModel = new UserModel()
|
.setId(id)
|
.setName(name)
|
.setPortrait(portrait);
|
TokenResult result = user.register(userModel);
|
return result;
|
}
|
|
|
/**
|
* 修改
|
* @param id
|
* @param name
|
* @param portrait
|
* @return
|
* @throws Exception
|
*/
|
public static Result update(String id, String name, String portrait) throws Exception{
|
User user = rongCloud.user;
|
UserModel userModel = new UserModel()
|
.setId(id)
|
.setName(name)
|
.setPortrait(portrait);
|
Result result = user.update(userModel);
|
return result;
|
}
|
|
/**
|
* 推送
|
* @param userId
|
* @param content
|
* @param extras
|
* @return
|
* @throws Exception
|
*/
|
public static String push( String userId, String content,String extras) throws Exception {
|
String platform="[\"ios\",\"android\"]";
|
String audience="{\"userid\":"+"[\""+userId+"\"]"+",\"is_to_all\":false}";
|
String notification="{\"alert\":\""+content+"\",\"ios\":"+extras+",\"android\":"+extras+"}";
|
String[] tag = {"10"};
|
StringBuilder sb = new StringBuilder();
|
sb.append("platform=").append(platform);
|
sb.append("&tag=").append(tag.toString());
|
sb.append("&audience=").append(audience);
|
sb.append("¬ification=").append(notification);
|
/*sb.append(",");
|
sb.append("\"extras\":").append(extras);*/
|
/*HostType apiHostType = new HostType("https://api-sg01.ronghub.com/message/system");
|
HttpURLConnection conn = HttpUtil.CreatePostHttpConnection(apiHostType, appKey, appSecret, "/publish.json", "application/json");
|
HttpUtil.setBodyParameter(sb, conn);*/
|
//return HttpUtil.returnResult("");
|
return "";
|
}
|
|
/**
|
* 通过融云发送系统信息,详见https://www.rongcloud.cn/docs/message_architecture.html#group_notification_message
|
* @param senderId 发送人
|
* @param targetIds 接收人(数组)
|
* @param baseMessage 消息内容
|
* @param pushContent 推送内容
|
* @param pushData 推送数据
|
*/
|
public static void sendSystemMessage(String senderId, String[] targetIds, BaseMessage baseMessage, String pushContent, String pushData){
|
SystemMessage systemMessage = new SystemMessage()
|
.setSenderId(senderId)
|
.setTargetId(targetIds)
|
.setObjectName(baseMessage.getType())
|
.setContent(baseMessage)
|
.setPushContent(pushContent)
|
.setPushData(pushData)
|
.setIsPersisted(0)
|
.setIsCounted(0)
|
.setContentAvailable(0);
|
try {
|
ResponseResult responseResult = rongCloud.message.system.send(systemMessage);
|
System.out.println(responseResult);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
public static void sendSystemMessage1(String senderId, String[] targetIds, BaseMessage baseMessage, String pushContent, String pushData){
|
SystemMessage systemMessage = new SystemMessage()
|
.setSenderId(senderId)
|
.setTargetId(targetIds)
|
.setObjectName(baseMessage.getType())
|
.setContent(baseMessage)
|
.setPushContent(pushContent)
|
.setPushData(pushData)
|
.setIsPersisted(0)
|
.setIsCounted(0)
|
.setContentAvailable(1);
|
try {
|
ResponseResult responseResult = rongCloud.message.system.send(systemMessage);
|
System.out.println(responseResult);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 通过融云发送单聊消息
|
*/
|
public static void sendPrivateMsg(String senderId, String targetId, BaseMessage baseMessage){
|
PrivateMessage privateMessage = new PrivateMessage()
|
.setSenderId(senderId)
|
.setTargetId(new String[]{targetId})
|
.setObjectName(baseMessage.getType())
|
.setContent(baseMessage)
|
.setPushContent("")
|
.setPushData("")
|
.setCount("")
|
.setVerifyBlacklist(0)
|
.setIsPersisted(1)
|
.setIsCounted(1)
|
.setIsIncludeSender(0);
|
//发送单聊方法
|
try {
|
rongCloud.message.msgPrivate.send(privateMessage);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
public static void sendPrivateMsg1(String senderId, String targetId, BaseMessage baseMessage){
|
PrivateMessage privateMessage = new PrivateMessage()
|
.setSenderId(senderId)
|
.setTargetId(new String[]{targetId})
|
.setObjectName(baseMessage.getType())
|
.setContent(baseMessage)
|
.setPushContent("")
|
.setPushData("")
|
.setCount("")
|
.setVerifyBlacklist(0)
|
.setIsPersisted(1)
|
.setIsCounted(1)
|
.setIsIncludeSender(1);
|
//发送单聊方法
|
try {
|
rongCloud.message.msgPrivate.send(privateMessage);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
public static void sendPrivateMsg(String senderId, String[] targetId, BaseMessage baseMessage){
|
PrivateMessage privateMessage = new PrivateMessage()
|
.setSenderId(senderId)
|
.setTargetId(targetId)
|
.setObjectName(baseMessage.getType())
|
.setContent(baseMessage)
|
.setPushContent("")
|
.setPushData("")
|
.setCount("")
|
.setVerifyBlacklist(0)
|
.setIsPersisted(1)
|
.setIsCounted(1)
|
.setIsIncludeSender(1);
|
//发送单聊方法
|
try {
|
rongCloud.message.msgPrivate.send(privateMessage);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 发送群组消息
|
* @param fromUserId 注意当前用户id不会接收到该消息
|
* @param toGroupId 群id
|
*/
|
public static void sendGroupMessage(String fromUserId, String toGroupId, BaseMessage baseMessage, String pushContent, String pushData){
|
GroupMessage groupMessage = new GroupMessage()
|
.setSenderId(fromUserId)
|
.setTargetId(new String[]{toGroupId})
|
.setObjectName(baseMessage.getType())
|
.setContent(baseMessage)
|
.setPushContent(pushContent)
|
.setPushData(pushData)
|
.setIsPersisted(1)
|
.setIsIncludeSender(1)
|
.setContentAvailable(0);
|
try {
|
ResponseResult groupResult = rongCloud.message.group.send(groupMessage);
|
System.out.println(groupResult);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
public static void sendGroupMessage1(String fromUserId, String toGroupId, BaseMessage baseMessage, String pushContent, String pushData){
|
GroupMessage groupMessage = new GroupMessage()
|
.setSenderId(fromUserId)
|
.setTargetId(new String[]{toGroupId})
|
.setObjectName(baseMessage.getType())
|
.setContent(baseMessage)
|
.setPushContent(pushContent)
|
.setPushData(pushData)
|
.setIsPersisted(1)
|
.setIsIncludeSender(1)
|
.setContentAvailable(0);
|
try {
|
ResponseResult groupResult = rongCloud.message.group.send(groupMessage);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 移除黑名单
|
*/
|
public static void removeBlackList(String userId,String friendId){
|
UserModel user = getUserModel(userId,friendId);
|
try {
|
rongCloud.user.blackList.remove(user);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 添加黑名单
|
*/
|
public static void addBlackList(String userId,String friendId){
|
UserModel user = getUserModel(userId,friendId);
|
try {
|
rongCloud.user.blackList.add(user);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private static UserModel getUserModel(String userId, String friendId){
|
UserModel blackUser = new UserModel().setId(userId);
|
UserModel[] blacklist = {blackUser};
|
UserModel user = new UserModel()
|
.setId(friendId)
|
.setBlacklist(blacklist);
|
return user;
|
}
|
|
/**
|
* 通过融云发送单聊消息
|
*/
|
public static void sendPrivateMsg(String fromUserId, String toUserId, String objectName, String content) {
|
TxtMessage txtMessage = new TxtMessage(content, content);
|
|
PrivateMessage privateMessage = new PrivateMessage()
|
.setSenderId(fromUserId)
|
.setTargetId(new String[]{toUserId})
|
// .setObjectName("RC:TxtMsg")
|
.setObjectName(objectName)
|
.setContent(txtMessage)
|
.setPushContent("")
|
.setPushData("")
|
.setCount("")
|
.setVerifyBlacklist(0)
|
.setIsPersisted(1)
|
.setIsCounted(1)
|
.setIsIncludeSender(0);
|
//发送单聊方法
|
try {
|
rongCloud.message.msgPrivate.send(privateMessage);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 发送文本消息
|
* @param userId 发送用户id
|
* @param toUserId 接收用户id
|
* @param content 消息文本内容
|
* @return
|
*/
|
public static Integer privatePushTxtMessage(String userId, String toUserId, String content){
|
/*String url = "https://api-cn.ronghub.com/message/private/publish.json";
|
String data = "fromUserId=" + userId + "&toUserId=" + toUserId + "&objectName=RC:TxtMsg&content=" + content;
|
String s = this.pushHttp(url, data);
|
JSONObject jsonObject = JSON.parseObject(s);
|
if(jsonObject.getIntValue("code") == 200){
|
return jsonObject.getIntValue("status");
|
}*/
|
//sendPrivateMsg(userId,toUserId,"RC:TxtMsg",content);
|
String url = "https://api-sg01.ronghub.com/message/private/publish.json";
|
String data = "fromUserId=" + userId + "&toUserId=" + toUserId + "&objectName=RC:TxtMsg&content=" + content;
|
sendPost(url,data);
|
return 1;
|
}
|
|
|
|
|
public static Integer pushSilentAll(String userId, String groupNo,String[] toUserId,String name){
|
GroupMessage message = new GroupMessage();
|
message.setIsIncludeSender(1);
|
message.setSenderId(userId);
|
message.setTargetId(new String[]{groupNo});
|
message.setToUserId(toUserId);
|
message.setObjectName("RC:TxtMsg");
|
TxtMessage txtMessage = new TxtMessage(name, "");
|
message.setContent(txtMessage);
|
try{
|
rongCloud.message.group.sendDirection(message);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
return 1;
|
}
|
// 单人禁言
|
public static Integer Silent(String userId, String groupNo,Integer minute,String groupName ) throws Exception {
|
// String url = "https://api-cn.ronghub.com/group/user/gag/add.json";
|
// HashMap<String, String> map = new HashMap<>();
|
// map.put("userId",userId);
|
// map.put("groupId",groupNo);
|
// map.put("minute",minute);
|
// String data = "fromUserId=" + userId + "&toUserId=" + toUserId + "&objectName=RC:TxtMsg&content=" + name;
|
//sendPost(url,data);
|
// String s = HttpRequestUtil.postRequest1(url, map, appKey, appSecret);
|
GroupModel groupModel = new GroupModel();
|
GroupMember[] members = new GroupMember[1];
|
GroupMember groupMember = new GroupMember();
|
groupMember.setGroupId(groupNo);
|
groupMember.setId(userId);
|
members[0]=groupMember;
|
groupModel.setId(groupNo);
|
groupModel.setMembers(members);
|
groupModel.setName(groupName);
|
groupModel.setMinute(minute);
|
rongCloud.group.gag.add(groupModel);
|
return 1;
|
}
|
|
|
private static GroupModel initGroupModel(String groupId, List<String> memberIds, String groupName) {
|
GroupMember[] members = new GroupMember[memberIds.size()];
|
for (int i = 0; i < memberIds.size(); i++) {
|
members[i] = new GroupMember().setId(memberIds.get(i));
|
}
|
return new GroupModel()
|
.setId(groupId)
|
.setMembers(members)
|
.setName(groupName);
|
}
|
/**
|
* 解散群组
|
* @param groupId 群组id
|
*/
|
public static Integer dismissGroup(String groupId, GroupMember[] members){
|
Group Group = rongCloud.group;
|
//GroupMember[] members = new GroupMember[]{new GroupMember().setId(memberId)};
|
GroupModel group = new GroupModel()
|
.setId(groupId)
|
.setMembers(members);
|
Result groupDismissResult = null;
|
try {
|
groupDismissResult = (Result)Group.dismiss(group);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
System.out.println("dismiss: " + groupDismissResult.toString());
|
return groupDismissResult.getCode();
|
}
|
/**
|
* 创建群组
|
*/
|
public static Integer createGroup(String groupNo, String groupName,GroupMember[] members){
|
Group Group = rongCloud.group;
|
// GroupMember[] members = new GroupMember[]{new GroupMember().setId(userid)};
|
GroupModel group = new GroupModel()
|
.setId(groupNo).setName(groupName).setMembers(members);
|
Result groupDismissResult = null;
|
try {
|
groupDismissResult = (Result)Group.create(group);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return groupDismissResult.getCode();
|
}
|
|
|
/**
|
* 全体禁言
|
* @param groupIds
|
* @return
|
*/
|
public static Integer banAdd(String[] groupIds){
|
Group Group = rongCloud.group;
|
Result banAddResult = null;
|
try {
|
banAddResult = (Result)Group.ban.add(groupIds);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
System.out.println("banAdd: " + banAddResult.toString());
|
return banAddResult.getCode();
|
}
|
/**
|
* 移除禁言
|
* @param groupIds
|
* @return
|
*/
|
public static Integer banRemove(String[] groupIds){
|
Group Group = rongCloud.group;
|
Result banRemoveResult = null;
|
try {
|
banRemoveResult = (Result)Group.ban.remove(groupIds);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
System.out.println("banRemove: " + banRemoveResult.toString());
|
return banRemoveResult.getCode();
|
}
|
public static void addGroup(String groupNo,List<String> userid,String groupName) throws Exception {
|
GroupModel groupModel = initGroupModel(groupNo, userid, groupName);
|
rongCloud.group.join(groupModel);
|
try {
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 向指定 URL 发送POST方法的请求
|
*
|
* @param url
|
* 发送请求的 URL
|
* @param param
|
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
|
* @return 所代表远程资源的响应结果
|
*/
|
public static String sendPost(String url, String param) {
|
PrintWriter out = null;
|
BufferedReader in = null;
|
String result = "";
|
try {
|
URL realUrl = new URL(url);
|
// 打开和URL之间的连接
|
URLConnection conn = realUrl.openConnection();
|
// 设置通用的请求属性
|
conn.setRequestProperty("accept", "*/*");
|
conn.setRequestProperty("connection", "Keep-Alive");
|
conn.setRequestProperty("user-agent",
|
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
|
String nonce = String.valueOf(Double.valueOf(Math.random() * 1000000.0D).intValue());
|
String timeMillis = String.valueOf(System.currentTimeMillis());
|
String signature = string2Sha1(appSecret + nonce + timeMillis);
|
conn.setConnectTimeout(1000 * 30);
|
conn.setRequestProperty("Host", "api-cn.ronghub.com");
|
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
conn.setRequestProperty("App-Key", appKey);
|
conn.setRequestProperty("Nonce", nonce);
|
conn.setRequestProperty("Timestamp", timeMillis);
|
conn.setRequestProperty("Signature", signature);
|
// 发送POST请求必须设置如下两行
|
conn.setDoOutput(true);
|
conn.setDoInput(true);
|
// 获取URLConnection对象对应的输出流
|
out = new PrintWriter(conn.getOutputStream());
|
// 发送请求参数
|
out.print(param);
|
// flush输出流的缓冲
|
out.flush();
|
// 定义BufferedReader输入流来读取URL的响应
|
in = new BufferedReader(
|
new InputStreamReader(conn.getInputStream()));
|
String line;
|
while ((line = in.readLine()) != null) {
|
result += line;
|
}
|
} catch (Exception e) {
|
System.out.println("发送 POST 请求出现异常!"+e);
|
e.printStackTrace();
|
}
|
//使用finally块来关闭输出流、输入流
|
finally{
|
try{
|
if(out!=null){
|
out.close();
|
}
|
if(in!=null){
|
in.close();
|
}
|
}
|
catch(IOException ex){
|
ex.printStackTrace();
|
}
|
}
|
return result;
|
}
|
|
private static String string2Sha1(String str){
|
if(str==null||str.length()==0){
|
return null;
|
}
|
char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',
|
'a','b','c','d','e','f'};
|
try {
|
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
|
mdTemp.update(str.getBytes("UTF-8"));
|
|
byte[] md = mdTemp.digest();
|
int j = md.length;
|
char buf[] = new char[j*2];
|
int k = 0;
|
for (int i = 0; i < j; i++) {
|
byte byte0 = md[i];
|
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
|
buf[k++] = hexDigits[byte0 & 0xf];
|
}
|
return new String(buf);
|
} catch (Exception e) {
|
// TODO: handle exception
|
return null;
|
}
|
}
|
// public String initPortraitUri(List<String> headImg) {
|
// List<String> picUrls = new ArrayList<>();
|
// int i = 0;
|
// for (String memberAccount : headImg) {
|
// if (memberAccount != null && StringUtils.isNotBlank(memberAccount)) {
|
// picUrls.add(memberAccount);
|
// i++;
|
// if (i >= 9) {
|
// break;
|
// }
|
// }
|
// }
|
// try {
|
// // 生成九宫格群组头像
|
// byte[] buff = ImageUtil.getCombinationOfhead(picUrls);
|
// //上传到Oss
|
// /*String url = dfsClient.uploadFile(buff, "jpg");
|
// if (!Objects.equals(url, "")) {
|
// return fileRoot + "/" + url;
|
// }*/
|
// return OssUploadUtil.uploadByteOSS(buff);
|
// } catch (Exception e) {
|
// }
|
// return "";
|
// }
|
/*public static void main(String[] args) {
|
try {
|
TokenResult token = getToken("13688394165", "Crystal", "https://sinata.oss-cn-shenzhen.aliyuncs.com/Oo-logo.png");
|
System.out.println("token");
|
System.out.println(token);
|
*//*if (SinataUtil.isNotEmpty(token)){
|
if(token.code==200){
|
System.out.println(token.getToken());
|
}
|
}*//*
|
} catch (Exception e) {
|
System.out.println("kkkkkkk");
|
e.printStackTrace();
|
System.out.println(e.getMessage());
|
}
|
}*/
|
}
|