yuanyiming 1 vuosi sitten
vanhempi
commit
9d79585e83
7 muutettua tiedostoa jossa 690 lisäystä ja 250 poistoa
  1. 56 42
      app.js
  2. 2 2
      mysql.js
  3. BIN
      node_modules.zip
  4. 434 130
      package-lock.json
  5. 4 0
      package.json
  6. 154 76
      pbl.js
  7. 40 0
      token.js

+ 56 - 42
app.js

@@ -1,34 +1,38 @@
 // call the packages we need
-var express = require('express');        // call express
-var app = express();                 // define our app using express
-var bodyParser = require('body-parser');
+var express = require("express"); // call express
+var app = express(); // define our app using express
+var bodyParser = require("body-parser");
 var request = require("request");
-const edurouter = require('./pbl');
-const morgan = require('morgan');
+const edurouter = require("./pbl");
+const morgan = require("morgan");
 var path = require("path");
-var port = "7003";        // set our port
+var port = "7003"; // set our port
 //const cors = require('cors')
-app.use(morgan('dev'));
+app.use(morgan("dev"));
 // configure app to use bodyParser()
 // this will let us get the data from a POST
-app.use(bodyParser.urlencoded({ extended: true, limit: '3mb' }));
-app.use(bodyParser.json({ limit: '3mb' }));
+app.use(bodyParser.urlencoded({ extended: true, limit: "3mb" }));
+app.use(bodyParser.json({ limit: "3mb" }));
+
 
 //暂时全跨域
 app.use(function (req, res, next) {
-    ///var allowedOrigins = [config.local.origin,'http://cocorobo.hk','http://www.cocorobo.hk','https://cocorobo.hk','http://cloud.cocorobo.hk','https://cloud.cocorobo.hk'];
-    var origin = req.headers.origin || "*";
-    //if(allowedOrigins.indexOf(origin) > -1){
-    res.setHeader('Access-Control-Allow-Origin', origin);
-    //}
-    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
-    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
-    res.header('Access-Control-Allow-Credentials', true);
-    //修改程序信息与版本
-    res.header('X-Powered-By', ' 3.2.1')
-    //内容类型:如果是post请求必须指定这个属性
-    res.header('Content-Type', 'application/json;charset=utf-8')
-    next();
+	///var allowedOrigins = [config.local.origin,'http://cocorobo.hk','http://www.cocorobo.hk','https://cocorobo.hk','http://cloud.cocorobo.hk','https://cloud.cocorobo.hk'];
+	var origin = req.headers.origin || "*";
+	//if(allowedOrigins.indexOf(origin) > -1){
+	res.setHeader("Access-Control-Allow-Origin", origin);
+	//}
+	res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
+	res.header(
+		"Access-Control-Allow-Headers",
+		"Origin, X-Requested-With, Content-Type, Accept"
+	);
+	res.header("Access-Control-Allow-Credentials", true);
+	//修改程序信息与版本
+	res.header("X-Powered-By", " 3.2.1");
+	//内容类型:如果是post请求必须指定这个属性
+	res.header("Content-Type", "application/json;charset=utf-8");
+	next();
 });
 
 /*
@@ -38,31 +42,41 @@ app.use(cors({
     credentials: true // enable set cookie
 }));
 */
+
+let verifToken = require("./token.js");
+app.use(verifToken);
+
+
 // all of our routes will be prefixed with /api
-app.use('/api/pbl', edurouter);
+app.use("/api/pbl", edurouter);
 // app.use('/game', game);
 
