From a666398b496513f1fe56a44195247c254a861656 Mon Sep 17 00:00:00 2001
From: 胡仁荣 <897853850@qq.com>
Date: 星期三, 29 三月 2023 13:35:34 +0800
Subject: [PATCH] 直播
---
src/main/java/com/qxueyou/scc/base/util/ClientUtils.java | 5
src/main/java/com/qxueyou/scc/sdk/CommonResult.java | 76 +
src/main/java/com/qxueyou/scc/sdk/utils/MD5Util.java | 67
src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java | 4
src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java | 14
pom.xml | 56
src/main/java/com/qxueyou/scc/controller/VideoLiveController.java | 70
src/main/java/com/qxueyou/scc/sdk/MTCloud.java | 4147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java | 42
src/main/java/com/qxueyou/scc/teach/live/model/MediaVideoLive.java | 15
src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java | 2
11 files changed, 4,454 insertions(+), 44 deletions(-)
diff --git a/pom.xml b/pom.xml
index 5462112..d9f2530 100644
--- a/pom.xml
+++ b/pom.xml
@@ -379,6 +379,62 @@
<scope>runtime</scope>
</dependency>
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.7.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.0.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.9.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.ezmorph</groupId>
+ <artifactId>ezmorph</artifactId>
+ <version>1.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.json-lib</groupId>
+ <artifactId>json-lib</artifactId>
+ <version>2.2.3</version>
+ <classifier>jdk15</classifier><!-- 鎸囧畾jdk鐗堟湰 -->
+ </dependency>
+
</dependencies>
<build>
<plugins>
diff --git a/src/main/java/com/qxueyou/scc/base/util/ClientUtils.java b/src/main/java/com/qxueyou/scc/base/util/ClientUtils.java
index 0fadbd9..be22b3a 100644
--- a/src/main/java/com/qxueyou/scc/base/util/ClientUtils.java
+++ b/src/main/java/com/qxueyou/scc/base/util/ClientUtils.java
@@ -115,9 +115,10 @@
/** 寰楀埌classId*/
public static String getClassId(){
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- HttpSession session = request.getSession();
String info = getUserInfo().getInfo(UserInfoWrapper.INF_CLASS_ID);
+// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+// HttpSession session = request.getSession();
+// String info = getUserInfo().getInfo(UserInfoWrapper.INF_CLASS_ID);
// if(info!=null){
// info= (String) session.getAttribute(UserInfoWrapper.INF_CLASS_ID);
// }
diff --git a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
index 3597283..2db27fb 100644
--- a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
+++ b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
@@ -1,10 +1,13 @@
package com.qxueyou.scc.controller;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.hankcs.hanlp.corpus.tag.Nature;
+import com.qxueyou.scc.sdk.MTCloud;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -24,6 +27,10 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import springfox.documentation.spring.web.json.Json;
+
+import static com.hankcs.hanlp.corpus.tag.Nature.r;
+import static com.hankcs.hanlp.corpus.tag.Nature.s;
@Api(tags="鐩存挱绠$悊鎺ュ彛")
@RestController
@@ -64,7 +71,7 @@
List<MediaVideoLive> data = liveService.listOfMine(keyword, pageNum, pageSize);
int count = liveService.listCountOfMine(keyword);
-
+
return new Result(true, "success", CollectionUtils.newObjectMap("videoLiveCount", count,
"videoLiveLst",QBeanUtils.listBean2ListMap(data, CollectionUtils.newStringMap(
"creator","creator",
@@ -79,6 +86,7 @@
"pushUrl","rtmpPushUrl",
"hlsPullUrl","hlsPullUrl",
"previewImgUrl","previewImgUrl"
+
))));
}
@@ -106,12 +114,47 @@
@ApiOperation(value = "鍒涘缓缂栬緫鐩存挱")
@PostMapping(value = "addOrUpdate")
public Result addOrUpdate(String videoLiveId, String name, String content,String teacherId,String teacherName,String subjectId,
- String subjectName,String definition,String imgPath, long startTime,long endTime, boolean isPlayBack, String classIds) {
- if(StringUtils.isEmpty(videoLiveId)) {
- return liveService.add(name, content,teacherId,teacherName,subjectId,subjectName,definition,imgPath, new Date(startTime), new Date(endTime), isPlayBack, StringUtils.isEmpty(classIds)?null:CollectionUtils.newList(String.class,classIds.split(",")));
- }else {
- return liveService.update(videoLiveId,name, content,teacherId,teacherName,subjectId,subjectName,definition,imgPath, new Date(startTime), new Date(endTime), isPlayBack, StringUtils.isEmpty(classIds)?null:CollectionUtils.newList(String.class,classIds.split(",")));
+ String subjectName,String definition,String imgPath, long startTime,long endTime, boolean isPlayBack, String classIds) throws Exception {
+ MTCloud client = new MTCloud();
+ HashMap<Object,Object> options = new HashMap<Object,Object>();
+ options.put("barrage", 1);
+ options.put("isPublic", 1);
+ options.put("robotNumber", 1);
+ options.put("robotType", 1);
+ options.put("pptDisplay", 1);
+ //灏唋ong绫诲瀷杞崲涓篠tring绫诲瀷
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
+ String startTime1 = simpleDateFormat.format(new Date(startTime));
+ String endTime1 = simpleDateFormat.format(new Date(endTime));
+ //璋冪敤绗笁鏂圭洿鎾帴鍙�
+ String s = client.courseAdd(name, "16624662432", startTime1, endTime1, ClientUtils.getUserName(), "222", options);
+ //json杞崲鎷垮埌courseId
+ JSONObject jsonObject = JSON.parseObject(s);
+ JSONObject data = jsonObject.getJSONObject("data");
+ String course_id = (String) data.get("course_id");
+// System.out.println(Integer.parseInt(course_id));
+ if(Nature.s !=null) {
+ liveService.add(name, content,teacherId,teacherName,subjectId,subjectName,definition,imgPath, new Date(startTime), new Date(endTime),Integer.parseInt(course_id), isPlayBack, StringUtils.isEmpty(classIds)?null:CollectionUtils.newList(String.class,classIds.split(",")));
+ return new Result(true, "鎴愬姛", s);
}
+ return new Result(false);
+ }
+
+ @ApiOperation(value = "寮�鍚洿鎾�")
+ @GetMapping(value = "OpenLive")
+ public Result OpenLive(int courseId) throws Exception {
+ MTCloud client = new MTCloud();
+
+ HashMap<Object,Object> options = new HashMap<Object, Object>();
+ options.put("ssl", false);
+
+ String res = client.courseLogin("16624662432", MTCloud.ACCOUNT_TYPE_THIRD, options);
+ System.out.println(res);
+ JSONObject jsonObject = JSON.parseObject(res);
+ JSONObject data = jsonObject.getJSONObject("data");
+ String protocol = (String) data.get("url");
+ return new Result(true,"寮�鍚垚鍔�",protocol);
}
/**
@@ -200,7 +243,7 @@
/**
* 鍒犻櫎/澶氫釜浠ラ�楀彿闅斿紑
*
- * @param videoLiveId
+ * @param videoLiveIds
* @return
*/
@ApiOperation(value = "鍒犻櫎鍒涘缓鐨勭洿鎾�")
@@ -246,7 +289,7 @@
/**
* 鐩存挱缁撴潫
*
- * @param videoLiveId
+ * @param videoLiveIds
* 鐩存挱id
*/
@ApiOperation(value = "鐩存挱缁撴潫")
@@ -300,7 +343,8 @@
"status","status",
"pushUrl","rtmpPushUrl",
"hlsPullUrl","hlsPullUrl",
- "previewImgUrl","previewImgUrl"
+ "previewImgUrl","previewImgUrl",
+ "courseId","courseId"
))));
}
diff --git a/src/main/java/com/qxueyou/scc/sdk/CommonResult.java b/src/main/java/com/qxueyou/scc/sdk/CommonResult.java
new file mode 100644
index 0000000..0713f47
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/sdk/CommonResult.java
@@ -0,0 +1,76 @@
+package com.qxueyou.scc.sdk;
+
+import java.io.Serializable;
+
+public class CommonResult<T> implements Serializable {
+ private static final long serialVersionUID = 7917345507074842804L;
+ private String code;
+ private String msg;
+ private T data;
+ private String format = "json";
+
+ public static class Builder {
+ public static com.qxueyou.scc.sdk.CommonResult SUCC() {
+ com.qxueyou.scc.sdk.CommonResult vo = new com.qxueyou.scc.sdk.CommonResult();
+ vo.setCode("0");
+ vo.setmsg("suc");
+ return vo;
+ }
+
+ public static com.qxueyou.scc.sdk.CommonResult FAIL() {
+ com.qxueyou.scc.sdk.CommonResult vo = new com.qxueyou.scc.sdk.CommonResult();
+ return vo;
+ }
+ }
+
+ public com.qxueyou.scc.sdk.CommonResult initErrCodeAndMsg(String code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ return this;
+ }
+
+ public com.qxueyou.scc.sdk.CommonResult initErrCodeAndMsg(int code, String msg) {
+ this.code = Integer.toString(code);
+ this.msg = msg;
+ return this;
+ }
+
+ public com.qxueyou.scc.sdk.CommonResult initSuccCodeAndMsg(String code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ return this;
+ }
+
+ public com.qxueyou.scc.sdk.CommonResult initSuccData(T data) {
+ this.data = data;
+ return this;
+ }
+
+ public static long getSerialVersionUID() {
+ return serialVersionUID;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getmsg() {
+ return msg;
+ }
+
+ public void setmsg(String msg) {
+ this.msg = msg;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+}
diff --git a/src/main/java/com/qxueyou/scc/sdk/MTCloud.java b/src/main/java/com/qxueyou/scc/sdk/MTCloud.java
new file mode 100644
index 0000000..24bac56
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/sdk/MTCloud.java
@@ -0,0 +1,4147 @@
+/**
+ * Copyright www.talk-fun.com
+ */
+
+package com.qxueyou.scc.sdk;
+
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Properties;
+import java.net.*;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.UUID;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.multipart.FilePart;
+import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
+import org.apache.commons.httpclient.methods.multipart.Part;
+import org.apache.commons.httpclient.methods.multipart.StringPart;
+
+import com.qxueyou.scc.sdk.utils.MD5Util;
+
+
+public class MTCloud {
+
+ /**
+ * 鍚堜綔鏂笽D锛� 鍚堜綔鏂瑰湪娆㈡嫇骞冲彴鐨勫敮涓�ID
+ */
+ public String openID = "56407";
+
+ /**
+ * 鍚堜綔鏂圭閽ワ細 鍚堜綔鏂笽D瀵瑰簲鐨勫弬鏁板姞瀵嗙閽�
+ */
+ public String openToken = "cd8ab50fbdb53a3b0338bda46186c58a";
+
+ /**
+ * 娆㈡嫇API鎺ュ彛鍦板潃
+ */
+ public String restUrl = "http://api.talk-fun.com/portal.php";
+ public String restUrl2 = "http://api-1.talk-fun.com/portal.php";
+
+ /**
+ * 杩斿洖鐨勬暟鎹牸寮�
+ */
+ public String format = "json";
+
+ /**
+ * SDK鐗堟湰鍙�(璇峰嬁淇敼)
+ */
+ public String version = "java.1.6";
+
+ /**
+ * 鏄惁寮�鍚祴璇�
+ */
+ public boolean debug = false;
+
+
+ /**
+ * 鐘舵�佺爜
+ */
+ public static final int CODE_FAIL = -1; //澶辫触
+ public static final int CODE_SUCCESS = 0; //鎴愬姛
+ public static final int CODE_PARAM_ERROR = 10; //鍙傛暟閿欒
+ public static final int CODE_VIDEO_UPLOADED = 1281; //瑙嗛宸蹭笂浼犺繃
+ public static final int CODE_SIGN_EXPIRE = 10002; //绛惧悕杩囨湡
+ public static final int CODE_SIGN_ERROR = 10003; //绛惧悕楠岃瘉閿欒
+
+
+ /**
+ * 瑙掕壊瀹氫箟
+ */
+ public static final String ROLE_GUEST = "guest"; //娓稿
+ public static final String ROLE_USER = "user"; //鏅�氱敤鎴�
+ public static final String ROLE_ADMIN = "admin"; //绠$悊鍛�
+ public static final String ROLE_SUPER_ADMIN = "spadmin"; //瓒呯骇绠$悊鍛�
+
+ /**
+ * 鐢ㄦ埛瀹氫箟
+ */
+ public static final int USER_GENDER_UNKNOW = 0; //鏈煡鐢熺墿
+ public static final int USER_GENDER_MALE = 1; //鐢锋��
+ public static final int USER_GENDER_FEMALE = 2; //濂虫��
+
+ /**
+ * 涓绘挱璐﹀彿绫诲瀷
+ */
+ public static final int ACCOUNT_TYPE_MT = 1; //娆㈡嫇璐﹀彿绫诲瀷
+ public static final int ACCOUNT_TYPE_THIRD = 2; //绗笁鏂硅处鍙风被鍨�
+
+ /**
+ * 璇煶甯搁噺
+ */
+ public static final int VOICE_FLOW_CLOUD = 1; //璇煶浜�
+ public static final int VOICE_FLOW_LISTEN_ONLY = 2; //鍙惉
+ public static final int VOICE_FLOW_AUTO = 3; //鑷姩妯″紡
+
+ /**
+ * 鐩存挱甯搁噺
+ */
+ public static final int LIVE_NO_PLAYBACK = 0; //娌℃湁鍥炴斁璁板綍
+ public static final int LIVE_HAS_PLAYBACK = 1; //鏈夊洖鏀捐褰�
+
+ public static final int LIVE_PLAYBACK_NOT_CHECK_USER_IP = 0; //鍥炴斁鍦板潃锛屼笉闄愬埗鎾斁鐢ㄦ埛IP
+ public static final int LIVE_PLAYBACK_CHECK_USER_IP = 1; //鍥炴斁鍦板潃锛岄檺鍒舵挱鏀剧敤鎴稩P
+
+ /**
+ * 澶栭儴鎺ㄦ祦鍒嗚鲸鐜囩被鍨�
+ */
+ public static final int CUSTOM_RTMP_RATIO_4_3 = 1; // 4:3姣斾緥
+ public static final int CUSTOM_RTMP_RATIO_16_9 = 2; // 16:9姣斾緥
+
+ public MTCloud(){
+
+ }
+
+ public MTCloud(String openID, String openToken) {
+ this.openID = openID.trim();
+ this.openToken = openToken.trim();
+ }
+
+ /**
+ * 璁剧疆娆㈡嫇鏁版嵁鍝嶅簲鐨勬牸寮�
+ * @param String $format
+ */
+ public void setFormat(String format) {
+ this.format = format;
+ }
+
+ /**
+ * 鑾峰彇鐢ㄦ埛access_token,access_key鍙婃埧闂村湴鍧�(鏇夸唬roomGetUrl鏂规硶)
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String roomid 鎴块棿ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return String
+ * @throws Exception
+ */
+ public String userAccess(String uid,String nickname,String role,String roomid,int expire) throws Exception {
+ HashMap<Object,Object> options = new HashMap<Object, Object>();
+ return this.userAccess(uid, nickname, role, roomid, expire,options);
+ }
+
+
+ /**
+ * 鐢ㄦ埛杩涘叆鐩存挱闂�
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String roomid 鎴块棿ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccess(String uid,String nickname,String role,String roomid,int expire,HashMap<Object,Object> options) throws Exception {
+ if(!options.containsKey("gender")){
+ //鐢ㄦ埛鎬у埆
+ options.put("gender", com.qxueyou.scc.sdk.MTCloud.USER_GENDER_UNKNOW);
+ }
+ if(!options.containsKey("avatar")){
+ //鐢ㄦ埛澶村儚
+ options.put("avatar", "");
+ }
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("roomid", roomid);
+ params.put("expire", expire);
+ params.put("options", options);
+ return this.call("user.access",params);
+ }
+
+ /**
+ * 鐢ㄦ埛杩涘叆鐐规挱
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String liveid 鐩存挱ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlayback(String uid,String nickname,String role,String liveid,int expire) throws Exception {
+ HashMap<Object,Object> options = new HashMap<Object, Object>();
+ return this.userAccessPlayback(uid,nickname,role,liveid,expire,options);
+ }
+
+ /**
+ * 鐢ㄦ埛杩涘叆鐐规挱
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String liveid 鐩存挱ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlayback(String uid,String nickname,String role,String liveid,int expire,HashMap<Object,Object> options) throws Exception {
+ if(!options.containsKey("gender")){
+ //鐢ㄦ埛鎬у埆
+ options.put("gender", com.qxueyou.scc.sdk.MTCloud.USER_GENDER_UNKNOW);
+ }
+ if(!options.containsKey("avatar")){
+ //鐢ㄦ埛澶村儚鍦板潃
+ options.put("avatar", "");
+ }
+
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("liveid", liveid);
+ params.put("expire", expire);
+ params.put("options", options);
+ return this.call("user.access.playback",params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱闂村湴鍧�
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String roomid 鎴块棿ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return String
+ * @throws Exception
+ */
+ public String userAccessUrl(String uid,String nickname,String role,String roomid,int expire) throws Exception {
+ String accessAuth = this.userAccessKey(uid, nickname, role, roomid, expire);
+ return "http://open.talk-fun.com/room.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鐩存挱闂撮獙璇乲ey
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String roomid 鎴块棿ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return String
+ * @throws Exception
+ */
+ public String userAccessKey(String uid,String nickname,String role,String roomid,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ params.put("timestamp", ts);
+
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("roomid", roomid);
+ params.put("expire", expire);
+
+ params.put("sign", this.generateSign(params));
+ String accessAuth = this.base64UrlEncode(JSONObject.fromObject(params).toString());
+ return accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鐩存挱闂村湴鍧�
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String roomid 鎴块棿ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessUrl(String uid,String nickname,String role,String roomid,int expire,HashMap<Object,Object> options) throws Exception {
+ String accessAuth = this.userAccessKey(uid, nickname, role, roomid, expire, options);
+ return "http://open.talk-fun.com/room.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鐩存挱闂撮獙璇乲ey
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String roomid 鎴块棿ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return String
+ * @throws Exception
+ */
+ public String userAccessKey(String uid,String nickname,String role,String roomid,int expire,HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ params.put("timestamp", ts);
+
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("roomid", roomid);
+ params.put("expire", expire);
+ params.put("options", JSONObject.fromObject(options).toString());
+
+ params.put("sign", this.generateSign(params));
+ String accessAuth = JSONObject.fromObject(params).toString();
+ accessAuth = this.base64UrlEncode(accessAuth);
+
+ return accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鐐规挱鍦板潃
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String liveid 鐩存挱ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackUrl(String uid,String nickname,String role,String liveid,int expire) throws Exception {
+ String accessAuth = this.userAccessPlaybackKey(uid, nickname, role, liveid, expire);
+ return "http://open.talk-fun.com/player.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鐐规挱楠岃瘉key
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String liveid 鐩存挱ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackKey(String uid,String nickname,String role,String liveid,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ params.put("timestamp", ts);
+
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("liveid", liveid);
+ params.put("expire", expire);
+
+ params.put("sign", this.generateSign(params));
+ String accessAuth = JSONObject.fromObject(params).toString();
+ accessAuth = this.base64UrlEncode(accessAuth);
+ return accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鐐规挱鍦板潃
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String liveid 鐩存挱ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackUrl(String uid,String nickname,String role,String liveid,int expire,HashMap<Object,Object> options) throws Exception {
+ String accessAuth = this.userAccessPlaybackKey(uid, nickname, role, liveid, expire, options);
+ return "http://open.talk-fun.com/player.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鐐规挱楠岃瘉key
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String liveid 涓绘挱ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackKey(String uid,String nickname,String role,String liveid,int expire,HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ params.put("timestamp", ts);
+
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("liveid", liveid);
+ params.put("expire", expire);
+ params.put("options", JSONObject.fromObject(options).toString());
+
+ params.put("sign", this.generateSign(params));
+ String accessAuth = JSONObject.fromObject(params).toString();
+ accessAuth = this.base64UrlEncode(accessAuth);
+
+ return accessAuth;
+ }
+
+ /**
+ * 鑾峰彇涓撹緫鍦板潃
+ * @param uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param role 鐢ㄦ埛鐨勮鑹�
+ * @param album_id 涓撹緫ID
+ * @param expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackAlbum(String uid, String nickname, String role, String album_id, int expire, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("album_id", album_id);
+ params.put("expire", expire);
+ params.put("options", options);
+ return this.call("user.access.playbackAlbum", params);
+ }
+
+ /**
+ * 鑾峰彇涓撹緫鍦板潃
+ * @param uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param role 鐢ㄦ埛鐨勮鑹�
+ * @param album_id 涓撹緫ID
+ * @param expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackAlbumUrl(String uid, String nickname, String role, String album_id, int expire, HashMap<Object,Object> options) throws Exception {
+ String accessAuth = this.userAccessPlaybackAlbumKey(uid, nickname, role, album_id, expire, options);
+ return "http://open.talk-fun.com/player.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鑾峰彇涓撹緫鎾斁key
+ * @param uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param role 鐢ㄦ埛鐨勮鑹�
+ * @param album_id 涓撹緫ID
+ * @param expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackAlbumKey(String uid, String nickname, String role, String album_id, int expire, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ params.put("timestamp", ts);
+
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("album_id", album_id);
+ params.put("expire", expire);
+ params.put("options", JSONObject.fromObject(options).toString());
+
+ params.put("sign", this.generateSign(params));
+ String accessAuth = JSONObject.fromObject(params).toString();
+ accessAuth = this.base64UrlEncode(accessAuth);
+
+ return accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鍓緫鍦板潃
+ * @param uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param role 鐢ㄦ埛鐨勮鑹�
+ * @param clipid 鍓緫ID
+ * @param expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackClip(String uid, String nickname, String role, int clipid, int expire, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("clipid", clipid);
+ params.put("expire", expire);
+ params.put("options", options);
+ return this.call("user.access.playbackClip", params);
+ }
+
+ /**
+ * 鑾峰彇鍓緫鍦板潃
+ * @param uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param role 鐢ㄦ埛鐨勮鑹�
+ * @param clipid 鍓緫ID
+ * @param expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackClipUrl(String uid, String nickname, String role, int clipid, int expire, HashMap<Object,Object> options) throws Exception {
+ String accessAuth = this.userAccessPlaybackClipKey(uid, nickname, role, clipid, expire, options);
+ return "http://open.talk-fun.com/player.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鍓緫鎾斁key
+ * @param uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param role 鐢ㄦ埛鐨勮鑹�
+ * @param clipid 鍓緫ID
+ * @param expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @param options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String userAccessPlaybackClipKey(String uid, String nickname, String role, int clipid, int expire, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ params.put("timestamp", ts);
+
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("clipid", clipid);
+ params.put("expire", expire);
+ params.put("options", JSONObject.fromObject(options).toString());
+
+ params.put("sign", this.generateSign(params));
+ String accessAuth = JSONObject.fromObject(params).toString();
+ accessAuth = this.base64UrlEncode(accessAuth);
+
+ return accessAuth;
+ }
+
+ /**
+ * 鑾峰彇鍦ㄧ嚎鐢ㄦ埛鍒楄〃
+ * @param roomid 鎴块棿ID
+ * @param start_time 鏌ヨ寮�濮嬫椂闂达紝鏍煎紡: 2015-01-01 12:00:00
+ * @param end_time 鏌ヨ缁撴潫鏃堕棿锛屾牸寮�: 2015-01-01 13:00:00
+ * @return String
+ * @throws Exception
+ */
+ public String userOnlineList(String roomid,String start_time,String end_time) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+ params.put("roomid", roomid);
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ return this.call("user.online.list",params);
+ }
+
+
+ /**
+ * 鑾峰彇涓绘挱绠$悊鐧诲綍鍦板潃
+ * @param liveid
+ * @param expire
+ * @return
+ * @throws Exception
+ */
+ public String getManagerUrl(String roomid,int expire,HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("openID", this.openID.trim());
+ params.put("roomid", roomid);
+ params.put("timestamp", new Date().getTime() / 1000);
+ params.put("expire", expire);
+
+ if(options.containsKey("nickname")){
+ params.put("nickname", options.get("nickname").toString());
+ }
+
+ if(options.containsKey("role")){
+ params.put("role", options.get("role").toString());
+ }
+
+ params.put("sign", this.generateSign(params));
+ String code = JSONObject.fromObject(params).toString();
+ code = this.base64UrlEncode(code);
+ return "http://open.talk-fun.com/live/manager.php?code="+code;
+ }
+
+
+ /**
+ * 鑾峰彇鐩存挱鎴块棿鍦板潃(浣跨敤userAccess鏂规硶鏇夸唬)
+ * @param String uid 鍚堜綔鏂圭郴缁熷唴鐨勭敤鎴风殑鍞竴ID
+ * @param String nickname 鐢ㄦ埛鐨勬樀绉�
+ * @param String role 鐢ㄦ埛鐨勮鑹�
+ * @param String roomid 鎴块棿ID
+ * @param int expire 杩斿洖鐨勫湴鍧�鐨勬湁鏁堟椂闂�
+ * @return String
+ * @throws Exception
+ */
+ public String roomGetUrl(String uid,String nickname,String role,String roomid,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("roomid", roomid);
+ params.put("expire", expire);
+ return this.call("user.register",params);
+ }
+
+
+ /**
+ * 鑷姩鍒涘缓涓�涓埧闂�/棰戦亾鍜屼富鎾紝骞朵笖缁戝畾鎴块棿涓绘挱鐨勫叧绯�
+ * @param $roomName 鎴块棿鍚嶇О
+ * @param $authKey 绠$悊鍛樺瘑鐮�
+ * @param $userKey 鏅�氱敤鎴峰瘑鐮�
+ * @param $zhuboKey 涓绘挱瀵嗙爜
+ * @param $modetype 鎴块棿妯″紡
+ * @param $options 鍙�夐」锛屽寘鎷細 barrage:寮瑰箷寮�鍏� 寮�鍚�:1 鍏抽棴:0锛宒epartmentID锛氶儴闂↖D锛寀ser_top锛氭渶楂樺湪绾跨敤鎴锋暟锛宻treamMode锛氬皬鐝悎娴佹ā寮忛厤缃紝1 澶氫汉妯″紡锛�2 鍙屼汉妯″紡
+ * @return
+ * @throws Exception
+ */
+ public String roomCreatev2(String roomName,String authKey,String userKey,String zhuboKey,int modetype,HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomName", roomName);
+ params.put("authKey", authKey);
+ params.put("userKey", userKey);
+ params.put("zhuboKey", zhuboKey);
+ params.put("modetype", modetype);
+ params.put("options", options);
+ return this.call("room.createv2", params);
+ }
+
+
+ /**
+ * 鏌ヨ鎴块棿淇℃伅
+ * @param String roomid 鎴块棿ID
+ * @return
+ * @throws Exception
+ */
+ public String roomGetInfo(String roomid) throws Exception{
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ return this.call("room.getInfo",params);
+ }
+
+ /**
+ * 鑾峰彇鎴块棿鐧诲綍鍦板潃
+ * @param String roomid 鎴块棿ID
+ * @return
+ * @throws Exception
+ */
+ public String roomGetUrl(String roomid) throws Exception{
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ return this.call("room.getUrl",params);
+ }
+
+ /**
+ * 鍒涘缓鎴块棿
+ * @param String roomName 鎴块棿鍚嶇О
+ * @return
+ * @throws Exception
+ */
+ public String roomCreate(String roomName) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomName", roomName);
+ return this.call("room.create", params);
+ }
+
+ /**
+ * 鍒涘缓鎴块棿锛屾柊澧炵鐞嗗憳瀵嗙爜璁剧疆
+ * @param roomName
+ * @param authKey
+ * @return
+ * @throws Exception
+ */
+ public String roomCreate(String roomName,String authKey) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomName",roomName);
+ params.put("authKey",authKey);
+ return this.call("room.create",params);
+ }
+
+
+ /**
+ * 鍒涘缓鎴块棿
+ * @param roomName
+ * @param voiceFlow
+ * @param authKey
+ * @return
+ * @throws Exception
+ */
+ public String roomCreate(String roomName,int voiceFlow,String authKey, int modetype, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomName",roomName);
+ params.put("voiceFlow", voiceFlow);
+ params.put("authKey",authKey);
+ params.put("modetype", modetype);
+ params.put("options", options);
+ return this.call("room.create",params);
+ }
+
+ /**
+ * 鏇存柊鎴块棿淇℃伅
+ * @param roomid
+ * @param params 鍖呭惈瀛楁锛歳oomName锛寁oiceFlow,authKey
+ * @return
+ * @throws Exception
+ */
+ public String roomUpdate(String roomid,HashMap<Object,Object> params) throws Exception {
+ params.put("roomid",roomid);
+ return this.call("room.update",params);
+ }
+
+ /**
+ * 鍒犻櫎鎴块棿
+ * @param String roomid 鎴块棿ID
+ * @return
+ * @throws Exception
+ */
+ public String roomDrop(String roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid",roomid);
+ return this.call("room.drop",params);
+ }
+
+ /**
+ * 鑾峰彇鎴块棿鍒楄〃
+ * @param int page
+ * @param int size
+ * @return
+ * @throws Exception
+ */
+ public String roomList(int page,int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("room.list", params);
+ }
+
+ /**
+ * 鎴块棿缁戝畾涓绘挱
+ * @param String roomid 鎴块棿ID
+ * @param String account 涓绘挱璐﹀彿
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷
+ * @return
+ * @throws Exception
+ */
+ public String roomBindAccount(String roomid,String account,int accountType) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid",roomid);
+ params.put("account",account);
+ params.put("accountType",accountType);
+ return this.call("room.live.bindAccount",params);
+ }
+
+ /**
+ * 鎴块棿鍙栨秷缁戝畾涓绘挱
+ * @param String roomid 鎴块棿ID
+ * @param String account 涓绘挱璐﹀彿
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷
+ * @return
+ * @throws Exception
+ */
+ public String roomUnbindAccount(String roomid,String account,int accountType) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("account", account);
+ params.put("accountType", accountType);
+ return this.call("room.live.unbindAccount",params);
+ }
+
+ /**
+ * 鍙戦�佸箍鎾�
+ * @param String roomid 鎴块棿ID
+ * @param String cms
+ * @param HashMap args
+ * @param HashMap options
+ * @return
+ * @throws Exception
+ */
+ public String roomBroadcastSend(String roomid, String cmd, HashMap<Object,Object> args, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("cmd", cmd);
+ params.put("params", args);
+ params.put("options", options);
+ return this.call("room.broadcast.send", params);
+ }
+
+ /**
+ * 鏍规嵁鎴块棿ID鑾峰彇褰撳墠鎴块棿鐨勫湪绾夸汉鏁�
+ * @param String roomid 鎴块棿ID
+ * @return
+ * @throws Exception
+ */
+ public String roomOnlineTotal(String roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ return this.call("room.online.total", params);
+ }
+
+
+ /**
+ * 铏氭嫙鐢ㄦ埛瀵煎叆
+ * @param String roomid 鎴块棿ID
+ * @param Array userList [['nickname'=>'xxx', 'avatar'=>'xxx'], ['nickname'=>'xxxx', 'avatar'=>'xxx'], ......]
+ * @return
+ */
+ public String roomAddRobot(int roomid, ArrayList userList) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("userList", userList);
+
+ HashMap<Object,Object> files = new HashMap<Object,Object>();
+
+ return this.call("room.robot.add", params,"POST", files);
+ }
+
+ /**
+ * 婊氬姩鍏憡鎺ュ彛
+ * @param String roomid 鎴块棿ID
+ * @param String content 婊氬姩鍏憡鍐呭
+ * @param String link 婊氬姩鍏憡閾炬帴
+ * @param String duration 婊氬姩鍏憡鏄剧ず鏃堕暱(鍗曚綅锛氱)
+ * @return
+ */
+ public String roomNoticeRoll(String roomid, String content, String link, int duration) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("content", content);
+ params.put("link", link);
+ params.put("duration", duration);
+ return this.call("room.notice.roll", params);
+ }
+
+ /**
+ * 鑾峰彇鎴块棿/棰戦亾鐨勫閮ㄦ帹娴佸湴鍧�
+ * @param String roomid 鎴块棿/棰戦亾ID
+ * @param String title 鐩存挱鏍囬
+ * @param int ratio 鍒嗚鲸鐜囨瘮渚�
+ * @return
+ */
+ public String roomPushRtmpUrl(String roomid, String title, int ratio) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("title", title);
+ params.put("ratio", ratio);
+ return this.call("room.pushRtmpUrl", params);
+ }
+
+ /**
+ * 鏍规嵁鎴块棿ID鑾峰彇涓绘挱鐧诲綍鍦板潃
+ * @param string roomid 鎴块棿ID
+ * @param HashMap options 鍏跺畠鍙�夐」锛宻sl锛氭槸鍚︿娇鐢╤ttps(true涓轰娇鐢紝false涓轰笉浣跨敤)
+ */
+ public String roomLogin(String roomid, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("options", options);
+ return this.call("room.login", params);
+ }
+
+ /**
+ * 鑾峰彇涓绘挱淇℃伅
+ * @param String account 涓绘挱璐﹀彿
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷
+ * @return
+ * @throws Exception
+ */
+ public String zhuboGet(String account,int accountType) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ return this.call("zhubo.get", params);
+ }
+
+ /**
+ * 鍒涘缓涓绘挱
+ * @param String account 涓绘挱璐﹀彿 (鍚堜綔鏂逛富鎾处鍙风殑鍞竴ID)
+ * @param String nickname 涓绘挱鏄电О
+ * @param int accountType 璐﹀彿绫诲瀷 (濡傛灉鏄鎷撶殑璐﹀彿绫诲瀷锛宎ccount鍙互涓虹┖)
+ * @param String password 涓绘挱璐﹀彿瀵嗙爜
+ * @param String description 鐢ㄦ埛绠�浠�
+ * @param int departmentID 閮ㄩ棬ID
+ * @return
+ * @throws Exception
+ */
+ public String zhuboCreate(String account,String nickname,int accountType,String password,String introduce,int departmentID) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("nickname", nickname);
+ params.put("accountType",accountType);
+ params.put("password", password);
+ params.put("intro", introduce);
+ params.put("departmentID", departmentID);
+ return this.call("zhubo.create",params);
+ }
+
+
+ /**
+ * 鏇存柊涓绘挱淇℃伅
+ * @param account
+ * @param accountType
+ * @param nickname
+ * @param introduce
+ * @param int departmentID 閮ㄩ棬ID
+ * @return
+ * @throws Exception
+ */
+ public String zhuboUpdateInfo(String account,int accountType,String nickname,String introduce, int departmentID) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ params.put("nickname",nickname);
+ params.put("intro", introduce);
+ params.put("departmentID", departmentID);
+ return this.call("zhubo.update.info",params);
+ }
+
+
+ /**
+ * 鏇存柊涓绘挱瀵嗙爜
+ * @param account
+ * @param accountType
+ * @param password
+ * @return
+ * @throws Exception
+ */
+ public String zhuboUpdatePassword(String account,int accountType,String password) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ params.put("password", password);
+ return this.call("zhubo.update.password", params);
+ }
+
+
+ /**
+ * 鏇存柊涓绘挱澶村儚
+ * @param account 涓绘挱璐﹀彿
+ * @param accountType 璐﹀彿绫诲瀷
+ * @param filename 鍥剧墖璺緞(鏀寔jpeg銆乯pg锛屽浘鐗囧ぇ灏忎笉瓒呰繃1M)
+ * @return
+ * @throws Exception
+ */
+ public String zhuboUpdatePortrait(String account,int accountType,String filename) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ String res = this.call("zhubo.portrait.uploadurl",params);
+
+ JSONObject resJson = JSONObject.fromObject(res);
+ if(resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS){
+ JSONObject resData = resJson.getJSONObject("data");
+
+ File f;
+ f = new File(filename);
+ Part[] parts = {
+ new FilePart(resData.getString("field"),f)
+ };
+
+ return this.doPost(resData.getString("api"), parts);
+ }
+ return res;
+ }
+
+
+ /**
+ * 鍒犻櫎涓绘挱
+ * @param String account 涓绘挱璐﹀彿
+ * @param int accountType 璐﹀彿绫诲瀷
+ * @return
+ * @throws Exception
+ */
+ public String zhuboDel(String account, int accountType) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ return this.call("zhubo.del", params);
+ }
+
+ /**
+ * 涓绘挱鍒楄〃
+ * @param int page
+ * @param int size
+ * @return
+ * @throws Exception
+ */
+ public String zhuboList(int page ,int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("zhubo.list", params);
+ }
+
+ /**
+ * 涓绘挱鑾峰彇鐧诲綍椤甸潰
+ * @param account 涓绘挱璐︽埛鍚�
+ * @param accountType 涓绘挱璐︽埛绫诲瀷
+ * @param options 鍏跺畠鍙�夐」锛宻sl锛氭槸鍚︿娇鐢╤ttps(true涓轰娇鐢紝false涓轰笉浣跨敤)
+ * @return
+ * @throws Exception
+ */
+ public String zhuboLogin(String account, int accountType, HashMap<Object,Object> options) throws Exception{
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ params.put("options", options);
+ return this.call("zhubo.login", params);
+ }
+
+ /**
+ * 鏍规嵁鎴块棿ID鑾峰彇涓绘挱鐧诲綍鍦板潃
+ * @param roomid 鎴块棿ID
+ * @param options 鍏跺畠鍙�夐」锛宻sl锛氭槸鍚︿娇鐢╤ttps(true涓轰娇鐢紝false涓轰笉浣跨敤)
+ * @return
+ * @throws Exception
+ */
+ public String zhuboRoomLogin(String roomid, HashMap<Object,Object> options) throws Exception{
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("options", options);
+ return this.call("zhubo.room.login", params);
+ }
+
+ /**
+ * 鑾峰彇涓绘挱鐧诲綍璁板綍
+ * @param int page 鍒嗛〉椤电爜
+ * @param int size 姣忛〉鏁版嵁涓暟
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿鎴朓D锛岄潪鎸囧畾鏌ヨ鍏蜂綋涓绘挱鏃朵笉瑕佸~
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷銆�1 娆㈡嫇璐︽埛, 2 鍚堜綔鏂硅处鎴�
+ * @return
+ * @throws Exception
+ */
+ public String zhuboLoginInfo(int page, int size, String account) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("account", account);
+ return this.call("zhubo.loginInfo", params);
+ }
+
+ /**
+ * 涓绘挱瑙傜湅鍥哄畾閾炬帴
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿鎴朓D锛岄潪鎸囧畾鏌ヨ鍏蜂綋涓绘挱鏃朵笉瑕佸~
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷銆�1 娆㈡嫇璐︽埛, 2 鍚堜綔鏂硅处鎴�
+ * @return
+ * @throws Exception
+ */
+ public String zhuboGetLoginUrl(String account, int accountType) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ return this.call("zhubo.getLoginUrl", params);
+ }
+
+ /**
+ * 鑾峰彇涓绘挱涓婁笅璇捐褰�
+ * @param int page 鍒嗛〉椤电爜
+ * @param int size 姣忛〉鏁版嵁涓暟
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿鎴朓D锛岄潪鎸囧畾鏌ヨ鍏蜂綋涓绘挱鏃朵笉瑕佸~
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷銆�1 娆㈡嫇璐︽埛, 2 鍚堜綔鏂硅处鎴�
+ * @return
+ * @throws Exception
+ */
+ public String zhuboClassRecord(int page, int size, String account) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("account", account);
+ return this.call("zhubo.classRecord", params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱鍥炴斁璁板綍(闇�瑕佹惡甯︾敤鎴蜂俊鎭殑锛屼娇鐢╱serAccessPlayback鏂规硶)
+ * @param String liveid 鐩存挱ID
+ * @param int expire 鍦板潃鏈夋晥鏃堕棿
+ * @return
+ * @throws Exception
+ */
+ public String liveGet(String liveid,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("expire",expire);
+ return this.call("live.get", params);
+ }
+
+
+
+ /**
+ * 鎵归噺鑾峰彇鐩存挱鍥炴斁璁板綍
+ * @param String[] liveids 鐩存挱ID鍒楄〃
+ * @param int expire 鍦板潃鏈夋晥鏈�
+ * @return
+ * @throws Exception
+ */
+ public String liveGetBatch(String[] liveids,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveids", liveids);
+ params.put("expire", expire);
+ return this.call("live.getBatch",params);
+ }
+
+ /**
+ * 鑾峰彇鏈�鏂扮殑鍑犱釜鐩存挱璁板綍
+ * @param int size 姣忛〉涓暟
+ */
+ public String liveGetLast(int size, int roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("size", size);
+ params.put("roomid", roomid);
+ return this.call("live.getlast", params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱鍥炴斁璁板綍鍒楄〃
+ * @param String startDate 寮�濮嬫棩鏈�
+ * @param String endDate 缁撴潫鏃ユ湡
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏉℃暟
+ * @param int playback 鏄惁鏈夊洖鏀�
+ * @return
+ * @throws Exception
+ */
+ public String liveList(String startDate,String endDate,int page,int size,int playback) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("startDate", startDate);
+ params.put("endDate",endDate);
+ params.put("page", page);
+ params.put("size", size);
+ params.put("playback", playback);
+ return this.call("live.list",params);
+ }
+
+ /**
+ * 鑾峰彇鍏ㄩ儴鐩存挱璁板綍鍒楄〃
+ * @param int page 椤电爜(榛樿:1)
+ * @param int size 姣忛〉涓暟(榛樿:10)
+ */
+ public String liveListAll(int page, int size, String order, String roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("order", order);
+ params.put("roomid", roomid);
+ return this.call("live.listall", params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱鑱婂ぉ鍒楄〃
+ * @param liveid
+ * @param page
+ * @return
+ * @throws Exception
+ */
+ public String liveMessageList(String liveid,int page) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ return this.call("live.message",params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱椴滆姳璁板綍
+ * @param String liveid 鐩存挱ID
+ * @param int page 椤电爜(榛樿:1)
+ * @param int size 姣忛〉涓暟(榛樿:10)
+ */
+ public String liveFlowerList(String liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.flower.list", params);
+ }
+
+ /**
+ * 鍒涘缓鐩存挱鍥炴斁涓撹緫
+ * @param String album_name 涓撹緫鍚嶇О
+ * @param String[] liveids 鐩存挱ID鍒楄〃
+ * @return
+ * @throws Exception
+ */
+ public String liveAlbumCreate(String album_name,String[] liveids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_name", album_name);
+ params.put("liveids", liveids);
+ return this.call("live.album.create",params);
+ }
+
+ /**
+ * 鑾峰彇涓撹緫淇℃伅
+ * @param String album_id 涓撹緫ID
+ * @param int expire 涓撹緫鍦板潃鏈夋晥鏈�
+ * @return
+ * @throws Exception
+ */
+ public String liveAlbumGet(String album_id,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("expire", expire);
+ return this.call("live.album.get",params);
+ }
+
+ /**
+ * 鍒犻櫎涓撹緫
+ * @param String album_id 涓撹緫ID
+ * @return
+ * @throws Exception
+ */
+ public String liveAlbumDelete(String album_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ return this.call("live.album.delete",params);
+ }
+
+ /**
+ * 寰�涓撹緫閲岄潰澧炲姞鍥炴斁璁板綍
+ * @param String album_id 涓撹緫ID
+ * @param String[] liveids 鍥炴斁璁板綍鍒楄〃
+ * @return
+ * @throws Exception
+ */
+ public String liveAlbumAdd(String album_id,String[] liveids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("liveids", liveids);
+ return this.call("live.album.add",params);
+ }
+
+ /**
+ * 浠庝笓杈戜腑绉婚櫎鍥炴斁璁板綍
+ * @param String album_id 涓撹緫ID
+ * @param String[] liveids 鍥炴斁璁板綍鍒楄〃
+ * @return
+ * @throws Exception
+ */
+ public String liveAlbumRemove(String album_id,String[] liveids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("liveids", liveids);
+ return this.call("live.album.remove", params);
+ }
+
+ /**
+ * 鍙戣捣鎶曠エ
+ * @param String roomid 鎴块棿ID
+ * @param String uid 鎶曠エ鍙戝竷鑰咃紝鍚堜綔鏂圭敤鎴稩D
+ * @param String nickname 鎶曠エ鍙戝竷鑰咃紝鍚堜綔鏂圭敤鎴锋樀绉�
+ * @param String title 鎶曠エ涓婚
+ * @param String label 鎶曠エ鏍囩
+ * @param ArrayList op 閫夐」锛宩son鏍煎紡锛屾瘮濡� ["aaa","bbb"]锛宎aa涓虹涓�涓�夐」锛宐bb涓虹浜屼釜閫夐」
+ * @param int type 绫诲瀷锛�0涓哄崟閫夛紝1涓哄閫�
+ * @param nt optional 鑻ヤ负鍗曢�夊垯浼�1锛屽閫夊垯浼犵殑鍊间负澶氬皯琛ㄧず鍙互閫夊嚑椤�
+ * @param String answer 绛旀锛岃缃鍑犻」涓虹瓟妗堬紝浼犲叆 "0" 琛ㄧず绗竴涓�夐」涓烘纭瓟妗堬紝浼犲叆 "0,2" 琛ㄧず绗竴鍜岀涓夐」涓烘纭瓟妗堬紝涓嶈缃瓟妗堝垯浼犵┖瀛楃涓�
+ * @param String image 鍥剧墖璺緞锛岃嫢瑕佷笂浼犲浘鐗囦綔涓洪鐩紝鍒欎紶鍏ュ浘鐗�
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String liveVoteAdd(String roomid, String uid, String nickname, String title, String label, ArrayList op, int type, int optional, String answer, String image, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("title", title);
+ params.put("label", label);
+ params.put("op", op);
+ params.put("type", type);
+ params.put("optional", optional);
+ params.put("answer", answer);
+ params.put("options", options);
+
+ HashMap<Object,Object> files = new HashMap<Object,Object>();
+ if ("" != image) {
+ files.put("image", "@" + image);
+ }
+
+ return this.call("live.vote.add", params, "POST", files);
+ }
+
+ /**
+ * 缁撴潫鎶曠エ
+ * @param String vid 鎶曠エID
+ * @param int showResult 鏄惁鏄剧ず鎶曠エ缁撴灉锛�0涓轰笉鏄剧ず锛�1涓烘樉绀�
+ * @param String uid 鎶曠エ缁撴潫鑰咃紝鍚堜綔鏂圭敤鎴稩D
+ * @param String nickname 鎶曠エ缁撴潫鑰咃紝鍚堜綔鏂圭敤鎴锋樀绉�
+ * @return
+ * @throws Exception
+ */
+ public String liveVoteEnd(String vid, int showResult, String uid, String nickname) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("showResult", showResult);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+
+ return this.call("live.vote.end", params);
+ }
+
+ /**
+ * 鍙戝竷棰勫彂甯冪殑鎶曠エ
+ * @param String vid 鎶曠エID
+ * @param String roomid 鎴块棿ID
+ * @return
+ * @throws Exception
+ */
+ public String liveVoteEmit(String vid, String roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("roomid", roomid);
+
+ return this.call("live.vote.emit", params);
+ }
+
+ /**
+ * 鍒犻櫎鎶曠エ
+ * @param String vid 鎶曠エID
+ * @return
+ * @throws Exception
+ */
+ public String liveVoteDelete(String vid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+
+ return this.call("live.vote.delete", params);
+ }
+
+ /**
+ * 鏇存柊鎶曠エ
+ * @param String vid 鎶曠エID
+ * @param HashMap options 瑕佹洿鏂扮殑淇℃伅
+ * @return
+ * @throws Exception
+ */
+ public String liveVoteUpdate(String vid, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("options", options);
+
+ HashMap<Object,Object> files = new HashMap<Object,Object>();
+
+ if (options.containsKey("image")) {
+ String image = options.get("image").toString();
+ if ("" != image) {
+ File file = new File(image);
+ if (!file.exists()) {
+ HashMap<Object,Object> ret = new HashMap<Object,Object>();
+ ret.put("code", CODE_FAIL);
+ ret.put("msg", "鏂囦欢" + image + "涓嶅瓨鍦�");
+ return JSONObject.fromObject(ret).toString();
+ }
+
+ files.put("image", "@" + image);
+ }
+ }
+
+ return this.call("live.vote.update", params, "POST", files);
+ }
+
+ /**
+ * 鍒涘缓涓�涓笓杈�
+ * @param String $album_name 涓撹緫鍚嶇О
+ * @return
+ * @throws Exception
+ */
+ public String albumCreate(String album_name, String[] liveids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_name", album_name);
+ params.put("liveids", liveids);
+ return this.call("album.create", params);
+ }
+
+ /**
+ * 鑾峰彇涓�涓洿鎾笓杈�
+ * @param String album_id 涓撹緫ID
+ * @param int expire 鍦板潃鏈夋晥鏃堕棿
+ * @return
+ */
+ public String albumGet(String album_id, int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("expire", expire);
+ return this.call("album.get", params);
+ }
+
+ /**
+ * 鍒犻櫎涓�涓笓杈�
+ * @param String album_id 涓撹緫ID
+ * @return
+ */
+ public String albumDelete(String album_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ return this.call("album.delete", params);
+ }
+
+ /**
+ * 寰�涓撹緫澧炲姞涓�涓洖鏀捐褰�
+ * @param String album_id 涓撹緫ID
+ * @param array course_id 鍥炴斁璁板綍鐨勮绋媔d
+ * @return
+ */
+ public String albumAdd(String album_id, String[] liveids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("liveids", liveids);
+ return this.call("album.add", params);
+ }
+
+ /**
+ * 浠庝笓杈戦噷闈㈡竻闄ゆ煇涓洖鏀�
+ * @param String album_id 涓撹緫ID
+ * @param array course_id 鍥炴斁璁板綍鐨勮绋媔d
+ * @param
+ */
+ public String albumRemove(String album_id, String[] liveids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("liveids", liveids);
+ return this.call("album.remove", params);
+ }
+
+ /**
+ * 鍒涘缓涓�涓绋嬩笓杈�
+ * @param String album_name 涓撹緫鍚嶇О
+ * @param array course_ids 璇剧▼id
+ * @return
+ */
+ public String albumCreateCourse(String album_name, String[] course_ids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_name", album_name);
+ params.put("course_ids", course_ids);
+ return this.call("album.course.create", params);
+ }
+
+ /**
+ * 寰�璇剧▼涓撹緫澧炲姞涓�涓绋嬪洖鏀捐褰�
+ * @param String album_id 涓撹緫ID
+ * @param array course_id 璇剧▼鍥炴斁璁板綍ID鍒楄〃
+ * @return
+ */
+ public String albumAddCourse(String album_id, String[] course_ids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("course_ids", course_ids);
+ return this.call("album.course.add", params);
+ }
+
+ /**
+ * 浠庤绋嬩笓杈戦噷闈㈡竻闄ゆ煇涓绋嬪洖鏀�
+ * @param String album_id 涓撹緫ID
+ * @param array course_ids 鍥炴斁璁板綍鐨勮绋媔d
+ * @param
+ */
+ public String albumRemoveCourse(String album_id, String[] course_ids) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("album_id", album_id);
+ params.put("course_ids", course_ids);
+ return this.call("album.course.remove", params);
+ }
+
+ /**
+ * 鏍规嵁鎴块棿鍙婃椂闂磋幏鍙栧洖鏀捐褰�
+ * @param String roomid 鎴块棿ID
+ * @param String start_time 寮�濮嬫椂闂� 鏍煎紡:2014-12-26 12:00:00
+ * @param int expire 鍦板潃鏈夋晥鏈�
+ * @return
+ * @throws Exception
+ */
+ public String liveRoomGet(String roomid,String start_time,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("start_time", start_time);
+ params.put("expire", expire);
+ return this.call("live.room.get",params);
+ }
+
+ /**
+ * 鏍规嵁鎴块棿鍙婃椂闂村尯闂磋幏鍙栧洖鏀捐褰�
+ * @param String roomid 鎴块棿ID
+ * @param String start_time 璧峰鍖洪棿鏃堕棿鎴� 鏍煎紡锛�2014-12-26 00:00:00
+ * @param String end_time 缁撴潫鍖洪棿鏃堕棿鎴� 鏍煎紡: 2014-12-26 12:00:00
+ * @param int expire 鏈夋晥鏈�
+ * @return
+ * @throws Exception
+ */
+ public String liveRoomList(String roomid, String start_time,String end_time,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("expire", expire);
+ return this.call("live.room.list",params);
+ }
+
+ /**
+ * 鏍规嵁鐩存挱ID鑾峰彇璁垮鍒楄〃
+ * @param String liveid 鐩存挱ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String liveVisitorList(String liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.visitor.list", params);
+ }
+
+ /**
+ * 鏍规嵁鐩存挱ID锛岀敤鎴稩D鑾峰彇璁垮鍒楄〃
+ * @param String liveid 鐩存挱ID
+ * @param String uid 鐢ㄦ埛ID
+ * @return
+ */
+ public String liveVisitorGet(String liveid, String uid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("uid", uid);
+ return this.call("live.visitor.get", params);
+ }
+
+ /**
+ * 鏍规嵁鐩存挱ID鑾峰彇鎻愰棶鍒楄〃
+ * @param String liveid 鐩存挱ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String liveQuestionList(String liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.question.list", params);
+ }
+
+ /**
+ * 鑾峰彇闊抽涓嬭浇鍦板潃
+ * @param String liveid 鐩存挱ID
+ * @return
+ * @throws Exception
+ */
+ public String liveAudioDownloadUrl(String liveid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ return this.call("live.audio.download.url",params);
+ }
+
+ /**
+ * 鏍规嵁鐩存挱ID鑾峰彇鍥炴斁璁垮鍒楄〃
+ * @param String liveid 鐩存挱ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String livePlaybackVisitorList(String liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.playback.visitor.list", params);
+ }
+
+ /**
+ * 鎸夌収鏃堕棿鍖洪棿鑾峰彇鍥炴斁璁垮鍒楄〃 (鏃堕棿鍖洪棿涓嶈兘澶т簬7澶�)
+ * @param String start_time 寮�濮嬫椂闂� 鏍煎紡锛�2016-01-01 00:00:00
+ * @param String end_time 缁撴潫鏃堕棿 鏍煎紡锛�2016-01-02 00:00:00
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ */
+ public String livePlaybackVisitorTimeList(String start_time, String end_time, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.playback.visitor.timelist", params);
+ }
+
+ /**
+ * 鏍规嵁鐩存挱id鑾峰彇鍥炴斁瑙嗛
+ * @param int liveid 鐩存挱id
+ */
+ public String livePlaybackVideo(int liveid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ return this.call("live.playback.video", params);
+ }
+
+ /**
+ * 鏍规嵁鐩存挱id鑾峰彇鍥炴斁鐧诲綍鍦板潃
+ * @param int liveid 鐩存挱id
+ */
+ public String livePlaybackLoginUrl(int liveid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ return this.call("live.playback.loginUrl", params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱PPT绔犺妭淇℃伅
+ * @param int liveid 鐩存挱id
+ */
+ public String liveChapterList(int liveid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ return this.call("live.chapter.list", params);
+ }
+
+ /**
+ * 鎸夌収鐩存挱ID鑾峰彇鎶曠エ鍒楄〃
+ * @param String liveid 鐩存挱ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String liveVoteList(String liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.vote.list", params);
+ }
+
+ /**
+ * 鎸夌収鎶曠エID鍜岀洿鎾璉D鑾峰彇鎶曠エ璇︽儏
+ * @param int vid 鎶曠エID
+ * @param int liveid 鐩存挱ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String liveVoteDetail(int vid, int liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.vote.detail", params);
+ }
+
+ /**
+ * 鎸夌収鐩存挱ID鑾峰彇鎶藉鍒楄〃
+ * @param String liveid 鐩存挱ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String liveLotteryList(String liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.lottery.list", params);
+ }
+
+ /**
+ * 璁剧疆鏈�楂樺湪绾�
+ * @param options 鍙紶鐨勫弬鏁�
+ * @return
+ */
+ public String liveMaxUserSet(HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("options", options);
+ return this.call("live.maxUser.set", params);
+ }
+
+ /**
+ * 鑾峰彇鏈�楂樺湪绾�
+ * @return
+ */
+ public String liveMaxUserGet() throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ return this.call("live.maxUser.get", params);
+ }
+
+ /**
+ * 鍙戣捣鎻愰棶
+ * @param string roomid 鎴块棿ID
+ * @param string content 鎻愰棶鍐呭
+ * @param string uid 鐢ㄦ埛id
+ * @param string role 鐢ㄦ埛瑙掕壊
+ * @param string nickname 鐢ㄦ埛鏄电О
+ * @param HashMap options 鍙�夊弬鏁�
+ */
+ public String liveQaAdd(String roomid, String content, String uid, String role, String nickname, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("content", content);
+ params.put("uid", uid);
+ params.put("role", role);
+ params.put("nickname", nickname);
+ params.put("options", options);
+ return this.call("live.qa.add", params);
+ }
+
+ /**
+ * 瀹℃牳閫氳繃鎻愰棶
+ * @param int qid 鎻愰棶ID
+ * @param string roomid 鎴块棿ID
+ */
+ public String liveQaAudit(int qid, String roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("qid", qid);
+ params.put("roomid", roomid);
+ return this.call("live.qa.audit", params);
+ }
+
+ /**
+ * 鍒犻櫎鎻愰棶
+ * @param int qid 鎻愰棶ID
+ * @param string roomid 鎴块棿ID
+ */
+ public String liveQaDelete(int qid, String roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("qid", qid);
+ params.put("roomid", roomid);
+ return this.call("live.qa.delete", params);
+ }
+
+ /**
+ * 鍥炲鎻愰棶
+ * @param int qid 鎻愰棶ID
+ * @param string roomid 鎴块棿ID
+ * @param string content 鍥炲鍐呭
+ * @param string uid 鐢ㄦ埛ID
+ * @param string nickname 鐢ㄦ埛鏄电О
+ * @param HashMap options 鍙�夊弬鏁�
+ */
+ public String liveQaAnswer(int qid, String roomid, String content, String uid, String nickname, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("qid", qid);
+ params.put("roomid", roomid);
+ params.put("content", content);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("options", options);
+ return this.call("live.qa.answer", params);
+ }
+
+ /**
+ * 鑾峰彇闂瓟鍒楄〃
+ * @param String roomid 鎴块棿ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @param HashMap options 鍙�夊弬鏁�
+ */
+ public String liveQaList(String roomid, int page, int size, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("page", page);
+ params.put("size", size);
+ params.put("options", options);
+ return this.call("live.qa.list", params);
+ }
+
+ /**
+ * 鎸夌収鐩存挱ID鑾峰彇绉佽亰璁板綍鍒楄〃
+ * @param String liveid 鐩存挱ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String livePrivateChatList(String liveid, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("live.privateChat", params);
+ }
+
+ /**
+ * 澧炲姞涓�涓洿鎾绋�
+ * @param String course_name 璇剧▼鍚嶇О
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勪富鎾处鍙�
+ * @param String start_time 璇剧▼寮�濮嬫椂闂�,鏍煎紡: 2015-01-10 12:00:00
+ * @param String end_time 璇剧▼缁撴潫鏃堕棿,鏍煎紡: 2015-01-10 13:00:00
+ * @return
+ */
+ public String courseAdd(String course_name, String account, String start_time, String end_time, String nickname, String accountIntro, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_name", course_name);
+ params.put("account", account);
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("nickname", nickname);
+ params.put("accountIntro", accountIntro);
+ params.put("options", options);
+ return this.call("course.add", params);
+ }
+
+ /**
+ * 杩涘叆涓�涓绋�
+ * @param String course_id 璇剧▼ID
+ * @param String uid 鐢ㄦ埛鍞竴ID
+ * @param String nickname 鐢ㄦ埛鏄电О
+ * @param String role 鐢ㄦ埛瑙掕壊锛屾灇涓捐:ROLE 瀹氫箟
+ * @param Int expire 鏈夋晥鏈�,榛樿:3600(鍗曚綅:绉�)
+ * @param Array options 鍙�夐」锛屽寘鎷�:gender:鏋氫妇瑙佷笂闈ENDER瀹氫箟,avatar:澶村儚鍦板潃
+ */
+ public String courseAccess(String course_id, String uid, String nickname, String role, int expire, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("expire", expire);
+ params.put("options", options);
+ return this.call("course.access", params);
+ }
+
+ /**
+ * 杩涘叆涓�涓绋嬪洖鏀�
+ * @param String course_id 璇剧▼ID
+ * @param String uid 鐢ㄦ埛鍞竴ID
+ * @param String nickname 鐢ㄦ埛鏄电О
+ * @param String role 鐢ㄦ埛瑙掕壊锛屾灇涓捐:ROLE 瀹氫箟
+ * @param Int expire 鏈夋晥鏈�,榛樿:3600(鍗曚綅:绉�)
+ * @param Array options 鍙�夐」锛屽寘鎷�:gender:鏋氫妇瑙佷笂闈ENDER瀹氫箟,avatar:澶村儚鍦板潃
+ */
+ public String courseAccessPlayback(String course_id, String uid, String nickname, String role, int expire, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("expire", expire);
+ params.put("options", options);
+ return this.call("course.access.playback", params);
+ }
+
+ /**
+ * 鑾峰彇璇剧▼鐩存挱闂村湴鍧�
+ * @param String course_id 璇剧▼ID
+ * @param String uid 鐢ㄦ埛鍞竴ID
+ * @param String nickname 鐢ㄦ埛鏄电О
+ * @param String role 鐢ㄦ埛瑙掕壊锛屾灇涓捐:ROLE 瀹氫箟
+ * @param Int expire 鏈夋晥鏈�,榛樿:3600(鍗曚綅:绉�)
+ * @param Array options 鍙�夐」锛屽寘鎷�:gender:鏋氫妇瑙佷笂闈ENDER瀹氫箟,avatar:澶村儚鍦板潃
+ */
+ public String courseAccessUrl(String course_id, String uid, String nickname, String role, int expire, HashMap<Object,Object> options) throws Exception {
+ String accessAuth = this.courseAccessKey(course_id, uid, nickname, role, expire, options);
+ return "http://open.talk-fun.com/room.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鑾峰彇璇剧▼鐩存挱key
+ * @param String course_id 璇剧▼ID
+ * @param String uid 鐢ㄦ埛鍞竴ID
+ * @param String nickname 鐢ㄦ埛鏄电О
+ * @param String role 鐢ㄦ埛瑙掕壊锛屾灇涓捐:ROLE 瀹氫箟
+ * @param Int expire 鏈夋晥鏈�,榛樿:3600(鍗曚綅:绉�)
+ * @param Array options 鍙�夐」锛屽寘鎷�:gender:鏋氫妇瑙佷笂闈ENDER瀹氫箟,avatar:澶村儚鍦板潃
+ */
+ public String courseAccessKey(String course_id, String uid, String nickname, String role, int expire, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ params.put("timestamp", ts);
+
+ params.put("course_id", course_id);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("role", role);
+ params.put("expire", expire);
+ params.put("options", JSONObject.fromObject(options).toString());
+
+ params.put("sign", this.generateSign(params));
+ String accessAuth = JSONObject.fromObject(params).toString();
+ accessAuth = this.base64UrlEncode(accessAuth);
+
+ return accessAuth;
+ }
+
+ /**
+ * 鑾峰彇璇剧▼鍥炴斁鍦板潃
+ * @param String course_id 璇剧▼ID
+ * @param String uid 鐢ㄦ埛鍞竴ID
+ * @param String nickname 鐢ㄦ埛鏄电О
+ * @param String role 鐢ㄦ埛瑙掕壊锛屾灇涓捐:ROLE 瀹氫箟
+ * @param Int expire 鏈夋晥鏈�,榛樿:3600(鍗曚綅:绉�)
+ * @param Array options 鍙�夐」锛屽寘鎷�:gender:鏋氫妇瑙佷笂闈ENDER瀹氫箟,avatar:澶村儚鍦板潃
+ */
+ public String courseAccessPlaybackUrl(String course_id, String uid, String nickname, String role, int expire, HashMap<Object,Object> options) throws Exception {
+ String accessAuth = this.courseAccessKey(course_id, uid, nickname, role, expire, options);
+ return "http://open.talk-fun.com/player.php?accessAuth=" + accessAuth;
+ }
+
+ /**
+ * 鏌ヨ璇剧▼淇℃伅
+ * @param String course_id 璇剧▼ID
+ */
+ public String courseGet(String course_id, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("options", options);
+ return this.call("course.get", params);
+ }
+
+ /**
+ * 鍙戦�佸箍鎾�
+ * @param String course_id 璇剧▼ID
+ * @param String cms
+ * @param HashMap args
+ * @param HashMap options
+ * @return
+ * @throws Exception
+ */
+ public String courseBroadcastSend(String course_id, String cmd, HashMap<Object,Object> args, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("cmd", cmd);
+ params.put("params", args);
+ params.put("options", options);
+ return this.call("course.broadcast.send", params);
+ }
+
+ /**
+ * 鍒犻櫎璇剧▼
+ * @param String course_id 璇剧▼ID
+ */
+ public String courseDelete(String course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.delete", params);
+ }
+
+ /**
+ * 璇剧▼鍒楄〃(灏嗚繑鍥炲紑濮嬫椂闂村湪鍖洪棿鍐呯殑璇剧▼)
+ * @param String start_time 寮�濮嬫椂闂村尯闂�,鏍煎紡: 2015-01-01 12:00:00
+ * @param String end_time 缁撴潫鏃堕棿鍖洪棿,鏍煎紡: 2015-01-02 12:00:00
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @param HashMap options 鍏朵粬鍙傛暟锛宻tatus锛氳绋嬬姸鎬�(0涓烘甯哥姸鎬侊紝-1涓哄凡鍒犻櫎)
+ * @return
+ */
+ public String courseList(String start_time, String end_time, int page, int size, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("page", page);
+ params.put("size", size);
+ params.put("options", options);
+ return this.call("course.list", params);
+ }
+
+ /**
+ * 鏇存柊璇剧▼淇℃伅
+ * @param String course_id 璇剧▼ID
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勪富鎾处鍙�
+ * @param String course_name 璇剧▼鍚嶇О
+ * @param String start_time 璇剧▼寮�濮嬫椂闂�,鏍煎紡:2015-01-01 12:00:00
+ * @param String end_time 璇剧▼缁撴潫鏃堕棿,鏍煎紡:2015-01-01 13:00:00
+ * @param String nickname 涓绘挱鐨勬樀绉�
+ * @param String accountIntro 涓绘挱鐨勭畝浠�
+ * @param HashMap options 鍙�夊弬鏁�
+ */
+ public String courseUpdate(String course_id, String account, String course_name, String start_time, String end_time, String nickname, String accountIntro, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("course_name", course_name);
+ params.put("account", account);
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("nickname", nickname);
+ params.put("accountIntro", accountIntro);
+ params.put("options", options);
+ return this.call("course.update", params);
+ }
+
+ /**
+ * 鎸夌収鎶曠エID鍜岃绋婭D鑾峰彇鎶曠エ璇︽儏
+ * @param int vid 鎶曠エID
+ * @param int course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String courseVoteDetail(int vid, int course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.votes.detail", params);
+ }
+
+ /**
+ * 鎸夌収璇剧▼ID鑾峰彇鎶曠エ鍒楄〃
+ * @param String course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String courseVoteList(String course_id, int page, int size, String status) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ params.put("status", status);
+ return this.call("course.votes.list", params);
+ }
+
+ /**
+ * 鍒犻櫎鎶曠エ
+ * @param String vid 鎶曠エID
+ * @return
+ * @throws Exception
+ */
+ public String courseVoteDelete(String vid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ return this.call("course.votes.delete", params);
+ }
+
+ /**
+ * 鏇存柊鎶曠エ
+ * @param String vid 鎶曠エID
+ * @param HashMap options 瑕佹洿鏂扮殑淇℃伅
+ * @return
+ * @throws Exception
+ */
+ public String courseVoteUpdate(String vid, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("options", options);
+
+ HashMap<Object,Object> files = new HashMap<Object,Object>();
+
+ if (options.containsKey("image")) {
+ String image = options.get("image").toString();
+ if ("" != image) {
+ File file = new File(image);
+ if (!file.exists()) {
+ HashMap<Object,Object> ret = new HashMap<Object,Object>();
+ ret.put("code", CODE_FAIL);
+ ret.put("msg", "鏂囦欢" + image + "涓嶅瓨鍦�");
+ return JSONObject.fromObject(ret).toString();
+ }
+
+ files.put("image", "@" + image);
+ }
+ }
+
+ return this.call("course.votes.update", params, "POST", files);
+ }
+
+ /**
+ * 鎸夌収璇剧▼ID鑾峰彇鎶藉鍒楄〃
+ * @param String course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String courseLotteryList(String course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.lottery.list", params);
+ }
+
+ /**
+ * 鎸夌収璇剧▼ID鑾峰彇闊抽涓嬭浇鍦板潃
+ * @param String course_id 璇剧▼ID
+ * @return
+ */
+ public String courseAudioDownloadUrl(String course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.audio.download.url", params);
+ }
+
+ /**
+ * 鑾峰彇鍦ㄧ嚎鐢ㄦ埛鍒楄〃
+ * @param String course_id 璇剧▼ID
+ * @param String start_time 鏌ヨ寮�濮嬫椂闂�,鏍煎紡:2015-01-01 12:00:00
+ * @param String end_time 鏌ヨ缁撴潫鏃堕棿,鏍煎紡:2015-01-01 13:00:00
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @return
+ * @throws Exception
+ */
+ public String courseOnlineList(String course_id, String start_time, String end_time, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.online.list", params);
+ }
+
+ /**
+ * 鑾峰彇鍦ㄧ嚎绠$悊鍛樺垪琛�
+ * @param String start_time 鏌ヨ寮�濮嬫椂闂�,鏍煎紡:2015-01-01 12:00:00
+ * @param String end_time 鏌ヨ缁撴潫鏃堕棿,鏍煎紡:2015-01-01 13:00:00
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @return
+ * @throws Exception
+ */
+ public String courseOnlineAdmin(String start_time, String end_time, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.online.admin", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼ID鑾峰彇璁垮鍒楄〃
+ * @param String course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ */
+ public String courseVisitorList(String course_id, int page, int size, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ params.put("options", options);
+ return this.call("course.visitor.list", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼ID鑾峰彇鍥炴斁璁垮鍒楄〃
+ * @param Stirng course_id 璇剧▼ID
+ * @param int page 椤甸潰
+ * @param int size 姣忛〉涓暟
+ * @param int options 鍙�夊弬鏁�
+ * @return
+ */
+ public String coursePlaybackVisitorList(String course_id, int page, int size, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ params.put("options", options);
+ return this.call("course.visitor.playback", params);
+ }
+
+ /**
+ * 鏍规嵁鏃堕棿鑾峰彇璁垮鍒楄〃
+ * @param string start_time 鏌ヨ璧峰鏃堕棿,鏍煎紡:2015-01-01 12:00:00
+ * @param string end_time 鏌ヨ缁撴潫鏃堕棿,鏍煎紡:2015-01-01 12:00:00
+ * @param int $page 椤电爜
+ * @param int $size 姣忛〉涓暟
+ */
+ public String courseVisitorListAll(String start_time, String end_time, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.visitor.listall", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼ID鑾峰彇鎻愰棶鍒楄〃
+ * @param String course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String courseQuestionList(String course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.question.list", params);
+ }
+
+ /**
+ * 鑾峰彇璇剧▼椴滆姳璁板綍
+ * @param string course_id 璇剧▼ID
+ * @param int page 椤电爜(榛樿:1)
+ * @param int size 姣忛〉涓暟(榛樿:10)
+ */
+ public String courseFlowerList(String course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.flower.list", params);
+ }
+
+ /**
+ * 鑾峰彇璇剧▼鑱婂ぉ鍒楄〃
+ * @param string course_id 璇剧▼id
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return array
+ */
+ public String courseMessageList(String course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.message", params);
+ }
+
+ /**
+ * 鑾峰彇璇句欢鍒楄〃
+ * @param string course_id 璇剧▼id
+ * @param int page 椤电爜
+ * @return array
+ */
+ public String courseDocumentList(String course_id, int page) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ return this.call("course.document", params);
+ }
+
+ /**
+ * 鍒犻櫎璇句欢
+ * @param String id 璇句欢ID
+ * @return
+ */
+ public String courseDocumentDelete(String id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("id", id);
+ return this.call("document.delete", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼id鑾峰彇鍥炴斁瑙嗛
+ * @param string course_id 璇剧▼id
+ * @return
+ * @throws Exception
+ */
+ public String courseVideo(String course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.video", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼id鑾峰彇鍥炴斁瑙嗛
+ * @param string course_id 璇剧▼id
+ * @prram HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String courseVideo(String course_id, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("options", options);
+ return this.call("course.video", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼id鑾峰彇璇剧▼閰嶇疆
+ * @param string course_id 璇剧▼id
+ * @return
+ * @throws Exception
+ */
+ public String courseConfig(String course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.getConfig", params);
+ }
+
+ /**
+ * 鏇存柊璇剧▼閰嶇疆淇℃伅
+ * @param String course_id 璇剧▼ID
+ * @param HashMap options 閰嶇疆鍙傛暟
+ * @return
+ * @throws Exception
+ */
+ public String courseUpdateConfig(String course_id, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("options", options);
+ return this.call("course.updateConfig", params);
+ }
+
+ /**
+ * 鍙戣捣鎶曠エ
+ * @param String course_id 璇剧▼ID
+ * @param String uid 鎶曠エ鍙戝竷鑰咃紝鍚堜綔鏂圭敤鎴稩D
+ * @param String nickname 鎶曠エ鍙戝竷鑰咃紝鍚堜綔鏂圭敤鎴锋樀绉�
+ * @param String title 鎶曠エ涓婚
+ * @param String label 鎶曠エ鏍囩
+ * @param ArrayList op 閫夐」
+ * @param int type 绫诲瀷锛�0涓哄崟閫夛紝1涓哄閫�
+ * @param int optional 鑻ヤ负鍗曢�夊垯浼�1锛屽閫夊垯浼犵殑鍊间负澶氬皯琛ㄧず鍙互閫夊嚑椤�
+ * @param String answer 绛旀
+ * @param String image 鍥剧墖璺緞
+ * @param String options 鍙�夊弬鏁�
+ */
+ public String courseVoteAdd(String course_id, String uid, String nickname, String title, String label, ArrayList op, int type, int optional, String answer, String image, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("title", title);
+ params.put("label", label);
+ params.put("op", op);
+ params.put("type", type);
+ params.put("optional", optional);
+ params.put("answer", answer);
+ params.put("options", options);
+
+ HashMap<Object,Object> files = new HashMap<Object,Object>();
+
+ if ("" != image) {
+ files.put("image", "@" + image);
+ }
+
+ return this.call("course.votes.add", params, "POST", files);
+ }
+
+ /**
+ * 缁撴潫鎶曠エ
+ * @param int vid 鎶曠エID
+ * @param int showResult 鏄惁鏄剧ず鎶曠エ缁撴灉锛�1鏄剧ず锛�0涓嶆樉绀�
+ * @param String uid 鎶曠エ缁撴潫鑰咃紝鍚堜綔鏂圭敤鎴稩D
+ * @param String nickname 鎶曠エ缁撴潫鑰咃紝鍚堜綔鏂圭敤鎴锋樀绉�
+ */
+ public String courseVoteEnd(int vid, int showResult, String uid, String nickname) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("showVote", showResult);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ return this.call("course.votes.end", params);
+ }
+
+ /**
+ * 鍙戝竷棰勫彂甯冪殑鎶曠エ
+ * @param int vid 鎶曠エID
+ * @param int course_id 璇剧▼ID
+ * @return
+ * @throws Exception
+ */
+ public String courseVoteEmit(int vid, int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("vid", vid);
+ params.put("course_id", course_id);
+ return this.call("course.votes.emit", params);
+ }
+
+ /**
+ * 鍙栬绋婸PT绔犺妭淇℃伅
+ * @param int course_id 璇剧▼id
+ */
+ public String courseChapterList(int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.chapter.list", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼ID鑾峰彇琚瑷�鐨勭敤鎴峰垪琛�
+ * @param int course_id 璇剧▼id
+ */
+ public String courseChatDisableList(int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.chat.disable.list", params);
+ }
+
+ /**
+ * 娣诲姞鍓緫
+ * @param Int liveid 鐩存挱ID
+ * @param String name 鍓緫鍚嶇О
+ * @param Json time 鍓緫鏃堕棿锛宎rray(array('start'=>60,'end'=>180))
+ * @param Int isRelated 鏄惁鍏宠仈婧愮洿鎾紝榛樿涓嶅叧鑱�
+ */
+ public String clipAdd(int liveid, String name, HashMap<Object,Object> time, int isRelated) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ params.put("name", name);
+ params.put("time", time);
+ params.put("isRelated", isRelated);
+ return this.call("clip.add", params);
+ }
+
+ /**
+ * 淇敼鍓緫
+ * @param Int clipid 鍓緫ID
+ * @param String name 鍓緫鍚嶇О
+ * @param Array time 鍓緫鏃堕棿锛宎rray(array('start'=>60,'end'=>180))
+ * @param Int isRelated 鏄惁鍏宠仈婧愮洿鎾紝榛樿涓嶅叧鑱�
+ */
+ public String clipUpdate(int clipid, String name, HashMap<Object,Object> time, int isRelated) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("clipid", clipid);
+ params.put("name", name);
+ params.put("time", time);
+ params.put("isRelated", isRelated);
+ return this.call("clip.update", params);
+ }
+
+ /**
+ * 鍒犻櫎鍓緫
+ * @param Int clipid 鍓緫ID
+ */
+ public String clipDelete(int clipid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("clipid", clipid);
+ return this.call("clip.delete", params);
+ }
+
+ /**
+ * 鑾峰彇鍓緫淇℃伅
+ * @param Int clipid 鍓緫ID
+ */
+ public String clipGet(int clipid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("clipid", clipid);
+ return this.call("clip.get", params);
+ }
+
+ /**
+ * 鑾峰彇鍓緫鍒楄〃
+ * @param Int page 椤电爜
+ * @param Int size 鏉℃暟
+ * @param Int liveid 鐩存挱id
+ */
+ public String clipList(int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("clip.list", params);
+ }
+
+ /**
+ * 鑾峰彇鍓緫鍒楄〃
+ * @param Int page 椤电爜
+ * @param Int size 鏉℃暟
+ * @param Int liveid 鐩存挱id
+ */
+ public String clipList(int page, int size, int liveid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("liveid", liveid);
+ return this.call("clip.list", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼id鑾峰彇鍓緫鍒楄〃
+ * @param Int course_id 璇剧▼id
+ * @param Int page 椤电爜
+ * @param Int size 鏉℃暟
+ */
+ public String clipListByCid(int course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("clip.course.list", params);
+ }
+
+ /**
+ * 娣诲姞鍓緫
+ * @param Int course_id 璇剧▼ID
+ * @param String name 鍓緫鍚嶇О
+ * @param Json time 鍓緫鏃堕棿锛宎rray(array('start'=>60,'end'=>180))
+ * @param Int isRelated 鏄惁鍏宠仈婧愮洿鎾紝榛樿涓嶅叧鑱�
+ */
+ public String clipAddByCid(int course_id, String name, HashMap<Object,Object> time, int isRelated) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("name", name);
+ params.put("time",time);
+ params.put("isRelated", isRelated);
+ return this.call("clip.course.add", params);
+ }
+
+ /**
+ * 鑾峰彇鍓緫access_token锛屾挱鏀惧湴鍧�
+ * @param int clipid 鍓緫ID
+ * @param String uid 鍚堜綔鏂圭敤鎴峰敮涓�ID
+ * @param String nickname 鍚堜綔鏂圭敤鎴锋樀绉�
+ * @param int expire 鏈夋晥鏈燂紝鍗曚綅锛氱(榛樿3600绉�)
+ */
+ public String clipAccess(int clipid, String uid, String nickname, int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("clipid", clipid);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("expire", expire);
+ return this.call("clip.access", params);
+ }
+
+ /**
+ * 铏氭嫙鐢ㄦ埛瀵煎叆
+ * @param Int course_id 璇剧▼ID
+ * @param Array userList 铏氭嫙鐢ㄦ埛鍒楄〃
+ * @param int total 鎬绘暟
+ */
+ public String courseRobotSet(int course_id, ArrayList userList, int total) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("userList", userList);
+ params.put("total", total);
+ HashMap<Object, Object> files = new HashMap<Object, Object>();
+
+ return this.call("course.robot.set", params, "POST",files);
+ }
+
+ /**
+ * 婊氬姩鍏憡鎺ュ彛
+ * @param int course_id 璇剧▼ID
+ * @param String content 婊氬姩鍏憡鍐呭
+ * @param String link 婊氬姩鍏憡閾炬帴
+ * @param int duration 婊氬姩閫氱煡鏄剧ず鏃堕暱(鍗曚綅锛氱)
+ * @return
+ * @throws Exception
+ */
+ public String courseNoticeRoll(int course_id, String content, String link, int duration) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("content", content);
+ params.put("link", link);
+ params.put("duration", duration);
+ return this.call("course.notice.roll", params);
+ }
+
+ /**
+ * 璇剧▼涓婁紶璇句欢
+ * @param course_id 璇剧▼ID
+ * @param file 鏂囦欢 {"file":"鏂囦欢璺緞","name":"鏂囦欢鍚�"}锛屾敮鎸佺殑璇句欢鏍煎紡涓猴細ppt, pptx, doc, docx, pdf, jpg, jpeg, png, gif
+ */
+ public String courseDocumentUpload(String course_id, HashMap<String,String> file) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("name", file.get("name"));
+
+ String res = this.call("course.document.uploadurl.get",params);
+
+ JSONObject resJson = JSONObject.fromObject(res);
+ if(resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS){
+ JSONObject resData = resJson.getJSONObject("data");
+
+ File f;
+ f = new File(file.get("file"));
+ Part[] parts = {
+ new FilePart(resData.getString("field"),f)
+ };
+
+ return this.doPost(resData.getString("api"), parts);
+ }
+ return res;
+ }
+
+ /**
+ * 鑾峰彇涓绘挱鐧诲綍淇℃伅
+ * @param account 涓绘挱璐︽埛
+ * @param accountType 涓绘挱璐︽埛绫诲瀷
+ * @param options 鍏跺畠鍙�夐」锛宻sl锛氭槸鍚︿娇鐢╤ttps(true涓轰娇鐢紝false涓轰笉浣跨敤)
+ * @return
+ * @throws Exception
+ */
+ public String courseLogin(String account, int accountType, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ params.put("options", options);
+ return this.call("course.login", params);
+ }
+
+ /**
+ * 淇敼涓绘挱澶村儚
+ * @param account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿ID
+ * @param filename 鏈湴鍥剧墖鍥剧墖璺緞
+ * @return
+ * @throws Exception
+ */
+ public String courseZhuboPortrait(String account, String filename) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ String res = this.call("course.zhubo.portrait",params);
+
+ JSONObject resJson = JSONObject.fromObject(res);
+ if(resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS){
+ JSONObject resData = resJson.getJSONObject("data");
+
+ File f;
+ f = new File(filename);
+ Part[] parts = {
+ new FilePart(resData.getString("field"),f)
+ };
+
+ return this.doPost(resData.getString("api"), parts);
+ }
+
+ return res;
+ }
+
+ /**
+ * 娣诲姞涓绘挱
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿ID
+ * @param String nickname 涓绘挱鏄电О
+ * @param String intro 涓绘挱绠�浠�
+ * @param String password 涓绘挱瀵嗙爜
+ * @return
+ * @throws Exception
+ */
+ public String courseZhuboAdd(String account, String nickname, String intro, String password) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("nickname", nickname);
+ params.put("intro", intro);
+ params.put("password", password);
+ return this.call("course.zhubo.add",params);
+ }
+
+ /**
+ * 鑾峰彇涓绘挱鍒楄〃
+ * @param int page 鍒嗛〉椤电爜
+ * @param int size 姣忛〉鏁版嵁涓暟
+ * @return
+ * @throws Exception
+ */
+ public String courseZhuboList(int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.zhubo.list",params);
+ }
+
+ /**
+ * 鑾峰彇涓绘挱鍒楄〃
+ * @param int page 鍒嗛〉椤电爜
+ * @param int size 姣忛〉鏁版嵁涓暟
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿鎴朓D锛岄潪鎸囧畾鏌ヨ鍏蜂綋涓绘挱鏃朵笉瑕佸~
+ * @return
+ * @throws Exception
+ */
+ public String courseZhuboList(int page, int size, String account) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("account", account);
+ return this.call("course.zhubo.list",params);
+ }
+
+ /**
+ * 鑾峰彇涓绘挱鐧诲綍璁板綍
+ * @param int page 鍒嗛〉椤电爜
+ * @param int size 姣忛〉鏁版嵁涓暟
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿鎴朓D锛岄潪鎸囧畾鏌ヨ鍏蜂綋涓绘挱鏃朵笉瑕佸~
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷銆�1 娆㈡嫇璐︽埛, 2 鍚堜綔鏂硅处鎴�
+ * @return
+ * @throws Exception
+ */
+ public String courseZhuboLoginInfo(int page, int size, String account, int accountType) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("account", account);
+ params.put("accountType", accountType);
+ return this.call("course.zhubo.loginInfo", params);
+ }
+
+ /**
+ * 鑾峰彇涓绘挱涓婁笅璇捐褰�
+ * @param int page 鍒嗛〉椤电爜
+ * @param int size 姣忛〉鏁版嵁涓暟
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿鎴朓D锛岄潪鎸囧畾鏌ヨ鍏蜂綋涓绘挱鏃朵笉瑕佸~
+ * @param int accountType 涓绘挱璐﹀彿绫诲瀷銆�1 娆㈡嫇璐︽埛, 2 鍚堜綔鏂硅处鎴�
+ * @return
+ * @throws Exception
+ */
+ public String courseZhuboClassRecord(int page, int size, String account, int accountType) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("account", account);
+ params.put("accountType", accountType);
+ return this.call("course.zhubo.classRecord", params);
+ }
+
+ /**
+ * 鏇存柊涓绘挱淇℃伅
+ * @param String account 鍙戣捣鐩存挱璇剧▼鐨勫悎浣滄柟涓绘挱鍞竴璐﹀彿ID
+ * @param String nickname 涓绘挱鏄电О
+ * @param String intro 涓绘挱绠�浠�
+ * @param String password 涓绘挱瀵嗙爜
+ * @return
+ * @throws Exception
+ */
+ public String courseZhuboUpdate(String account, String nickname, String intro, String password) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("nickname", nickname);
+ params.put("intro", intro);
+ params.put("password", password);
+ return this.call("course.zhubo.update",params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱鍣ㄥ惎鍔ㄥ崗璁�
+ * @param int course_id 璇剧▼ID
+ * @return
+ * @throws Exception
+ */
+ public String courseLaunch(int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.launch",params);
+ }
+
+ /**
+ * 鍙戣捣鎻愰棶
+ * @param int course_id 璇剧▼ID
+ * @param string content 鎻愰棶鍐呭
+ * @param string uid 鐢ㄦ埛ID
+ * @param string role 鐢ㄦ埛瑙掕壊
+ * @param string nickname 鐢ㄦ埛鏄电О
+ * @param array options 鍙�夊弬鏁�
+ */
+ public String courseQaAdd(int course_id, String content, String uid, String role, String nickname, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("content", content);
+ params.put("uid", uid);
+ params.put("role", role);
+ params.put("nickname", nickname);
+ params.put("options", options);
+ return this.call("course.qa.add", params);
+ }
+
+ /**
+ * 瀹℃牳閫氳繃鎻愰棶
+ * @param int qid 鎻愰棶ID
+ * @param int course_id 璇剧▼ID
+ */
+ public String courseQaAudit(int qid, int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("qid", qid);
+ params.put("course_id", course_id);
+ return this.call("course.qa.audit", params);
+ }
+
+ /**
+ * 鍒犻櫎鎻愰棶
+ * @param int qid 鎻愰棶ID
+ * @param int course_id 璇剧▼ID
+ */
+ public String courseQaDelete(int qid, int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("qid", qid);
+ params.put("course_id", course_id);
+ return this.call("course.qa.delete", params);
+ }
+
+ /**
+ * 鍥炲鎻愰棶
+ * @param int qid 鎻愰棶ID
+ * @param int course_id 璇剧▼ID
+ * @param string content 鎻愰棶鍐呭
+ * @param string uid 鐢ㄦ埛ID
+ * @param string nickname 鐢ㄦ埛鏄电О
+ * @param array options 鍙�夊弬鏁�
+ */
+ public String courseQaAnswer(int qid, int course_id, String content, String uid, String nickname, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("qid", qid);
+ params.put("course_id", course_id);
+ params.put("content", content);
+ params.put("uid", uid);
+ params.put("nickname", nickname);
+ params.put("options", options);
+ return this.call("course.qa.answer", params);
+ }
+
+ /**
+ * 鑾峰彇闂瓟鍒楄〃
+ * @param int course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @param array options 鍙�夊弬鏁�
+ */
+ public String courseQaList(int course_id, int page, int size, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ params.put("options", options);
+ return this.call("course.qa.list", params);
+ }
+
+ /**
+ * 涓婁紶璇剧▼灏侀潰鍥�
+ * @param course_id 璇剧▼ID
+ * @param filename 鍥剧墖璺緞(鏀寔鍥剧墖鏍煎紡:jpg銆乯peg锛屽浘鐗囧ぇ灏忎笉瓒呰繃2M)
+ * @return
+ * @throws Exception
+ */
+ public String courseThumbUpload(int course_id,String filename) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ String res = this.call("course.getUploadThumbUrl",params);
+
+ JSONObject resJson = JSONObject.fromObject(res);
+ if(resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS){
+ JSONObject resData = resJson.getJSONObject("data");
+
+ File f;
+ f = new File(filename);
+ Part[] parts = {
+ new FilePart(resData.getString("field"),f)
+ };
+
+ return this.doPost(resData.getString("api"), parts);
+ }
+ return res;
+ }
+
+ /**
+ * 鎸夌収璇剧▼ID鑾峰彇绉佽亰璁板綍鍒楄〃
+ * @param String course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @return
+ */
+ public String coursePrivateChatList(int course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.privateChat", params);
+ }
+
+ /**
+ * 鎸夌収璇剧▼ID鑾峰彇鎺ㄦ祦鍦板潃
+ * @param String course_id 璇剧▼ID
+ * @param int width 瑙嗛瀹藉害
+ * @param int height 瑙嗛楂樺害
+ * @return
+ */
+ public String coursePushRtmpUrl(int course_id, int width, int height) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("width", width);
+ params.put("height", height);
+ return this.call("course.pushRtmpUrl", params);
+ }
+
+ /**
+ * 鎸夌収璇剧▼ID鑾峰彇璇勫垎鍒楄〃
+ * @param int course_id 璇剧▼ID
+ * @param int page 椤电爜
+ * @param int size 姣忛〉涓暟
+ * @returnbi
+ */
+ public String courseScoreList(int course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.score.list", params);
+ }
+
+ /**
+ * 璁剧疆璇剧▼鎷夋祦杞挱
+ * @param int course_id 璇剧▼id
+ * @param string pullUrl 婧愮珯鎷夋祦鍦板潃锛屼负绌烘祴鍋滄鎷夋祦杞帹
+ * @return array
+ */
+ public String courseSetPullLive(int course_id, String pullUrl) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("pullUrl", pullUrl);
+ return this.call("course.setPullLive", params);
+ }
+
+ /**
+ * 鑾峰彇璇剧▼鎷夋祦杞挱璁剧疆
+ * @param int course_id 璇剧▼id
+ * @return array
+ */
+ public String courseGetPullLive(int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("course.getPullLive", params);
+ }
+
+
+ /**
+ * 璇剧▼杞挱缁戝畾
+ * @param string course_id 璇剧▼id
+ * @param string rebroCid 琚浆鎾殑璇剧▼id
+ * @return array
+ */
+ public String courseRebroAdd(String course_id,String rebroCid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("rebroCid", rebroCid);
+ return this.call("course.rebro.add", params);
+ }
+
+
+
+ /**
+ * 璇剧▼杞挱瑙g粦
+ * @param string course_id 璇剧▼id
+ * @param string rebroCid 琚浆鎾殑璇剧▼id
+ * @return array
+ */
+ public String courseRebroDelete(String course_id,String rebroCid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("rebroCid", rebroCid);
+ return this.call("course.rebro.delete", params);
+ }
+
+
+ /**
+ * 鐢ㄦ埛韪㈠嚭璁板綍
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏉℃暟
+ * @param string uid 鐢ㄦ埛ID
+ */
+ public String memberBanLog(int page, int size , String uid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("uid", uid);
+ return this.call("member.banLog", params);
+ }
+
+
+ /**
+ * 鐢ㄦ埛韪㈠嚭灏佺
+ * @param int course_id 璇剧▼ID
+ * @param string uid 鐢ㄦ埛ID
+ * @param int duration 灏佺鏃堕暱锛屽崟浣嶇锛岄粯璁�3灏忔椂
+ * @param string ip 灏佺鐨処P锛屼笉灏両P鐨勮瘽浼犵┖瀛楃涓�
+ */
+ public String memberBan(int course_id, String uid, int duration, String ip) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("uid", uid);
+ params.put("duration", duration);
+ params.put("ip", ip);
+ return this.call("member.ban", params);
+ }
+
+ /**
+ * 鐢ㄦ埛瑙e皝
+ * @param int course_id 璇剧▼ID
+ * @param string uid 鐢ㄦ埛ID
+ * @param string ip 瑙g鐨処P锛屼笉瑙P浼犵┖瀛楃涓�
+ */
+ public String memberFree(int course_id, String uid, String ip) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("uid", uid);
+ params.put("ip", ip);
+ return this.call("member.free", params);
+ }
+
+
+
+ /**
+ * 鑾峰彇鐢熸椿鐩存挱閰嶇疆
+ * @param int course_id 鐩存挱id
+ * @param object options 閰嶇疆
+ * @return
+ */
+ public String getLifeConfig(int course_id, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("options", options);
+ return this.call("course.getLifeConfig", params);
+ }
+
+ /**
+ * 缂栬緫鐢熸椿鐩存挱閰嶇疆
+ * @param int course_id 鐩存挱id
+ * @param object options 閰嶇疆
+ * @return
+ */
+ public String updateLifeConfig(int course_id, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("options", options);
+ return this.call("course.updateLifeConfig", params, "POST", new HashMap<Object, Object>());
+ }
+
+ /**
+ * 鏌ヨ鏌愭湀浠藉嘲鍊�
+ * @param String date_time 鏌ヨ鏈堜唤(鏍煎紡锛�2016-10)
+ * @param int vtype 绫诲瀷(0涓烘�昏锛�1涓虹洿鎾紝2涓哄洖鏀�)
+ * @return
+ * @throws Exception
+ */
+ public String statsPeakMonth(String date_time, int vtype) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("date_time", date_time);
+ params.put("vtype", vtype);
+ return this.call("stats.peak.month",params);
+ }
+
+ /**
+ * 鏌ヨ鏌愭湀浠藉嘲鍊�
+ * @param String date_time 鏌ヨ鏈堜唤(鏍煎紡锛�2016-10)
+ * @param int vtype 绫诲瀷(0涓烘�昏锛�1涓虹洿鎾紝2涓哄洖鏀�)
+ * @param int departmentId 閮ㄩ棬id
+ * @return
+ * @throws Exception
+ */
+ public String statsPeakMonth(String date_time, int vtype, int departmentId) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("date_time", date_time);
+ params.put("vtype", vtype);
+ params.put("departmentId", departmentId);
+ return this.call("stats.peak.month",params);
+ }
+
+ /**
+ * 鏌ヨ鏌愭棩宄板��
+ * @param String date_time 鏌ヨ鏃ユ湡(鏍煎紡锛�2016-10-11)
+ * @param int vtype 绫诲瀷(0涓烘�昏锛�1涓虹洿鎾紝2涓哄洖鏀�)
+ * @return
+ * @throws Exception
+ */
+ public String statsPeakDay(String date_time, int vtype) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("date_time", date_time);
+ params.put("vtype", vtype);
+ return this.call("stats.peak.day",params);
+ }
+
+ /**
+ * 鏌ヨ鏌愭湀浠藉嘲鍊�
+ * @param String date_time 鏌ヨ鏃ユ湡(鏍煎紡锛�2016-10-11)
+ * @param int vtype 绫诲瀷(0涓烘�昏锛�1涓虹洿鎾紝2涓哄洖鏀�)
+ * @param int departmentId 閮ㄩ棬id
+ * @return
+ * @throws Exception
+ */
+ public String statsPeakDay(String date_time, int vtype, int departmentId) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("date_time", date_time);
+ params.put("vtype", vtype);
+ params.put("departmentId", departmentId);
+ return this.call("stats.peak.day",params);
+ }
+
+ /**
+ * 涓婁紶鏂囨。
+ * @param roomid 鎴块棿ID
+ * @param file 鏂囦欢 {"file":"鏂囦欢璺緞","name":"鏂囦欢鍚�"}, 鏀寔鐨勮浠舵牸寮忎负锛歱pt, pptx, doc, docx, pdf, jpg, jpeg, png, gif
+ * @return
+ * @throws Exception
+ */
+ public String documentUpload(String roomid,HashMap<String,String> file) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ params.put("name", file.get("name"));
+
+ String res = this.call("document.uploadurl.get",params);
+
+ JSONObject resJson = JSONObject.fromObject(res);
+ if(resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS){
+ JSONObject resData = resJson.getJSONObject("data");
+
+ File f;
+ f = new File(file.get("file"));
+ Part[] parts = {
+ new FilePart(resData.getString("field"),f)
+ };
+
+ return this.doPost(resData.getString("api"), parts);
+ }
+ return res;
+ }
+
+ /**
+ * 璇句欢涓嬭浇鍦板潃
+ * @param intval id 寮�鏀惧钩鍙扮殑鏂囨。ID
+ */
+ public String documentDownload(int id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("id", id);
+ return this.call("document.downloadurl.get", params);
+ }
+
+ /**
+ * 璇句欢鍒楄〃
+ * @param intval roomid 鏍规嵁鎴块棿id鑾峰彇璇句欢鍒楄〃
+ */
+ public String documentList(int roomid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("roomid", roomid);
+ return this.call("document.list", params);
+ }
+
+ /**
+ * 璇句欢璇︾粏淇℃伅
+ * @param intval id 鏍规嵁璇句欢id鑾峰彇璇句欢璇︾粏淇℃伅
+ */
+ public String documentGet(int id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("id", id);
+ return this.call("document.get", params);
+ }
+
+ /**
+ * 绗笁鏂圭礌鏉愮粦瀹氾紙鐩墠浠呮敮鎸侀煶瑙嗛锛�
+ * @param int bid 涓绘挱id銆傜礌鏉愮粦瀹氱殑涓绘挱锛屽悓涓礌鏉愬彧鑳界粦瀹氫竴涓富鎾�
+ * @param String name 绱犳潗鍚嶇О
+ * @param String url 绱犳潗鍦板潃
+ * @param int filesize 绱犳潗澶у皬
+ * @param int duration 绱犳潗鏃堕暱
+ * @param String ext 绱犳潗绫诲瀷
+ * @param String thumbnail 绱犳潗缂╃暐鍥�
+ * @param int courseId 璇剧▼id銆傜礌鏉愮粦瀹氱殑璇剧▼锛屽悓涓礌鏉愬彧鑳界粦瀹氫竴涓绋�
+ * @param int roomId 鎴块棿id銆傜礌鏉愮粦瀹氱殑鎴块棿锛屽悓涓礌鏉愬彧鑳界粦瀹氫竴涓埧闂�
+ */
+ public String documentThirdBinding(int bid, String name, String url, int filesize, int duration, String ext, int type, String thumbnail, int courseId, int roomId) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("bid", bid);
+ params.put("name", name);
+ params.put("url", url);
+ params.put("filesize", filesize);
+ params.put("duration", duration);
+ params.put("ext", ext);
+ params.put("type", type);
+ params.put("thumbnail", thumbnail);
+ params.put("course_id", courseId);
+ params.put("roomid", roomId);
+ return this.call("document.thirdBinding", params);
+ }
+
+ /**
+ * 鍒涘缓閮ㄩ棬
+ * @param String departmentName 閮ㄩ棬鍚嶇О
+ */
+ public String departmentCreate(String departmentName) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentName", departmentName);
+ return this.call("department.create", params);
+ }
+
+ /**
+ * 鏇存柊閮ㄩ棬淇℃伅
+ * @param int departmentId 閮ㄩ棬id
+ * @param String departmentName 閮ㄩ棬鍚嶇О
+ */
+ public String departmentUpdate(int departmentId, String departmentName) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentId", departmentId);
+ params.put("departmentName", departmentName);
+ return this.call("department.update", params);
+ }
+
+ /**
+ * 鍒犻櫎閮ㄩ棬
+ * @param int departmentId 閮ㄩ棬id
+ */
+ public String departmentDelete(int departmentId) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentId", departmentId);
+ return this.call("department.delete", params);
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬淇℃伅
+ * @param int departmentId 閮ㄩ棬id
+ */
+ public String departmentGet(int departmentId) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentId", departmentId);
+ return this.call("department.get", params);
+ }
+
+ /**
+ * 鎵归噺鑾峰彇閮ㄩ棬淇℃伅
+ * @param String[] departmentIds 閮ㄩ棬id鏁扮粍
+ */
+ public String departmentGetBatch(String[] departmentIds) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentIds", departmentIds);
+ return this.call("department.getBatch", params);
+ }
+
+
+ /**
+ * 鎵归噺鏇存柊閮ㄩ棬鍥炶皟鍦板潃
+ *
+ * @param HashMap<String,String> callbackApis 閮ㄩ棬鍥炶皟鍦板潃 {"1":"http://www.talk-fun.com/","2":"https://www.talk-fun.com/"}
+ */
+ public String departmentUpdateCallbackApiBatch(HashMap<String,String> callbackApis) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("callbackApis", callbackApis);
+ return this.call("department.updateCallbackApiBatch", params);
+ }
+
+ /**
+ * 閮ㄩ棬璁剧疆鏈�楂樺湪绾�
+ * @param departmentId
+ * @param options
+ * @throws Exception
+ */
+ public String departmentMaxUserSet(int departmentId, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentId", departmentId);
+ params.put("options", options);
+ return this.call("department.maxUser.set", params);
+ }
+
+ public String departmentMaxUserGet(int departmentId) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentId", departmentId);
+ return this.call("department.maxUser.get", params);
+ }
+
+ /**
+ * 鑾峰彇瑙嗛涓婁紶鍦板潃
+ * @param String account 涓绘挱甯愬彿
+ * @param int accountType 甯愬彿绫诲瀷
+ * @param String title 瑙嗛鏍囬
+ * @param String md5 瑙嗛鏂囦欢md5
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String videoGetUploadUrl(String account, int accountType, String title, String md5, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("account", account);
+ params.put("accountType", accountType);
+ params.put("title", title);
+ params.put("md5", md5);
+ params.put("options", options);
+ return this.call("video.getUploadUrl", params);
+ }
+
+ /**
+ * 鑾峰彇瑙嗛淇℃伅
+ * @param int videoId 瑙嗛ID
+ * @param int expire 瑙嗛鏈夋晥鏈�(鍗曚綅锛氱)
+ * @return
+ * @throws Exception
+ */
+ public String videoGet(int videoId, int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("videoId", videoId);
+ params.put("expire", expire);
+ return this.call("video.get", params);
+ }
+
+ /**
+ * 鎵归噺鑾峰彇瑙嗛淇℃伅
+ * @param int[] videoIds 瑙嗛ID
+ * @param int expire 瑙嗛鏈夋晥鏈�(鍗曚綅锛氱)
+ * @return
+ * @throws Exception
+ */
+ public String videoGetBatch(int[] videoIds, int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("videoIds", videoIds);
+ params.put("expire", expire);
+ return this.call("video.getBatch", params);
+ }
+
+ /**
+ * 鑾峰彇瑙嗛鍒楄〃
+ * @param int page 椤电爜
+ * @param int expire 瑙嗛鏈夋晥鏈�(鍗曚綅锛氱)
+ * @return
+ * @throws Exception
+ */
+ public String videoList(int page, int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("expire", expire);
+ return this.call("video.list", params);
+ }
+
+ /**
+ * 瑙嗛鍒犻櫎
+ * @param int videoId 瑙嗛ID
+ * @return
+ * @throws Exception
+ */
+ public String videoDelete(int videoId) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("videoId", videoId);
+ return this.call("video.delete", params);
+ }
+
+ /**
+ * 瑙嗛鏇存柊
+ * @param int videoId 瑙嗛ID
+ * @param string title 瑙嗛鏍囬
+ * @return
+ * @throws Exception
+ */
+ public String videoUpdate(int videoId, String title) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("videoId", videoId);
+ params.put("title", title);
+ return this.call("video.update", params);
+ }
+
+ /**
+ * 妯″潡璁剧疆
+ * @param HashMap options 鍙�夊弬鏁�
+ * @return
+ * @throws Exception
+ */
+ public String moduleSet(HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ HashMap<Object,Object> files = new HashMap<Object,Object>();
+
+ if (options.containsKey("livePcLogo")) {
+ String path = options.get("livePcLogo").toString();
+
+ File file = new File(path);
+ if (!file.exists()) {
+ HashMap<Object,Object> retval = new HashMap<Object,Object>();
+ retval.put("code", CODE_FAIL);
+ retval.put("msg", "鏂囦欢" + path + "涓嶅瓨鍦�");
+ return JSONObject.fromObject(retval).toString();
+ }
+
+ files.put("livePcLogo", "@" + path);
+ options.remove("livePcLogo");
+ }
+
+ if (options.containsKey("playbackPcLogo")) {
+ String path = options.get("playbackPcLogo").toString();
+
+ File file = new File(path);
+ if (!file.exists()) {
+ HashMap<Object,Object> retval = new HashMap<Object,Object>();
+ retval.put("code", CODE_FAIL);
+ retval.put("msg", "鏂囦欢" + path + "涓嶅瓨鍦�");
+ return JSONObject.fromObject(retval).toString();
+ }
+
+ files.put("playbackPcLogo", "@" + path);
+ options.remove("playbackPcLogo");
+ }
+
+ if (options.containsKey("clientLogo")) {
+ String path = options.get("clientLogo").toString();
+
+ File file = new File(path);
+ if (!file.exists()) {
+ HashMap<Object,Object> retval = new HashMap<Object,Object>();
+ retval.put("code", CODE_FAIL);
+ retval.put("msg", "鏂囦欢" + path + "涓嶅瓨鍦�");
+ return JSONObject.fromObject(retval).toString();
+ }
+
+ files.put("clientLogo", "@" + path);
+ options.remove("clientLogo");
+ }
+
+ if (options.containsKey("watermarkFile")) {
+ String path = options.get("watermarkFile").toString();
+
+ File file = new File(path);
+ if (!file.exists()) {
+ HashMap<Object,Object> retval = new HashMap<Object,Object>();
+ retval.put("code", CODE_FAIL);
+ retval.put("msg", "鏂囦欢" + path + "涓嶅瓨鍦�");
+ return JSONObject.fromObject(retval).toString();
+ }
+
+ files.put("watermarkFile", "@" + path);
+ options.remove("watermarkFile");
+ }
+
+ params.put("options", options);
+ return this.call("module.set", params, "POST", files);
+ }
+
+ /**
+ * 涓婁紶瑙嗛
+ * @param String fileName 瑕佷笂浼犵殑鏈湴璺緞鏂囦欢
+ * @param String account 涓婁紶鑰匢D
+ * @param int accountType 甯愬彿绫诲瀷锛�1涓烘鎷撳笎鍙凤紝2涓虹涓夋柟甯愬彿
+ * @param String title 瑙嗛鏍囬
+ * @param String nickname 涓婁紶鑰呮樀绉�
+ * @param String accountIntro 涓婁紶鑰呯畝浠�
+ * @param HashMap course 璇剧▼鍙傛暟锛岃嫢涓嶅垱寤鸿绋嬶紝璇风暀绌�
+ * @return
+ * @throws Exception
+ */
+ public String videoUpload(String fileName, String account, int accountType, String title, String nickname, String accountIntro,HashMap<Object,Object> course) throws Exception {
+ String retval = "";
+ String fileMd5 = "";
+
+ File file = new File(fileName);
+ if (file.exists()) {
+ fileMd5 = MD5Util.getFileMD5String(file);
+ } else {
+ retval = "{\"code\":" + com.qxueyou.scc.sdk.MTCloud.CODE_FAIL + ",\"msg\":\"鏂囦欢涓嶅瓨鍦╘"}";
+ return retval;
+ }
+
+ HashMap<Object,Object> options = new HashMap<Object,Object>();
+ options.put("nickname", nickname);
+ options.put("accountIntro", accountIntro);
+ options.put("course", course);
+
+ retval = this.videoGetUploadUrl(account, accountType, title, fileMd5, options);
+ JSONObject resJson = JSONObject.fromObject(retval);
+ if(resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS) {
+ JSONObject resData = resJson.getJSONObject("data");
+ String uploadUrl = resData.getString("uploadUrl");
+
+ File f;
+ f = new File(fileName);
+ Part[] parts = {
+ new FilePart(resData.getString("field"), f)
+ };
+
+ int tryTime = 0;
+ while(tryTime<2){
+ retval = this.doPost(uploadUrl, parts);
+ JSONObject retvalJson = JSONObject.fromObject(retval);
+ if(retvalJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS){
+ break;
+ }
+ tryTime ++;
+ }
+
+
+ } else if (resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_VIDEO_UPLOADED) {
+ resJson.put("code", com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS);
+ retval = resJson.toString();
+ }
+
+ return retval;
+ }
+
+ /**
+ * 鍒嗘涓婁紶瑙嗛
+ * @param String fileName 瑕佷笂浼犵殑鏈湴璺緞鏂囦欢
+ * @param String account 涓绘挱甯愬彿
+ * @param int accountType 甯愬彿绫诲瀷
+ * @param String title 瑙嗛鏍囬
+ * @param String nickname 涓绘挱鏄电О
+ * @param String accountIntro 涓绘挱绠�浠�
+ * @param HashMap course 璇剧▼鍙傛暟锛岃嫢涓嶅垱寤鸿绋嬶紝璇风暀绌�
+ * @return
+ * @throws Exception
+ */
+ public String videoSegmentUpload(String fileName, String account, int accountType, String title, String nickname, String accountIntro, HashMap<Object,Object> course) throws Exception {
+ String retval = "";
+ String fileMd5 = "";
+
+ File file = new File(fileName);
+ if (file.exists()) {
+ fileMd5 = MD5Util.getFileMD5String(file);
+ } else {
+ retval = "{\"code\":" + com.qxueyou.scc.sdk.MTCloud.CODE_FAIL + ",\"msg\":\"鏂囦欢涓嶅瓨鍦╘"}";
+ return retval;
+ }
+
+ HashMap<Object,Object> options = new HashMap<Object,Object>();
+ options.put("nickname", nickname);
+ options.put("accountIntro", accountIntro);
+ options.put("course", course);
+
+ retval = this.videoGetUploadUrl(account, accountType, title, fileMd5, options);
+ JSONObject resJson = JSONObject.fromObject(retval);
+ if(resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS) {
+ JSONObject resData = resJson.getJSONObject("data");
+ String uploadUrl = resData.getString("resumeUploadUrl");
+ String chunkListUrl = resData.getString("chunkListUrl");
+
+ // 鑾峰彇涓婁紶杩囩殑鍒嗙墖
+ JSONArray chunkList = null;
+ String chunkListRes = doGet(chunkListUrl);
+ JSONObject chunkListJson = JSONObject.fromObject(chunkListRes);
+ if(chunkListJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS) {
+ chunkList = chunkListJson.getJSONArray("data");
+ }
+
+ String fileSeparator = (new Properties(System.getProperties())).getProperty("file.separator");
+
+ // 鍒嗗壊鏂囦欢瀛樺偍鐨勪复鏃剁洰褰�
+ File tempDir = new File(file.getParentFile().toString() + fileSeparator + "mtcloudTemp" + fileMd5 + fileSeparator);
+ if (!tempDir.exists()) {
+ tempDir.mkdirs();
+ }
+
+ // 鍙栧緱鏂囦欢鐨勫ぇ灏�
+ long fileLength = file.length();
+ int size = 1048576;
+
+ // 鍙栧緱琚垎鍓插悗鐨勫皬鏂囦欢鐨勬暟鐩�
+ int num = (fileLength % size != 0) ? (int) (fileLength / size + 1) : (int) (fileLength / size);
+
+ // 杈撳叆鏂囦欢娴侊紝鍗宠鍒嗗壊鐨勬枃浠�
+ FileInputStream in = new FileInputStream(file);
+ // 璇昏緭鍏ユ枃浠舵祦鐨勫紑濮嬪拰缁撴潫涓嬫爣
+ long end = 0;
+ int begin = 0;
+
+ // 鏍规嵁瑕佸垎鍓茬殑鏁扮洰杈撳嚭鏂囦欢
+ for (int i = 0; i < num; i++) {
+ boolean _continue = false;
+
+ if (null != chunkList) {
+ for (int j = 0; j < chunkList.size(); ++j) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(i+1);
+ String chunk = sb.toString();
+
+ if (chunk.equals(chunkList.get(j).toString())) {
+ _continue = true;
+ }
+ }
+ }
+
+ if (true == _continue) {
+ continue;
+ }
+
+ // 瀵逛簬鍓峮um - 1涓皬鏂囦欢锛屽ぇ灏忛兘涓烘寚瀹氱殑size
+ File outFile = new File(tempDir, file.getName());
+
+ // 鏋勫缓灏忔枃浠剁殑杈撳嚭娴�
+ FileOutputStream out = new FileOutputStream(outFile);
+
+ // 灏嗙粨鏉熶笅鏍囧悗绉籹ize
+ end += size;
+ end = (end > fileLength) ? fileLength : end;
+ // 浠庤緭鍏ユ祦涓鍙栧瓧鑺傚瓨鍌ㄥ埌杈撳嚭娴佷腑
+ for (; begin < end; begin++) {
+ out.write(in.read());
+ }
+ out.close();
+
+ Part[] parts = {
+ new FilePart("filedata", outFile),
+ new StringPart("chunk", (i+1) + ""),
+ new StringPart("chunks", num + ""),
+ new StringPart("md5", fileMd5),
+ new StringPart("chunkMd5", MD5Util.getFileMD5String(outFile))
+ };
+
+ int tryTime = 0;
+ while(tryTime<2){
+ retval = this.doPost(uploadUrl, parts);
+ JSONObject retvalJson = JSONObject.fromObject(retval);
+ if(retvalJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS){
+ break;
+ }
+ tryTime ++;
+ }
+
+ parts = null;
+ System.gc();
+
+ System.out.println(i);
+ System.out.println(outFile.delete());
+ }
+
+ in.close();
+
+ tempDir.delete();
+ } else if (resJson.getInt("code") == com.qxueyou.scc.sdk.MTCloud.CODE_VIDEO_UPLOADED) {
+ resJson.put("code", com.qxueyou.scc.sdk.MTCloud.CODE_SUCCESS);
+ retval = resJson.toString();
+ }
+
+ return retval;
+ }
+
+ /**
+ * 鑾峰彇璇剧▼宄板��
+ * @param int course_id 璇剧▼ID
+ * @return
+ */
+ public String statsPeakCourse(int course_id) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ return this.call("stats.peak.course", params);
+ }
+
+ /**
+ * 鑾峰彇鐩存挱宄板��
+ * @param int liveid 鐩存挱ID
+ * @return
+ */
+ public String statsPeakLive(int liveid) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("liveid", liveid);
+ return this.call("stats.peak.live", params);
+ }
+
+
+ /**
+ * 鑾峰彇娴侀噺鏄庣粏
+ * @param string date_time 寮�濮嬫棩鏈燂紝鏍煎紡 Y-m-d
+ * @param string end_time 缁撴潫鏃ユ湡锛屾牸寮� Y-m-d锛屽鏋滀紶绌猴紝鍒欓粯璁や负寮�濮嬫棩鏈�
+ * @param int vtype 鐩存挱鎴栬�呯偣鎾紙鍥炴斁锛夛紝1鐩存挱锛�2鍥炴斁锛屽叾瀹冨�间负鑾峰彇鍏ㄩ儴
+ * @param int ctype 褰搗type==2鏃讹紝鐐规挱鐨勭被鍨�,11 浜戠偣鎾紝鍏跺畠鍊间负鍥炴斁锛屼紶-1鍒欒幏鍙栨墍鏈�
+ * @param int departmentID 閮ㄩ棬ID锛岃幏鍙栧叿浣撻儴闂ㄧ殑缁熻銆�0涓烘棤閮ㄩ棬锛涗紶-100涓烘祦閲忔暟鎹悎璁★紱-1涓哄垪鍑烘墍鏈夐儴闂紝浠ュ強鍚堣
+ * @param int small 褰搗type==2鏃讹紝鑾峰彇灏忕彮鐨勫洖鏀炬祦閲忥紝浼�1
+ * @return 鎴愬姛杩斿洖鏍煎紡 {"code": 0,"data": [{"vtype": "2","ctype": "9","cid": "844891","time": "2020-05-11","flow": 4.661,"departmentID":0},...]}
+ */
+ public String statsFlowList(String date_time, String end_time, int vtype, int ctype, int departmentID, int small) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("date_time", date_time);
+ if(end_time != ""){
+ params.put("end_time", end_time);
+ }
+ params.put("vtype", vtype);
+ if(ctype != -1){
+ params.put("ctype", ctype);
+ }
+ if(departmentID != -100){
+ params.put("departmentID", departmentID);
+ }
+ params.put("small", small);
+
+ return this.call("stats.flow.list", params);
+ }
+
+ /**
+ * 鑾峰彇娴侀噺鎬昏
+ * @param int departmentID 閮ㄩ棬ID锛岃幏鍙栧叿浣撻儴闂ㄧ殑缁熻锛�0涓烘棤閮ㄩ棬锛屼紶-1涓哄叏閮�
+ * @return
+ */
+ public String statsPeakExpend(int departmentID) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ if(departmentID != -1){
+ params.put("departmentID", departmentID);
+ }
+ return this.call("stats.flow", params);
+ }
+
+ /**
+ * 鑾峰彇闊宠棰戜簰鍔ㄦ椂闀跨粺璁�
+ * @param string start_time 寮�濮嬫棩鏈燂紝鏍煎紡 Y-m-d锛岄粯璁や负7澶╁墠
+ * @param string end_time 寮�濮嬫棩鏈燂紝鏍煎紡 Y-m-d锛岄粯璁ゆ槰澶╋紝寮�鏃剁粨鏉熸椂闂磋法搴︿笉鑳借秴杩�31澶�
+ * @param int departmentID 閮ㄩ棬ID锛岃幏鍙栧叿浣撻儴闂ㄧ殑缁熻锛屼笉浼犳垨浼犵┖鍊硷紝鍒欓粯璁よ繑鍥炴�昏
+ * @return 鎴愬姛鏃惰繑鍥炴牸寮忥細{"code":0,"data":{"1v1":[{"date":"05-08","duration":31},{"date":"05-09","duration":89},...],"1v6":[{"date":"05-08","duration":96},...],"1v16":[{"date":"05-08","duration":96},...],"desktop":[{"date":"05-08","duration":175},...]}}锛宒uration鏃堕暱鍗曚綅涓哄垎閽�
+ */
+ public String statsRtc(String start_time, String end_time, int departmentID) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("start_time", start_time);
+ params.put("end_time", end_time);
+ params.put("departmentID", departmentID);
+ return this.call("stats.rtc", params);
+ }
+
+
+ /**
+ * 鑷姩鐧诲綍鍒版鎷揷onsole鍚庡彴
+ * @param int uid 娆㈡嫇鍚庡彴绠$悊鍛榠d
+ * @param int expire 鑷姩鐧诲綍鍦板潃鐨勮繃鏈熸椂闂�
+ * @param string target 鐧诲綍鎴愬姛鍚庤烦杞殑鐩爣锛屽舰寮忥細绫诲瀷-ID
+ * 濡傝烦鍒拌绋婭D涓�"123456"鐨勯〉闈細course-123456
+ * @return string url 鐢熸垚鐨勮嚜鍔ㄧ櫥褰曞湴鍧�
+ */
+ public String consoleAutoLogin(int uid, int expire, String target) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object, Object>();
+
+ params.put("openID", this.openID.trim());
+
+ Date date = new Date();
+ long expire1 = date.getTime() / 1000 + expire;
+ params.put("expire", expire1);
+ params.put("id", uid);
+ String url="http://console.talk-fun.com/?autologin="+uid+"-"+this.generateSign(params)+"-"+expire1;
+ if(target != ""){
+ url = url+"&target="+URLEncoder.encode(target,"UTF-8");
+ }
+
+ return url;
+ }
+
+ /**
+ * 鐐硅禐璁板綍
+ *
+ * @param int course_id 璇剧▼id
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @return
+ */
+ public String courseLikeRecord(int course_id,int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.likeRecord", params);
+ }
+
+
+ /**
+ * 鐐规挱鍒楄〃
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @param HashMap options 鍏朵粬鍙傛暟锛宻tatus锛氳绋嬬姸鎬�(0涓烘甯哥姸鎬侊紝-1涓哄凡鍒犻櫎)
+ * @return
+ */
+ public String vodList(int page, int size, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("page", page);
+ params.put("size", size);
+ params.put("options", options);
+ return this.call("course.vodList", params);
+ }
+
+ /**
+ * 鏈哄櫒浜哄彂瑷�
+ * @param int course_id 璇剧▼id
+ * @param String nickname 鏈哄櫒浜哄悕绉�
+ * @param String msg 鍙戣█
+ * @return
+ */
+ public String robotChatSend(int course_id, String nickname, String msg, String avatar) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("nickname", nickname);
+ params.put("msg", msg);
+ params.put("avatar", avatar);
+ return this.call("course.robotChatSend", params);
+ }
+
+
+ /**
+ * 鏍规嵁璇剧▼ID鑾峰彇鐢熸椿鐩存挱閭�璇锋鍗曞垪琛�
+ * @param int course_id 璇剧▼id
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @return
+ */
+ public String courseInviteRankList(int course_id,int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.inviteRankList", params);
+ }
+
+ /**
+ * 鏍规嵁璇剧▼ID銆侀個璇蜂汉ID鑾峰彇鐢熸椿鐩存挱鐨勮閭�璇蜂汉鍒楄〃
+ * @param int course_id 璇剧▼id
+ * @param int xid 閭�璇蜂汉鐢ㄦ埛id
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @return
+ */
+ public String courseInviteRankDetailList(int course_id,int xid,int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("xid", xid);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.inviteRankDetailList", params);
+ }
+
+ /**
+ * 娓犻亾鏍囪瘑璁剧疆
+ * @param int course_id 璇剧▼id
+ * @param HashMap options 鍏朵粬鍙傛暟
+ * @return
+ */
+ public String courseCtagsSet(int course_id, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("options", options);
+ return this.call("course.ctagsSet", params);
+ }
+
+ /**
+ * 鐐瑰悕鍒楄〃
+ * @param int course_id 璇剧▼id
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @return
+ */
+ public String courseSignList(int course_id, int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.sign", params);
+ }
+
+ /**
+ * 鐐瑰悕璇︽儏
+ * @param int course_id 璇剧▼id
+ * @param int signId 鐐瑰悕搴忓垪
+ * @param int page 椤电爜
+ * @param int size 姣忛〉鏁伴噺
+ * @return
+ */
+ public String courseSignDetail(int course_id,int signId,int page, int size) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("signId", signId);
+ params.put("page", page);
+ params.put("size", size);
+ return this.call("course.sign.detail", params);
+ }
+
+ /**
+ * 鍟嗗搧娣诲姞
+ * @param int departmentID 閮ㄩ棬id
+ * @param HashMap options 鍏朵粬鍙傛暟
+ * @return
+ */
+ public String goodsAdd(int departmentID, HashMap<Object,Object> options) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("departmentID", departmentID);
+ params.put("options", options);
+ return this.call("goods.add", params);
+ }
+
+ /**
+ * 鍥炴斁鏈夋晥鏈熻缃�
+ * @param int course_id 璇剧▼id
+ * @param int enable 鏄惁鍏抽棴鍥炴斁锛�0鍏抽棴鍥炴斁 锛�1寮�鍚洖鏀�
+ * @param int expire 鍥炴斁鏈夋晥鏈燂紝0鏃犻檺鍒讹紝涓嶅ぇ浜�30澶�
+ * @return
+ */
+ public String coursePlaybackExpireSet(int course_id,int enable,int expire) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("course_id", course_id);
+ params.put("enable", enable);
+ params.put("expire", expire);
+ return this.call("course.playback.setExpire", params);
+ }
+
+ /**
+ * 鏋勯�犳鎷撲簯绛惧悕
+ * @param params 涓氬姟鍙傛暟
+ * @return string
+ * @throws Exception
+ */
+ public String generateSign(HashMap<Object, Object> params) throws Exception{
+ params.remove("sign");
+ Object[] array = params.keySet().toArray();
+ java.util.Arrays.sort(array);
+ String keyStr = "";
+ for(int i=0;i<array.length;i++){
+ String key = array[i].toString();
+ keyStr += key+params.get(key);
+ }
+ keyStr += this.openToken.trim();
+ return MD5.md5(keyStr);
+
+ }
+
+ public String call(String cmd,HashMap<Object, Object> params) throws Exception{
+ HashMap<Object, Object> files = new HashMap<Object, Object>();
+
+ return this.call(cmd, params,"GET",files);
+ }
+
+ //鏋勯�犺姹備覆
+ public String call(String cmd,HashMap<Object, Object> params, String HttpMethod, HashMap<Object, Object> files) throws Exception{
+ //鏋勯�犵郴缁熷弬鏁�
+ HashMap<Object, Object> sysParams = new HashMap<Object, Object>();
+
+ sysParams.put("openID", this.openID.trim());
+ //鑾峰彇鏃堕棿鎴�
+ Date date = new Date();
+ long time = date.getTime() / 1000;
+ String ts = time + "";
+ sysParams.put("timestamp", ts);
+ sysParams.put("ver", this.version);
+ sysParams.put("format", this.format);
+ sysParams.put("cmd", cmd);
+ sysParams.put("params", URLEncoder.encode(JSONObject.fromObject(params).toString(),"UTF-8"));
+ //绛惧悕
+ sysParams.put("sign", generateSign(sysParams));
+
+ sysParams.putAll(files);
+ String retval = "";
+
+ if (HttpMethod == "POST") {
+
+
+ Object[] array = sysParams.keySet().toArray();
+ Part[] parts = new Part[array.length];
+ for(int i=0;i<array.length;i++){
+ String key = array[i].toString();
+
+ String value = (String) sysParams.get(key);
+ if (0 == value.indexOf("@")) {
+ File f;
+ f = new File(value.substring(1));
+
+ parts[i] = new FilePart(key, f);
+ } else {
+ parts[i] = new StringPart(key, value);
+ }
+ }
+
+ retval = doPost(this.restUrl, parts);
+ } else {
+ //鏋勯�犺姹俇RL
+ String resurl = "";
+ if(this.debug){
+ System.out.println(sysParams);
+ }
+ resurl += this.restUrl + "?" + mapToQueryString(sysParams);
+ if(this.debug){
+ System.out.println(resurl);
+ }
+ retval = doGet(resurl);
+ }
+
+ if(retval == null && this.restUrl != this.restUrl2){
+ String tempUrl = this.restUrl;
+ this.restUrl = this.restUrl2;
+ retval = this.call(cmd, params, HttpMethod, files);
+ this.restUrl = tempUrl;
+ }
+
+ return retval;
+ }
+
+ //GET璇锋眰
+ public String doGet(String url) throws UnsupportedEncodingException {
+ HttpClient client = new HttpClient(); //瀹炰緥鍖杊ttpClient
+ HttpMethod method = new GetMethod(url); //
+ method.addRequestHeader("User-Agent", "MT-JAVA-SDK");
+ try {
+ client.executeMethod(method); //鎵ц
+
+ InputStream jsonStr;
+
+ jsonStr = method.getResponseBodyAsStream();
+
+ if (200 != method.getStatusCode() && this.restUrl != this.restUrl2) {
+ return null;
+ }
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ int i=-1;
+ while((i=jsonStr.read())!=-1){
+ baos.write(i);
+ }
+
+ jsonStr.close();
+ baos.close();
+ method.releaseConnection();
+
+ return new String(baos.toByteArray(), "UTF-8");
+
+ } catch (HttpException e) {
+ if(this.restUrl != this.restUrl2){
+ return null;
+ } else {
+ e.printStackTrace();
+ }
+
+ } catch (IOException e) {
+ if(this.restUrl != this.restUrl2){
+ return null;
+ } else {
+ e.printStackTrace();
+ }
+ }
+
+ return null;
+ }
+
+
+ public String doPost(String url,Part[] parts) throws FileNotFoundException {
+ PostMethod filePost = new PostMethod(url);
+ filePost.addRequestHeader("User-Agent", "MT-JAVA-SDK");
+
+ filePost.setRequestEntity(
+ new MultipartRequestEntity(parts, filePost.getParams())
+ );
+ HttpClient client = new HttpClient();
+ try {
+ client.executeMethod(filePost);
+
+ InputStream jsonStr;
+
+ jsonStr = filePost.getResponseBodyAsStream();
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ int i=-1;
+ while((i=jsonStr.read())!=-1){
+ baos.write(i);
+ }
+
+ jsonStr.close();
+ baos.close();
+ filePost.releaseConnection();
+
+ return new String(baos.toByteArray(), "UTF-8");
+ } catch (HttpException e) {
+ if(this.restUrl != this.restUrl2){
+ return null;
+ } else {
+ e.printStackTrace();
+ }
+
+ } catch (IOException e) {
+ if(this.restUrl != this.restUrl2){
+ return null;
+ } else {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鐢熸垚涓�涓父瀹D
+ * @return string
+ */
+ public UUID generateGuestId() throws Exception {
+ UUID uuid = UUID.randomUUID();
+ return uuid;
+ }
+
+ /**
+ * 鐢熸垚涓�鍊嬬煭鍦板潃
+ * @return string
+ */
+ public String generateShortUrl(String url) throws Exception {
+ HashMap<Object,Object> params = new HashMap<Object,Object>();
+ params.put("url", url);
+ return this.call("utils.shorturl", params);
+ }
+
+ //灏� map 涓殑鍙傛暟鍙婂搴斿�艰浆鎹负鏌ヨ瀛楃涓�
+ private String mapToQueryString(HashMap<Object, Object> params){
+ Object[] array = params.keySet().toArray();
+
+ java.util.Arrays.sort(array);
+ String str = "";
+ for(int i = 0; i < array.length;i++){
+ String key = array[i].toString();
+ try {
+ if(i!=array.length-1){
+
+ str += key+"="+URLEncoder.encode((String)params.get(key),"UTF-8")+"&";
+
+ }else{
+ str += key+"="+URLEncoder.encode((String)params.get(key),"UTF-8");
+ }
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ }
+ return str;
+ }
+
+ private String base64UrlEncode(String input) throws Exception{
+ input = new String(Base64.encodeBase64(input.getBytes("UTF-8")));
+ input = input.replace("=", "");
+ input = input.replace("+", "-");
+ input = input.replace("/", "_");
+ return input;
+ }
+
+ //MD5鍔犲瘑绫�
+ private static class MD5 {
+ private static char md5Chars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+
+ public static String md5(String str) throws Exception {
+ MessageDigest md5 = getMD5Instance();
+ md5.update(str.getBytes("UTF-8"));
+ byte[] digest = md5.digest();
+ char[] chars = toHexChars(digest);
+ return new String(chars);
+ }
+
+ private static MessageDigest getMD5Instance() {
+ try {
+ return MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException ignored) {
+ throw new RuntimeException(ignored);
+ }
+ }
+
+ private static char[] toHexChars(byte[] digest) {
+ char[] chars = new char[digest.length * 2];
+ int i = 0;
+ for (byte b : digest) {
+ char c0 = md5Chars[(b & 0xf0) >> 4];
+ chars[i++] = c0;
+ char c1 = md5Chars[b & 0xf];
+ chars[i++] = c1;
+ }
+ return chars;
+ }
+ }
+
+ public static void main(String[] args){
+
+ }
+}
+
diff --git a/src/main/java/com/qxueyou/scc/sdk/utils/MD5Util.java b/src/main/java/com/qxueyou/scc/sdk/utils/MD5Util.java
new file mode 100644
index 0000000..265bd0a
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/sdk/utils/MD5Util.java
@@ -0,0 +1,67 @@
+package com.qxueyou.scc.sdk.utils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.MappedByteBuffer;
+import java.nio.channels.FileChannel;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class MD5Util {
+
+ protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };
+ protected static MessageDigest messagedigest = null;
+ static{
+ try{
+ messagedigest = MessageDigest.getInstance("MD5");
+ }catch(NoSuchAlgorithmException nsaex){
+ System.err.println(MD5Util.class.getName()+"鍒濆鍖栧け璐ワ紝MessageDigest涓嶆敮鎸丮D5Util銆�");
+ nsaex.printStackTrace();
+ }
+ }
+
+
+ public static String getFileMD5String(File file) throws IOException {
+ FileInputStream in = new FileInputStream(file);
+ FileChannel ch = in.getChannel();
+ MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
+ messagedigest.update(byteBuffer);
+ return bufferToHex(messagedigest.digest());
+ }
+
+ public static String getMD5String(String s) {
+ return getMD5String(s.getBytes());
+ }
+
+ public static String getMD5String(byte[] bytes) {
+ messagedigest.update(bytes);
+ return bufferToHex(messagedigest.digest());
+ }
+
+ private static String bufferToHex(byte bytes[]) {
+ return bufferToHex(bytes, 0, bytes.length);
+ }
+
+ private static String bufferToHex(byte bytes[], int m, int n) {
+ StringBuffer stringbuffer = new StringBuffer(2 * n);
+ int k = m + n;
+ for (int l = m; l < k; l++) {
+ appendHexPair(bytes[l], stringbuffer);
+ }
+ return stringbuffer.toString();
+ }
+
+
+ private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
+ char c0 = hexDigits[(bt & 0xf0) >> 4];
+ char c1 = hexDigits[bt & 0xf];
+ stringbuffer.append(c0);
+ stringbuffer.append(c1);
+ }
+
+ public static boolean checkPassword(String password, String md5PwdStr) {
+ String s = getMD5String(password);
+ return s.equals(md5PwdStr);
+ }
+}
diff --git a/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java b/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
index 0e76919..7f889bc 100644
--- a/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
+++ b/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
@@ -1,11 +1,10 @@
package com.qxueyou.scc.stucontroller;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.qxueyou.scc.sdk.MTCloud;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -115,22 +114,27 @@
/**
* 鏌ョ湅鐩存挱鏄庣粏
- * @param liveId 鐩存挱id
+ * @param couresId 鐩存挱id
* @return
*/
@GetMapping(value = "view")
- public Result view(String liveId) {
-
- MediaVideoLive live = liveService.read(liveId);
-
- return new Result(true, "success", CollectionUtils.newObjectMap(
- "startTime",live.getStartTime(),
- "endTime",live.getEndTime(),
- "name",live.getName(),
- "hlsPullUrl",live.getHlsPullUrl(),
- "imgPath",live.getPreviewImgUrl(),
- "chatroomId",dao.getChatRoomId(liveId),
- "remark",live.getRemark()
- ));
+ public Result view(String couresId) throws Exception {
+
+
+ MTCloud client = new MTCloud();
+
+ HashMap<Object,Object> options = new HashMap<Object, Object>();
+
+ String res = client.courseAccess(couresId, ClientUtils.getUserId(), ClientUtils.getUserName(), MTCloud.ROLE_USER, 10000, options);
+
+ JSONObject jsonObject = JSON.parseObject(res);
+
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ String liveUrl = (String) data.get("liveUrl");
+
+ System.out.println(liveUrl);
+
+ return new Result(true, "success",liveUrl);
}
}
diff --git a/src/main/java/com/qxueyou/scc/teach/live/model/MediaVideoLive.java b/src/main/java/com/qxueyou/scc/teach/live/model/MediaVideoLive.java
index d825713..0ecbbdf 100644
--- a/src/main/java/com/qxueyou/scc/teach/live/model/MediaVideoLive.java
+++ b/src/main/java/com/qxueyou/scc/teach/live/model/MediaVideoLive.java
@@ -284,6 +284,10 @@
/** 鍞愭ˉ鍔犲叆璇惧爞瀵嗙爜 */
@Column(name="TQ_MEETING_PWD", length=32)
private String meetingPwd;
+
+ /** 绗笁鏂圭洿鎾叆鍙� */
+ @Column(name="COURSE_ID", length=32)
+ private int courseId;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "videoLive")
@JsonIgnore
@@ -720,8 +724,17 @@
return subject;
}
+ public int getCourseId() {
+ return courseId;
+ }
+
+ public void setCourseId(int courseId) {
+ this.courseId = courseId;
+ }
+
public void setSubject(Subject subject) {
this.subject = subject;
}
+
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java b/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java
index de7b42a..9222dfc 100644
--- a/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java
+++ b/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java
@@ -19,7 +19,7 @@
* @param classId 鐝骇ids
* @return
*/
- Result add(String name,String content,String teacherId,String teacherName,String subjectId,String subjectName,String definition,String imgPath,Date startTime,Date endTime,boolean record,List<String> classIds);
+ Result add(String name,String content,String teacherId,String teacherName,String subjectId,String subjectName,String definition,String imgPath,Date startTime,Date endTime,Integer courseId,boolean record,List<String> classIds);
/**
* 鏌ヨ鐩存挱
diff --git a/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java b/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java
index b095a0e..4bcd977 100644
--- a/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java
+++ b/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java
@@ -7,6 +7,7 @@
import java.util.List;
import java.util.Map;
+import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -51,14 +52,15 @@
@Override
- public Result add(String name, String content, String teacherId,String teacherName ,String subjectId,String subjectName,
- String definition,String imgPath, Date startTime, Date endTime, boolean record,List<String> classIds) {
+ public Result add(String name, String content, String teacherId, String teacherName , String subjectId, String subjectName,
+ String definition, String imgPath, Date startTime, Date endTime, Integer courseId, boolean record, List<String> classIds) {
UserTeacher teacher = teacherService.getTeacherByUserId(ClientUtils.getUserId());
MediaVideoLive live = new MediaVideoLive();
TraceUtils.setCreateTrace(live);
-
+
+ live.setCourseId(courseId);
live.setName(name);
live.setRemark(content);
live.setPreviewImgUrl(imgPath);
@@ -262,14 +264,14 @@
public List<MediaVideoLive> list(String keyword, String [] classIds,String subjectId,Short status,Integer pageNum, Integer pageSize) {
StringBuffer hql = new StringBuffer(1000);
Map<String,Object> params = new HashMap<String,Object>();
- hql.append("from MediaVideoLive m left join fetch m.classes c left join fetch m.subject s where m.deleteFlag is false and m.name like :name ");
+ hql.append("from MediaVideoLive m left join fetch m.classes c left join fetch m.subject s where m.deleteFlag is false and m.name like :name ");
params.put("name",keyword + "%");
if(classIds!=null && classIds.length>0){
- hql.append(" and (c.classId in(:classIds) or s.type=:subjectType)");
+ hql.append(" and (c.classId in(:classIds) or s.type=:Type)");
params.put("classIds", classIds);
- params.put("subjectType", Subject.TYPE_PUBLIC_SUBJECT);
+ params.put("Type", Subject.TYPE_PUBLIC_SUBJECT);
}else{
hql.append(" and s.type=:subjectType");
params.put("subjectType", Subject.TYPE_PUBLIC_SUBJECT);
diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java
index 0c96522..90d6499 100644
--- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java
+++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java
@@ -306,9 +306,9 @@
public Result readAccessPath(String resId, String attribute) {
Res res = read(Res.class, resId);
-
+ String type="0";
// Object path = Res.FILE_TYPE_VIDEO.equals(res.getType())? JSONObject.parse(resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute)):CollectionUtils.newObjectMap("path", resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute));
- Object path = Res.FILE_TYPE_VIDEO.equals(res.getType())? resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute):resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute);
+ Object path = Res.FILE_TYPE_VIDEO.equals(type)? resItemServiceMap.get(type).readAccessPath(res.getItemDestId(), attribute):resItemServiceMap.get(type).readAccessPath(res.getItemDestId(), attribute);
if(Res.FILE_TYPE_DOC.equals(res.getType())) {
return new Result(true, "success",
CollectionUtils.newObjectMap("path", path, "name", res.getName(), "coverPageUrl", res.getCoverPageUrl(), "size",
--
Gitblit v1.8.0