From 86c18149ec65fb8023dac36db5a4de62325400b9 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期日, 27 七月 2025 15:20:40 +0800 Subject: [PATCH] 融云 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 273 insertions(+), 0 deletions(-) diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java new file mode 100644 index 0000000..e5e5266 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java @@ -0,0 +1,273 @@ +package com.stylefeng.guns.modular.system.util.rongyun; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.util.rongyun.model.CloudRecordingCallback; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.io.*; +import java.net.*; +import java.security.MessageDigest; + +/** + * 融云及时通讯工具类 + */ +@Component +public class RongYunUtil { + +// public static String app_key = "bmdehs6pbnozs"; +// public static String app_secret = "RovVwtABN1"; + + @Value("${rongyun.app_key}") + private String app_key; + + @Value("${rongyun.app_secret}") + private String app_secret; + /** + * 注册获取token + * @param userId + * @param name + * @param headUrl + * @return + * @throws Exception + */ + public String getToken(String userId, String name, String headUrl) throws Exception { + String url = "http://api-cn.ronghub.com/user/getToken.json"; + String data = "userId=" + userId + "&name=" + name + "&portraitUri=" + headUrl; + String s = this.pushHttp(url, data); + return s; + } + + + /** + * 刷新用户信息 + * @param userId + * @param name + * @param headUrl + * @throws Exception + */ + public void refresh(String userId, String name, String headUrl) throws Exception { + String url = "http://api-cn.ronghub.com/user/refresh.json"; + String data = "userId=" + userId + "&name=" + name + "&portraitUri=" + headUrl; + String s = this.pushHttp(url, data); + } + + + /** + * 检查用户在线状态 + * @param userId + * @return 1:在线,0:离线 + * @throws Exception + */ + public Integer checkOnline(String userId) throws Exception { + String url = "http://api-cn.ronghub.com/user/checkOnline.json"; + String data = "userId=" + userId; + String s = this.pushHttp(url, data); + JSONObject jsonObject = JSON.parseObject(s); + if(jsonObject.getIntValue("code") == 200){ + return jsonObject.getIntValue("status"); + } + return null; + } + + + /** + * 发送普通消息 + * @param fromUserId + * @param toUserId + * @param objectName + * @param content + * @return + */ + public String sendSms(String fromUserId, String toUserId, String objectName, String content){ + try { + String url = "https://api-cn.ronghub.com/message/private/publish.json"; + String data = "fromUserId=" + URLEncoder.encode(fromUserId, "UTF-8") + "&toUserId=" + URLEncoder.encode(toUserId, "UTF-8") + "&objectName=" + + URLEncoder.encode(objectName, "UTF-8") + "&content=" + URLEncoder.encode(content, "UTF-8") + "&disablePush=0&isIncludeSender=1"; + String s = this.pushHttp(url, data); + return s; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + + + + /** + * 创建 IM 聊天室 + * @param id 房间id长度不超过 64 字节 + * @param name 聊天室名称 + * @return + */ + public Integer ChatRoomCreate(String id, String name){ + String url = "https://api-cn.ronghub.com/chatroom/create.json"; + String data = "chatroom[" + id + "]=" + name; + String s = this.pushHttp(url, data); + JSONObject jsonObject = JSON.parseObject(s); + if(jsonObject.getIntValue("code") == 200){ + return jsonObject.getIntValue("status"); + } + return null; + } + + + /** + * 销毁聊天室 + * @param chatroomId 聊天室id + * @return + */ + public Integer ChatRoomDestroy(String chatroomId){ + String url = "https://api-cn.ronghub.com/chatroom/destroy.json"; + String data = "chatroomId=" + chatroomId; + String s = this.pushHttp(url, data); + JSONObject jsonObject = JSON.parseObject(s); + if(jsonObject.getIntValue("code") == 200){ + return jsonObject.getIntValue("status"); + } + return null; + } + + + + /** + * 聊天室发送文本消息 + * @param userId 发送用户id + * @param chatroomId 聊天室id + * @param content 消息文本内容 + * @return + */ + public Integer ChatRoomPushTxtMessage(String userId, String chatroomId, String content){ + String url = "https://api-cn.ronghub.com/chatroom/destroy.json"; + String data = "fromUserId=" + userId + "&toChatroomId=" + chatroomId + "&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"); + } + return null; + } + + + + /** + * 请求接口 + * @param path + * @param json + * @return + */ + public String pushHttp(String path, String json){ + String nonce = String.valueOf(Double.valueOf(Math.random() * 1000000.0D).intValue()); + String timeMillis = String.valueOf(System.currentTimeMillis() / 1000); + String signature = getSha1(app_secret + nonce + timeMillis); + + URL url = null; + try { + url = new URL(path); + HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + connection.setRequestMethod("POST"); + connection.setConnectTimeout(1000 * 30); + connection.setRequestProperty("Host", "api-cn.ronghub.com"); + connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + connection.setRequestProperty("App-Key", app_key); + connection.setRequestProperty("Nonce", nonce); + connection.setRequestProperty("Timestamp", timeMillis); + connection.setRequestProperty("Signature", signature); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + connection.connect(); + DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); + outputStream.write(json.getBytes("UTF-8")); + outputStream.flush(); + outputStream.close(); + + int responseCode = connection.getResponseCode(); + InputStream inputStream = null; + if(responseCode == 403){ + inputStream = connection.getErrorStream(); + } + if(responseCode == 200){ + inputStream = connection.getInputStream(); + } + DataInputStream dataInputStream = new DataInputStream(inputStream); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + int len; + byte[] bytes = new byte[1024]; + while ((len = dataInputStream.read(bytes)) != -1){ + stream.write(bytes, 0, len); + } + return stream.toString(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (ProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + + + public static String getSha1(String str) { + 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) { + return null; + } + } + + + /** + * 云端录制状态回调 + * @param request + * @return + */ + public static CloudRecordingCallback cloudRecordingCallback(HttpServletRequest request){ + String param = null; + try { + param = getParam(request); + } catch (IOException e) { + e.printStackTrace(); + } + if(ToolUtil.isNotEmpty(param)){ + CloudRecordingCallback cloudRecordingCallback = JSON.parseObject(param, CloudRecordingCallback.class); + return cloudRecordingCallback; + } + return null; + } + + + private static String getParam(HttpServletRequest request) throws IOException { + // 读取参数 + InputStream inputStream; + StringBuilder sb = new StringBuilder(); + inputStream = request.getInputStream(); + String s; + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); + while ((s = in.readLine()) != null) { + sb.append(s); + } + in.close(); + inputStream.close(); + return sb.toString(); + } +} -- Gitblit v1.7.1