diff --git a/src/workserver/controllers/team.js b/src/workserver/controllers/team.js new file mode 100644 index 0000000..b2d0637 --- /dev/null +++ b/src/workserver/controllers/team.js @@ -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; + diff --git a/src/workserver/controllers/user.js b/src/workserver/controllers/user.js index 63a8114..ce67a7c 100644 --- a/src/workserver/controllers/user.js +++ b/src/workserver/controllers/user.js @@ -5,8 +5,13 @@ const userController = { // showUser 获取用户数据并返回到页面 showUser: async function(req,res,next){ try{ - let userData = await User.all() - console.log(userData); + 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: "操作成功", @@ -20,7 +25,7 @@ const userController = { addUser: async function(req, res, next) { try { const userData = req.body; // 从请求中获取用户数据 - console.log("ddddd"); + const result = await User.insert(userData); res.json({ code: 200, @@ -35,6 +40,108 @@ const userController = { }); } }, + // 修改用户 + 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 { + 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 + }); + } +} + + } diff --git a/src/workserver/controllers/work.js b/src/workserver/controllers/work.js new file mode 100644 index 0000000..8c54453 --- /dev/null +++ b/src/workserver/controllers/work.js @@ -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; + diff --git a/src/workserver/model/base.js b/src/workserver/model/base.js index 45f25c7..9514d2a 100644 --- a/src/workserver/model/base.js +++ b/src/workserver/model/base.js @@ -1,5 +1,5 @@ const knex = require('../model/kenx'); - +const jwt = require('jsonwebtoken'); class Base{ constructor(props){ this.table = props; @@ -24,6 +24,19 @@ class Base{ 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; + } + + selectOne(id){ return knex(this.table).where('id','=',id).select(); diff --git a/src/workserver/model/team.js b/src/workserver/model/team.js new file mode 100644 index 0000000..c4edb7f --- /dev/null +++ b/src/workserver/model/team.js @@ -0,0 +1,10 @@ +const Base = require('./base'); + +class Team extends Base { + // 定义参数默认值为 team 表 + constructor(props = 'teams'){ + super(props); + } +} + +module.exports = new Team(); diff --git a/src/workserver/model/user.js b/src/workserver/model/user.js index bf985df..2c69e3b 100644 --- a/src/workserver/model/user.js +++ b/src/workserver/model/user.js @@ -5,6 +5,8 @@ class User extends Base { constructor(props = 'users'){ super(props); } + + } module.exports = new User(); diff --git a/src/workserver/model/work.js b/src/workserver/model/work.js new file mode 100644 index 0000000..5cac0e8 --- /dev/null +++ b/src/workserver/model/work.js @@ -0,0 +1,10 @@ +const Base = require('./base'); + +class Work extends Base { + // 定义参数默认值为 team 表 + constructor(props = 'works'){ + super(props); + } +} + +module.exports = new Work(); diff --git a/src/workserver/node_modules/.package-lock.json b/src/workserver/node_modules/.package-lock.json index 455555e..3e9cd7c 100644 --- a/src/workserver/node_modules/.package-lock.json +++ b/src/workserver/node_modules/.package-lock.json @@ -133,6 +133,11 @@ "node": ">= 0.8" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -358,6 +363,14 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -625,6 +638,32 @@ "jade": "bin/jade.js" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/jstransformer": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz", @@ -634,6 +673,25 @@ "promise": "^6.0.1" } }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -742,6 +800,41 @@ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/logform": { "version": "2.5.1", "resolved": "https://registry.npmmirror.com/logform/-/logform-2.5.1.tgz", @@ -776,6 +869,17 @@ "node": ">=0.10.0" } }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1102,6 +1206,20 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -1438,6 +1556,11 @@ "node": ">=0.4.0" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", diff --git a/src/workserver/package-lock.json b/src/workserver/package-lock.json index 400f9b5..0154953 100644 --- a/src/workserver/package-lock.json +++ b/src/workserver/package-lock.json @@ -13,6 +13,7 @@ "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", @@ -148,6 +149,11 @@ "node": ">= 0.8" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -373,6 +379,14 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -640,6 +654,32 @@ "jade": "bin/jade.js" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/jstransformer": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz", @@ -649,6 +689,25 @@ "promise": "^6.0.1" } }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -757,6 +816,41 @@ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/logform": { "version": "2.5.1", "resolved": "https://registry.npmmirror.com/logform/-/logform-2.5.1.tgz", @@ -791,6 +885,17 @@ "node": ">=0.10.0" } }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1117,6 +1222,20 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -1453,6 +1572,11 @@ "node": ">=0.4.0" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", diff --git a/src/workserver/package.json b/src/workserver/package.json index 5d2bb95..0083ac2 100644 --- a/src/workserver/package.json +++ b/src/workserver/package.json @@ -12,6 +12,7 @@ "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", diff --git a/src/workserver/routes/index.js b/src/workserver/routes/index.js index a93a3db..529c36d 100644 --- a/src/workserver/routes/index.js +++ b/src/workserver/routes/index.js @@ -1,13 +1,40 @@ 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); + + //引入和clocks相关的接口 require('./xah/course')(router);