import Consts from '../Consts'; import AJAXHelper from './AJAXHelper'; import userDataStorage from '../userDataStorage'; import Utils from '../Utils'; class APIClient { constructor() { } // 添加缓存参数,安卓截获带有此参数的请求 static addCacheParam(params, cacheKeySrc=null, cacheKey=null){ let eid = userDataStorage.getEid(); if (eid) { params.eid = eid; params.cache = true; if (cacheKey) { params.cacheKey = cacheKey; } else if (cacheKeySrc) { let cacheHash = CryptoJS.SHA1(cacheKeySrc + eid); params.cacheKey = cacheHash.toString(CryptoJS.enc.Base64).toUpperCase(); } } return params; } // 账户登录,获取token,绑定设备 static userLoginAndBindDevice(data, callback) { let deviceCode = localStorage.getItem('deviceCode'); if (!deviceCode) { if (window.efunbox) { deviceCode = window.efunbox.getUuidForDevice(); } else { deviceCode = Utils.getUuidForWeb(); } localStorage.setItem('deviceCode', deviceCode); } let params = { deviceCode, eid: data.usercode, password: data.password, }; AJAXHelper.post('/token', params, callback); } // 退出登录,解除设备绑定 static userLogoutAndUnbindDevice(callback) { AJAXHelper.delete('/token', null, callback); } // 通过deviceCode登录刷新token static refreshTokenByDeviceCode(callback) { let params = { deviceCode: localStorage.getItem('deviceCode'), }; AJAXHelper.put('/token', params, callback); } // 获取终端详情 static getTerminalInfo(callback) { let params = APIClient.addCacheParam({}); AJAXHelper.get('/user', params, callback); } // 获取首页推荐列表 static getRecommendList(callback) { let params = APIClient.addCacheParam({}); AJAXHelper.get('/recommend/courses', params, callback); } // 获取标签组下的标签列表(标签组概念已去除,改用标签类型) static getTagListByGroupCode(type, callback) { const typeToCode = { 'RESOURCE': 'RESOURCE', 'TRAINING': 'TRAINING', 'PERIPHERY': 'SUPPORT', }; let params = APIClient.addCacheParam({}); //AJAXHelper.get(`/tagGroup/${typeToCode[type]}`, params, callback); AJAXHelper.get(`/tagType/${typeToCode[type]}`, params, callback); } // 获取标签下的课程/配套列表 static getProductListByTagId(tagId, pageNo, callback) { let params = { pageNo, pageSize: 20 }; params = APIClient.addCacheParam(params); AJAXHelper.get(`/tag/${tagId}`, params, callback); } // 根据课程获取课列表 static getLessonList(courseId, callback) { let params = APIClient.addCacheParam({}); AJAXHelper.get(`/course/${courseId}/lessons`, params, callback); } // 获取课程详情 static getCourseDetail(courseId, callback) { let params = APIClient.addCacheParam({}); AJAXHelper.get(`/course/${courseId}/detail`, params, callback); } // 获取课内的课件列表 static getWareList(lessonId, courseId, callback) { let params = { courseId }; params = APIClient.addCacheParam(params); AJAXHelper.get(`/lesson/${lessonId}`, params, callback); } // 获取该课程相关配套列表 static getCourseAboutSupport(courseId, callback) { let params = APIClient.addCacheParam({}); AJAXHelper.get(`/course/${courseId}/supports`, params, callback); } // 获取配套详情 static getSupportDetail(supportId, callback) { let params = APIClient.addCacheParam({}); AJAXHelper.get(`/support/${supportId}`, params, callback); } // 获取购物车列表 static getShopCartList(callback) { let params = { pageNo: 1, pageSize: 100 }; AJAXHelper.get('/user/shopcart', params, callback); } // 添加到购物车 static addToShopCart(goodsId, callback) { let params = { goodsId }; AJAXHelper.put('/user/shopcart', params, callback); } // 从购物车中删除 static removeFromShopCart(goodsId, callback) { AJAXHelper.delete(`/user/shopcart/${goodsId}`, null, callback); } // 获取购物车内商品数量 static getShopCartCount(callback) { AJAXHelper.get('/user/shopcart/totalNum', null, callback); } // 发送购物车 static postShopCart(callback) { AJAXHelper.post('/user/shopcart/buymsg', null, callback); } // 获取收藏列表 static getCollectionList(tagId, pageNo, callback) { let params = { tagId, pageNo, pageSize: 20 }; params = APIClient.addCacheParam(params); AJAXHelper.get('/user/collection', params, callback); } // 添加收藏操作 static addToCollection(pid, callback) { let params = { pid }; AJAXHelper.post('/user/collection', params, callback); } // 取消收藏操作 static removeFromCollection(pid, callback) { AJAXHelper.delete(`/user/collection/${pid}`, null, callback); } // 发送用户行为数据 static putUserAction(eventType, tarName, tarId, value, callback) { let params = { eventType, tarName, tarId, value }; AJAXHelper.post('/callback/event', params, callback); } } module.exports = APIClient;