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