167 lines
4.4 KiB
JavaScript
167 lines
4.4 KiB
JavaScript
import cuid from "cuid";
|
|
// import getDb, {
|
|
// getResourceDb
|
|
// } from "../dbServer.mjs";
|
|
import {getDb,getResourceDb} from "funjia-server/lib/funjia-server.mjs";
|
|
import _ from "lodash";
|
|
import multer from '@koa/multer';
|
|
|
|
//配置
|
|
var storage = multer.diskStorage({
|
|
//文件保存路径
|
|
destination: function (req, file, cb) {
|
|
cb(null, 'static') //注意路径必须存最后面在不用加斜杠
|
|
},
|
|
//修改文件名称
|
|
filename: function (req, file, cb) {
|
|
var fileFormat = (file.originalname).split(".");
|
|
const filename = cuid() + "." + fileFormat[fileFormat.length - 1];
|
|
req.filename = filename;
|
|
cb(null, filename);
|
|
}
|
|
})
|
|
|
|
//加载配置
|
|
var upload = multer({
|
|
storage: storage
|
|
})
|
|
|
|
// const upload = multer({ dest: 'static/' })
|
|
|
|
const getUpload = (router) => {
|
|
router.post('/api/leaseRecords/list', async (ctx) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const db = await getDb();
|
|
const body = ctx.request.body;
|
|
const data = db.data.leaseRecords.filter((item) => {
|
|
let isMatch = true;
|
|
for (let field in body) {
|
|
if (["page", "pageSize"].includes(field)) {
|
|
continue;
|
|
}
|
|
|
|
if (typeof (item[field]) == "string") {
|
|
isMatch = item[field].indexOf(body[field]) > -1;
|
|
} else if (typeof (item[field]) == "number") {
|
|
isMatch = item[field] == body[field];
|
|
}
|
|
if (!isMatch)
|
|
break;
|
|
}
|
|
return isMatch;
|
|
});
|
|
|
|
const {
|
|
page,
|
|
pageSize
|
|
} = body;
|
|
let batchData = data;
|
|
if (page && pageSize) {
|
|
batchData = data.slice((page - 1) * pageSize, page * pageSize);
|
|
}
|
|
|
|
ctx.body = {
|
|
code: 0,
|
|
data: batchData.sort((a, b) => {
|
|
return a.sort - b.sort;
|
|
}) || [],
|
|
total: data.length
|
|
};
|
|
});
|
|
|
|
router.get('/api/img', async (ctx) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const db = await getDb();
|
|
const data = db.data.leaseRecords;
|
|
const query = ctx.request.query;
|
|
console.log("参数:", query, ctx.request.body, ctx.query);
|
|
let detail = {};
|
|
if (query.id && data) {
|
|
detail = data.find((item) => {
|
|
return item.id == query.id;
|
|
});
|
|
}
|
|
|
|
ctx.body = {
|
|
code: 0,
|
|
data: detail || {}
|
|
};
|
|
});
|
|
|
|
/**
|
|
* 添加图片记录
|
|
* @param {*} path
|
|
*/
|
|
const addImg = async (filename, path) => {
|
|
const data = {};
|
|
try {
|
|
const db = await getResourceDb();
|
|
|
|
// You can also use this syntax if you prefer
|
|
if (!db.data.img)
|
|
db.data.img = [];
|
|
|
|
const {
|
|
img
|
|
} = db.data;
|
|
|
|
data.id = cuid();
|
|
data.filename = filename;
|
|
data.path = path;
|
|
data.createTime = new Date();
|
|
img.push(data)
|
|
// Write db.data content to db.json
|
|
await db.write()
|
|
} catch (error) {
|
|
console.log(error);
|
|
return null;
|
|
}
|
|
return data.id;
|
|
|
|
}
|
|
|
|
// 添加单个文件上传的路由
|
|
router.post(
|
|
'/api/upload/img',
|
|
upload.single('file'),
|
|
async (ctx) => {
|
|
const {
|
|
filename,
|
|
path
|
|
} = ctx.file;
|
|
const res = await addImg(filename, path);
|
|
|
|
ctx.body = {
|
|
code: res ? 0 : 1,
|
|
data: {
|
|
id: res,
|
|
url: path
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
// 添加单个文件上传的路由
|
|
router.post(
|
|
'/api/upload/file',
|
|
upload.single('file'),
|
|
async (ctx) => {
|
|
const {
|
|
filename,
|
|
path
|
|
} = ctx.file;
|
|
// const res = await addImg(filename, path);
|
|
|
|
ctx.body = {
|
|
code: 0,
|
|
data: {
|
|
url: "/resource/static/"+filename
|
|
}
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
export default getUpload; |