import * as SDKEnum from "../SDKConst/SDKEnum"; export default class SDKParameterVo { private _isInit: boolean; private _url: string; private _lessonId: number; private _gameId: number; private _usage: SDKEnum.GAME_TYPE; private _role: SDKEnum.USER_ROLE; private _courseWare: SDKEnum.COURSEWARE_TEYPE; private _userId: string; private _observerId: string; private _observerRole: SDKEnum.USER_ROLE; constructor() { this.reset(); } public parseUrl(url: string): boolean { this._isInit = true; this._url = url; let query = this.getRequest(url); if (!query) { return false; } if (query["usage"]) { switch (query["usage"]) { case "preview": this._usage = SDKEnum.GAME_TYPE.PREVIEW; break; case "class": this._usage = SDKEnum.GAME_TYPE.CLASS; break; case "replay": this._usage = SDKEnum.GAME_TYPE.REPLAY; break; // case "surveillance": // this._usage = SDKEnum.GAME_TYPE.SURVEILLANCE; // break; case "splitscreen": this._usage = SDKEnum.GAME_TYPE.SPLITSCREEN; break; } } if (query["role"]) { switch (query["role"]) { case "student": this._role = SDKEnum.USER_ROLE.STUDENT; break; case "teacher": this._role = SDKEnum.USER_ROLE.TEACHER; break; case "watcher": this._role = SDKEnum.USER_ROLE.OBSERVER; break; case "seller": this._role = SDKEnum.USER_ROLE.SELLER; break; } } if(query["kjType"]){ switch (query["kjType"]) { case "zml": this._courseWare = SDKEnum.COURSEWARE_TEYPE.ZML; break; case "zmg": this._courseWare = SDKEnum.COURSEWARE_TEYPE.ZMG; } } if (query["gameId"]) { if (!isNaN(Number(query["gameId"]))) { this._gameId = Number(query["gameId"]); } } if (query["lessonId"]) { if (!isNaN(Number(query["lessonId"]))) { this._lessonId = Number(query["lessonId"]); } } if (query["userId"]) { this._userId = query["userId"]; } return true; } /** 解析url 获取参数 */ private getRequest(url: string) { var query = {}; if (url.indexOf("?") != -1) { var str = url.substr(1); var strs = str.split("&"); for (var i = 0; i < strs.length; i++) { query[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return query; } public get lessonId(): number { return this._lessonId; } public get gameId(): number { return this._gameId; } public isZML(): boolean{ return this._courseWare == SDKEnum.COURSEWARE_TEYPE.ZML; } public isZMG(): boolean{ return this._courseWare == SDKEnum.COURSEWARE_TEYPE.ZMG; } public isSplitScreen(): boolean { return this._usage == SDKEnum.GAME_TYPE.SPLITSCREEN; } public isGamePreview(): boolean { return this._usage == SDKEnum.GAME_TYPE.NORMAL || this._usage == SDKEnum.GAME_TYPE.PREVIEW; } public isGameClass(): boolean { return this._usage == SDKEnum.GAME_TYPE.CLASS; } public isGameObserver(): boolean { return this.isGameClass() && (this._role == SDKEnum.USER_ROLE.OBSERVER || this._role == SDKEnum.USER_ROLE.SELLER); } public isGameReplay(): boolean { return this._usage == SDKEnum.GAME_TYPE.REPLAY; } public isTeacher(): boolean { return this.isGameClass() && this._role == SDKEnum.USER_ROLE.TEACHER; } public isStudent(): boolean { return this.isGameClass() && this._role == SDKEnum.USER_ROLE.STUDENT; } public isObserver(): boolean { return this.isGameObserver() && this._role == SDKEnum.USER_ROLE.OBSERVER; } public isSeller(): boolean{ return this.isGameObserver() && this._role == SDKEnum.USER_ROLE.SELLER; } public isOberverTeacher(): boolean{ return this.isGameObserver() && this._observerRole == SDKEnum.USER_ROLE.TEACHER; } public isReplay(): boolean { return this._usage == SDKEnum.GAME_TYPE.REPLAY; } public get userId(): string { return this._userId; } public set userId(value: string) { this._userId = value; } public get observerId(): string{ return this._observerId; } public set observerId(value: string){ this._observerId = value; } public get observerRole() : SDKEnum.USER_ROLE{ return this._observerRole; } public set observerRole(value : SDKEnum.USER_ROLE){ this._observerRole = value; } public get role(): SDKEnum.USER_ROLE { return this._role; } public set role(value: SDKEnum.USER_ROLE) { this._role = value; } public set usage(value: SDKEnum.GAME_TYPE) { this._usage = value; } public get isInit(): boolean { return this._isInit; } public clone(): SDKParameterVo { let parameterVo: SDKParameterVo; parameterVo = new SDKParameterVo(); parameterVo._usage = this._usage; parameterVo._role = this._role; parameterVo._gameId = this._gameId; parameterVo._lessonId = this._lessonId; parameterVo._userId = this._userId; parameterVo._url = this._url; return parameterVo; } public getUrl(): string { let index = -1; let str = ""; index = this._url.indexOf("?"); if (index != -1) { str = this._url.substr(1, index); } else { str = this._url; } str += `?userId=${this._userId}`; switch (this._usage) { case SDKEnum.GAME_TYPE.PREVIEW: str += "&usage=preview"; break; case SDKEnum.GAME_TYPE.CLASS: str += "&usage=class"; break; case SDKEnum.GAME_TYPE.REPLAY: str += "&usage=replay"; break; // case SDKEnum.GAME_TYPE.SURVEILLANCE: // str += "&usage=surveillance"; // break; case SDKEnum.GAME_TYPE.SPLITSCREEN: str += "&usage=splitscreen"; break; } switch (this._role) { case SDKEnum.USER_ROLE.STUDENT: str += "&role=student"; break; case SDKEnum.USER_ROLE.TEACHER: str += "&role=teacher"; break; case SDKEnum.USER_ROLE.OBSERVER: str += "&role=watcher"; break; case SDKEnum.USER_ROLE.SELLER: str += "&role=seller"; break; } switch (this._courseWare){ case SDKEnum.COURSEWARE_TEYPE.ZML: str += "&kjType=zml"; break; case SDKEnum.COURSEWARE_TEYPE.ZMG: str += "&kjType=zmg"; break; } if (this._gameId > 0) { str += `&gameId=${this._gameId}`; } if (this._lessonId > 0) { str += `&lessonId=${this._lessonId}`; } return str; } public reset(): void { this._isInit = false; this._usage = SDKEnum.GAME_TYPE.NORMAL; this._role = SDKEnum.USER_ROLE.NONE; this._courseWare = SDKEnum.COURSEWARE_TEYPE.ZML; this._observerRole = SDKEnum.USER_ROLE.STUDENT; this._gameId = 0; this._lessonId = 0; this._userId = ''; this._observerId = ''; this._url = ""; } }