parent
6d2ad8182b
commit
9abe619843
@ -0,0 +1,7 @@
|
||||
.DS_Store
|
||||
.idea
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
node_modules
|
||||
log
|
||||
#config.js 这个文件我这里就不加进来了,我把它上传到 github
|
||||
@ -0,0 +1,41 @@
|
||||
var createError = require('http-errors');
|
||||
var express = require('express');
|
||||
var path = require('path');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var logger = require('morgan');
|
||||
|
||||
var indexRouter = require('./routes/index');
|
||||
var usersRouter = require('./routes/users');
|
||||
|
||||
var app = express();
|
||||
|
||||
// view engine setup
|
||||
app.set('views', path.join(__dirname, 'views'));
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
app.use(logger('dev'));
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
app.use(cookieParser());
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.use('/', indexRouter);
|
||||
app.use('/users', usersRouter);
|
||||
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function(req, res, next) {
|
||||
next(createError(404));
|
||||
});
|
||||
|
||||
// error handler
|
||||
app.use(function(err, req, res, next) {
|
||||
// set locals, only providing error in development
|
||||
res.locals.message = err.message;
|
||||
res.locals.error = req.app.get('env') === 'development' ? err : {};
|
||||
|
||||
// render the error page
|
||||
res.status(err.status || 500);
|
||||
res.render('error');
|
||||
});
|
||||
|
||||
module.exports = app;
|
||||
@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var app = require('../app');
|
||||
var debug = require('debug')('workserver:server');
|
||||
var http = require('http');
|
||||
|
||||
/**
|
||||
* Get port from environment and store in Express.
|
||||
*/
|
||||
|
||||
var port = normalizePort(process.env.PORT || '3000');
|
||||
app.set('port', port);
|
||||
|
||||
/**
|
||||
* Create HTTP server.
|
||||
*/
|
||||
|
||||
var server = http.createServer(app);
|
||||
|
||||
/**
|
||||
* Listen on provided port, on all network interfaces.
|
||||
*/
|
||||
|
||||
server.listen(port);
|
||||
server.on('error', onError);
|
||||
server.on('listening', onListening);
|
||||
|
||||
/**
|
||||
* Normalize a port into a number, string, or false.
|
||||
*/
|
||||
|
||||
function normalizePort(val) {
|
||||
var port = parseInt(val, 10);
|
||||
|
||||
if (isNaN(port)) {
|
||||
// named pipe
|
||||
return val;
|
||||
}
|
||||
|
||||
if (port >= 0) {
|
||||
// port number
|
||||
return port;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "error" event.
|
||||
*/
|
||||
|
||||
function onError(error) {
|
||||
if (error.syscall !== 'listen') {
|
||||
throw error;
|
||||
}
|
||||
|
||||
var bind = typeof port === 'string'
|
||||
? 'Pipe ' + port
|
||||
: 'Port ' + port;
|
||||
|
||||
// handle specific listen errors with friendly messages
|
||||
switch (error.code) {
|
||||
case 'EACCES':
|
||||
console.error(bind + ' requires elevated privileges');
|
||||
process.exit(1);
|
||||
break;
|
||||
case 'EADDRINUSE':
|
||||
console.error(bind + ' is already in use');
|
||||
process.exit(1);
|
||||
break;
|
||||
default:
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "listening" event.
|
||||
*/
|
||||
|
||||
function onListening() {
|
||||
var addr = server.address();
|
||||
var bind = typeof addr === 'string'
|
||||
? 'pipe ' + addr
|
||||
: 'port ' + addr.port;
|
||||
debug('Listening on ' + bind);
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
const configs = {
|
||||
mysql: {
|
||||
host: '118.195.213.51',
|
||||
port: '3306',
|
||||
user: 'root',
|
||||
password: '123456', // 自己设置的密码
|
||||
database: 'expressFrame' // 数据库的名字
|
||||
},
|
||||
// 打印错误
|
||||
log: {
|
||||
error (message) {
|
||||
console.log('[knex error]', message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = configs
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
// 引用团队模版数据
|
||||
const Team = require('../model/team');
|
||||
|
||||
const teamController = {
|
||||
// showTeam 获取团队数据并返回到页面
|
||||
showTeam: async function(req,res,next){
|
||||
try{
|
||||
let teamData;
|
||||
if(req.body.id){
|
||||
console.log(req.body.id)
|
||||
teamData= await Team.getById('id',req.body.id)
|
||||
}else{
|
||||
teamData = await Team.all()
|
||||
}
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "操作成功",
|
||||
data: teamData
|
||||
})
|
||||
}catch(e){
|
||||
res.json({ code: 0, message: "操作失败", data: e })
|
||||
}
|
||||
},
|
||||
// 新增团队
|
||||
addTeam: async function(req, res, next) {
|
||||
try {
|
||||
const teamData = req.body; // 从请求中获取团队数据
|
||||
|
||||
const result = await Team.insert(teamData);
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "团队添加成功",
|
||||
data: result
|
||||
});
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "团队添加失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
// 修改团队
|
||||
updateTeam: async function(req, res, next) {
|
||||
try {
|
||||
const teamId = req.body.id; // Assuming the team ID is passed as a parameter
|
||||
const teamData = req.body; // Updated team data
|
||||
console.log(teamId + " & " + JSON.stringify(teamData));
|
||||
const result = await Team.update(teamId, teamData); // Use an appropriate function to update the team
|
||||
if (result) {
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "团队修改成功",
|
||||
data: result
|
||||
});
|
||||
} else {
|
||||
res.json({
|
||||
code: 404,
|
||||
message: "团队不存在",
|
||||
data: null
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "团队修改失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 删除团队
|
||||
deleteTeam: async function(req, res, next) {
|
||||
try {
|
||||
const teamId = req.body.id; // Assuming the team ID is passed as a parameter
|
||||
const result = await Team.delete(teamId); // Use an appropriate function to delete the team
|
||||
if (result) {
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "团队删除成功",
|
||||
data: result
|
||||
});
|
||||
} else {
|
||||
res.json({
|
||||
code: 404,
|
||||
message: "团队不存在",
|
||||
data: null
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "团队删除失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
module.exports = teamController;
|
||||
|
||||
@ -0,0 +1,150 @@
|
||||
// 引用用户模版数据
|
||||
const User = require('../model/user');
|
||||
|
||||
const userController = {
|
||||
// showUser 获取用户数据并返回到页面
|
||||
showUser: async function(req,res,next){
|
||||
try{
|
||||
let userData;
|
||||
if(req.body.id){
|
||||
console.log(req.body.id)
|
||||
userData= await User.getById('id',req.body.id)
|
||||
}else{
|
||||
userData = await User.all()
|
||||
}
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "操作成功",
|
||||
data: userData
|
||||
})
|
||||
}catch(e){
|
||||
res.json({ code: 0, message: "操作失败", data: e })
|
||||
}
|
||||
},
|
||||
// 新增用户
|
||||
addUser: async function(req, res, next) {
|
||||
try {
|
||||
const userData = req.body; // 从请求中获取用户数据
|
||||
|
||||
const result = await User.insert(userData);
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "用户添加成功",
|
||||
data: result
|
||||
});
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "用户添加失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
// 修改用户
|
||||
updateUser: async function(req, res, next) {
|
||||
try {
|
||||
const userId = req.body.id; // Assuming the user ID is passed as a parameter
|
||||
const userData = req.body; // Updated user data
|
||||
console.log(userId + " & " + JSON.stringify(userData));
|
||||
const result = await User.update(userId, userData); // Use an appropriate function to update the user
|
||||
if (result) {
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "用户修改成功",
|
||||
data: result
|
||||
});
|
||||
} else {
|
||||
res.json({
|
||||
code: 404,
|
||||
message: "用户不存在",
|
||||
data: null
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "用户修改失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
// 删除用户
|
||||
deleteUser: async function(req, res, next) {
|
||||
try {
|
||||
const userId = req.body.id; // Assuming the user ID is passed as a parameter
|
||||
const result = await User.delete(userId); // Use an appropriate function to delete the user
|
||||
if (result) {
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "用户删除成功",
|
||||
data: result
|
||||
});
|
||||
} else {
|
||||
res.json({
|
||||
code: 404,
|
||||
message: "用户不存在",
|
||||
data: null
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "用户删除失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
// 注册用户
|
||||
register: async function(req, res, next) {
|
||||
try {
|
||||
const userData = req.body; // 从请求中获取用户数据
|
||||
const newUser = await User.insert(userData); // 创建新用户,使用合适的方法
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "注册成功",
|
||||
data: newUser
|
||||
});
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "注册失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 用户登录
|
||||
login: async function(req, res, next) {
|
||||
try {
|
||||
console.log(req.body);
|
||||
const user = await User.getById('username',req.body.username); // 根据邮箱和密码查找用户,使用合适的方法
|
||||
if (!req.body.password==user.password) {
|
||||
res.json({
|
||||
code: 401,
|
||||
message: "登录失败,用户名或密码不正确",
|
||||
data: null
|
||||
});
|
||||
} else {
|
||||
// 在此处可以生成并返回一个 JSON Web Token (JWT) 作为用户的身份认证标识
|
||||
const token = User.generateAuthToken();
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "登录成功",
|
||||
data: { user, token }
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "登录失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
module.exports = userController;
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
|
||||
const Work = require('../model/work');
|
||||
|
||||
const workController = {
|
||||
// showWork 获取工作数据并返回到页面
|
||||
showWork: async function(req,res,next){
|
||||
try{
|
||||
let workData;
|
||||
if(req.body.id){
|
||||
console.log(req.body.id)
|
||||
workData= await Work.getById('id',req.body.id)
|
||||
}else{
|
||||
workData = await Work.all()
|
||||
}
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "操作成功",
|
||||
data: workData
|
||||
})
|
||||
}catch(e){
|
||||
res.json({ code: 0, message: "操作失败", data: e })
|
||||
}
|
||||
},
|
||||
// 新增工作
|
||||
addWork: async function(req, res, next) {
|
||||
try {
|
||||
const workData = req.body; // 从请求中获取工作数据
|
||||
|
||||
const result = await Work.insert(workData);
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "工作添加成功",
|
||||
data: result
|
||||
});
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "工作添加失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
// 修改工作
|
||||
updateWork: async function(req, res, next) {
|
||||
try {
|
||||
const workId = req.body.id; // Assuming the work ID is passed as a parameter
|
||||
const workData = req.body; // Updated work data
|
||||
console.log(workId + " & " + JSON.stringify(workData));
|
||||
const result = await Work.update(workId, workData); // Use an appropriate function to update the work
|
||||
if (result) {
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "工作修改成功",
|
||||
data: result
|
||||
});
|
||||
} else {
|
||||
res.json({
|
||||
code: 404,
|
||||
message: "工作不存在",
|
||||
data: null
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "工作修改失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 删除工作
|
||||
deleteWork: async function(req, res, next) {
|
||||
try {
|
||||
const workId = req.body.id; // Assuming the work ID is passed as a parameter
|
||||
const result = await Work.delete(workId); // Use an appropriate function to delete the work
|
||||
if (result) {
|
||||
res.json({
|
||||
code: 200,
|
||||
message: "工作删除成功",
|
||||
data: result
|
||||
});
|
||||
} else {
|
||||
res.json({
|
||||
code: 404,
|
||||
message: "工作不存在",
|
||||
data: null
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: 0,
|
||||
message: "工作删除失败",
|
||||
data: e
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
module.exports = workController;
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
const knex = require('../model/kenx');
|
||||
const jwt = require('jsonwebtoken');
|
||||
class Base{
|
||||
constructor(props){
|
||||
this.table = props;
|
||||
}
|
||||
|
||||
// 查找
|
||||
all (){
|
||||
return knex(this.table).select();
|
||||
}
|
||||
|
||||
// 新增
|
||||
insert (params){
|
||||
return knex(this.table).insert(params);
|
||||
}
|
||||
|
||||
// 更改
|
||||
update (id, params){
|
||||
return knex(this.table).where('id', '=', id).update(params);
|
||||
}
|
||||
|
||||
// 删除
|
||||
delete (id){
|
||||
return knex(this.table).where('id', '=', id).del();
|
||||
}
|
||||
getById(field,id){
|
||||
console.log(field+id);
|
||||
return knex(this.table).select('*').where(field,'=',id);
|
||||
}
|
||||
generateAuthToken(){
|
||||
// 这里你可以使用jsonwebtoken或其他合适的库来生成令牌
|
||||
const token = jwt.sign({ /* 在令牌中包含的用户信息 */ }, 'ruanggong ', {
|
||||
expiresIn: '1h' // 令牌的过期时间
|
||||
});
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
module.exports = Base;
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
// 引用配置文件
|
||||
const configs = require('../config');
|
||||
// 把配置文件中的信息,设置在初始化配置中
|
||||
module.exports = require('knex')({
|
||||
client: 'mysql',
|
||||
connection: {
|
||||
host: configs.mysql.host,
|
||||
port: configs.mysql.port,
|
||||
user: configs.mysql.user,
|
||||
password: configs.mysql.password,
|
||||
database: configs.mysql.database
|
||||
},
|
||||
// 打印错误
|
||||
log: {
|
||||
error (message) {
|
||||
console.log('[knex error]', message)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
const Base = require('./base');
|
||||
|
||||
class Team extends Base {
|
||||
// 定义参数默认值为 team 表
|
||||
constructor(props = 'teams'){
|
||||
super(props);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new Team();
|
||||
@ -0,0 +1,12 @@
|
||||
const Base = require('./base');
|
||||
|
||||
class User extends Base {
|
||||
// 定义参数默认值为 user 表
|
||||
constructor(props = 'users'){
|
||||
super(props);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
module.exports = new User();
|
||||
@ -0,0 +1,10 @@
|
||||
const Base = require('./base');
|
||||
|
||||
class Work extends Base {
|
||||
// 定义参数默认值为 team 表
|
||||
constructor(props = 'works'){
|
||||
super(props);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new Work();
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "workserver",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "node ./bin/www",
|
||||
"dev": "nodemon ./bin/www"
|
||||
},
|
||||
"dependencies": {
|
||||
"cookie-parser": "~1.4.4",
|
||||
"debug": "~2.6.9",
|
||||
"express": "~4.16.1",
|
||||
"http-errors": "~1.6.3",
|
||||
"jade": "~1.11.0",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"knex": "^3.0.1",
|
||||
"morgan": "~1.9.1",
|
||||
"mysql": "^2.18.1",
|
||||
"winston": "^3.11.0"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #00B7FF;
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
const userController = require('../controllers/user');
|
||||
const teamController = require('../controllers/team');
|
||||
const workController = require('../controllers/work');
|
||||
// 获取用户信息
|
||||
router.get('/get_user', userController.showUser);
|
||||
|
||||
router.post('/add_user', userController.addUser);
|
||||
|
||||
router.post('/update_user', userController.updateUser);
|
||||
|
||||
router.post('/delete_user', userController.deleteUser);
|
||||
//团队
|
||||
router.get('/get_team', teamController.showTeam);
|
||||
|
||||
router.post('/add_team', teamController.addTeam);
|
||||
|
||||
router.post('/update_team', teamController.updateTeam);
|
||||
|
||||
router.post('/delete_team', teamController.deleteTeam);
|
||||
//工作
|
||||
|
||||
router.get('/get_work', workController.showWork);
|
||||
|
||||
router.post('/add_work', workController.addWork);
|
||||
|
||||
router.post('/update_work', workController.updateWork);
|
||||
|
||||
router.post('/delete_work', workController.deleteWork);
|
||||
// 注册用户
|
||||
router.post('/register', userController.register);
|
||||
|
||||
// 用户登录
|
||||
router.post('/login', userController.login);
|
||||
|
||||
|
||||
module.exports = router;
|
||||
@ -0,0 +1,9 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
/* GET users listing. */
|
||||
router.get('/', function(req, res, next) {
|
||||
res.send('respond with a resource');
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
@ -0,0 +1,6 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
h1= message
|
||||
h2= error.status
|
||||
pre #{error.stack}
|
||||
@ -0,0 +1,5 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
h1= title
|
||||
p Welcome to #{title}
|
||||
@ -0,0 +1,7 @@
|
||||
doctype html
|
||||
html
|
||||
head
|
||||
title= title
|
||||
link(rel='stylesheet', href='/stylesheets/style.css')
|
||||
body
|
||||
block content
|
||||
Loading…
Reference in new issue