pbl.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. // ROUTES FOR OUR APIselectClassStudent
  2. // =============================================================================
  3. const express = require("express");
  4. const request = require("request");
  5. const bcrypt = require("bcryptjs");
  6. const router = express.Router(); // get an instance of the express Router
  7. const querystring = require("querystring");
  8. var mysql = require("./mysql");
  9. // const _mysqlLabor = ["123.58.32.151", "pbl"]; //edu數據庫信息
  10. // const _mysqluser = ["123.58.32.151", "cocorobouser"]; //用户数据库信息
  11. // const _getmysqlLabor = ["123.58.32.151", "pbl"]; //edu數據庫信息
  12. // const _getmysqluser = ["123.58.32.151", "cocorobouser"]; //edu數據庫信息
  13. const _mysqlLabor = ["172.16.12.5", "pbl"]; //edu數據庫信息
  14. const _mysqluser = ["172.16.12.5", "cocorobouser"]; //edu數據庫信息
  15. // const _getmysqlLabor = ["172.16.12.5", "pbl"]; //edu數據庫信息
  16. // const _getmysqluser = ["172.16.12.5", "cocorobouser"]; //edu數據庫信息
  17. const _getmysqlLabor2 = ["172.16.12.7", "pbl"]; //edu數據庫信息
  18. const _getmysqlLabor = ["172.16.12.7", "pbl"]; //edu數據庫信息
  19. const _getmysqluser = ["172.16.12.7", "cocorobouser"]; //edu數據庫信息
  20. const _localhost = ["127.0.0.1", "pbl"]; //edu數據庫信息
  21. const crypto = require("crypto");
  22. const https = require("https");
  23. const { Pool } = require('pg');
  24. const axios = require('axios');
  25. const loginHandler = require('./login'); // 确保路径正确
  26. const { r2rClient } = require("r2r-js");
  27. const client = new r2rClient("https://r2rserver.cocorobo.cn/");
  28. router.route("/login").all(async (req, res, next) => {
  29. loginHandler(req, res)
  30. });
  31. router.route("/logout").all(async (req, res, next) => {
  32. try {
  33. const response = await client.users.logout();
  34. res.status(200).json({result: response.results});
  35. } catch (error) {
  36. res.status(500).json({error: error instanceof Error ? error.message : "An error occurred"});
  37. }
  38. });
  39. //获取文档列表
  40. router.route("/getDocument").all(async (req, res, next) => {
  41. try {
  42. const response = await client.documents.list({
  43. limit: 10,
  44. offset: 0,
  45. });
  46. console.log(response);
  47. res.status(200).json({ result: response.results });
  48. } catch (error) {
  49. res.status(500).json({ error: error instanceof Error ? error.message : "An error occurred" });
  50. }
  51. });
  52. //列出文档块
  53. router.route("/listChunks").all(async (req, res, next) => {
  54. try {
  55. const response = await client.documents.listChunks({
  56. id: "5111165f-965c-5d61-89e3-1f74b0178032",
  57. });
  58. console.log(response);
  59. res.status(200).json({ result: response.results });
  60. } catch (error) {
  61. res.status(500).json({ error: error instanceof Error ? error.message : "An error occurred" });
  62. }
  63. });
  64. //提取实体和关系
  65. router.route("/extract").all(async (req, res, next) => {
  66. try {
  67. const response = await client.documents.extract({ id: "5111165f-965c-5d61-89e3-1f74b0178032" })
  68. console.log(response);
  69. res.status(200).json({ result: response.results });
  70. } catch (error) {
  71. res.status(500).json({ error: error instanceof Error ? error.message : "An error occurred" });
  72. }
  73. });
  74. router.route("/selectUser").all((req, res, next) => {
  75. var json = queryString(req.url);
  76. getmysql(req, res, "selectUser", json["userid"]);
  77. });
  78. function generateAPIKey(username) {
  79. let timeStamp = new Date().getTime();
  80. let hashStr = timeStamp + username;
  81. let digest = crypto
  82. .createHash("sha256")
  83. .update(hashStr, "utf8")
  84. .digest("hex");
  85. return digest;
  86. }
  87. queryString = function(url) {
  88. var a = url.split("?");
  89. var json = querystring.parse(a[1]);
  90. return json;
  91. };
  92. //post存儲過程處理
  93. postmysql = function(req, res, functionname) {
  94. //mode的處理
  95. if (req.body[0]) {
  96. p = Object.values(req.body[0]);
  97. p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  98. //執行存儲過程
  99. mysql.usselect(p, function(ret) {
  100. res.end(JSON.stringify(ret));
  101. });
  102. }
  103. };
  104. //post存儲過程處理
  105. postmysql2 = function(req, res, functionname) {
  106. //mode的處理
  107. if (req.body) {
  108. p = Object.values(req.body)[0].split(",");
  109. p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  110. //執行存儲過程
  111. mysql.usselect(p, function(ret) {
  112. res.end(JSON.stringify(ret));
  113. });
  114. }
  115. };
  116. //post存儲過程處理
  117. postmysql3 = function(req, res, functionname) {
  118. //mode的處理
  119. if (req.body) {
  120. p = Object.values(req.body);
  121. p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  122. //執行存儲過程
  123. mysql.usselect(p, function(ret) {
  124. res.end(JSON.stringify(ret));
  125. });
  126. }
  127. };
  128. //get獲取數據庫信息
  129. getmysql = function(req, res, functionname, ...p) {
  130. p = p || [];
  131. p.unshift(_getmysqlLabor[0], _getmysqlLabor[1], functionname);
  132. //執行存儲過程
  133. mysql.usselect(p, function(ret) {
  134. res.end(JSON.stringify(ret));
  135. }); //
  136. };
  137. //get獲取數據庫信息
  138. getmysql2 = function(req, res, functionname, ...p) {
  139. p = p || [];
  140. p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  141. //執行存儲過程
  142. mysql.usselect(p, function(ret) {
  143. res.end(JSON.stringify(ret));
  144. }); //
  145. };
  146. //get獲取數據庫信息
  147. getmysql3 = function(req, res, functionname, ...p) {
  148. p = p || [];
  149. p.unshift(_getmysqlLabor2[0], _getmysqlLabor2[1], functionname);
  150. //執行存儲過程
  151. mysql.usselect(p, function(ret) {
  152. res.end(JSON.stringify(ret));
  153. }); //
  154. };
  155. //post存储过程处理
  156. userpostmysql = function(req, res, functionname) {
  157. //mode的处理
  158. if (req.body.mode) {
  159. p = req.body.mode.split(",");
  160. p.unshift(_mysqluser[0], _mysqluser[1], functionname);
  161. //执行存储过程
  162. mysql.usselect(p, function(ret) {
  163. res.end(JSON.stringify(ret));
  164. });
  165. }
  166. };
  167. //get获取数据库信息
  168. usergetmysql = function(req, res, functionname, ...p) {
  169. p = p || [];
  170. p.unshift(_mysqluser[0], _mysqluser[1], functionname);
  171. //执行存储过程
  172. mysql.usselect(p, function(ret) {
  173. res.end(JSON.stringify(ret));
  174. }); //
  175. };
  176. //post存儲過程處理
  177. postmysqlLocal = function(req, res) {
  178. //mode的處理
  179. if (req.body[0]) {
  180. p = Object.values(req.body[0]);
  181. p.unshift(_localhost[0], _localhost[1]);
  182. //執行存儲過程
  183. mysql.usselect(p, function(ret) {
  184. res.end(JSON.stringify(ret));
  185. });
  186. }
  187. };
  188. postmysqlOnline = function(req, res) {
  189. //mode的處理
  190. if (req.body[0]) {
  191. p = Object.values(req.body[0]);
  192. p.unshift(_mysqlLabor[0], _mysqlLabor[1]);
  193. //執行存儲過程
  194. mysql.usselect(p, function(ret) {
  195. res.end(JSON.stringify(ret));
  196. });
  197. }
  198. };
  199. module.exports = router;