Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
modulesServer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
standardized
modulesServer
Commits
92d20503
Commit
92d20503
authored
Dec 15, 2021
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
85170ee7
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
199 additions
and
71 deletions
+199
-71
package-lock.json
package-lock.json
+63
-0
package.json
package.json
+1
-0
pic.ts
src/biz/pic.ts
+52
-11
paramaterConfig.ts
src/config/paramaterConfig.ts
+0
-0
main.ts
src/main.ts
+2
-0
paramaterCheck.ts
src/middleware/paramaterCheck.ts
+24
-0
sign.ts
src/middleware/sign.ts
+15
-6
picture.ts
src/model/picture.ts
+8
-46
users.ts
src/model/users.ts
+0
-1
http_server.ts
src/net/http_server.ts
+8
-1
pic.ts
src/routers/pic.ts
+6
-2
router.ts
src/routers/router.ts
+11
-0
user.ts
src/routers/user.ts
+3
-1
psd.ts
src/util/psd.ts
+6
-3
No files found.
package-lock.json
View file @
92d20503
...
...
@@ -326,6 +326,26 @@
}
}
},
"coffee-script"
:
{
"version"
:
"1.7.1"
,
"resolved"
:
"https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz"
,
"integrity"
:
"sha1-YplqhheAx15tUGnROCJyO3NAS/w="
,
"requires"
:
{
"mkdirp"
:
"~0.3.5"
},
"dependencies"
:
{
"mkdirp"
:
{
"version"
:
"0.3.5"
,
"resolved"
:
"https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
,
"integrity"
:
"sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc="
}
}
},
"coffeescript-module"
:
{
"version"
:
"0.2.1"
,
"resolved"
:
"https://registry.npmjs.org/coffeescript-module/-/coffeescript-module-0.2.1.tgz"
,
"integrity"
:
"sha1-LGGqhpg8rNImcZ+fHdqSPLCuZ7A="
},
"combined-stream"
:
{
"version"
:
"1.0.8"
,
"resolved"
:
"https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz"
,
...
...
@@ -821,6 +841,11 @@
"graceful-fs"
:
"^4.1.6"
}
},
"jspack"
:
{
"version"
:
"0.0.4"
,
"resolved"
:
"https://registry.npmjs.org/jspack/-/jspack-0.0.4.tgz"
,
"integrity"
:
"sha1-Mt01x/3LPjRWwY+7fvntC8YjgXc="
},
"jsprim"
:
{
"version"
:
"1.4.1"
,
"resolved"
:
"https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz"
,
...
...
@@ -842,6 +867,11 @@
"resolved"
:
"https://registry.npm.taobao.org/kitx/download/kitx-1.3.0.tgz"
,
"integrity"
:
"sha1-qz7nxZjSsdYp/VVWj4aMREDCAOo="
},
"lodash"
:
{
"version"
:
"2.4.2"
,
"resolved"
:
"https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"
,
"integrity"
:
"sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
},
"log4js"
:
{
"version"
:
"6.3.0"
,
"resolved"
:
"https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz"
,
...
...
@@ -1064,6 +1094,21 @@
"resolved"
:
"https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz"
,
"integrity"
:
"sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
},
"node-psd"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/node-psd/-/node-psd-1.0.1.tgz"
,
"integrity"
:
"sha1-wNh/QP3oh/YaGv8FxvdpZbJLasM="
,
"requires"
:
{
"coffee-script"
:
"~ 1.7.1"
,
"coffeescript-module"
:
"~ 0.2.1"
,
"iconv-lite"
:
"~ 0.4.4"
,
"jspack"
:
"~ 0.0.3"
,
"lodash"
:
"~ 2.4"
,
"parse-engine-data"
:
"~ 0.1"
,
"pngjs"
:
"~ 0.4.0"
,
"rsvp"
:
"~ 3.0.6"
}
},
"node-xlsx"
:
{
"version"
:
"0.16.1"
,
"resolved"
:
"https://registry.npmjs.org/node-xlsx/-/node-xlsx-0.16.1.tgz"
,
...
...
@@ -1115,6 +1160,14 @@
"resolved"
:
"https://registry.npmjs.org/oracledb/-/oracledb-5.3.0.tgz"
,
"integrity"
:
"sha512-HMJzQ6lCf287ztvvehTEmjCWA21FQ3RMvM+mgoqd4i8pkREuqFWO+y3ovsGR9moJUg4T0xjcwS8rl4mggWPxmg=="
},
"parse-engine-data"
:
{
"version"
:
"0.1.2"
,
"resolved"
:
"https://registry.npmjs.org/parse-engine-data/-/parse-engine-data-0.1.2.tgz"
,
"integrity"
:
"sha1-UWH2EzyYiPUhVezO1CcWV13+oFI="
,
"requires"
:
{
"iconv-lite"
:
"^0.4.4"
}
},
"parseurl"
:
{
"version"
:
"1.3.3"
,
"resolved"
:
"https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
,
...
...
@@ -1130,6 +1183,11 @@
"resolved"
:
"https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz"
,
"integrity"
:
"sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"pngjs"
:
{
"version"
:
"0.4.0"
,
"resolved"
:
"https://registry.npmjs.org/pngjs/-/pngjs-0.4.0.tgz"
,
"integrity"
:
"sha1-KUBxrcGytgv9SspNvkdZvM7m/Xc="
},
"printj"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/printj/-/printj-1.1.2.tgz"
,
...
...
@@ -1267,6 +1325,11 @@
"resolved"
:
"https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz"
,
"integrity"
:
"sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
},
"rsvp"
:
{
"version"
:
"3.0.21"
,
"resolved"
:
"https://registry.npmjs.org/rsvp/-/rsvp-3.0.21.tgz"
,
"integrity"
:
"sha1-ScWI/hjvKTvNCrn05nVuasQzNZ8="
},
"safe-buffer"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz"
,
...
...
package.json
View file @
92d20503
...
...
@@ -19,6 +19,7 @@
"
mongoose
"
:
"^5.4.0"
,
"
multer
"
:
"^1.4.3"
,
"
mysql
"
:
"^2.18.1"
,
"
node-psd
"
:
"^1.0.1"
,
"
node-xlsx
"
:
"^0.16.1"
,
"
nodemailer
"
:
"^6.1.1"
,
"
oracledb
"
:
"^5.3.0"
,
...
...
src/biz/pic.ts
View file @
92d20503
import
formidable
=
require
(
'formidable'
);
import
{
upImgPathConfig
}
from
'../serverConfig'
;
import
*
as
userData
from
'./../model/users'
;
import
*
as
pictureData
from
'./../model/picture'
;
import
*
as
crypto
from
'crypto'
;
import
{
BizError
}
from
'../util/bizError'
;
import
{
psdForPng
}
from
'../util/psd'
;
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
//上传psd文件
export
async
function
upPsdFile
(
req
)
{
let
result
=
await
up
(
req
,
getFileName
());
console
.
log
(
result
);
//上传成功通过fs改名称
return
{}
export
async
function
upPsdFile
(
req
,
userId
,
psdType
,
userName
,
desc
)
{
let
{
fileName
,
pId
}
=
getFileName
();
let
upResult
:
any
=
await
up
(
req
,
fileName
);
let
success
=
true
;
if
(
upResult
.
file
)
{
let
pngName
=
psdForPng
(
fileName
);
let
size
=
upResult
.
file
.
size
;
await
pictureData
.
addOncePic
(
pId
,
userId
,
userName
,
fileName
,
pngName
,
psdType
,
desc
,
size
);
}
else
{
success
=
false
;
throw
new
BizError
(
"上传psd错误 fileName"
,
fileName
);
}
return
{
success
};
}
function
up
(
req
,
fileName
)
{
async
function
up
(
req
,
fileName
)
{
let
form
=
new
formidable
.
IncomingForm
();
let
psdUrl
=
path
.
join
(
__dirname
.
substring
(
0
,
__dirname
.
indexOf
(
"out"
)),
upImgPathConfig
.
psd
);
form
.
uploadDir
=
psdUrl
;
form
.
name
=
fileName
form
.
on
(
'end'
,()
=>
{
console
.
log
(
"up end"
);
})
return
new
Promise
((
resolve
,
reject
)
=>
{
form
.
parse
(
req
,
(
err
,
fields
,
files
)
=>
{
form
.
parse
(
req
,
async
(
err
,
fields
,
files
)
=>
{
if
(
err
)
reject
(
err
);
fs
.
rename
(
files
.
file
.
path
,
path
.
join
(
psdUrl
,
'sdfa/'
,
fileName
),
(
err
)
=>
{
if
(
err
)
throw
new
BizError
(
"改名失败"
,
err
);
else
resolve
(
files
);
});
});
});
}
function
getFileName
()
{
let
randomStr
=
Math
.
ceil
(
Math
.
random
()
*
10000000
)
+
''
+
new
Date
().
valueOf
();
const
md5
=
crypto
.
createHash
(
'md5'
);
let
fileNameMd5
=
md5
.
update
(
randomStr
);
return
fileNameMd5
+
'.psd'
;
let
fileNameMd5
=
md5
.
update
(
randomStr
)
.
digest
(
'hex'
)
;
return
{
fileName
:
fileNameMd5
+
'.psd'
,
pId
:
fileNameMd5
}
;
}
export
async
function
picList
(
picType
)
{
let
dbList
=
await
pictureData
.
selectAllPicture
();
let
picList
=
[];
dbList
.
forEach
(
info
=>
{
let
{
pId
,
uId
,
uName
,
psdName
,
pngName
,
chartType
,
createTime
,
desc
,
size
}
=
info
;
picList
.
push
({
pId
,
uId
,
uName
,
psdName
,
pngName
,
chartType
,
createTime
,
desc
,
size
});
});
return
{
picList
}
}
src/config/paramaterConfig.ts
0 → 100644
View file @
92d20503
src/main.ts
View file @
92d20503
import
{
now
}
from
"mongoose"
;
import
{
testCheck
}
from
"./config/paramaterConfig"
;
import
{
initDB
}
from
"./db/mongo/db_init"
;
import
{
httpServer
}
from
"./net/http_server"
;
import
{
getPort
}
from
"./serverConfig"
;
async
function
lanuch
()
{
httpServer
.
createServer
(
getPort
());
testCheck
();
}
lanuch
();
src/middleware/paramaterCheck.ts
0 → 100644
View file @
92d20503
const
configMap
=
{};
paramatersConfig
.
forEach
(
info
=>
{
configMap
[
info
.
url
]
=
info
.
parm
;
});
export
function
checkingReqParm
(
url
,
body
)
{
let
configInfo
=
configMap
[
url
];
if
(
!
configInfo
)
return
true
;
for
(
let
key
in
configInfo
)
{
let
type
=
typeof
configInfo
[
key
];
let
thisParamater
=
configInfo
[
key
];
let
bodyType
=
typeof
body
[
key
];
let
bodyThisParamater
=
body
[
key
];
if
(
type
!=
bodyType
)
return
`参数错误
${
key
}
`
;
if
(
thisParamater
==
[]
&&
!
(
bodyThisParamater
instanceof
Array
)
)
`参数错误
${
key
}
`
;
}
return
true
;
}
\ No newline at end of file
src/middleware/sign.ts
View file @
92d20503
...
...
@@ -5,21 +5,28 @@ const LRU = require("lru-cache")
,
maxAge
:
1000
*
60
*
10
}
,
cache
=
LRU
(
cacheOptions
);
let
notTokenInterfaceList
=
[
"/datalist"
,
"/api/user/login"
,
"/api/user/register"
,
];
const
notTokenSign
=
'xxakdfwosaddf!@3sadfhDAse'
;
const
signKey
=
"12345678asd!@#%DFFGa"
;
export
async
function
checkSign
(
req
,
res
,
next
)
{
let
signKey
=
"12345678asd!@#%DFFGa"
;
let
userId
=
req
.
headers
.
userid
;
let
playerId
=
req
.
headers
.
playerid
;
let
userId
=
req
.
headers
.
userId
;
let
token
=
req
.
headers
.
token
;
let
timeStamp
=
req
.
headers
.
timestamp
;
let
platform
=
req
.
headers
.
platform
;
if
(
req
.
path
!=
'/api/system/servertime'
&&
req
.
path
.
indexOf
(
'admin'
)
<
0
&&
req
.
headers
.
sign
!=
'xxakdfwosaddf!@3sadfhDAse'
)
{
if
(
notTokenInterfaceList
.
indexOf
(
req
.
path
)
<
0
&&
req
.
headers
.
sign
!=
notTokenSign
)
{
let
now
=
Date
.
now
();
if
(
Math
.
abs
(
now
-
timeStamp
)
>
120000
)
{
console
.
log
(
req
.
path
,
new
Date
(
now
),
"timeStamp"
,
timeStamp
);
return
next
(
new
BizError
(
'timeStamp error time difference error'
))
}
let
sign
=
getSign
(
[
signKey
,
userId
,
playerId
,
token
,
timeStamp
,
platform
,
req
.
path
,
signKey
]
);
let
sign
=
getSign
(
userId
,
token
,
timeStamp
,
req
.
path
,
signKey
);
let
cacheSign
=
cache
.
get
(
sign
);
if
(
cacheSign
)
{
if
(
cacheSign
>
5
)
return
next
(
new
BizError
(
"sign error repetitive sign"
));
...
...
@@ -36,6 +43,8 @@ export async function checkSign(req, res, next) {
console
.
log
(
req
.
path
,
JSON
.
stringify
(
req
.
headers
));
next
(
new
BizError
(
"sign error"
))
}
}
next
();
...
...
src/model/picture.ts
View file @
92d20503
...
...
@@ -3,14 +3,15 @@ import { picDB } from "../db/mongo/db_init";
const
pictureSchema
=
new
Schema
({
pId
:
{
type
:
Number
,
index
:
true
},
uId
:
{
type
:
Number
},
pId
:
{
type
:
String
,
index
:
true
},
uId
:
{
type
:
String
},
uName
:
{
type
:
String
},
psdName
:
{
type
:
String
},
pngName
:
{
type
:
String
},
path
:
{
type
:
String
},
chartType
:{
type
:
Number
,
index
:
true
},
// 按图表类型分 后续有新的标签类型,就往后加
createTime
:{
type
:
Date
,
index
:
true
},
desc
:{
type
:
String
},
//描述
size
:{
type
:
Number
},
//文件大小 单位: b
});
let
pictureModel
;
...
...
@@ -19,57 +20,18 @@ export function initModel() {
pictureModel
=
picDB
.
model
(
'picture'
,
pictureSchema
)
}
export
async
function
selectPicList
()
{
let
userModel
=
require
(
'../model/users'
);
return
await
pictureModel
.
find
((
err
,
doc
)
=>
{
let
picItem
=
JSON
.
parse
(
JSON
.
stringify
(
doc
));
let
uId
=
picItem
[
0
].
uId
;
userModel
.
find
({
"uId"
:
uId
},
(
err
,
doc
)
=>
{
picItem
[
0
].
picInfo
=
doc
[
0
];
})
})
}
export
async
function
selectAllPicture
()
{
return
await
pictureModel
.
find
({}).
exec
();
}
export
async
function
selectPicById
(
pId
)
{
let
query
=
{
pId
:
pId
};
let
query
=
{
pId
};
return
await
pictureModel
.
find
(
query
).
exec
();
}
export
async
function
addOncePic
(
addInfo
)
{
// await pictureModel.inseraddInfot(addInfo);
// return true;
await
pictureModel
.
save
((
err
,
doc
)
=>
{
doc
=
addInfo
;
if
(
!
err
)
{
console
.
log
(
'保存成功'
);
return
true
;
}
else
{
console
.
log
(
'Error:'
+
err
);
}
})
return
false
;
}
export
async
function
update
(
pId
,
reviseInfo
)
{
//todo
// await pictureModel.update(reviseInfo);
// return true;
await
pictureModel
.
findById
(
pId
,
(
err
,
doc
)
=>
{
doc
=
reviseInfo
;
doc
.
save
((
err
)
=>
{
if
(
!
err
)
{
console
.
log
(
'修改成功'
);
return
true
;
}
else
{
console
.
log
(
'Error:'
+
err
);
}
})
})
return
false
;
export
async
function
addOncePic
(
pId
,
uId
,
uName
,
psdName
,
pngName
,
chartType
,
desc
,
size
)
{
let
addInfo
=
{
pId
,
uId
,
uName
,
psdName
,
pngName
,
chartType
,
desc
,
size
,
createTime
:
new
Date
()};
return
await
pictureModel
.
create
(
addInfo
);
}
src/model/users.ts
View file @
92d20503
...
...
@@ -18,7 +18,6 @@ export function initModel() {
usersModel
=
picDB
.
model
(
'users'
,
usersSchema
);
}
export
async
function
selectAllUser
()
{
return
await
usersModel
.
find
({}).
exec
();
}
...
...
src/net/http_server.ts
View file @
92d20503
...
...
@@ -5,6 +5,8 @@ import routers = require('../routers/router');
import
compression
=
require
(
'compression'
);
import
{
encryptionReturn
}
from
'../middleware/encryptionReturn'
;
import
{
getEnv
}
from
'../serverConfig'
;
import
{
checkSign
}
from
'../middleware/sign'
;
import
{
checkingReqParm
}
from
'../middleware/paramaterCheck'
;
export
class
httpServer
{
static
createServer
(
port
:
number
)
{
...
...
@@ -28,7 +30,11 @@ export class httpServer {
httpServer
.
use
(
express
.
static
(
'public'
)
);
httpServer
.
use
(
bodyParser
.
json
({
limit
:
"10kb"
}));
httpServer
.
use
(
compression
())
httpServer
.
use
(
compression
());
httpServer
.
use
(
checkSign
);
httpServer
.
use
(
checkingReqParm
);
//演示环境加密数据
if
(
getEnv
()
==
"dem"
)
{
console
.
log
(
"演示环境 开启数据加密"
);
...
...
@@ -36,6 +42,7 @@ export class httpServer {
}
routers
.
setRouter
(
httpServer
);
httpServer
.
listen
(
port
);
console
.
log
(
'server listen on port:'
+
port
);
...
...
src/routers/pic.ts
View file @
92d20503
...
...
@@ -6,9 +6,12 @@ export function setRouter(httpServer) {
}
async
function
upFile
(
req
,
res
)
{
picBiz
.
upPsdFile
(
req
);
let
result
=
await
picBiz
.
upPsdFile
(
req
,
userId
,
psdType
,
userName
,
desc
);
res
.
send
(
result
);
}
async
function
fileList
(
req
,
res
)
{
let
picType
=
req
.
picType
;
let
result
=
await
picBiz
.
picList
(
picType
);
res
.
send
(
result
);
}
\ No newline at end of file
src/routers/router.ts
View file @
92d20503
...
...
@@ -8,3 +8,13 @@ export function setRouter(httpServer) {
userRouters
.
setRouter
(
httpServer
);
picRouters
.
setRouter
(
httpServer
);
}
export
const
paramatersConfig
=
[
{
url
:
"/api/user/login"
,
parm
:{
loginId
:
""
,
pwd
:
""
}
},
{
url
:
"/api/user/register"
,
parm
:{
loginId
:
""
,
pwd
:
-
1
,
uName
:
""
}
},
{
url
:
"/api/user/test"
,
parm
:{
roles
:[],
data
:{},
num
:
1
,
str
:
"'"
}
}
];
export
function
newSetRouter
(
httpServer
)
{
}
\ No newline at end of file
src/routers/user.ts
View file @
92d20503
import
*
as
asyncHandler
from
'express-async-handler'
;
import
*
as
userBiz
from
'./../biz/user'
import
*
as
userBiz
from
'./../biz/user'
;
export
function
setRouter
(
httpServer
)
{
httpServer
.
post
(
'/api/user/login'
,
asyncHandler
(
login
));
...
...
src/util/psd.ts
View file @
92d20503
...
...
@@ -4,11 +4,11 @@ var PSD = require('node-psd');
const
path
=
require
(
'path'
);
/**
* psdForPng psd转png
* @param fileName psd文件名称,记得
不
带.psd
* @param fileName psd文件名称,记得带.psd
*/
export
async
function
psdForPng
(
fileName
:
string
)
{
export
function
psdForPng
(
fileName
:
string
)
{
fileName
=
"1213"
const
psdName
=
fileName
+
".psd"
;
const
psdName
=
fileName
;
const
pngName
=
fileName
+
".png"
;
...
...
@@ -25,4 +25,6 @@ export async function psdForPng(fileName:string) {
}
catch
(
err
)
{
throw
new
BizError
(
psdName
,
"转png失败"
,
err
.
message
||
err
.
msg
);
}
return
pngName
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment