Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zhichan
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
蒋勇
zhichan
Commits
83227084
Commit
83227084
authored
Jul 04, 2020
by
王昆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gsb
parent
221c9c87
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
412 additions
and
33 deletions
+412
-33
esign-api/app/base/api/api.base.js
+9
-1
esign-api/app/base/api/impl/sign/authApi.js
+24
-1
esign-api/app/base/api/impl/sign/signApi.js
+106
-0
esign-api/app/base/db/models/common/tradelog.js
+6
-3
esign-api/app/base/service/impl/order/orderSve.js
+2
-2
esign-api/app/base/service/impl/order/orderauthlogSve.js
+20
-0
esign-api/app/base/service/impl/order/ordersignlogSve.js
+20
-0
esign-api/app/base/service/impl/sign/authSve.js
+112
-25
esign-api/app/base/service/impl/sign/signSve.js
+113
-1
No files found.
esign-api/app/base/api/api.base.js
View file @
83227084
...
...
@@ -64,12 +64,20 @@ class APIBase extends DocBase {
let
sign
=
md5
(
signStr
).
toUpperCase
();
console
.
log
(
params
.
sign
,
signStr
,
sign
);
if
(
params
.
sign
!=
sign
)
{
return
system
.
getResultFail
(
1001001
,
"签名验证失败"
);
return
system
.
getResultFail
(
1001001
,
this
.
getSignErrorMsg
(
sign
)
);
}
params
.
app
=
app
;
return
system
.
getResultSuccess
();
}
getSignErrorMsg
(
sign
)
{
let
signErrorMsg
=
"签名验证失败"
;
if
(
settings
.
env
==
"dev"
)
{
signErrorMsg
=
signErrorMsg
+
"---"
+
sign
;
}
return
signErrorMsg
;
}
async
checkSign
(
gname
,
params
)
{
if
(
this
.
SIGN_GNAME
.
indexOf
(
gname
)
!=
-
1
)
{
return
await
this
.
validSign
(
params
);
...
...
esign-api/app/base/api/impl/sign/authApi.js
View file @
83227084
...
...
@@ -8,7 +8,30 @@ class TestAPI extends APIBase {
}
async
nameTwo
(
pobj
,
query
,
req
)
{
return
await
this
.
authSve
.
nameTwo
(
pobj
);
try
{
return
await
this
.
authSve
.
nameTwo
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
async
bankThree
(
pobj
,
query
,
req
)
{
try
{
return
await
this
.
authSve
.
bankThree
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
async
bankFour
(
pobj
,
query
,
req
)
{
try
{
return
await
this
.
authSve
.
bankFour
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
exam
()
{
...
...
esign-api/app/base/api/impl/sign/signApi.js
0 → 100644
View file @
83227084
var
APIBase
=
require
(
"../../api.base"
);
var
system
=
require
(
"../../../system"
);
class
TestAPI
extends
APIBase
{
constructor
()
{
super
();
this
.
signSve
=
system
.
getObject
(
"service.sign.signSve"
);
}
/**
* 创建模板
* @param pobj
* @returns {Promise<{msg: *, data: *, status: *}|*|undefined>}
*/
async
createTemplate
(
pobj
,
query
,
req
)
{
try
{
return
await
this
.
signSve
.
createTemplate
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
/**
* 创建个人账户
* @param req
* @returns {Promise<{msg: *, data: *, status: *}|*|undefined>}
*/
async
createAccount
(
pobj
,
query
,
req
)
{
try
{
return
await
this
.
signSve
.
createAccount
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
/**
* 创建企业印章
* @param req
* @returns {Promise<{msg: *, data: *, status: *}|*|undefined>}
*/
async
createEntSeal
(
pobj
,
query
,
req
)
{
try
{
return
await
this
.
signSve
.
createEntSeal
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
// 静默签
async
autoSign
(
pobj
,
query
,
req
)
{
try
{
return
await
this
.
signSve
.
autoSign
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
// 手动签
async
handSign
(
pobj
,
query
,
req
)
{
try
{
return
await
this
.
signSve
.
handSign
(
pobj
);
}
catch
(
e
)
{
console
.
log
(
e
);
return
system
.
getResultFail
(
500
,
"请求异常"
)
}
}
exam
()
{
return
""
;
}
classDesc
()
{
return
{
groupName
:
""
,
groupDesc
:
""
,
name
:
""
,
desc
:
""
,
exam
:
""
,
};
}
methodDescs
()
{
return
[
{
methodDesc
:
""
,
methodName
:
""
,
paramdescs
:
[
{
paramDesc
:
""
,
paramName
:
""
,
paramType
:
""
,
defaultValue
:
""
,
}
],
rtnTypeDesc
:
""
,
rtnType
:
""
}
];
}
}
module
.
exports
=
TestAPI
;
esign-api/app/base/db/models/common/tradelog.js
View file @
83227084
...
...
@@ -6,15 +6,18 @@ module.exports = (db, DataTypes) => {
requestid
:
DataTypes
.
STRING
,
merchant_id
:
DataTypes
.
STRING
,
product_id
:
DataTypes
.
STRING
,
product_specifications
:
DataTypes
.
BIGINT
,
trade_amt
:
DataTypes
.
BIGINT
,
result
:
DataTypes
.
INTEGER
,
fee
:
{
type
:
DataTypes
.
BOOLEAN
,
defaultValue
:
false
},
fee_remark
:
DataTypes
.
STRING
,
},
{
paranoid
:
false
,
//假的删除
underscored
:
true
,
version
:
true
,
freezeTableName
:
true
,
timestamps
:
true
,
updatedAt
:
false
,
//freezeTableName: true,
// define the table's name
tableName
:
'api_trade_log'
,
...
...
esign-api/app/base/service/impl/order/orderSve.js
View file @
83227084
...
...
@@ -11,7 +11,7 @@ class OrderService extends ServiceBase {
async
getMerchantOrderProduct
(
merchantId
,
apiPrev
)
{
let
orderProductList
=
await
this
.
orderproductSve
.
getMerchantLiveProduct
({
merchant_id
:
merchantId
});
if
(
!
orderProductList
||
orderProductList
.
length
==
0
)
{
return
system
.
getResult
(
1002001
,
"暂无可用订单,请先下单"
);
return
system
.
getResult
Fail
(
1002001
,
"暂无可用订单,请先下单"
);
}
let
productIds
=
[];
...
...
@@ -31,7 +31,7 @@ class OrderService extends ServiceBase {
}
}
if
(
!
orderProduct
)
{
return
system
.
getResult
(
1002002
,
"订单未设置该产品"
);
return
system
.
getResult
Fail
(
1002002
,
"订单未设置该产品"
);
}
return
system
.
getResultSuccess
(
orderProduct
);
}
...
...
esign-api/app/base/service/impl/order/orderauthlogSve.js
0 → 100644
View file @
83227084
const
system
=
require
(
"../../../system"
);
const
ServiceBase
=
require
(
"../../svems.base"
)
class
OrderAuthlogService
extends
ServiceBase
{
constructor
()
{
super
();
}
/**
* fn:保存身份认证日志
* @param params
* @returns {Promise<void>}
*/
async
saveEorderAuthLog
(
params
){
return
await
this
.
callms
(
"sve_order"
,
"saveEorderAuthLog"
,
params
);
}
}
module
.
exports
=
OrderAuthlogService
;
\ No newline at end of file
esign-api/app/base/service/impl/order/ordersignlogSve.js
0 → 100644
View file @
83227084
const
system
=
require
(
"../../../system"
);
const
ServiceBase
=
require
(
"../../svems.base"
)
class
OrderSignLogService
extends
ServiceBase
{
constructor
()
{
super
();
}
/**
* fn:保存签约日志
* @param params
* @returns {Promise<void>}
*/
async
saveEorderSignLog
(
params
){
return
await
this
.
callms
(
"sve_order"
,
"saveEorderSignLog"
,
params
);
}
}
module
.
exports
=
OrderSignLogService
;
\ No newline at end of file
esign-api/app/base/service/impl/sign/authSve.js
View file @
83227084
...
...
@@ -8,71 +8,158 @@ class AuthService extends ServiceBase {
this
.
feeSve
=
system
.
getObject
(
"service.fee.feeSve"
);
this
.
orderSve
=
system
.
getObject
(
"service.order.orderSve"
);
this
.
orderauthlogSve
=
system
.
getObject
(
"service.order.orderauthlogSve"
);
this
.
enginesignSve
=
system
.
getObject
(
"service.engine.enginesignSve"
);
this
.
tradelogDao
=
system
.
getObject
(
"db.common.tradelogDao"
);
}
async
nameTwo
(
params
)
{
try
{
// 通过应用id查询商户订单信息,确定产品认证接口
let
app
=
params
.
app
;
let
merchantId
=
app
.
merchant_id
;
// 获取订单产品
let
orderProduct
=
await
this
.
orderSve
.
getMerchantOrderProduct
(
merchantId
,
"nameTwo"
);
if
(
orderProduct
.
status
!==
0
)
{
return
orderProduct
;
let
idName
=
this
.
trim
(
params
.
idName
);
let
idNo
=
this
.
trim
(
params
.
idNo
).
toUpperCase
();
if
(
!
idName
)
{
return
system
.
getResultFail
(
1000000
,
"姓名错误"
);
}
if
(
!
idNo
)
{
return
system
.
getResultFail
(
1000000
,
"身份证错误"
);
}
params
.
orderProduct
=
orderProduct
.
data
;
return
this
.
doAuth
(
params
);
params
.
apiName
=
"nameTwo"
;
return
this
.
authentication
(
params
,
async
(
p
)
=>
{
return
await
this
.
enginesignSve
.
TwoFactorVerification
({
id_name
:
idName
,
id_no
:
idNo
,
channel
:
p
.
orderProduct
.
channel
,
auth_type
:
2
,
});
});
}
catch
(
error
)
{
console
.
log
(
error
);
return
system
.
getResult
(
null
,
`系统错误 错误信息
${
error
}
`
);
return
system
.
getResult
Fail
(
500
,
`系统错误 错误信息
${
error
}
`
);
}
}
async
bankThree
(
params
)
{
try
{
return
this
.
doAuth
(
params
);
let
idName
=
this
.
trim
(
params
.
idName
);
let
idNo
=
this
.
trim
(
params
.
idNo
).
toUpperCase
();
let
bankNo
=
this
.
trim
(
params
.
bankNo
);
if
(
!
idName
)
{
return
system
.
getResultFail
(
1000000
,
"姓名错误"
);
}
if
(
!
idNo
)
{
return
system
.
getResultFail
(
1000000
,
"身份证错误"
);
}
if
(
!
bankNo
)
{
return
system
.
getResultFail
(
1000000
,
"银行卡号错误"
);
}
params
.
apiName
=
"bankThree"
;
return
this
.
authentication
(
params
,
async
(
p
)
=>
{
let
validRes
=
await
this
.
enginesignSve
.
ThreeFactorVerification
({
id_name
:
idName
,
id_no
:
idNo
,
bank_no
:
bankNo
,
channel
:
p
.
orderProduct
.
channel
,
auth_type
:
2
,
});
return
validRes
;
});
}
catch
(
error
)
{
return
system
.
getResult
(
null
,
`系统错误 错误信息
${
error
}
`
);
}
}
async
bankFour
(
params
)
{
try
{
return
this
.
doAuth
(
params
);
let
idName
=
this
.
trim
(
params
.
idName
);
let
idNo
=
this
.
trim
(
params
.
idNo
).
toUpperCase
();
let
bankNo
=
this
.
trim
(
params
.
bankNo
);
let
mobile
=
this
.
trim
(
params
.
mobile
);
if
(
!
idName
)
{
return
system
.
getResultFail
(
1000000
,
"姓名错误"
);
}
if
(
!
idNo
)
{
return
system
.
getResultFail
(
1000000
,
"身份证错误"
);
}
if
(
!
bankNo
)
{
return
system
.
getResultFail
(
1000000
,
"银行卡号错误"
);
}
if
(
!
mobile
)
{
return
system
.
getResultFail
(
1000000
,
"银行卡号错误"
);
}
params
.
apiName
=
"bankFour"
;
return
this
.
authentication
(
params
,
async
(
p
)
=>
{
let
validRes
=
await
this
.
enginesignSve
.
FourFactorVerification
({
id_name
:
idName
,
id_no
:
idNo
,
bank_no
:
bankNo
,
mobile
:
mobile
,
channel
:
p
.
orderProduct
.
channel
,
auth_type
:
2
,
});
return
validRes
;
});
}
catch
(
error
)
{
return
system
.
getResult
(
null
,
`系统错误 错误信息
${
error
}
`
);
}
}
async
doAuth
(
params
)
{
let
orderProduct
=
params
.
orderProduct
;
async
authentication
(
params
,
validMethod
)
{
let
app
=
params
.
app
;
let
merchantId
=
app
.
merchant_id
;
// 获取订单产品
let
orderProduct
=
await
this
.
orderSve
.
getMerchantOrderProduct
(
merchantId
,
params
.
apiName
);
if
(
orderProduct
.
status
!==
0
)
{
return
orderProduct
;
}
orderProduct
=
orderProduct
.
data
;
params
.
orderProduct
=
orderProduct
;
// 扣费
let
tres
=
await
this
.
trade
(
orderProduct
);
let
tres
=
await
this
.
trade
(
params
);
if
(
tres
.
status
!==
0
)
{
return
tres
;
}
let
tradeLog
=
tres
.
data
.
tradeLog
;
let
trade
=
tres
.
data
.
trade
;
// 2. 调用认证引擎
// 3. 异步调用订单消费逻辑
// 2. 调用认证引擎
let
res
=
await
validMethod
(
params
);
let
pass
=
res
.
status
===
0
;
// 生成订单
let
logres
=
await
this
.
orderauthlogSve
.
saveEorderAuthLog
({
order_id
:
orderProduct
.
id
,
product_id
:
orderProduct
.
product_id
,
platform_name
:
app
.
name
,
platform_id
:
app
.
id
,
spended_num
:
trade
.
trade_amt
,
user_name
:
params
.
idName
,
// 使用方
actual_spend_name
:
app
.
merchant_name
,
// 实际使用方
engine_trade_id
:
trade
.
id
,
pass
:
pass
?
1
:
0
});
console
.
log
(
logres
);
// 4. 返回认证结果
return
system
.
getResultSuccess
({
pass
:
pass
},
res
.
msg
);
}
// 交易
async
trade
(
orderProduct
)
{
async
trade
(
params
)
{
let
orderProduct
=
params
.
orderProduct
;
let
trade_amt
=
1
;
if
(
orderProduct
==
2
)
{
trade_amt
=
Number
(
orderProduct
.
price
);
}
let
tradeLog
=
await
this
.
tradelogDao
.
create
({
requestid
:
params
.
requestid
,
merchant_id
:
orderProduct
.
merchant_id
,
product_id
:
orderProduct
.
product_id
,
product_specifications
:
orderProduct
.
product_specifications
,
trade_amt
:
trade_amt
,
result
:
0
,
});
let
tradeRes
=
await
this
.
feeSve
.
trade
({
account_id
:
orderProduct
.
engine_account_id
,
trade_amt
:
orderProduct
.
product_specifications
,
trade_amt
:
trade_amt
,
trade_no
:
tradeLog
.
id
,
trade_desc
:
"二要素验证"
,
});
...
...
@@ -81,10 +168,10 @@ class AuthService extends ServiceBase {
tradeLog
.
fee
=
0
;
tradeLog
.
fee_remark
=
"扣费失败,"
+
tradeRes
.
msg
;
await
tradeLog
.
save
();
return
system
.
getResult
(
1002001
,
"扣费失败,"
+
tradeRes
.
msg
);
return
system
.
getResult
Fail
(
1002001
,
"扣费失败,"
+
tradeRes
.
msg
);
}
else
{
tradeLog
.
result
=
1
;
tradeLog
.
fee
=
1
tradeLog
.
fee
=
1
;
tradeLog
.
fee_remark
=
"扣费成功"
;
await
tradeLog
.
save
();
}
...
...
esign-api/app/base/service/impl/sign/signSve.js
View file @
83227084
...
...
@@ -4,10 +4,35 @@ const ServiceBase = require("../../svems.base")
class
AuthService
extends
ServiceBase
{
constructor
()
{
super
();
this
.
feeSve
=
system
.
getObject
(
"service.fee.feeSve"
);
this
.
orderSve
=
system
.
getObject
(
"service.order.orderSve"
);
this
.
orderauthlogSve
=
system
.
getObject
(
"service.order.orderauthlogSve"
);
this
.
enginesignSve
=
system
.
getObject
(
"service.engine.enginesignSve"
);
this
.
tradelogDao
=
system
.
getObject
(
"db.common.tradelogDao"
);
}
async
createAccount
(
params
)
{
try
{
// 通过应用id查询商户订单信息,确定产品认证接口
// 验证参数
let
idName
=
this
.
trim
(
params
.
idName
);
let
idNo
=
this
.
trim
(
params
.
idNo
).
toUpperCase
();
let
mobile
=
this
.
trim
(
params
.
mobile
);
if
(
!
idName
)
{
return
system
.
getResultFail
(
1000000
,
"姓名错误"
);
}
if
(
!
idNo
)
{
return
system
.
getResultFail
(
1000000
,
"身份证错误"
);
}
params
.
apiName
=
"sign@"
;
return
this
.
operatorSign
(
params
,
async
(
p
)
=>
{
// 调用创建账户API
let
validRes
=
await
this
.
enginesignSve
.
createAccount
({
id_name
:
idName
,
id_no
:
idNo
,
mobile
:
mobile
,
channel
:
p
.
orderProduct
.
channel
,
});
return
validRes
;
});
}
catch
(
error
)
{
return
system
.
getResult
(
null
,
`系统错误 错误信息
${
error
}
`
);
}
...
...
@@ -24,6 +49,92 @@ class AuthService extends ServiceBase {
return
system
.
getResult
(
null
,
`系统错误 错误信息
${
error
}
`
);
}
}
async
operatorSign
(
params
,
operatorMethod
)
{
let
app
=
params
.
app
;
let
merchantId
=
app
.
merchant_id
;
let
isFee
=
params
.
isFee
;
// 获取订单产品
let
orderProduct
=
await
this
.
orderSve
.
getMerchantOrderProduct
(
merchantId
,
params
.
apiName
);
if
(
orderProduct
.
status
!==
0
)
{
return
orderProduct
;
}
orderProduct
=
orderProduct
.
data
;
params
.
orderProduct
=
orderProduct
;
// 扣费
let
tradeLog
;
let
trade
;
if
(
isFee
)
{
let
tres
=
await
this
.
trade
(
params
);
if
(
tres
.
status
!==
0
)
{
return
tres
;
}
trade
=
tres
.
data
.
trade
;
}
// 2. 调用签约引擎接口
let
res
=
await
operatorMethod
(
params
);
if
(
isFee
)
{
// 生成订单
let
logres
=
await
this
.
orderauthlogSve
.
saveEorderAuthLog
({
order_id
:
orderProduct
.
id
,
product_id
:
orderProduct
.
product_id
,
platform_name
:
app
.
name
,
platform_id
:
app
.
id
,
spended_num
:
trade
.
trade_amt
,
user_name
:
params
.
idName
,
// 使用方
actual_spend_name
:
app
.
merchant_name
,
// 实际使用方
engine_trade_id
:
trade
.
id
,
pass
:
pass
?
1
:
0
});
console
.
log
(
logres
);
}
// 4. 返回认证结果
return
system
.
getResultSuccess
(
"TODO 返回具体参数"
,
res
.
msg
);
}
// 交易
async
trade
(
params
)
{
let
orderProduct
=
params
.
orderProduct
;
let
trade_amt
=
1
;
if
(
orderProduct
==
2
)
{
trade_amt
=
Number
(
orderProduct
.
price
);
}
let
tradeLog
=
await
this
.
tradelogDao
.
create
({
requestid
:
params
.
requestid
,
merchant_id
:
orderProduct
.
merchant_id
,
product_id
:
orderProduct
.
product_id
,
trade_amt
:
trade_amt
,
result
:
0
,
});
let
tradeRes
=
await
this
.
feeSve
.
trade
({
account_id
:
orderProduct
.
engine_account_id
,
trade_amt
:
trade_amt
,
trade_no
:
tradeLog
.
id
,
trade_desc
:
"二要素验证"
,
});
if
(
tradeRes
.
status
!==
0
)
{
tradeLog
.
result
=
2
;
tradeLog
.
fee
=
0
;
tradeLog
.
fee_remark
=
"扣费失败,"
+
tradeRes
.
msg
;
await
tradeLog
.
save
();
return
system
.
getResultFail
(
1002001
,
"扣费失败,"
+
tradeRes
.
msg
);
}
else
{
tradeLog
.
result
=
1
;
tradeLog
.
fee
=
1
;
tradeLog
.
fee_remark
=
"扣费成功"
;
await
tradeLog
.
save
();
}
return
system
.
getResultSuccess
({
tradeLog
:
tradeLog
,
trade
:
tradeRes
.
data
})
}
}
module
.
exports
=
AuthService
;
\ 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