更新服务

This commit is contained in:
aixianling
2022-04-01 16:05:56 +08:00
parent 94ce411071
commit 948cc94338
19 changed files with 137 additions and 76 deletions

View File

@@ -0,0 +1,27 @@
const dbUtils = require("../../utils/dbUitls");
const {v4: uuid} = require('uuid');
module.exports = {
action: "/node/autodeploy/addOrUpdate",
method: "post",
execute: (request, response) => {
let form = request.body, sql
if (form.id) {//编辑
let arr = Object.keys(form).filter(e => form[e]).map(e => `${e}='${form[e]}'`)
sql = `update node_autodeploy set ${arr.join(",")} where id='${form.id}'`
} else {//新增
let cols = [], arr = []
Object.keys(form).map(e => {
if (form[e]) {
cols.push(e)
arr.push(`'${form[e]}'`)
}
})
sql = `insert into node_autodeploy (id,${cols.join(",")}) values('${uuid()}',${arr.join(",")})`
}
dbUtils.query(sql).then(() => {
response.send({code: 0})
}).catch(err => {
response.send({code: 1, err: err.sqlMessage})
})
}
}

View File

@@ -0,0 +1,21 @@
const dbUtils = require("../../utils/dbUitls");
const fse = require("fs-extra");
module.exports = {
action: "/node/autodeploy/confirmZip",
method: "post",
execute: (request, response) => {
let id = request.query?.id, sql = `select * from node_autodeploy where id='${id}'`
dbUtils.query(sql).then(res => {
let info = res?.[0]
if (info?.id) {
fse.pathExists(`zips/${info.id}/dist`, (err, exists) => {
console.log(`zips/${info.id}/dist=========>${exists}`)
response.send({code: 0, data: exists})
})
} else response.send({code: 1, err: "无法找到git信息"})
}).catch(err => {
console.log(err)
response.send({code: 1, err: err.sqlMessage})
})
}
}

View File

@@ -0,0 +1,14 @@
const dbUtils = require("../../utils/dbUitls");
module.exports = {
action: "/node/autodeploy/delete",
method: "post",
execute: (request, response) => {
let {query: {ids}} = request
ids = ids?.split(",")?.map(e => `'${e}'`)?.toString()
dbUtils.query(`delete from node_autodeploy where id in (${ids})`).then(() => {
response.send({code: 0})
}).catch(err => {
response.send({code: 1, err: err.sqlMessage})
})
}
}

View File

@@ -0,0 +1,40 @@
const dbUtils = require("../../utils/dbUitls");
const archiver = require("archiver")
const fse = require("fs-extra");
const fs = require("fs");
module.exports = {
action: "/node/autodeploy/download",
method: "post",
execute: (request, response) => {
let id = request.query?.id, sql = `select * from node_autodeploy where id='${id}'`
dbUtils.query(sql).then(res => {
let info = res?.[0]
if (info?.id) {
let path = `zips/${info.id}/dist`, zipPath = `./zips/${info.id}.zip`
fse.removeSync(zipPath)
fse.pathExists(path, (err, exists) => {
console.log(`${path}=========>${exists}`)
if (exists) {
let output = fs.createWriteStream(zipPath),
arc = archiver('zip')
arc.on('error', err => {
response.send({code: 1, err})
})
arc.on('progress', (e) => {
console.log('%s压缩进度...%s/%s', info.id, e.entries.processed, e.entries.total)
})
arc.pipe(output)
arc.directory(path, false)
arc.finalize().then(() => {
console.log('压缩完成!')
response.download(zipPath, `${info.id}.zip`)
})
} else response.send({code: 1, err: "没有打包文件!"})
})
} else response.send({code: 1, err: "无法找到git信息"})
}).catch(err => {
console.log(err)
response.send({code: 1, err: err.sqlMessage})
})
}
}

View File

@@ -0,0 +1,25 @@
const db = require("../../utils/dbUitls");
const zip = require("../../tools/zipProject")
module.exports = {
action: "/node/autodeploy/getZip",
method: "post",
execute: (request, response) => {
let id = request.query?.id, sql = `select * from node_autodeploy where id='${id}'`
db.query(sql).then(res => {
let info = res?.[0]
if (info?.id) {
setTimeout(() => {
response.send({code: 0})
}, 2000)
zip(info).then(() => {
db.query(`update node_autodeploy set download='${new Date()}' where id='${info.id}'`)
}).catch(err => {
console.log(err)
})
} else response.send({code: 1, err: "无法找到git信息"})
}).catch(err => {
console.log(err)
response.send({code: 1, err: err.sqlMessage})
})
}
}

View File

@@ -0,0 +1,28 @@
const dbUtils = require("../../utils/dbUitls");
module.exports = {
action: "/node/autodeploy/list",
method: "post",
execute: (request, response) => {
let total = 0, records = [], {size, current, name} = request.query
Promise.all([
dbUtils.query(`select 1 from node_autodeploy`).then(res => {
return total = res.length
}),
new Promise(resolve => {
let sql = `select * from node_autodeploy where name like '%${name}%' limit ${(current-1)*size},${size}`
dbUtils.query(sql).then(res => {
records = res
resolve()
}).catch(err => {
response.send({code: 1, err: err.sqlMessage})
})
})
]).then(() => {
response.send({
code: 0,
data: {records, total}
})
})
}
}

View File

@@ -0,0 +1,29 @@
const dbUtils = require("../../utils/dbUitls");
const zip = require("../../tools/zipProject");
const db = require("../../utils/dbUitls");
const exec = require("../../tools/exec")
module.exports = {
action: "/node/autodeploy/updateSystem",
method: "post",
execute: (request, response) => {
let id = request.query?.id, sql = `select * from node_autodeploy where id='${id}'`
dbUtils.query(sql).then(res => {
let info = res?.[0]
if (info?.id) {
setTimeout(() => {
response.send({code: 0})
}, 2000)
zip(info).then(() => {
db.query(`update node_autodeploy set download='${new Date()}' where id='${info.id}'`)
exec(`cp -r zips/${info.id}/dist ${info.target}`).then(() => {
console.log("部署完毕!")
})
})
} else response.send({code: 1, err: "无法找到git信息"})
}).catch(err => {
console.log(err)
response.send({code: 1, err: err.sqlMessage})
})
}
}

16
src/rest/index.js Normal file
View File

@@ -0,0 +1,16 @@
const {findFile} = require("../utils/fsUtils");
module.exports = {
init: ins => {
return findFile('./src/rest', file => {
if (!/index\.js/.test(file)) {
let rest = require(file.replace(/src[\\\/]rest/, '.'))
console.log(`初始化接口:${rest.action}`)
if (rest.method == "post") {
ins.post(rest.action, (req, res) => rest.execute(req, res))
}
}
}).then(() => {
console.log("接口初始化完毕")
})
}
}

View File

@@ -0,0 +1,13 @@
const dbUtils = require("../../utils/dbUitls");
module.exports = {
action: "/sys/user",
method: "post",
execute: (request, response) => {
dbUtils.query(`select * from sys_user`).then(res => {
response.send({
code: 0,
data: res
})
})
}
}