├── .gitignore ├── api ├── booktitles.js ├── type.js ├── book.js ├── search.js ├── shelf.js ├── booklist.js ├── lately.js ├── checkShelf.js ├── login.js ├── insert-shelf.js ├── lastread.js └── register.js ├── README.md ├── package.json ├── connect └── index.js └── app.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | 4 | # Editor directories and files 5 | .idea 6 | .vscode 7 | -------------------------------------------------------------------------------- /api/booktitles.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const booktitles = (req, res) => { 4 | const id = req.query.id; 5 | 6 | connect(`SELECT * FROM booktitles WHERE id=${id};`, function (err, results, fields) { 7 | if (err) throw err; 8 | res.send(results[0]); 9 | }) 10 | } 11 | 12 | module.exports = booktitles 13 | -------------------------------------------------------------------------------- /api/type.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const type = (req, res) => { 4 | const type = req.query.type; 5 | connect(`SELECT * FROM booklist WHERE type='${type}'`, function (err, results, fileds) { 6 | if (err) throw err; 7 | console.log(results); 8 | res.send(results) 9 | }) 10 | } 11 | module.exports = type; 12 | -------------------------------------------------------------------------------- /api/book.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const book = (req, res) => { 4 | const book = req.query.book; 5 | const bookId = req.query.id; 6 | connect(`SELECT * FROM book${book} WHERE id=${bookId}`, function (err, results, fileds) { 7 | if (err) throw err; 8 | res.send(results[0]) 9 | }) 10 | } 11 | 12 | module.exports = book; 13 | -------------------------------------------------------------------------------- /api/search.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const search = (req, res) => { 4 | const keyword = req.query.keyword; 5 | connect(`SELECT * FROM booklist WHERE name LIKE "%${keyword}%" OR author LIKE "%${keyword}%";`, function (err, results, fileds) { 6 | if (err) throw err; 7 | res.send(results); 8 | }) 9 | } 10 | 11 | module.exports = search; 12 | -------------------------------------------------------------------------------- /api/shelf.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const shelf = (req, res) => { 4 | const userId = req.query.userId; 5 | console.log(req.query.userId); 6 | connect(`SELECT * FROM bookshelf WHERE userid=${userId}`, function (err, results, fileds) { 7 | if (err) throw err; 8 | res.send(results) 9 | }) 10 | } 11 | 12 | module.exports = shelf; 13 | -------------------------------------------------------------------------------- /api/booklist.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const booklist = (req, res) => { 4 | const id = req.query.id; 5 | connect(id ? `SELECT * FROM booklist WHERE id=${id};` : `SELECT * FROM booklist;`, function (err, results, fields) { 6 | if (err) throw err; 7 | id ? res.send(results[0]) : res.send(results) 8 | }) 9 | } 10 | 11 | module.exports = booklist; 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 本地使用方法: 2 | ```shell 3 | # 克隆项目 4 | git clone git@github.com:YepFury/reader-api.git 5 | 6 | # 进入到项目根目录,安装依赖 7 | cd read-api 8 | npm install 9 | 10 | # 启动接口 11 | node app.js 12 | ``` 13 | 14 | 服务器使用方法: 15 | ```shell 16 | # 克隆项目 17 | git clone git@github.com:YepFury/reader-api.git 18 | 19 | # 进入到项目根目录,安装依赖 20 | cd read-api/ 21 | npm install 22 | 23 | # 使用pm2启动服务 24 | pm2 start app.js 25 | ``` 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reader-api", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "body-parser": "^1.18.3", 13 | "connect-history-api-fallback": "^1.5.0", 14 | "express": "^4.16.4", 15 | "md5": "^2.2.1", 16 | "mysql": "^2.16.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /api/lately.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const late = (req, res) => { 4 | const userId = req.query.userId; 5 | const bookId = req.query.bookId; 6 | connect(`SELECT * FROM lately_read WHERE userid='${userId}' AND book_id='${bookId}'`, function (err, results, fileds) { 7 | if (err) throw err; 8 | if(results.length>0) { 9 | res.send(results[0]); 10 | }else { 11 | res.send(false); 12 | } 13 | }) 14 | } 15 | 16 | module.exports = late; 17 | -------------------------------------------------------------------------------- /api/checkShelf.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const checkShelf = (req, res) => { 4 | const userId = req.query.userId; 5 | const bookId = req.query.bookId; 6 | connect(`SELECT * FROM bookshelf WHERE userid=${userId} AND bookid=${bookId}`, function (err, results, fileds) { 7 | if (err) throw err; 8 | if (results.length === 1) { 9 | res.send(true) 10 | } 11 | else { 12 | res.send(false) 13 | } 14 | }) 15 | } 16 | 17 | module.exports = checkShelf; 18 | -------------------------------------------------------------------------------- /connect/index.js: -------------------------------------------------------------------------------- 1 | const mysql = require('mysql'); 2 | 3 | const pool = new mysql.createPool({ 4 | host: '192.168.74.129', 5 | user: 'root', 6 | password: 'fuyafeng', 7 | database: 'books', 8 | port: 8071 9 | }) 10 | 11 | const connectMysql = function (sql, callback) { 12 | pool.getConnection(function (err, connection) { 13 | connection.query(sql, function (error, results, fields) { 14 | connection.release(); 15 | callback(error, results, fields) 16 | }) 17 | }) 18 | } 19 | 20 | module.exports = connectMysql 21 | -------------------------------------------------------------------------------- /api/login.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const login = (req, res) => { 4 | const user = req.body.user; 5 | const pwd = req.body.pwd; 6 | 7 | connect(`SELECT * FROM users WHERE user_name="${user}" AND password="${pwd}";`, function (err, results, fileds) { 8 | if (err) throw err; 9 | if(results.length === 1) { 10 | connect(`SELECT * FROM user_info WHERE user="${user}";`, function (err, results, fileds) { 11 | if (err) throw err; 12 | if(results.length === 1) { 13 | res.send(results[0]) 14 | } 15 | else { 16 | res.send(false) 17 | } 18 | }) 19 | } 20 | else { 21 | res.send(false) 22 | } 23 | }) 24 | 25 | } 26 | 27 | module.exports = login; 28 | -------------------------------------------------------------------------------- /api/insert-shelf.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const inShelf = (req, res) => { 4 | const userId = req.body.userId; 5 | const sql = `INSERT INTO \`books\`.\`bookshelf\`(\`userid\`, \`bookid\`, \`bookname\`, \`author\`, \`images\`, \`wordcount\`, \`type\`, \`intro\`, \`serialize\`) 6 | VALUES ('${userId}','${req.body['userInfo[id]']}','${req.body['userInfo[name]']}','${req.body['userInfo[author]']}','${req.body['userInfo[images]']}','${req.body['userInfo[wordcount]']}','${req.body['userInfo[type]']}','${req.body['userInfo[intro]']}','${req.body['userInfo[serialize]']}');` 7 | 8 | connect(sql, function (err, results, fileds) { 9 | if (err) throw err; 10 | if (results.affectedRows === 1) { 11 | res.send(true) 12 | } else { 13 | res.send(false) 14 | } 15 | }) 16 | 17 | } 18 | 19 | module.exports = inShelf; 20 | -------------------------------------------------------------------------------- /api/lastread.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const lately = (req, res) => { 4 | const userId = req.body.userId; 5 | const bookId = req.body.bookId; 6 | const chapterId = req.body.chapterId; 7 | connect(`SELECT * FROM lately_read WHERE userid='${userId}' AND book_id='${bookId}'`, function (err, results, fileds) { 8 | if (err) throw err; 9 | if (results.length > 0) { 10 | connect(`UPDATE lately_read SET chapter='${chapterId}' WHERE userid='${userId}' AND book_id='${bookId}';`, function (err, result, fields) { 11 | if (err) throw err; 12 | if (result.affectedRows === 1) { 13 | res.send('修改成功') 14 | } 15 | }) 16 | } else { 17 | connect(`INSERT INTO lately_read (userid, book_id, chapter) VALUES ('${userId}', '${bookId}', '${chapterId}');`, function (err, result, fields) { 18 | if (err) throw err; 19 | if (result.affectedRows === 1) { 20 | res.send('插入成功') 21 | } 22 | }) 23 | } 24 | // res.send(results[0]) 25 | }) 26 | } 27 | 28 | module.exports = lately; 29 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const bodyParse = require('body-parser'); 3 | const history = require('connect-history-api-fallback'); 4 | 5 | const app = express(); 6 | app.use(history()); 7 | app.use(bodyParse.json()); //数据JSON类型 8 | app.use(bodyParse.urlencoded({ 9 | extended: false 10 | })); //解析post请求数据 11 | 12 | app.all('*', function(req, res, next) { 13 | res.header("Access-Control-Allow-Credentials", true) 14 | res.header("Access-Control-Allow-Origin", "*") 15 | res.header("Access-Control-Allow-Headers", "X-Requested-With") 16 | res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS") 17 | res.header("X-Powered-By", ' 3.2.1') 18 | res.header("Content-Type", "application/json;charset=utf-8") 19 | next() 20 | }); 21 | // get 22 | app.get('/book', require('./api/book')); 23 | app.get('/booklist', require('./api/booklist')); 24 | app.get('/booktitles', require('./api/booktitles')); 25 | app.get('/type', require('./api/type')); 26 | app.get('/shelf', require('./api/shelf')); 27 | app.get('/checkShelf', require('./api/checkShelf')); 28 | app.get('/late', require('./api/lately')); 29 | app.get('/search', require('./api/search')); 30 | 31 | // post 32 | app.post('/login', require('./api/login')); 33 | app.post('/register', require('./api/register')); 34 | app.post('/inShelf', require('./api/insert-shelf')); 35 | app.post('/lately', require('./api/lastread')); 36 | 37 | app.listen(7123, () => { 38 | console.log('接口运行在7070'); 39 | }) 40 | -------------------------------------------------------------------------------- /api/register.js: -------------------------------------------------------------------------------- 1 | const connect = require('../connect'); 2 | 3 | const register = (req, res) => { 4 | const user = req.body.user; 5 | const pwd = req.body.pwd; 6 | const email = req.body.email; 7 | 8 | connect(`SELECT * FROM users WHERE user_name="${user}";`, function (err, results, fileds) { 9 | if (err) throw err; 10 | if (results.length === 1) { 11 | res.send({ 12 | insertStatus: 2 13 | }) 14 | } else { 15 | let id = new Date().getTime(); 16 | let sql = `INSERT INTO \`books\`.\`users\`(\`user_id\`, \`user_name\`, \`password\`, \`email\`) VALUES ('${id}', '${user}', '${pwd}', '${email}');` 17 | connect(sql, function (err, results, fileds) { 18 | if (err) throw err; 19 | if (results.affectedRows === 1) { 20 | let sql2 = `INSERT INTO \`books\`.\`user_info\`(\`id\`, \`user\`, \`font_size\`, \`style_model\`, \`night\`, \`head_img\`) VALUES ('${id}', '${user}', 16, 'style1', 'false', 'data:image/png;base64,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');`; 21 | connect(sql2, function (err, results, fileds) { 22 | if (err) throw err; 23 | if (results.affectedRows === 1) { 24 | connect(`SELECT * FROM user_info WHERE user="${user}";`, function (err, results, fileds) { 25 | if (err) throw err; 26 | if (results.length === 1) { 27 | res.send({ 28 | insertStatus: 1, 29 | userInfo: results[0] 30 | }) 31 | } else { 32 | res.send({ 33 | insertStatus: 0 34 | }) 35 | } 36 | }) 37 | } else { 38 | res.send({ 39 | insertStatus: 0 40 | }) 41 | } 42 | }) 43 | } else { 44 | res.send({ 45 | insertStatus: 0 46 | }) 47 | } 48 | }) 49 | } 50 | }) 51 | } 52 | 53 | module.exports = register; 54 | --------------------------------------------------------------------------------