-app.all('/download', function (req, res, next) {
-    //req.body.url = "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E4%B8%8B%E8%BD%BD%20%284%29.doc";
-    request({
-        url: req.body.url,
-        method: "GET",
-        encoding: null,
-        headers: {
-            'Accept-Encoding': 'gzip, deflate'
-        }
-    },
-        function (error, response, body) {
-            if (!error && response.statusCode == 200) {
-                res.setHeader('Content-Type', 'application/force-download');
-                res.setHeader('Content-Disposition', 'attachment; filename=' + path.basename(req.body.url));
-                res.setHeader('Content-Length', body.length);
-                res.send(body);
-            }
-        });
+app.all("/download", function (req, res, next) {
+	//req.body.url = "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E4%B8%8B%E8%BD%BD%20%284%29.doc";
+	request(
+		{
+			url: req.body.url,
+			method: "GET",
+			encoding: null,
+			headers: {
+				"Accept-Encoding": "gzip, deflate",
+			},
+		},
+		function (error, response, body) {
+			if (!error && response.statusCode == 200) {
+				res.setHeader("Content-Type", "application/force-download");
+				res.setHeader(
+					"Content-Disposition",
+					"attachment; filename=" + path.basename(req.body.url)
+				);
+				res.setHeader("Content-Length", body.length);
+				res.send(body);
+			}
+		}
+	);
 });
 
 // START THE SERVER
 // =============================================================================
 app.listen(port);
-console.log('app happens on port ' + port);
+console.log("app happens on port " + port);

+ 2 - 2
mysql.js

@@ -14,8 +14,8 @@ us.mysqlconnection = function(host, database) {
             user: "root", //用户名
             password: "cocorobo", //密码
             database: database, //数据库名称
-            // port: 20007 //端口
-            port: 3306 //端口
+            port: 20007 //端口
+            // port: 3306 //端口
         }); //连接超时和错误从连
     }
     //connectionLimit: 1000, 

BIN
node_modules.zip


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 434 - 130
package-lock.json


+ 4 - 0
package.json

@@ -28,6 +28,7 @@
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
       "version": "1.1.1"
     },
+    "axios": "^1.6.0",
     "bcryptjs": "^2.4.3",
     "bignumber.js": {
       "integrity": "sha512-LDXpJKVzEx2/OqNbG9mXBNvHuiRL4PzHCGfnANHMJ+fv68Ads3exDVJeGDJws+AoNEuca93bU3q+S0woeUaCdg==",
@@ -182,6 +183,7 @@
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
       "version": "1.0.0"
     },
+    "jsonwebtoken": "^9.0.2",
     "loader": "^2.1.1",
     "media-typer": {
       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
@@ -265,6 +267,7 @@
       "resolved": "https://registry.npmjs.org/mssql/-/mssql-1.3.0.tgz",
       "version": "1.3.0"
     },
+    "multer": "^1.4.5-lts.1",
     "mysql": "^2.17.1",
     "negotiator": {
       "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
@@ -273,6 +276,7 @@
     },
     "node-gyp": "^7.1.2",
     "node-pre-gyp": "^0.14.0",
+    "nodemon": "^3.0.1",
     "on-finished": {
       "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
       "requires": {

+ 154 - 76
pbl.js

@@ -3,129 +3,207 @@
 var express = require("express");
 var request = require("request");
 var bcrypt = require("bcryptjs");
+let axios = require("axios");
 var router = express.Router(); // get an instance of the express Router
 const querystring = require("querystring");
 var mysql = require("./mysql");
-// const _mysqlLabor = ["123.58.32.151", "sc_app"]; //edu數據庫信息
-// const _mysqluser = ["123.58.32.151", "cocorobouser"]; //用户数据库信息
-const _mysqlLabor = ["172.16.12.5", "sc_app"]; //edu數據庫信息
-const _mysqluser = ["172.16.12.5", "cocorobouser"]; //edu數據庫信息
+const _mysqlLabor = ["123.58.32.151", "sc_app"]; //edu數據庫信息
+const _mysqluser = ["123.58.32.151", "cocorobouser"]; //用户数据库信息
+// const _mysqlLabor = ["10.3.13.84", "sc_app"]; //edu數據庫信息
+// const _mysqluser = ["172.16.12.5", "cocorobouser"]; //edu數據庫信息
 var crypto = require("crypto");
 var https = require("https");
+let jwt = require("jsonwebtoken");
 
+let multer=require("multer");
+
+const wx = {
+	appid: "wx1260af162664fd04", // 填写用户自己的appid
+	secret: "9d399b3aa0a9e8bce68d20e7734b73e0", // 填写用户自己的密钥
+};
 //統壹處理區域
-router.use(async function(req, res, next) {
-    await asynnext(req, res, next);
-    //// make sure we go to the next routes and don't stop here
-    //res.end("");
+router.use(async function (req, res, next) {
+	await asynnext(req, res, next);
+	//// make sure we go to the next routes and don't stop here
+	//res.end("");
 });
 
 /**
  * @des 參數解釋同上
  */
 function asynnext(req, res, next) {
-    //異步處理
-    return new Promise(async(resolve, reject) => {
-        next();
-        //resolve(true);aa
-    });
+	//異步處理
+	return new Promise(async (resolve, reject) => {
+		next();
+		//resolve(true);aa
+	});
 }
 /*測試*/
 router.route("/a").all((req, res, next) => {
-    var json = queryString(req.url);
-    getmysql(req, res, "a", json["ph"], json["pa"]);
+	return console.log(req.query);
+	QMysql(req, res, "insert_user");
+	var json = queryString(req.url);
+	getmysql(req, res, "a", json["ph"], json["pa"]);
 });
 router.route("/b").all((req, res, next) => {
-    var json = queryString(req.url);
-    getmysql(req, res, "b", json["ph"], json["pa"]);
+	var json = queryString(req.url);
+	getmysql(req, res, "b", json["ph"], json["pa"]);
+});
+
+// 获取微信openID
+router.get("/weChatCode",async (req, res) => {
+	console.log(req.query);
+	let response  = await axios.get("https://api.weixin.qq.com/sns/jscode2session", {
+		params: {
+			appid: wx.appid,
+			secret: wx.secret,
+			js_code: req.query.codes,
+			grant_type: "authorization_code",
+		},
+	});
+	res.send(response.data.openid);
+	// QMysql(req, res, "update_NewStatusById");
+});
+
+//登录接口
+router.post("/login", (req, res) => {
+	console.log(req.body);
+	let {openid}=req.body;
+	postmysql3(req, res, "insert_user");
+	let token = jwt.sign(
+		{
+			openid,
+		},
+		"secret",
+		{
+			expiresIn: "10s",
+		}
+	);
+	res.send(
+		{
+			code: 200,
+			msg: "登录成功",
+			token,
+		}
+	);
+});
+
+//查询是否注册过
+router.post("/selectUser", (req, res) => {
+	console.log(req.body);
+	let {openid}=req.body;
+	postmysql3(req, res, "Select_user");
 });
 
+//上传活动
+router.post("/insertActive", (req, res) => {
+	console.log(req.body);
+	postmysql3(req, res, "insert_activity");
+
+	res.send({
+		code: 200,
+		msg: "上传成功",
+	});
+});
+
+//获取活动
+router.post("/selectActivity", (req, res) => {
+	console.log(req.body);
+	postmysql3(req, res, "select_activity");
+});
+
+
+
+
+
+
+
 
-queryString = function(url) {
-    var a = url.split("?");
-    var json = querystring.parse(a[1]);
-    return json;
+queryString = function (url) {
+	var a = url.split("?");
+	var json = querystring.parse(a[1]);
+	return json;
 };
 
 //post存儲過程處理
-postmysql = function(req, res, functionname) {
-    //mode的處理
-    if (req.body[0]) {
-        p = Object.values(req.body[0]);
-        p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
-        //執行存儲過程
-        mysql.usselect(p, function(ret) {
-            res.end(JSON.stringify(ret));
-        });
-    }
+postmysql = function (req, res, functionname) {
+	//mode的處理
+	if (req.body[0]) {
+		p = Object.values(req.body[0]);
+		p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
+		//執行存儲過程
+		mysql.usselect(p, function (ret) {
+			res.end(JSON.stringify(ret));
+		});
+	}
 };
 
 //post存儲過程處理
-postmysql2 = function(req, res, functionname) {
-    //mode的處理
-    if (req.body) {
-        p = Object.values(req.body)[0].split(",");
-        p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
-        //執行存儲過程
-        mysql.usselect(p, function(ret) {
-            res.end(JSON.stringify(ret));
-        });
-    }
+postmysql2 = function (req, res, functionname) {
+	//mode的處理
+	if (req.body) {
+		p = Object.values(req.body)[0].split(",");
+		p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
+		//執行存儲過程
+		mysql.usselect(p, function (ret) {
+			res.end(JSON.stringify(ret));
+		});
+	}
 };
 
 //post存儲過程處理
-postmysql3 = function(req, res, functionname) {
-    //mode的處理
-    if (req.body) {
-        p = Object.values(req.body);
-        p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
-        //執行存儲過程
-        mysql.usselect(p, function(ret) {
-            res.end(JSON.stringify(ret));
-        });
-    }
+postmysql3 = function (req, res, functionname) {
+	//mode的處理
+	if (req.body) {
+		p = Object.values(req.body);
+		p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
+		//執行存儲過程
+		mysql.usselect(p, function (ret) {
+			res.end(JSON.stringify(ret));
+		});
+	}
 };
 
 //get獲取數據庫信息
-getmysql = function(req, res, functionname, ...p) {
-    p = p || [];
-    p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
-    //執行存儲過程
-    mysql.usselect(p, function(ret) {
-        res.end(JSON.stringify(ret));
-    }); //
+getmysql = function (req, res, functionname, ...p) {
+	p = p || [];
+	p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
+	//執行存儲過程
+	mysql.usselect(p, function (ret) {
+		res.end(JSON.stringify(ret));
+	}); //
 };
 
 //post存储过程处理
 
-userpostmysql = function(req, res, functionname) {
-    //mode的处理
+userpostmysql = function (req, res, functionname) {
+	//mode的处理
 
-    if (req.body.mode) {
-        p = req.body.mode.split(",");
+	if (req.body.mode) {
+		p = req.body.mode.split(",");
 
-        p.unshift(_mysqluser[0], _mysqluser[1], functionname);
+		p.unshift(_mysqluser[0], _mysqluser[1], functionname);
 
-        //执行存储过程
+		//执行存储过程
 
-        mysql.usselect(p, function(ret) {
-            res.end(JSON.stringify(ret));
-        });
-    }
+		mysql.usselect(p, function (ret) {
+			res.end(JSON.stringify(ret));
+		});
+	}
 };
 
 //get获取数据库信息
 
-usergetmysql = function(req, res, functionname, ...p) {
-    p = p || [];
+usergetmysql = function (req, res, functionname, ...p) {
+	p = p || [];
 
-    p.unshift(_mysqluser[0], _mysqluser[1], functionname);
+	p.unshift(_mysqluser[0], _mysqluser[1], functionname);
 
-    //执行存储过程
+	//执行存储过程
 
-    mysql.usselect(p, function(ret) {
-        res.end(JSON.stringify(ret));
-    }); //
+	mysql.usselect(p, function (ret) {
+		res.end(JSON.stringify(ret));
+	}); //
 };
 
-module.exports = router;
+module.exports = router;

+ 40 - 0
token.js

@@ -0,0 +1,40 @@
+const jwt = require("jsonwebtoken");
+
+// 200正常 201已经发送过请求,不要重复发送  300查询错误  405token过期 500错误
+
+const verifToken = (req, res, next) => {
+	// console.log(ctx.request.url);js replace
+	let url = req.url.split("?")[0];
+	// console.log(url);
+	// 以下接口不校验token
+	let url_config = ["/api/pbl/login", "/api/pbl/login2", "/api/pbl/weChatCode","/api/pbl/selectUser"];
+
+	// 检测接口是否不在校验接口列表中
+	let changer = url_config.some((item) => {
+		return item == url;
+	});
+	// console.log(changer);
+	if (changer) {
+		// 不检验token
+	   next();
+	} else {
+		// 检验token
+		// console.log(req.headers["authorization"]);
+		if (
+			req.headers["authorization"] &&
+			req.headers["authorization"] != "Bearer"
+		) {
+			next()
+		} else {
+			// console.log(22);
+			// res.send ({
+			// 	code: 405,
+			// 	msg: "请重新登录",
+			// }) 
+			next()
+
+		}
+	}
+};
+
+module.exports = verifToken;

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä