lesson.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. var express = require('express');
  2. var url = require('url');
  3. var router = express.Router();
  4. var ljConst = require("../common/LjConst");
  5. var ljRetState = require("../common/LjRetState");
  6. var logHelper = require("../helper/LjLogHelper.js");
  7. var httpHelper = require("../helper/LjHttpHelper");
  8. var fileHelper = require("../helper/LjFileHelper");
  9. var apiHelper = require("../helper/LjApiHelper");
  10. var ljStringHelper = require("../helper/LjStringHelper");
  11. /**
  12. * 下载文件
  13. */
  14. router.get("/downloadFile",function(req,res,next)
  15. {
  16. var arg = url.parse(req.url, true).query;
  17. var courseId = arg.courseId;
  18. var eid = arg.eid;
  19. var uid = arg.uid;
  20. var token = arg.token;
  21. var lessonId = arg.lessonId;
  22. //获取参数
  23. logHelper.debug(arg);
  24. //校验参数
  25. if (ljStringHelper.isNull(courseId))
  26. {
  27. logHelper.info("null object of courseId");
  28. ljRetState.code = 2;
  29. ljRetState.msg ="null object of courseId"
  30. res.json(ljRetState);
  31. return;
  32. }
  33. if (ljStringHelper.isNull(lessonId))
  34. {
  35. logHelper.info("null object of lessonId");
  36. ljRetState.code = 2;
  37. ljRetState.msg ="null object of lessonId"
  38. res.json(ljRetState);
  39. return;
  40. }
  41. if (ljStringHelper.isNull(eid))
  42. {
  43. logHelper.info("null object of eid");
  44. ljRetState.code = 2;
  45. ljRetState.msg ="null object of eid"
  46. res.json(ljRetState);
  47. return;
  48. }
  49. if (ljStringHelper.isNull(uid))
  50. {
  51. logHelper.info("null object of uid");
  52. ljRetState.code = 2;
  53. ljRetState.msg ="null object of uid"
  54. res.json(ljRetState);
  55. return;
  56. }
  57. if (ljStringHelper.isNull(token))
  58. {
  59. logHelper.info("null object of token");
  60. ljRetState.code = 2;
  61. ljRetState.msg ="null object of token"
  62. res.json(ljRetState);
  63. return;
  64. }
  65. var opt = {};
  66. opt.eid = eid;
  67. opt.uid = uid;
  68. opt.token = token;
  69. opt.lessonId = lessonId;
  70. opt.courseId = courseId;
  71. opt.path = "/lesson/" + opt.lessonId;
  72. opt.url = apiHelper.getApiForQueryCourse(opt.lessonId, opt.courseId, opt.eid);
  73. opt.method = "get";
  74. httpHelper.request(opt, function (error, res, body)
  75. {
  76. let obj = JSON.parse(body);
  77. var lessonJsonObj = JSON.parse(body);
  78. if (lessonJsonObj.code == 200)
  79. {
  80. /*课件-Begin*/
  81. //课程集合
  82. var courseList = lessonJsonObj.data.list;
  83. //课程数
  84. var courseListSize = courseList.length;
  85. //遍历课件
  86. for (var i = 0; i < courseListSize; i++)
  87. {
  88. //资源集合
  89. var resourceList = courseList[i].list;
  90. //资源数
  91. var resourceSize = resourceList.length;
  92. for (var j = 0; j < resourceSize; j++)
  93. {
  94. logHelper.debug(resourceList[j].url);
  95. var url = resourceList[j].url;
  96. fileHelper.downloadFile(url)
  97. }
  98. }
  99. /*课件-End*/
  100. //保存记录
  101. //addDownload(opt)
  102. return "ok";
  103. }
  104. else
  105. {
  106. logHelper.error("failed to query lesson with lessonId[" + opt.lessonId + "],caused by error:" + lessonJsonObj);
  107. return "error";
  108. }
  109. }).on("end",function()
  110. {
  111. test();
  112. });
  113. });
  114. /**
  115. * 读取文件
  116. */
  117. router.get("/readFile",function(req,res)
  118. {
  119. var arg = url.parse(req.url, true).query;
  120. var fileDirStr = arg.n;
  121. var fileDirNew = fileDirStr.replace(/\*/g,'\\');
  122. var fileDir = fileHelper.getFileDir(fileDirNew)
  123. var fileProp = fileHelper.getFileProperty(fileDir);
  124. if(fileProp.fileType == ljConst.VIDEO_TYPE_M3U8)
  125. {
  126. fileHelper.readDecryptedStream(res,fileDir,"video/mp4")
  127. }
  128. else
  129. {
  130. fileHelper.readDecryptedStream(res,fileDir,"image/jpeg")
  131. }
  132. });
  133. function test()
  134. {
  135. console.log(11);
  136. }
  137. /**
  138. * 删除下载文件
  139. */
  140. router.get("/delFile",function(req,res)
  141. {
  142. var arg = url.parse(req.url, true).query;
  143. var courseId = arg.courseId;
  144. var eid = arg.eid;
  145. var uid = arg.uid;
  146. var token = arg.token;
  147. var lessonId = arg.lessonId;
  148. //获取参数
  149. logHelper.debug(arg);
  150. //校验参数
  151. if (ljStringHelper.isNull(courseId))
  152. {
  153. logHelper.info("null object of courseId");
  154. return "null object of courseId";
  155. }
  156. if (ljStringHelper.isNull(lessonId))
  157. {
  158. logHelper.info("null object of lessonId");
  159. return "null object of courseId";
  160. }
  161. if (ljStringHelper.isNull(eid))
  162. {
  163. logHelper.info("null object of eid");
  164. return "null object of eid";
  165. }
  166. if (ljStringHelper.isNull(uid))
  167. {
  168. logHelper.info("null object of uid");
  169. return "null object of uid";
  170. }
  171. if (ljStringHelper.isNull(token))
  172. {
  173. logHelper.info("null object of token");
  174. return "null object of token";
  175. }
  176. var opt = {};
  177. opt.eid = eid;
  178. opt.uid = uid;
  179. opt.token = token;
  180. opt.lessonId = lessonId;
  181. opt.courseId = courseId;
  182. opt.path = "/lesson/" + opt.lessonId;
  183. opt.url = apiHelper.getApiForCourse(opt.lessonId, opt.courseId, opt.eid);
  184. opt.method = "get";
  185. httpHelper.request(opt, function (error, res, body)
  186. {
  187. let obj = JSON.parse(body);
  188. var lessonJsonObj = JSON.parse(body);
  189. if (lessonJsonObj.code == 200)
  190. {
  191. /*课件-Begin*/
  192. //课程集合
  193. var courseList = lessonJsonObj.data.list;
  194. //课程数
  195. var courseListSize = courseList.length;
  196. //遍历课件
  197. for (var i = 0; i < courseListSize; i++)
  198. {
  199. //资源集合
  200. var resourceList = courseList[i].list;
  201. //资源数
  202. var resourceSize = resourceList.length;
  203. for (var j = 0; j < resourceSize; j++)
  204. {
  205. logHelper.debug(resourceList[j].url);
  206. var url = resourceList[j].url;
  207. fileHelper.downloadFile(url)
  208. }
  209. }
  210. /*课件-End*/
  211. //保存记录
  212. process.nextTick(addDownload);
  213. return "ok";
  214. }
  215. else
  216. {
  217. logHelper.error("failed to query lesson with lessonId[" + opt.lessonId + "],caused by error:" + lessonJsonObj);
  218. return "error";
  219. }
  220. });
  221. });
  222. var addDownload = function(opt)
  223. {
  224. opt.url = apiHelper.getApiForAddDownload(opt.lessonId,opt.courseId, null);
  225. opt.method = "post";
  226. opt.path = "/callback/download/add";
  227. httpHelper.request(opt, function (error, res, body)
  228. {
  229. var retObj = JSON.parse(body);
  230. logHelper.debug(retObj);
  231. if (retObj.code == 200)
  232. {
  233. logHelper.info("Succeed to call api[" + opt.path + "]");
  234. return true;
  235. }
  236. else
  237. {
  238. logHelper.error("Failed to call api[" + opt.path + "],caused by error[" + retObj + "]");
  239. return false;
  240. }
  241. });
  242. }
  243. var delDownload = function(opt)
  244. {
  245. opt.url = apiHelper.getApiForDelDownload(opt.lessonId, null);
  246. opt.method = "post";
  247. opt.path = "/callback/download/delete";
  248. httpHelper.request(opt, function (error, res, body)
  249. {
  250. var retObj = JSON.parse(body);
  251. logHelper.debug(retObj);
  252. if (retObj.code == 200)
  253. {
  254. logHelper.info("Succeed to call api[" + opt.path + "]");
  255. return true;
  256. }
  257. else
  258. {
  259. logHelper.error("Failed to call api[" + opt.path + "],caused by error[" + retObj + "]");
  260. return false;
  261. }
  262. });
  263. }
  264. module.exports = router;