Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wenHuaBu_adminServer
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
node_server
wenHuaBu_adminServer
Commits
05371125
Commit
05371125
authored
Mar 21, 2024
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
0957c317
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
129 additions
and
96 deletions
+129
-96
cost.ts
src/biz/member/cost.ts
+7
-5
order.ts
src/biz/member/order.ts
+39
-22
enum.ts
src/config/enum.ts
+21
-0
model.ts
src/data/models/model.ts
+3
-3
main.ts
src/main.ts
+3
-0
user.ts
src/middleware/user.ts
+4
-19
router.ts
src/routers/order/router.ts
+0
-1
router.ts
src/routers/router.ts
+51
-45
system.ts
src/tools/system.ts
+1
-1
No files found.
src/biz/member/cost.ts
View file @
05371125
...
...
@@ -2,7 +2,7 @@
* 收费
*/
import
{
ORDERSTATE
,
PAYMENTTYPE
,
WEICHARTPAYSTATE
}
from
"../../config/enum"
;
import
{
INDIVIDUALMEMBERTYPE
,
MEMBERLEVEL
,
MEMBERTYPE
,
ORDERSTATE
,
PAYMENTTYPE
,
WEICHARTPAYSTATE
}
from
"../../config/enum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
findOnce
}
from
"../../data/select"
;
import
{
eccEnumValue
}
from
"../../util/verificationEnum"
;
...
...
@@ -14,6 +14,7 @@ import { ERRORENUM } from "../../config/errorEnum";
import
{
generateWXOrderId
,
successResult
}
from
"../../tools/system"
;
import
{
updateOneData
}
from
"../../data/update"
;
import
moment
=
require
(
"moment"
);
import
{
createOrder
}
from
"./order"
;
const
AppId
=
'wx96c0cf11b3babcf6'
;
const
MchId
=
'1614605859'
;
...
...
@@ -32,7 +33,7 @@ const pay = new WxPay({
* @returns
*/
export
async
function
placeAnOrder
({
id
})
{
let
orderInfo
=
await
findOnce
(
TABLEENUM
.
订单表
,
{
id
},
[
"id"
,
"loginId"
,
"userId"
,
"memberCategory"
,
"money"
,
"orderCycleStart"
,
"orderCycleEnd"
]);
let
orderInfo
=
await
findOnce
(
TABLEENUM
.
订单表
,
{
id
},
[
"id"
,
"loginId"
,
"userId"
,
"memberCategory"
,
"money"
,
"orderCycleStart"
,
"orderCycleEnd"
,
"weChartState"
]);
if
(
!
orderInfo
||
!
orderInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
订单不存在
);
if
(
orderInfo
.
state
==
ORDERSTATE
.
已支付
)
throw
new
BizError
(
ERRORENUM
.
该订单已支付
);
if
(
orderInfo
.
weChartState
!=
WEICHARTPAYSTATE
.
未提交
)
throw
new
BizError
(
ERRORENUM
.
该订单正在支付
);
...
...
@@ -41,7 +42,6 @@ export async function placeAnOrder({id}) {
let
out_trade_no
=
generateWXOrderId
(
orderInfo
.
memberCategory
,
orderInfo
.
userId
);
let
desc
=
`
${
orderInfo
.
loginId
}
_
${
moment
(
orderInfo
.
orderCycleStart
).
format
(
"YYYY-MM-DD"
)}
至
${
moment
(
orderInfo
.
orderCycleEnd
).
format
(
"YYYY-MM-DD"
)}
`
;
await
updateOneData
(
TABLEENUM
.
订单表
,
{
id
},
{
weChartPR
:
out_trade_no
,
paymentMethod
:
PAYMENTTYPE
.
微信支付
,
weChartState
:
WEICHARTPAYSTATE
.
未支付
});
/**请求参数 */
const
Param
=
{
appid
:
AppId
,
...
...
@@ -50,12 +50,14 @@ export async function placeAnOrder({id}) {
out_trade_no
,
//订单号
amount
:{
//金额
// total:orderInfo.money
total
:
0.01
total
:
1
//单位分 金额要乘100
},
notify_url
:
'http
://7ggz2y.natappfree
.cc/pay/wechart/callback'
,
//订单回调
notify_url
:
'http
s://yydata.mynatapp
.cc/pay/wechart/callback'
,
//订单回调
};
const
result
=
await
pay
.
transactions_native
(
Param
);
if
(
result
.
status
!=
200
)
throw
new
BizError
(
ERRORENUM
.
调起微信支付失败
);
await
updateOneData
(
TABLEENUM
.
订单表
,
{
id
},
{
weChartPR
:
out_trade_no
,
paymentMethod
:
PAYMENTTYPE
.
微信支付
,
weChartState
:
WEICHARTPAYSTATE
.
未支付
});
return
{
code_url
:
result
.
code_url
,
weChartPR
:
out_trade_no
};
}
...
...
src/biz/member/order.ts
View file @
05371125
...
...
@@ -2,7 +2,7 @@
* 订单相关 success
*/
import
moment
=
require
(
"moment"
);
import
{
AUDITINGCLIENT
,
COSTTYPE
,
INDIVIDUALMEMBERTYPE
,
INVOICESTATUS
,
ISPAYENUM
,
MEMBERLEVEL
,
MEMBERTYPE
,
OPERATIONREHAVIOR
,
ORDERSTATE
,
PAYMENTSTATUS
,
PAYMENTTYPE
,
RECEIPTCONFIRMATION
,
STATE
,
UNITMEMBERTYPE
}
from
"../../config/enum"
;
import
{
AUDITINGCLIENT
,
COSTTYPE
,
INDIVIDUALMEMBERTYPE
,
INVOICESTATUS
,
ISPAYENUM
,
MEMBERLEVEL
,
MEMBERTYPE
,
MYORDERLISTPAYSTATE
,
MYORDERLISTSTATE
,
OPERATIONREHAVIOR
,
ORDERSTATE
,
PAYMENTSTATUS
,
PAYMENTTYPE
,
RECEIPTCONFIRMATION
,
STATE
,
UNITMEMBERTYPE
}
from
"../../config/enum"
;
import
{
generateOrderId
,
successResult
}
from
"../../tools/system"
;
import
{
changeEnumValue
,
eccEnumValue
}
from
"../../util/verificationEnum"
;
import
{
addOneData
}
from
"../../data/add"
;
...
...
@@ -320,38 +320,51 @@ export async function orderList({userId, type}) {
if
(
type
==
ORDERSTATE
.
已支付
)
findParam
.
state
=
ORDERSTATE
.
已支付
;
else
if
(
type
==
ORDERSTATE
.
未支付
)
findParam
.
state
=
ORDERSTATE
.
未支付
;
const
SelectFile
=
[
"orderCycleStart"
,
"orderCycleEnd"
,
"money"
,
"state"
,
"id"
,
"advanceInvoice"
,
"invoiceStatus"
];
const
SelectFile
=
[
"orderCycleStart"
,
"orderCycleEnd"
,
"money"
,
"state"
,
"id"
,
"advanceInvoice"
,
"invoiceStatus"
,
"unitName"
,
"confirmReceipt"
];
let
dbList
=
await
find
(
TABLEENUM
.
订单表
,
findParam
,
SelectFile
);
/**查询证明函需要字段会员等级 */
let
myOldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
},
[
"memberLevel"
]);
let
myOldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
},
[
"memberLevel"
,
"userId"
]);
if
(
!
myOldInfo
||
!
myOldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
//证明函返回数据配置
const
proofLetterFiles
=
[
"unitName"
,
"orderCycleStart"
,
"orderCycleEnd"
,
"money"
];
let
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
myOldInfo
.
memberLevel
);
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
{
orderCycleStart
,
orderCycleEnd
,
money
,
state
,
id
}
=
info
;
let
moneyStr
=
state
==
ORDERSTATE
.
已支付
?
"已缴金额"
:
"待缴金额"
;
let
{
orderCycleStart
,
orderCycleEnd
,
money
,
state
,
id
,
unitName
,
confirmReceipt
}
=
info
;
let
payState
;
if
(
state
==
ORDERSTATE
.
已支付
)
{
if
(
!
confirmReceipt
)
{
/**首次支付 待确认未审核*/
payState
=
MYORDERLISTPAYSTATE
.
财务查账中
;
}
else
if
(
confirmReceipt
==
RECEIPTCONFIRMATION
.
待确认
)
{
payState
=
MYORDERLISTPAYSTATE
.
财务查账中
;
}
else
if
(
confirmReceipt
==
RECEIPTCONFIRMATION
.
收款确认
)
{
payState
=
MYORDERLISTPAYSTATE
.
已缴费
}
else
{
payState
=
MYORDERLISTPAYSTATE
.
缴费失败
}
}
else
{
payState
=
MYORDERLISTPAYSTATE
.
待缴费
}
let
invoiceSt
r
=
""
;
if
(
info
.
invoiceStatus
==
INVOICESTATUS
.
已开发票
)
invoiceSt
r
=
"下载发票"
;
if
(
info
.
invoiceStatus
!=
INVOICESTATUS
.
已开发票
&&
info
.
advanceInvoice
)
invoiceSt
r
=
"申请进度"
;
if
(
info
.
invoiceStatus
!=
INVOICESTATUS
.
已开发票
&&
!
info
.
advanceInvoice
)
invoiceSt
r
=
"申请发票"
;
let
invoiceSt
ate
;
if
(
info
.
invoiceStatus
==
INVOICESTATUS
.
已开发票
)
invoiceSt
ate
=
MYORDERLISTSTATE
.
下载发票
;
if
(
info
.
invoiceStatus
!=
INVOICESTATUS
.
已开发票
&&
info
.
advanceInvoice
)
invoiceSt
ate
=
MYORDERLISTSTATE
.
申请进度
;
if
(
info
.
invoiceStatus
!=
INVOICESTATUS
.
已开发票
&&
!
info
.
advanceInvoice
)
invoiceSt
ate
=
MYORDERLISTSTATE
.
申请发票
;
let
item
=
{
cycle
:
`
${
moment
(
orderCycleStart
).
format
(
"YYYY-MM-DD"
)}
至
${
moment
(
orderCycleEnd
).
format
(
"YYYY-MM-DD"
)}
`
,
money
:
`
${
moneyStr
}
:
${
money
}
`
,
money
:
money
,
id
,
invoiceStatus
:
invoiceStr
invoiceStatus
:
invoiceState
,
invoiceStatusStr
:
changeEnumValue
(
MYORDERLISTSTATE
,
invoiceState
),
unitName
,
orderCycleStart
:
moment
(
orderCycleStart
).
format
(
"YYYY"
),
orderCycleEnd
:
moment
(
orderCycleEnd
).
format
(
"YYYY"
),
memberLevel
,
payState
,
payStateStr
:
changeEnumValue
(
MYORDERLISTPAYSTATE
,
payState
)
};
/**处理证明函返回数据字段 */
let
proofLetterInfo
:
any
=
extractData
(
info
,
proofLetterFiles
);
proofLetterInfo
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
myOldInfo
.
memberLevel
);
proofLetterInfo
.
orderCycleStart
=
moment
(
proofLetterInfo
.
orderCycleStart
).
format
(
"YYYY"
);
proofLetterInfo
.
orderCycleEnd
=
moment
(
proofLetterInfo
.
orderCycleEnd
).
format
(
"YYYY"
);
dataList
.
push
({
list
:
item
,
proofLetterInfo
});
dataList
.
push
(
item
);
});
return
{
dataList
}
...
...
@@ -436,11 +449,15 @@ export async function getInvoiceStatus({id}) {
* 上传转账截图
* @param param0
*/
export
async
function
upTransferImg
({
id
,
weChartPR
,
offlinePaymentUrl
})
{
export
async
function
upTransferImg
({
id
,
paymentNum
,
offlinePaymentUrl
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
订单表
,
{
id
});
if
(
!
oldInfo
||
!
oldInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
await
updateOneData
(
TABLEENUM
.
订单表
,
{
id
},
{
weChartPR
,
offlinePaymentUrl
});
let
updateInfo
:
any
=
{
paymentNum
,
offlinePaymentUrl
,
state
:
ORDERSTATE
.
已支付
,
paymentMethod
:
PAYMENTTYPE
.
银行转账
};
if
(
!
oldInfo
.
isFirst
)
{
updateInfo
.
confirmReceipt
=
RECEIPTCONFIRMATION
.
待确认
;
}
await
updateOneData
(
TABLEENUM
.
订单表
,
{
id
},
updateInfo
);
return
successResult
();
}
...
...
src/config/enum.ts
View file @
05371125
...
...
@@ -561,3 +561,23 @@ export enum EDUCATION {
大专
=
1
,
本科
,
}
/**
* 前端使用
*/
export
enum
MYORDERLISTSTATE
{
申请发票
=
1
,
申请进度
,
下载发票
}
/**
* 前端使用
*/
export
enum
MYORDERLISTPAYSTATE
{
待缴费
=
1
,
已缴费
,
财务查账中
,
缴费失败
}
\ No newline at end of file
src/data/models/model.ts
View file @
05371125
...
...
@@ -53,7 +53,7 @@
},
*/
import
{
INVOICESTATUS
,
MEMBERSTATE
,
RECEIPTCONFIRMATION
,
REGISTERFLOW
,
STATE
,
USERREGISTERSTATE
}
from
"../../config/enum"
;
import
{
INVOICESTATUS
,
MEMBERSTATE
,
RECEIPTCONFIRMATION
,
REGISTERFLOW
,
STATE
,
USERREGISTERSTATE
,
WEICHARTPAYSTATE
}
from
"../../config/enum"
;
...
...
@@ -449,14 +449,14 @@ const ModelArray = [
offlinePaymentUrl
:{
type
:
'String'
,
default
:
""
},
//转账图片
memberCategory
:
'Number'
,
//会员类别 枚举 MEMBERTYPE
weChartPR
:{
type
:
'String'
,
default
:
""
},
//微信订单号 微信支付用
weChartState
:
'Number'
,
//微信支付状态 WEICHARTPAYSTATE
weChartState
:
{
type
:
'Number'
,
default
:
WEICHARTPAYSTATE
.
未提交
}
,
//微信支付状态 WEICHARTPAYSTATE
// membershipFeesType:'Number',//会费类别 枚举
invoiceAdd
:
'String'
,
//发票图片地址
isFirst
:{
type
:
'Boolean'
,
default
:
true
},
//首次订单
state
:
'Number'
,
//状态 是否支付 枚举 ORDERSTATE
paymentMethod
:
'Number'
,
//付款方式 枚举 PAYMENTTYPE
firstPayExamine
:{
type
:
'Boolean'
,
default
:
false
},
//首次订单的审批开关【待支付页审批开关】
confirmReceipt
:{
type
:
'Number'
,
default
:
RECEIPTCONFIRMATION
.
待确认
},
//收款确认【财务核对页收款确认】
confirmReceipt
:{
type
:
'Number'
,
default
:
0
},
//收款确认【财务核对页收款确认】 RECEIPTCONFIRMATION
invoiceStatus
:{
type
:
'Number'
,
default
:
INVOICESTATUS
.
不具备开票条件
,
index
:
true
},
//发票状态 枚举 INVOICESTATUS 【待开发票页上传发票之后更新状态】
advanceInvoice
:{
type
:
'Boolean'
,
default
:
false
},
//是否提交开票 【个人列表页提交开发票按钮】
newUnitName
:
'String'
,
//单位名称,新发票抬头【变更发票抬头使用】
...
...
src/main.ts
View file @
05371125
import
{
createOrder
}
from
"./biz/member/order"
;
import
{
INDIVIDUALMEMBERTYPE
,
MEMBERLEVEL
,
MEMBERTYPE
}
from
"./config/enum"
;
import
{
initConfig
,
systemConfig
}
from
"./config/serverConfig"
;
import
{
initDataBaseModel
}
from
"./data/db/db"
;
import
{
httpServer
}
from
"./net/http_server"
;
...
...
@@ -8,6 +10,7 @@ async function lanuch() {
/**初始化数据库 */
await
initDataBaseModel
();
/**创建http服务 */
// await createOrder("xxsdfasdfasfdasd_test", "测试单位名称", new Date().valueOf(), MEMBERLEVEL.普通会员, MEMBERTYPE.个人会员 ,INDIVIDUALMEMBERTYPE.个人会员, false);
httpServer
.
createServer
(
systemConfig
.
port
);
// await smsTask();
...
...
src/middleware/user.ts
View file @
05371125
...
...
@@ -6,37 +6,22 @@ import { updateOneData } from "../data/update";
import
{
BizError
}
from
"../util/bizError"
;
/**
* 中间件
校验孵化器token
* 中间件
* @param req
* @param res
* @param next
* @returns
*/
export
async
function
check
FuHuaQiToken
(
req
,
res
,
next
)
{
export
async
function
check
User
(
req
,
res
,
next
)
{
if
(
!
req
.
headers
)
req
.
headers
=
{};
const
reqToken
=
req
.
headers
.
token
;
const
userId
=
req
.
headers
.
userid
||
""
;
if
(
!
reqToken
||
!
userId
)
return
next
(
new
BizError
(
ERRORENUM
.
身份验证失败
,
`userId:
${
userId
}
token:
${
reqToken
}
`
));
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
userInfo
||
!
userInfo
.
userId
)
return
next
(
new
BizError
(
ERRORENUM
.
身份验证失败
));
if
(
userInfo
.
token
!=
reqToken
)
return
next
(
new
BizError
(
ERRORENUM
.
身份验证过期
));
let
checkToken
=
''
;
//30分钟更新token
if
(
(
userInfo
.
tokenMs
-
new
Date
().
valueOf
())
>=
(
30
*
60
*
1000
)
)
{
return
next
(
new
BizError
(
ERRORENUM
.
身份验证过期
));
}
else
{
checkToken
=
reqToken
;
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
userInfo
.
userId
},
{
tokenMs
:
new
Date
().
valueOf
()});
}
req
.
headers
.
userId
=
userId
;
req
.
headers
.
userInfo
=
{
userId
,
isAdmin
:
userInfo
.
isAdmin
userId
}
next
();
}
...
...
src/routers/order/router.ts
View file @
05371125
...
...
@@ -72,7 +72,6 @@ export const Config = {
apiName
:
"会员缴费列表"
,
subUrl
:
'/order/memberpayment'
,
param
:[
{
key
:
"userId"
,
type
:
"String"
,
desc
:
"用户id"
},
{
key
:
"type"
,
type
:
"Number"
,
desc
:
"缴费状态"
,
isNull
:
true
}
],
bindBiz
:
orderBiz
.
orderList
...
...
src/routers/router.ts
View file @
05371125
...
...
@@ -16,8 +16,9 @@ import * as officalWebsiteRouter from "./officalWebsite/router";
import
*
as
orderRouter
from
"./order/router"
;
import
*
as
asyncHandler
from
'express-async-handler'
;
import
{
payCallback
}
from
"../biz/member/cost"
;
import
{
checkUser
}
from
"../middleware/user"
;
const
Look
=
tru
e
;
//true更新文档
const
Look
=
fals
e
;
//true更新文档
export
async
function
setRouter
(
httpServer
){
if
(
Look
)
{
...
...
@@ -29,60 +30,65 @@ export async function setRouter(httpServer){
await
initDoc
(
orderRouter
.
FirstName
,
orderRouter
.
Config
,
orderRouter
.
FirstRouter
);
//会费相关
await
initDoc
(
costRouter
.
FirstName
,
costRouter
.
Config
,
costRouter
.
FirstRouter
);
//支付
}
await
analysisRouter
(
httpServer
,
portalRouter
.
Config
,
portalRouter
.
FirstRouter
);
//网站编辑
await
analysisRouter
(
httpServer
,
publicRouter
.
Config
,
publicRouter
.
FirstRouter
);
//公用组件
await
analysisRouter
(
httpServer
,
memberRouter
.
Config
,
memberRouter
.
FirstRouter
);
//用户路由
await
analysisRouter
(
httpServer
,
officalWebsiteRouter
.
Config
,
officalWebsiteRouter
.
FirstRouter
);
//官网路由
await
analysisRouter
(
httpServer
,
orderRouter
.
Config
,
orderRouter
.
FirstRouter
);
//会费相关
await
analysisRouter
(
httpServer
,
costRouter
.
Config
,
costRouter
.
FirstRouter
);
//支付
await
analysisRouter
(
httpServer
,
portalRouter
.
Config
,
portalRouter
.
FirstRouter
,
false
);
//网站编辑
await
analysisRouter
(
httpServer
,
publicRouter
.
Config
,
publicRouter
.
FirstRouter
,
false
);
//公用组件
await
analysisRouter
(
httpServer
,
memberRouter
.
Config
,
memberRouter
.
FirstRouter
,
false
);
//用户路由
await
analysisRouter
(
httpServer
,
officalWebsiteRouter
.
Config
,
officalWebsiteRouter
.
FirstRouter
,
false
);
//官网路由
await
analysisRouter
(
httpServer
,
orderRouter
.
Config
,
orderRouter
.
FirstRouter
,
true
);
//会费相关
await
analysisRouter
(
httpServer
,
costRouter
.
Config
,
costRouter
.
FirstRouter
,
true
);
//支付
}
async
function
analysisRouter
(
httpServer
,
config
,
firstRouter
)
{
async
function
analysisRouter
(
httpServer
,
config
,
firstRouter
,
haveMiddleware
)
{
for
(
let
modelKey
in
config
)
{
config
[
modelKey
].
forEach
(
info
=>
{
let
{
apiName
,
defaultParam
,
subUrl
,
param
,
bindBiz
}
=
info
;
httpServer
.
post
(
firstRouter
+
subUrl
,
asyncHandler
(
async
(
req
,
res
)
=>
{
let
chackObjectList
=
[];
let
checkStringMap
=
{};
let
stringNotMustHaveKeys
=
[];
let
funcParam
:
any
=
{};
funcParam
.
userId
=
req
.
headers
.
userId
;
for
(
let
i
=
0
;
i
<
param
.
length
;
i
++
)
{
let
info
:
any
=
param
[
i
];
let
{
key
,
type
}
=
param
[
i
];
if
(
info
.
isNull
)
stringNotMustHaveKeys
.
push
(
key
);
if
(
type
==
'Object'
)
{
chackObjectList
.
push
(
param
[
i
]);
checkStringMap
[
key
]
=
type
;
}
else
checkStringMap
[
key
]
=
type
;
}
/**校验参数 */
if
(
chackObjectList
.
length
)
{
chackObjectList
.
forEach
(
item
=>
{
if
(
!
req
.
body
[
item
.
key
])
throw
new
BizError
(
ERRORENUM
.
参数错误
,
`缺少参数
${
item
.
key
}
`
);
eccFormParam
(
apiName
,
item
.
sub
,
req
.
body
[
item
.
key
]);
funcParam
[
item
.
key
]
=
req
.
body
[
item
.
key
];
});
}
if
(
Object
.
keys
(
checkStringMap
).
length
)
{
let
eccResult
=
eccReqParamater
(
apiName
,
checkStringMap
,
req
.
body
,
stringNotMustHaveKeys
);
for
(
let
key
in
eccResult
)
{
funcParam
[
key
]
=
eccResult
[
key
];
}
}
if
(
defaultParam
)
funcParam
[
"defaultParam"
]
=
defaultParam
;
let
result
=
await
bindBiz
(
funcParam
);
res
.
success
(
result
);
}));
if
(
haveMiddleware
)
httpServer
.
post
(
firstRouter
+
subUrl
,
checkUser
,
allRouter
(
apiName
,
defaultParam
,
subUrl
,
param
,
bindBiz
));
else
httpServer
.
post
(
firstRouter
+
subUrl
,
allRouter
(
apiName
,
defaultParam
,
subUrl
,
param
,
bindBiz
));
});
}
}
function
allRouter
(
apiName
,
defaultParam
,
subUrl
,
param
,
bindBiz
)
{
return
async
function
(
req
,
res
)
{
let
chackObjectList
=
[];
let
checkStringMap
=
{};
let
stringNotMustHaveKeys
=
[];
let
funcParam
:
any
=
{};
funcParam
.
userId
=
req
.
headers
.
userId
;
for
(
let
i
=
0
;
i
<
param
.
length
;
i
++
)
{
let
info
:
any
=
param
[
i
];
let
{
key
,
type
}
=
param
[
i
];
if
(
info
.
isNull
)
stringNotMustHaveKeys
.
push
(
key
);
if
(
type
==
'Object'
)
{
chackObjectList
.
push
(
param
[
i
]);
checkStringMap
[
key
]
=
type
;
}
else
checkStringMap
[
key
]
=
type
;
}
/**校验参数 */
if
(
chackObjectList
.
length
)
{
chackObjectList
.
forEach
(
item
=>
{
if
(
!
req
.
body
[
item
.
key
])
throw
new
BizError
(
ERRORENUM
.
参数错误
,
`缺少参数
${
item
.
key
}
`
);
eccFormParam
(
apiName
,
item
.
sub
,
req
.
body
[
item
.
key
]);
funcParam
[
item
.
key
]
=
req
.
body
[
item
.
key
];
});
}
if
(
Object
.
keys
(
checkStringMap
).
length
)
{
let
eccResult
=
eccReqParamater
(
apiName
,
checkStringMap
,
req
.
body
,
stringNotMustHaveKeys
);
for
(
let
key
in
eccResult
)
{
funcParam
[
key
]
=
eccResult
[
key
];
}
}
if
(
defaultParam
)
funcParam
[
"defaultParam"
]
=
defaultParam
;
let
result
=
await
bindBiz
(
funcParam
);
res
.
success
(
result
);
}
}
export
async
function
setAdditionalRouter
(
httpServer
)
{
httpServer
.
post
(
'/pay/wechart/callback'
,
asyncHandler
(
async
(
req
,
res
)
=>
{
await
payCallback
(
req
.
body
);
...
...
src/tools/system.ts
View file @
05371125
...
...
@@ -85,6 +85,6 @@ export function getTodayMs() {
export
function
generateWXOrderId
(
memberType
,
userId
)
{
let
thisDate
=
new
Date
();
return
`
${
m
emberType
}
_
${
thisDate
.
getFullYear
()}
_
${
md5
(
`
${
userId
}${
Math
.
random
()
*
100
}${
thisDate
.
valueOf
()}${
Math
.
floor
(
Math
.
random
()
*
1000
)}
`
)}
`
return
`
${
m
d5
(
`
${
memberType
}
${
userId
}${
Math
.
random
()
*
100
}${
thisDate
.
valueOf
()}${
Math
.
floor
(
Math
.
random
()
*
1000
)}
`
)}
`
}
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