blockly.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. // ROUTES FOR OUR API
  2. // =============================================================================
  3. var express = require('express');
  4. var router = express.Router(); // get an instance of the express Router
  5. const querystring = require('querystring');
  6. var mysql = require('./mysql');
  7. const _mysqlLabor = ["172.16.12.5", "cuhkjc_query"]; //query數據庫信息
  8. //統壹處理區域
  9. router.use(async function (req, res, next) {
  10. //权限设置 - 登陆 验证码
  11. await asynnext(req, res, next);
  12. //// make sure we go to the next routes and don't stop here
  13. //res.end("", _stime, _etime);
  14. });
  15. /**
  16. * @des 參數解釋同上
  17. */
  18. function asynnext(req, res, next) {
  19. //異步處理
  20. return new Promise(async (resolve, reject) => {
  21. next();
  22. //resolve(true);
  23. });
  24. }
  25. //指定用户访问 CocoBlockly 的行为
  26. router.route('/history').post((req, res, next) => {
  27. var _arr = [req.body.userid, req.body.username, 0, "history"];
  28. postmysql(req, res, "blockly_history", _arr);
  29. }).get((req, res, next) => {
  30. var _stime = req.body.starttime || "",
  31. _etime = req.body.endtime || "";
  32. getmysql(req, res, "blockly_history_get", req.query.username, "history", _stime, _etime, _stime, _etime);
  33. });
  34. //指定用户在 CocoBlockly 停留的总时间(离开的时候请求)
  35. router.route('/duration').post((req, res, next) => {
  36. var _arr = [req.body.userid, req.body.username, req.body.time, "duration"];
  37. postmysql(req, res, "blockly_duration", _arr);
  38. }).get((req, res, next) => {
  39. var _stime = req.body.starttime || "",
  40. _etime = req.body.endtime || "";
  41. getmysql(req, res, "blockly_duration_get", req.query.username, "duration", _stime, _etime, _stime, _etime);
  42. });
  43. //指定用户打开实验室的行为
  44. router.route('/labs').post((req, res, next) => {
  45. postmysql(req, res, "blockly_labs");
  46. }).get((req, res, next) => {
  47. var _stime = req.body.starttime || "",
  48. _etime = req.body.endtime || "";
  49. getmysql(req, res, "blockly_labs_get", _stime, _etime, _stime, _etime);
  50. });
  51. //指定用户打开某个样例的行为
  52. router.route('/examples').post((req, res, next) => {
  53. var _arr = [req.body.userid, req.body.username, "example", req.body.eventname, req.body.eventcontent];
  54. postmysql(req, res, "blockly_examples", _arr);
  55. }).get((req, res, next) => {
  56. var _stime = req.body.starttime || "",
  57. _etime = req.body.endtime || "";
  58. getmysql(req, res, "blockly_examples_get", req.query.username, "example", _stime, _etime);
  59. });
  60. //指定用户切换上传模式的行为
  61. router.route('/mode_switch').post((req, res, next) => {
  62. var _arr = [req.body.userid, req.body.username, "modeswitch", req.body.eventname, req.body.eventcontent];
  63. postmysql(req, res, "blockly_mode_switch", _arr);
  64. }).get((req, res, next) => {
  65. var _stime = req.body.starttime || "",
  66. _etime = req.body.endtime || "";
  67. getmysql(req, res, "blockly_mode_switch_get", req.query.username, "modeswitch", _stime, _etime);
  68. });
  69. //指定用户点击串口监视窗按钮的行为
  70. router.route('/serial_monitor').post((req, res, next) => {
  71. var _arr = [req.body.userid, req.body.username, "serialmonitor", req.body.eventname, req.body.eventcontent];
  72. postmysql(req, res, "blockly_serial_monitor", _arr);
  73. }).get((req, res, next) => {
  74. var _stime = req.body.starttime || "",
  75. _etime = req.body.endtime || "";
  76. getmysql(req, res, "blockly_serial_monitor_get", req.query.username, "serialmonitor", _stime, _etime);
  77. });
  78. //指定用户点击复制源代码的行为
  79. router.route('/copy').post((req, res, next) => {
  80. var _arr = [req.body.userid, req.body.username, "copy", req.body.eventname, req.body.eventcontent];
  81. postmysql(req, res, "blockly_copy", _arr);
  82. }).get((req, res, next) => {
  83. var _stime = req.body.starttime || "",
  84. _etime = req.body.endtime || "";
  85. getmysql(req, res, "blockly_copy_get", req.query.username, "copy", _stime, _etime);
  86. });
  87. //指定用户点击运行的行为
  88. router.route('/upload_area/run').post((req, res, next) => {
  89. var _arr = [req.body.userid, req.body.username, "run", req.body.eventname, req.body.eventcontent];
  90. postmysql(req, res, "blockly_upload_area_run", _arr);
  91. }).get((req, res, next) => {
  92. var _stime = req.body.starttime || "",
  93. _etime = req.body.endtime || "";
  94. getmysql(req, res, "blockly_upload_area_run_get", req.query.username, "run", _stime, _etime);
  95. });
  96. //指定用户点击上传的行为
  97. router.route('/upload_area/upload').post((req, res, next) => {
  98. var _arr = [req.body.userid, req.body.username, "upload", req.body.eventname, req.body.eventcontent];
  99. postmysql(req, res, "blockly_upload_area_upload", _arr);
  100. }).get((req, res, next) => {
  101. var _stime = req.body.starttime || "",
  102. _etime = req.body.endtime || "";
  103. getmysql(req, res, "blockly_upload_area_upload_get", req.query.username, "upload", _stime, _etime);
  104. });
  105. //指定用户在 Blockly 中弹出错误信息的行为(并报错错误信息)
  106. router.route('/upload_area/errormsg').post((req, res, next) => {
  107. var _arr = [req.body.userid, req.body.username, "errormsg", req.body.eventname, req.body.eventcontent];
  108. postmysql(req, res, "blockly_upload_area_errormsg", _arr);
  109. }).get((req, res, next) => {
  110. var _stime = req.body.starttime || "",
  111. _etime = req.body.endtime || "";
  112. getmysql(req, res, "blockly_upload_area_errormsg_get", req.query.username, "errormsg", _stime, _etime);
  113. });
  114. //指定用户将积木拖入编程区域的行为
  115. router.route('/blocks/to_workspace').post((req, res, next) => {
  116. var _arr = [req.body.userid, req.body.username, "to_workspace", req.body.eventname, req.body.eventcontent];
  117. postmysql(req, res, "blockly_blocks_to_workspace", _arr);
  118. }).get((req, res, next) => {
  119. var _stime = req.body.starttime || "",
  120. _etime = req.body.endtime || "";
  121. getmysql(req, res, "blockly_blocks_to_workspace_get", req.query.username, "to_workspace", _stime, _etime);
  122. });
  123. //指定用户将积木拖出编程区域的行为
  124. router.route('/blocks/out_workspace').post((req, res, next) => {
  125. var _arr = [req.body.userid, req.body.username, "out_workspace", req.body.eventname, req.body.eventcontent];
  126. postmysql(req, res, "blockly_blocks_out_workspace", _arr);
  127. }).get((req, res, next) => {
  128. var _stime = req.body.starttime || "",
  129. _etime = req.body.endtime || "";
  130. getmysql(req, res, "blockly_blocks_out_workspace_get", req.query.username, "out_workspace", _stime, _etime);
  131. });
  132. //指定用户导出文件的行为
  133. router.route('/files/local_export').post((req, res, next) => {
  134. var _arr = [req.body.userid, req.body.username, "local_export", req.body.eventname, req.body.eventcontent];
  135. postmysql(req, res, "blockly_files_local_export", _arr);
  136. }).get((req, res, next) => {
  137. var _stime = req.body.starttime || "",
  138. _etime = req.body.endtime || "";
  139. getmysql(req, res, "blockly_files_local_export_get", req.query.username, "local_export", _stime, _etime, _stime, _etime);
  140. });
  141. //指定用户导入文件的行为
  142. router.route('/files/local_import').post((req, res, next) => {
  143. var _arr = [req.body.userid, req.body.username, "local_import", req.body.eventname, req.body.eventcontent];
  144. postmysql(req, res, "blockly_files_local_import", _arr);
  145. }).get((req, res, next) => {
  146. var _stime = req.body.starttime || "",
  147. _etime = req.body.endtime || "";
  148. getmysql(req, res, "blockly_files_local_import_get", req.query.username, "local_export", _stime, _etime);
  149. });
  150. //指定用户创建指定云端文件的行为
  151. router.route('/files/cloud_create').post((req, res, next) => {
  152. var _arr = [req.body.userid, req.body.username, "cloud", req.body.eventname, req.body.eventcontent];
  153. postmysql(req, res, "blockly_files_cloud_create", _arr);
  154. }).get((req, res, next) => {
  155. var _stime = req.body.starttime || "",
  156. _etime = req.body.endtime || "";
  157. getmysql(req, res, "blockly_files_cloud_create_get", req.query.username, "cloudcreate", _stime, _etime);
  158. });
  159. //指定用户更新指定云端文件的行为
  160. router.route('/files/cloud_update').post((req, res, next) => {
  161. var _arr = [req.body.userid, req.body.username, "cloud", req.body.eventname, req.body.eventcontent];
  162. postmysql(req, res, "blockly_files_cloud_update", _arr);
  163. }).get((req, res, next) => {
  164. var _stime = req.body.starttime || "",
  165. _etime = req.body.endtime || "";
  166. getmysql(req, res, "blockly_files_cloud_update_get", req.query.username, "cloudupdate", _stime, _etime);
  167. });
  168. //指定用户打开指定云端文件的行为
  169. router.route('/files/cloud_open').post((req, res, next) => {
  170. var _arr = [req.body.userid, req.body.username, "cloud", req.body.eventname, req.body.eventcontent];
  171. postmysql(req, res, "blockly_files_cloud_open", _arr);
  172. }).get((req, res, next) => {
  173. var _stime = req.body.starttime || "",
  174. _etime = req.body.endtime || "";
  175. getmysql(req, res, "blockly_files_cloud_open_get", req.query.username, "cloudopen", _stime, _etime);
  176. });
  177. //指定用户删除指定云端文件的行为
  178. router.route('/files/cloud_delete').post((req, res, next) => {
  179. var _arr = [req.body.userid, req.body.username, "cloud", req.body.eventname, req.body.eventcontent];
  180. postmysql(req, res, "blockly_files_cloud_delete", _arr);
  181. }).get((req, res, next) => {
  182. var _stime = req.body.starttime || "",
  183. _etime = req.body.endtime || "";
  184. getmysql(req, res, "blockly_files_cloud_delete_get", req.query.username, "clouddelete", _stime, _etime);
  185. });
  186. queryString = function (url) {
  187. var a = url.split("?");
  188. var json = querystring.parse(a[1])
  189. return json;
  190. }
  191. //post存儲過程處理
  192. postmysql = function (req, res, functionname, arr) {
  193. //mode的處理
  194. arr.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  195. //執行存儲過程
  196. mysql.usselect(arr, function (ret) { res.end(JSON.stringify(ret)); });
  197. }
  198. //get獲取數據庫信息
  199. getmysql = function (req, res, functionname, ...p) {
  200. p = p || [];
  201. p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  202. //執行存儲過程
  203. mysql.usselect(p, function (ret) {
  204. res.end(JSON.stringify(ret));
  205. });
  206. }
  207. module.exports = router;