Commit bd9bc9c1 by lixinming

init

parent 086c352e
......@@ -170,11 +170,6 @@
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
},
"async": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
},
"async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
......@@ -212,11 +207,6 @@
"regenerator-runtime": "^0.11.0"
}
},
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
......@@ -277,15 +267,6 @@
}
}
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
......@@ -381,11 +362,6 @@
}
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
......@@ -685,11 +661,6 @@
"universalify": "^0.1.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
......@@ -719,19 +690,6 @@
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
......@@ -852,15 +810,6 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
......@@ -938,30 +887,16 @@
"verror": "1.10.0"
}
},
"jszip": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-2.0.0.tgz",
"integrity": "sha512-Ku+7w4XCbUeh+kZphC3aNnOhwx+bie+EmtWeN5Qk7wLiMtay1OvcKwHncP6LQaxBb3yvcRXvWuZZdHGvYjioRA=="
},
"kitx": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/kitx/-/kitx-1.3.0.tgz",
"integrity": "sha512-fhBqFlXd0GkKTB+8ayLfpzPUw+LHxZlPAukPNBD1Om7JMeInT+/PxCAf1yLagvD+VKoyWhXtJR68xQkX/a0wOQ=="
},
"libreoffice-convert": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/libreoffice-convert/-/libreoffice-convert-1.4.1.tgz",
"integrity": "sha512-ojTK0P0tSuqYhjP5f7lXpVe6FWq6HzxxWOiBC+i78vO0T+OWPO1bG3bhPI1VTyaJeSYGx9MTbJ3Dvfcx6rL2rA==",
"requires": {
"async": "^3.2.3",
"tmp": "^0.2.1"
},
"dependencies": {
"tmp": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
"requires": {
"rimraf": "^3.0.0"
}
}
}
},
"log4js": {
"version": "6.9.1",
"resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz",
......@@ -1041,14 +976,6 @@
"mime-db": "1.52.0"
}
},
"minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": {
"brace-expansion": "^1.1.7"
}
},
"moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
......@@ -1097,15 +1024,6 @@
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
},
"office-to-pdf": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/office-to-pdf/-/office-to-pdf-4.0.0.tgz",
"integrity": "sha512-uNq/vZnTsjYG3iI/Njn44sDEApkHYFkn5qnVbI72hsM++s0jpAqFASjcsUv0zTCz4AmpaYDFjjx8z0wL+DIYsA==",
"requires": {
"temporary": "^0.0.8",
"tmp": "^0.0.31"
}
},
"on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
......@@ -1119,14 +1037,6 @@
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"requires": {
"wrappy": "1"
}
},
"opentype.js": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-0.7.3.tgz",
......@@ -1135,26 +1045,11 @@
"tiny-inflate": "^1.0.2"
}
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="
},
"package": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/package/-/package-1.0.1.tgz",
"integrity": "sha512-g6xZR6CO7okjie83sIRJodgGvaXqymfE5GLhN8N2TmZGShmHc/V23hO/vWbdnuy3D81As3pfovw72gGi42l9qA=="
},
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
......@@ -1269,14 +1164,6 @@
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
},
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"requires": {
"glob": "^7.1.3"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
......@@ -1422,14 +1309,6 @@
"resolved": "https://registry.npmjs.org/swear/-/swear-1.1.2.tgz",
"integrity": "sha512-0g96Xgk/m5zodEJdAKKS6xBINVmUxaac/PTv11E+B77V5aQyXEZu9iTxilS8u38pzdFYUx5EyGr/1h8xpomSHQ=="
},
"temporary": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/temporary/-/temporary-0.0.8.tgz",
"integrity": "sha512-NbWqVhmH2arfC/I7upx4VWYJEhp9SSpqjZwzt4LmCuT/7luiAUSt2L3/h9y/3crPnuIdMxg8GsxL9LvEHckdtw==",
"requires": {
"package": ">= 1.0.0 < 1.2.0"
}
},
"tencentcloud-sdk-nodejs": {
"version": "4.0.677",
"resolved": "https://registry.npmjs.org/tencentcloud-sdk-nodejs/-/tencentcloud-sdk-nodejs-4.0.677.tgz",
......@@ -1461,14 +1340,6 @@
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
},
"tmp": {
"version": "0.0.31",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
"integrity": "sha512-lfyEfOppKvWNeId5CArFLwgwef+iCnbEIy0JWYf1httIEXnx4ndL4Dr1adw7hPgeQfSlTbc/gqn6iaKcROpw5Q==",
"requires": {
"os-tmpdir": "~1.0.1"
}
},
"toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
......@@ -1589,11 +1460,6 @@
"resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"ws": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz",
......
......@@ -12,14 +12,13 @@
"express-history-api-fallback": "^2.2.1",
"files": "^2.2.2",
"formidable": "^1.2.1",
"libreoffice-convert": "^1.4.1",
"jszip": "^2.0.0",
"log4js": "^6.6.1",
"lru-cache": "^4.1.5",
"md5": "^2.2.1",
"moment": "^2.24.0",
"node-xlsx": "^0.16.1",
"nodemailer": "^6.1.1",
"office-to-pdf": "^4.0.0",
"qs": "^6.11.0",
"request": "^2.88.0",
"svg-captcha": "^1.3.12",
......
export enum DIRNAMEENUM {
支部制度 =1 ,
支部制度 =1,
组织生活,
专题活动,
党建动态,
......
......@@ -6,7 +6,8 @@ export enum ERRORENUM {
参数错误,
文件上传失败,
只能上传docdocxpngjpg图片,
上传时缺失关键参数
上传时缺失关键参数,
预检请求
}
export enum ERRORCODEENUM {
......
import { DIRNAMEENUM } from "../config/enums/enum";
import { ERRORENUM } from "../config/enums/errorEnum";
import { getFilesId } from "../tools/systemTools";
import { BizError } from "../util/bizError";
import { eccEnumValue } from "../util/verificationEnum";
var formidable = require("formidable");
const path = require('path');
export async function parseFormParam(req, res, next) {
var form = new formidable.IncomingForm();
// let query = req.query || {};
// let upType = query.type;
// if (!upType) return next(new BizError(ERRORENUM.上传时缺失关键参数 ));
form.uploadDir = path.join(__dirname.substring(0,__dirname.indexOf("out")),'files');
if (!req.headers) req.headers = {};
let upType = req.headers.uptype;
if (isNaN(upType)) return next(new BizError(ERRORENUM.上传时缺失关键参数, `传入参数类型不符合规则${upType}` ));
let eccSuccess = eccEnumValue( DIRNAMEENUM, parseInt(upType));
if (!eccSuccess) return next(new BizError(ERRORENUM.上传时缺失关键参数, `传入参数不符合规则${upType}` ));
var form = new formidable.IncomingForm({
uploadDir:path.join(__dirname.substring(0,__dirname.indexOf("out")),'files', 'yfs','files', `${upType}`),
maxFildsSize:10*1024*1024,
keepExtensions:true
});
form.parse(req, (err, fields, files)=>{
if (err) {
next(err);
return next(err);
}
else {
req.fields = fields;
req.files = files;
// files.file.upType = upType;
if (!files.file) {
req.files.formData.upType = upType;
if (!files.formData) {
return next(new BizError(ERRORENUM.文件上传失败) );
}
if ( files.file.type == 'image/png') {
if ( files.formData.type == 'image/png') {
req.fileType = '.png';
return next();
} else if (files.file.type == 'image/jpg' || files.file.type == 'image/jpeg') {
} else if (files.formData.type == 'image/jpg' || files.formData.type == 'image/jpeg') {
req.fileType = '.jpg';
return next();
} else if (files.file.type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {
} else if (files.formData.type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {
req.fileType = '.docx';
return next();
} else if (files.file.type == "application/msword") {
} else if (files.formData.type == "application/msword") {
req.fileType = '.doc';
return next();
} else if (files.formData.type == "application/pdf") {
req.fileType = '.pdf';
return next();
}else {
return next(new BizError(ERRORENUM.只能上传docdocxpngjpg图片) )
}
......
import { bizlive } from "tencentcloud-sdk-nodejs";
import { ERRORCODEENUM } from "../config/enums/errorEnum";
import { ERRORCODEENUM, ERRORENUM } from "../config/enums/errorEnum";
/**
* 中间件 错误返回
......@@ -10,13 +10,13 @@ import { ERRORCODEENUM } from "../config/enums/errorEnum";
*/
export function httpErrorHandler(err, req, res, next) {
console.log("in httpErrorHandler");
console.log(err);
if (err.message != "预检请求") console.log(err);
//todo 自定义错误编码
if (err) {
if ( ERRORCODEENUM[err.message] ) {
res.success({success:false, msg:err.message, code:ERRORCODEENUM[err.message]});
next();
}
}
else {
res.success({success:false, msg:err.message, code:500});
next();
......
......@@ -5,28 +5,53 @@ import { BizError } from "../util/bizError";
export async function authentication(req, res, next) {
if (req.originalUrl == "/yfs/fileserver/up") return next();
let query = req.query || {};
let token = query.token;
let userId = query.userid;
if (!userId || !token) return next(new BizError(ERRORENUM.非法登录));
if (userId == "admin") {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.后台用户表, {uId:userId}, null);
if (!userInfo || !userInfo.uId) return next(new BizError(ERRORENUM.身份验证失败));
if (!userInfo.token || userInfo.token != token) return next(new BizError(ERRORENUM.身份验证过期));
if (req.originalUrl == "/yfs/fileserver/up") {
if (!req.headers) req.headers = {};
let userId = req.headers.userid;
let token = req.headers.token;
if (!req.headers["content-type"]) {
return next(new BizError(ERRORENUM.预检请求, `上传时候${userId} ${token}`));
}
if (!userId || !token) {
return next(new BizError(ERRORENUM.非法登录, `上传时候${userId} ${token}`));
}
if (userId == "admin" || userId == "admin2") {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.后台用户表, {uId:userId}, null);
if (!userInfo || !userInfo.uId) return next(new BizError(ERRORENUM.身份验证失败));
if (!userInfo.token || userInfo.token != token) return next(new BizError(ERRORENUM.身份验证过期));
}
else {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {pmId:userId}, null);
if (!userInfo || !userInfo.pmId) return next(new BizError(ERRORENUM.身份验证失败));
if (!userInfo.adminToken || userInfo.adminToken != token) return next(new BizError(ERRORENUM.身份验证过期));
}
return next();
}
else {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {pmId:userId}, null);
if (!userInfo || !userInfo.pmId) return next(new BizError(ERRORENUM.身份验证失败));
if (!userInfo.adminToken || userInfo.adminToken != token) return next(new BizError(ERRORENUM.身份验证过期));
let query = req.query || {};
let token = query.token;
let userId = query.userid;
if (!userId || !token) return next(new BizError(ERRORENUM.非法登录));
if (userId == "admin") {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.后台用户表, {uId:userId}, null);
if (!userInfo || !userInfo.uId) return next(new BizError(ERRORENUM.身份验证失败));
if (!userInfo.token || userInfo.token != token) return next(new BizError(ERRORENUM.身份验证过期));
}
else {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {pmId:userId}, null);
if (!userInfo || !userInfo.pmId) return next(new BizError(ERRORENUM.身份验证失败));
if (!userInfo.adminToken || userInfo.adminToken != token) return next(new BizError(ERRORENUM.身份验证过期));
}
return next();
}
return next();
}
export async function fileUpAuthentication(req, res, next) {
console.log("进入中间件");
return next()
}
\ No newline at end of file
......@@ -14,7 +14,7 @@ export class httpServer {
httpServer.all('*', (req, res, next) => {
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header('Access-Control-Allow-Headers', 'Content-Type,request-origin,userid,token');
res.header('Access-Control-Allow-Headers', 'Content-Type,request-origin,userid,token,uptype');
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header('Access-Control-Allow-Credentials', true);
res.header("X-Powered-By", ' 3.2.1');
......
......@@ -4,34 +4,27 @@
import * as asyncHandler from 'express-async-handler'
import { fileUpAuthentication } from '../middleware/user';
import { parseFormParam } from '../middleware/fromParam';
import { eccEnumValue } from '../util/verificationEnum';
import { DIRNAMEENUM } from '../config/enums/enum';
import { getFilesId } from '../tools/systemTools';
const libre = require('libreoffice-convert');
var fs = require('fs');
const fs = require('fs');
const path = require('path');
export function setRouter(httpServer){
httpServer.post('/yfs/fileserver/up', fileUpAuthentication, parseFormParam, asyncHandler(upFiles));
httpServer.post('/yfs/fileserver/up', parseFormParam, asyncHandler(upFiles));
}
async function upFiles(req, res) {
let fileType = req.fileType;
let { name, upType } = req.files.file;
let docPath = req.files.file.path;
let { name, upType } = req.files.formData;
let docPath = req.files.formData.path;
/**生成id */
let id = getFilesId(name);
const outputFilePath = path.join(__dirname.substring(0,__dirname.indexOf("out")), 'files', 'yfs', 'files', 'test.pdf');
let fileDir = path.resolve(docPath, '..');
let fileName = `${getFilesId(upType, fileType.replace(".",""), name)}${fileType}`;
let newPath = path.join(fileDir, fileName);
// const inputStream = fs.createReadStream(docPath);
// const outputStream = fs.createWriteStream(outputFilePath);
fs.renameSync(docPath, newPath );
console.log("上传文件",fileName,"成功");
// inputStream.pipe().pipe(outputStream);
libre.convert(docPath, outputFilePath, function(err, res) {
console.log();
})
console.log();
res.success({fileName});
}
function wordToPdf(file){
}
\ No newline at end of file
const md5 = require("md5");
export async function getFilesId(fileName:string) {
return md5(`${fileName}${new Date().valueOf()}${Math.ceil(Math.random() * 100)}`);
export function getFilesId(upType, type:string, fileName:string) {
return `${upType}_${type}_${md5(`${fileName}${new Date().valueOf()}${Math.ceil(Math.random() * 100)}`)}`;
}
\ No newline at end of file
......@@ -3,7 +3,7 @@
* 需要和log4js共同使用
*/
import { getBizMsg } from "../config/enums/errorEnum";
import { ERRORENUM, getBizMsg } from "../config/enums/errorEnum";
import { logError } from "./log";
export class BizError extends Error {
......
/**
* 校验枚举工具
*
*/
import { ERRORENUM } from "../config/enums/errorEnum";
import { BizError } from "./bizError";
/**
* 校验value是否符合传入的枚举
* @param name 被掉用名称 用于输出异常日志
* @param key 目标字段 用于输出异常日志
* @param enumConf 目标枚举
* @param value 目标值
* 无返回 有异常直接报错
*/
export function eccEnumValue(enumConf, value:any) {
if (!value) return false;
let eccSuccess = true;
if ( typeof value == 'number' ) {
if (!enumConf[value] ) eccSuccess = false;
} else eccSuccess = false;
return eccSuccess;
}
/**
* 将枚举值转换成对应的枚举名(key)
* @param enumConf 目标枚举
* @param value 目标值
* @returns string 返回字符串 如果传入多个枚举值,就拼接字符串
*/
export function changeEnumValue(enumConf, value:any) {
if (!value) return '';
if ( typeof value == 'number' ) {
let str = enumConf[value];
/** 特化处理 中文引号在枚举中不适用*/
if (str == "_投资__孵化_类型") {
str = str.replace("__","+");
str = str.replace("_","“");
str = str.replace("_","”");
}
if (str == "经营成本过高_场地成本或人员成本_" || str == "办公空间拓展_无合适办公空间_") {
str = str.replace("_","(");
str = str.replace("_",")");
}
if (str == "迁出孵化器_仍在张江" || str == "迁出张江_仍在浦东" || str == "迁出浦东_仍在上海") {
str = str.replace("_",",");
}
if (str == "科技金融_风险投资_" || str == "科技金融_其他_" || str == "技术专家_法律专家_") {
str = str.replace("_","(");
str = str.replace("_",")");
}
return str
}
let str = "";
value.forEach((item, index) => {
let subStr = enumConf[item];
/** 特化处理 中文引号在枚举中不适用*/
if (subStr == "_投资__孵化_类型") {
subStr = subStr.replace("__","+");
subStr = subStr.replace("_","“");
subStr = subStr.replace("_","”");
}
if (subStr == "经营成本过高_场地成本或人员成本_" || subStr == "办公空间拓展_无合适办公空间_") {
subStr = subStr.replace("_","(");
subStr = subStr.replace("_",")");
}
if (subStr == "迁出孵化器_仍在张江" || subStr == "迁出张江_仍在浦东" || subStr == "迁出浦东_仍在上海") {
subStr = subStr.replace("_",",");
}
if (subStr == "科技金融_风险投资_" || subStr == "科技金融_其他_" || subStr == "技术专家_法律专家_") {
subStr = subStr.replace("_","(");
subStr = subStr.replace("_",")");
}
str += subStr;
if (index == value.length-1) str+="";
else str += ","
});
return str;
}
\ No newline at end of file
"<h1>服务保障承诺书</h1><p>北京火山引擎科技有限公司:</p><p>根据双方签署的<a id=\"_Hlk517184747\"></a>《服务采购主协议》(合同编号为:【CT20221025005515】),对该项目做出如下售后服务承诺:</p><ol><li>项目名称:【基于“随手拍”的一网共治能力平台项目】</li><li>项目时间:2022年12月26日至2023年6月8日</li><li>服务承诺:目前我司已配合项目组,进行3840*1080分辨率大屏、1920*1080分辨率中屏两块屏设计开发,在后续项目期交付期间,如客户针对以上交付内容有调整需求,我司将义务配合客户侧进行调整,直至项目完成验收。</li></ol><p>上海熠源数据科技有限公司</p><p>(签章)</p><p>2023年6月8日</p>""<h1>服务保障承诺书</h1><p>北京火山引擎科技有限公司:</p><p>根据双方签署的<a id=\"_Hlk517184747\"></a>《服务采购主协议》(合同编号为:【CT20221025005515】),对该项目做出如下售后服务承诺:</p><ol><li>项目名称:【基于“随手拍”的一网共治能力平台项目】</li><li>项目时间:2022年12月26日至2023年6月8日</li><li>服务承诺:目前我司已配合项目组,进行3840*1080分辨率大屏、1920*1080分辨率中屏两块屏设计开发,在后续项目期交付期间,如客户针对以上交付内容有调整需求,我司将义务配合客户侧进行调整,直至项目完成验收。</li></ol><p>上海熠源数据科技有限公司</p><p>(签章)</p><p>2023年6月8日</p>"
"<h1>服务保障承诺书</h1><p>北京火山引擎科技有限公司:</p><p>根据双方签署的<a id=\"_Hlk517184747\"></a>《服务采购主协议》(合同编号为:【CT20221025005515】),对该项目做出如下售后服务承诺:</p><ol><li>项目名称:【基于“随手拍”的一网共治能力平台项目】</li><li>项目时间:2022年12月26日至2023年6月8日</li><li>服务承诺:目前我司已配合项目组,进行3840*1080分辨率大屏、1920*1080分辨率中屏两块屏设计开发,在后续项目期交付期间,如客户针对以上交付内容有调整需求,我司将义务配合客户侧进行调整,直至项目完成验收。</li></ol><p>上海熠源数据科技有限公司</p><p>(签章)</p><p>2023年6月8日</p>""<h1>服务保障承诺书</h1><p>北京火山引擎科技有限公司:</p><p>根据双方签署的<a id=\"_Hlk517184747\"></a>《服务采购主协议》(合同编号为:【CT20221025005515】),对该项目做出如下售后服务承诺:</p><ol><li>项目名称:【基于“随手拍”的一网共治能力平台项目】</li><li>项目时间:2022年12月26日至2023年6月8日</li><li>服务承诺:目前我司已配合项目组,进行3840*1080分辨率大屏、1920*1080分辨率中屏两块屏设计开发,在后续项目期交付期间,如客户针对以上交付内容有调整需求,我司将义务配合客户侧进行调整,直至项目完成验收。</li></ol><p>上海熠源数据科技有限公司</p><p>(签章)</p><p>2023年6月8日</p>"
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment