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
6b0b50c3
Commit
6b0b50c3
authored
Jun 06, 2020
by
王昆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gsb
parent
15dc7119
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
512 additions
and
8 deletions
+512
-8
bpo-web/app/base/db/dao.base.js
+25
-0
bpo-web/app/base/db/impl/lduserDao.js
+6
-0
bpo-web/app/base/db/impl/lduserbankDao.js
+14
-0
bpo-web/app/base/service/impl/lduserSve.js
+9
-0
bpo-web/app/base/service/impl/lduserbankSve.js
+7
-0
bpo-web/app/base/wxapplet/impl/ldApplet.js
+451
-8
No files found.
bpo-web/app/base/db/dao.base.js
View file @
6b0b50c3
...
@@ -186,6 +186,31 @@ class Dao{
...
@@ -186,6 +186,31 @@ class Dao{
}
}
return
this
.
db
.
query
(
sql
,
tmpParas
);
return
this
.
db
.
query
(
sql
,
tmpParas
);
}
}
async
customUpdate
(
sql
,
paras
,
t
)
{
var
tmpParas
=
null
;
if
(
t
&&
t
!=
'undefined'
)
{
if
(
paras
==
null
||
paras
==
'undefined'
)
{
tmpParas
=
{
type
:
this
.
db
.
QueryTypes
.
UPDATE
};
tmpParas
.
transaction
=
t
;
}
else
{
tmpParas
=
{
replacements
:
paras
,
type
:
this
.
db
.
QueryTypes
.
UPDATE
};
tmpParas
.
transaction
=
t
;
}
}
else
{
tmpParas
=
paras
==
null
||
paras
==
'undefined'
?
{
type
:
this
.
db
.
QueryTypes
.
UPDATE
}
:
{
replacements
:
paras
,
type
:
this
.
db
.
QueryTypes
.
UPDATE
};
}
return
this
.
db
.
query
(
sql
,
tmpParas
);
}
async
findCount
(
whereObj
=
null
){
async
findCount
(
whereObj
=
null
){
return
this
.
model
.
count
(
whereObj
,
{
logging
:
false
}).
then
(
c
=>
{
return
this
.
model
.
count
(
whereObj
,
{
logging
:
false
}).
then
(
c
=>
{
return
c
;
return
c
;
...
...
bpo-web/app/base/db/impl/lduserDao.js
View file @
6b0b50c3
...
@@ -5,6 +5,12 @@ class LDUserDao extends Dao {
...
@@ -5,6 +5,12 @@ class LDUserDao extends Dao {
constructor
()
{
constructor
()
{
super
(
Dao
.
getModelName
(
LDUserDao
));
super
(
Dao
.
getModelName
(
LDUserDao
));
}
}
async
updateBalance
(
id
,
amt
)
{
let
sql
=
`UPDATE
${
this
.
model
.
tableName
}
SET p_user_balance = p_user_balance + :amt WHERE id = :id AND p_user_balance + :amt >= 0`
;
let
rs
=
await
this
.
customUpdate
(
sql
,
{
id
:
id
,
amt
:
amt
});
return
rs
;
}
}
}
module
.
exports
=
LDUserDao
;
module
.
exports
=
LDUserDao
;
bpo-web/app/base/db/impl/lduserbankDao.js
View file @
6b0b50c3
...
@@ -5,6 +5,20 @@ class LDUserBankDao extends Dao {
...
@@ -5,6 +5,20 @@ class LDUserBankDao extends Dao {
constructor
()
{
constructor
()
{
super
(
Dao
.
getModelName
(
LDUserBankDao
));
super
(
Dao
.
getModelName
(
LDUserBankDao
));
}
}
async
listByCondition
(
params
)
{
let
sql
=
[];
sql
.
push
(
"SELECT"
);
sql
.
push
(
params
.
attrs
||
"*"
);
sql
.
push
(
"FROM"
);
sql
.
push
(
this
.
model
.
tableName
);
sql
.
push
(
"WHERE 1 = 1"
);
if
(
params
.
user_id
)
{
sql
.
push
(
"AND user_id = :user_id"
);
}
return
await
this
.
customQuery
(
sql
.
join
(
" "
),
params
);
}
}
}
module
.
exports
=
LDUserBankDao
;
module
.
exports
=
LDUserBankDao
;
bpo-web/app/base/service/impl/lduserSve.js
View file @
6b0b50c3
...
@@ -10,12 +10,20 @@ class LDUserService extends ServiceBase {
...
@@ -10,12 +10,20 @@ class LDUserService extends ServiceBase {
async
loginH5
(
params
)
{
async
loginH5
(
params
)
{
let
p_id
=
params
.
p_id
;
let
p_id
=
params
.
p_id
;
let
p_user_id
=
params
.
p_user_id
;
let
p_user_id
=
params
.
p_user_id
;
let
p_user_balance
=
system
.
y2f
(
params
.
p_user_balance
);
let
user
=
await
this
.
dao
.
findOne
({
p_id
:
p_id
,
p_user_id
:
p_user_id
});
let
user
=
await
this
.
dao
.
findOne
({
p_id
:
p_id
,
p_user_id
:
p_user_id
});
if
(
!
user
)
{
if
(
!
user
)
{
user
=
await
this
.
dao
.
create
(
params
);
user
=
await
this
.
dao
.
create
(
params
);
}
else
{
user
.
p_user_balance
=
p_user_balance
;
user
.
save
();
}
}
return
user
;
return
user
;
}
}
async
updateBalance
(
id
,
balance
)
{
return
await
this
.
dao
.
updateBalance
(
id
,
balance
);
}
}
}
module
.
exports
=
LDUserService
;
module
.
exports
=
LDUserService
;
\ No newline at end of file
bpo-web/app/base/service/impl/lduserbankSve.js
View file @
6b0b50c3
...
@@ -6,6 +6,12 @@ class LDUserBankService extends ServiceBase {
...
@@ -6,6 +6,12 @@ class LDUserBankService extends ServiceBase {
constructor
()
{
constructor
()
{
super
(
ServiceBase
.
getDaoName
(
LDUserBankService
));
super
(
ServiceBase
.
getDaoName
(
LDUserBankService
));
}
}
async
listByCondition
(
params
)
{
let
rs
=
await
this
.
dao
.
listByCondition
(
params
);
return
rs
;
}
}
}
module
.
exports
=
LDUserBankService
;
module
.
exports
=
LDUserBankService
;
\ No newline at end of file
bpo-web/app/base/wxapplet/impl/ldApplet.js
View file @
6b0b50c3
...
@@ -4,6 +4,9 @@ const settings = require("../../../config/settings");
...
@@ -4,6 +4,9 @@ const settings = require("../../../config/settings");
const
AppletBase
=
require
(
"../applet.base"
);
const
AppletBase
=
require
(
"../applet.base"
);
const
logCtl
=
system
.
getObject
(
"web.oplogCtl"
);
const
logCtl
=
system
.
getObject
(
"web.oplogCtl"
);
const
uuidv4
=
require
(
'uuid/v4'
);
const
uuidv4
=
require
(
'uuid/v4'
);
const
axios
=
require
(
'axios'
);
const
moment
=
require
(
'moment'
);
const
md5
=
require
(
'md5'
);
class
LDApplet
extends
AppletBase
{
class
LDApplet
extends
AppletBase
{
constructor
()
{
constructor
()
{
...
@@ -13,18 +16,28 @@ class LDApplet extends AppletBase {
...
@@ -13,18 +16,28 @@ class LDApplet extends AppletBase {
this
.
lduserbankSve
=
system
.
getObject
(
"service.lduserbankSve"
);
this
.
lduserbankSve
=
system
.
getObject
(
"service.lduserbankSve"
);
this
.
ldusertradeSve
=
system
.
getObject
(
"service.ldusertradeSve"
);
this
.
ldusertradeSve
=
system
.
getObject
(
"service.ldusertradeSve"
);
this
.
esettleSve
=
system
.
getObject
(
"service.esettleSve"
);
this
.
esettleSve
=
system
.
getObject
(
"service.esettleSve"
);
this
.
econtractSve
=
system
.
getObject
(
"service.econtractSve"
);
this
.
userSve
=
system
.
getObject
(
"service.userSve"
);
this
.
usereaccountSve
=
system
.
getObject
(
"service.usereaccountSve"
);
this
.
ecompanySve
=
system
.
getObject
(
"service.ecompanySve"
);
this
.
etemplateSve
=
system
.
getObject
(
"service.etemplateSve"
);
this
.
utilesignbaoSve
=
system
.
getObject
(
"service.utilesignbaoSve"
);
this
.
esealSve
=
system
.
getObject
(
"service.esealSve"
);
this
.
redisClient
=
system
.
getObject
(
"util.redisClient"
);
this
.
redisClient
=
system
.
getObject
(
"util.redisClient"
);
}
}
//************************************************************公共参数处理********************开始***************************************
//************************************************************公共参数处理********************开始***************************************
//验证公共参数信息
//验证公共参数信息
async
getLogin
User
(
req
)
{
async
getLogin
Info
(
req
)
{
let
sid
=
req
.
headers
[
"ldh5sid"
]
||
""
;
let
sid
=
req
.
headers
[
"ldh5sid"
]
||
""
;
try
{
try
{
let
user
=
JSON
.
parse
(
await
this
.
redisClient
.
get
(
sid
+
"_user"
));
let
user
=
JSON
.
parse
(
await
this
.
redisClient
.
get
(
sid
+
"_user"
));
let
mcht
=
JSON
.
parse
(
this
.
redisClient
.
get
(
sid
+
"_mcht"
));
let
mcht
=
JSON
.
parse
(
await
this
.
redisClient
.
get
(
sid
+
"_mcht"
));
if
(
user
&&
user
.
id
)
{
if
(
!
user
||
!
mcht
)
{
return
;
}
if
(
user
.
id
)
{
await
this
.
addLoginCache
(
"LD_H5_LOGIN_"
+
user
.
id
,
sid
,
user
,
mcht
);
await
this
.
addLoginCache
(
"LD_H5_LOGIN_"
+
user
.
id
,
sid
,
user
,
mcht
);
}
}
return
{
user
:
user
,
mcht
:
mcht
};
return
{
user
:
user
,
mcht
:
mcht
};
...
@@ -39,7 +52,7 @@ class LDApplet extends AppletBase {
...
@@ -39,7 +52,7 @@ class LDApplet extends AppletBase {
"partner"
:
"1"
,
"partner"
:
"1"
,
"user_id"
:
"1"
,
"user_id"
:
"1"
,
"mchtId"
:
"1103817785420820481"
,
"mchtId"
:
"1103817785420820481"
,
"balance"
:
"50"
"balance"
:
"50
00
"
};
};
let
en
=
system
.
encryption
(
JSON
.
stringify
(
key
));
let
en
=
system
.
encryption
(
JSON
.
stringify
(
key
));
...
@@ -53,12 +66,22 @@ class LDApplet extends AppletBase {
...
@@ -53,12 +66,22 @@ class LDApplet extends AppletBase {
await
this
.
redisClient
.
delete
(
sid
+
"_mcht"
);
await
this
.
redisClient
.
delete
(
sid
+
"_mcht"
);
}
}
async
addLoginCache
(
uk
,
sid
,
mcht
,
user
)
{
async
addLoginCache
(
uk
,
sid
,
user
,
mcht
)
{
await
this
.
redisClient
.
setWithEx
(
uk
,
sid
,
60
*
60
);
await
this
.
redisClient
.
setWithEx
(
uk
,
sid
,
60
*
60
);
await
this
.
redisClient
.
setWithEx
(
sid
+
"_user"
,
JSON
.
stringify
(
user
),
6
*
60
*
60
);
await
this
.
redisClient
.
setWithEx
(
sid
+
"_user"
,
JSON
.
stringify
(
user
),
6
*
60
*
60
);
await
this
.
redisClient
.
setWithEx
(
sid
+
"_mcht"
,
JSON
.
stringify
(
mcht
),
6
*
60
*
60
);
await
this
.
redisClient
.
setWithEx
(
sid
+
"_mcht"
,
JSON
.
stringify
(
mcht
),
6
*
60
*
60
);
}
}
async
resetLoginCache
(
req
)
{
let
sid
=
req
.
headers
[
"ldh5sid"
]
||
""
;
let
user
=
JSON
.
parse
(
await
this
.
redisClient
.
get
(
sid
+
"_user"
));
let
mcht
=
JSON
.
parse
(
await
this
.
redisClient
.
get
(
sid
+
"_mcht"
));
user
=
await
this
.
lduserSve
.
findById
(
user
.
id
);
mcht
=
await
this
.
esettleSve
.
findMchtApiInfo
({
mchtId
:
mcht
.
mchtId
});
await
this
.
redisClient
.
setWithEx
(
sid
+
"_user"
,
JSON
.
stringify
(
user
),
6
*
60
*
60
);
await
this
.
redisClient
.
setWithEx
(
sid
+
"_mcht"
,
JSON
.
stringify
(
mcht
),
6
*
60
*
60
);
}
async
setLogin
(
user
,
mcht
)
{
async
setLogin
(
user
,
mcht
)
{
let
uk
=
"LD_H5_LOGIN_"
+
user
.
id
;
let
uk
=
"LD_H5_LOGIN_"
+
user
.
id
;
let
sid
=
await
this
.
redisClient
.
get
(
uk
);
let
sid
=
await
this
.
redisClient
.
get
(
uk
);
...
@@ -66,10 +89,12 @@ class LDApplet extends AppletBase {
...
@@ -66,10 +89,12 @@ class LDApplet extends AppletBase {
await
this
.
removeLoginCache
(
uk
,
sid
);
await
this
.
removeLoginCache
(
uk
,
sid
);
}
}
sid
=
uuidv4
();
sid
=
uuidv4
();
await
this
.
addLoginCache
(
uk
,
sid
,
mcht
,
user
);
sid
=
"8200962a-2e9a-4a82-a352-3f0813e8489e-"
+
user
.
id
;
await
this
.
addLoginCache
(
uk
,
sid
,
user
,
mcht
);
return
sid
;
return
sid
;
}
}
async
login
(
query
,
body
,
req
)
{
async
login
(
query
,
body
,
req
)
{
let
data
=
body
.
data
;
let
data
=
body
.
data
;
if
(
!
data
)
{
if
(
!
data
)
{
...
@@ -105,9 +130,13 @@ class LDApplet extends AppletBase {
...
@@ -105,9 +130,13 @@ class LDApplet extends AppletBase {
return
system
.
getErrResult2
(
`登录失败,未开通合作`
);
return
system
.
getErrResult2
(
`登录失败,未开通合作`
);
}
}
let
user
=
await
this
.
lduserSve
.
loginH5
({
p_id
:
partner
.
id
,
p_user_id
:
loginInfo
.
user_id
});
let
user
=
await
this
.
lduserSve
.
loginH5
({
p_id
:
partner
.
id
,
p_user_id
:
loginInfo
.
user_id
,
p_user_balance
:
Number
(
loginInfo
.
balance
||
0
)
});
let
sid
=
await
this
.
setLogin
(
user
,
partner
,
mcht
);
let
sid
=
await
this
.
setLogin
(
user
,
mcht
);
return
system
.
getResult2
({
return
system
.
getResult2
({
sid
:
sid
,
sid
:
sid
,
user
:
user
user
:
user
...
@@ -118,6 +147,419 @@ class LDApplet extends AppletBase {
...
@@ -118,6 +147,419 @@ class LDApplet extends AppletBase {
}
}
}
}
async
loginUser
(
query
,
body
,
req
)
{
let
loginInfo
=
await
this
.
getLoginInfo
(
req
);
if
(
!
loginInfo
)
{
return
system
.
getErrResult2
(
"登录过期,请重新登录"
);
}
loginInfo
.
user
.
p_user_balance
=
system
.
f2y
(
loginInfo
.
user
.
p_user_balance
);
return
system
.
getResult2
(
loginInfo
.
user
);
}
async
saveSignInfo
(
query
,
body
,
req
)
{
let
loginInfo
=
await
this
.
getLoginInfo
(
req
);
if
(
!
loginInfo
)
{
return
system
.
getErrResult2
(
"登录过期,请重新登录"
);
}
let
p_user_name
=
this
.
trim
(
body
.
p_user_name
);
let
p_user_idno
=
this
.
trim
(
body
.
p_user_idno
).
toUpperCase
();
let
p_user_bank_name
=
this
.
trim
(
body
.
p_user_bank_name
);
let
p_user_bank_no
=
this
.
trim
(
body
.
p_user_bank_no
);
let
p_user_mobile
=
this
.
trim
(
body
.
p_user_mobile
);
if
(
!
p_user_name
)
{
return
system
.
getErrResult2
(
"请输入真实姓名"
);
}
if
(
!
p_user_idno
)
{
return
system
.
getErrResult2
(
"请输入您的身份证号"
);
}
if
(
!
p_user_bank_name
)
{
return
system
.
getErrResult2
(
"请输入开户行"
);
}
if
(
!
p_user_bank_no
)
{
return
system
.
getErrResult2
(
"请输入您的银行卡号"
);
}
if
(
!
p_user_mobile
)
{
return
system
.
getErrResult2
(
"请输入您的手机号码"
);
}
let
lduser
=
await
this
.
lduserSve
.
findById
(
loginInfo
.
user
.
id
);
if
(
lduser
.
econtract_id
)
{
let
ak47
=
await
this
.
econtractSve
.
findById
(
lduser
.
econtract_id
);
return
system
.
getResult2
(
ak47
.
esignUrl
);
}
let
bankParams
=
{
name
:
p_user_name
,
idno
:
p_user_idno
.
toUpperCase
(),
cardno
:
p_user_bank_no
,
mobile
:
p_user_mobile
,
};
let
tt
=
await
this
.
utilesignbaoSve
.
bankfour
(
bankParams
,
"ldApplet.saveSignInfo"
)
||
{};
console
.
log
(
"threeResult-----------------------------"
,
tt
);
if
(
!
tt
||
tt
.
code
==
-
120
)
{
return
system
.
getErrResult2
(
"银行四要素(姓名、身份证、银行卡号、手机号)验证失败"
);
}
if
(
tt
.
code
==
-
110
)
{
return
system
.
getErrResult2
(
"银行四要素验证失败"
);
}
lduser
.
p_user_name
=
p_user_name
;
lduser
.
p_user_idno
=
p_user_idno
;
lduser
.
p_user_bank_name
=
p_user_bank_name
;
lduser
.
p_user_bank_no
=
p_user_bank_no
;
lduser
.
p_user_mobile
=
p_user_mobile
;
lduser
=
await
lduser
.
save
();
let
signInfo
=
await
this
.
genSignUrl
(
lduser
);
lduser
.
econtract_id
=
signInfo
.
contract
.
id
;
lduser
.
is_sign
=
true
;
lduser
=
await
lduser
.
save
();
try
{
await
this
.
redisClient
.
setWithEx
(
req
.
headers
[
"ldh5sid"
]
+
"_user"
,
JSON
.
stringify
(
lduser
),
6
*
60
*
60
);
let
b
=
{
user_id
:
loginInfo
.
user
.
id
,
bank_user_name
:
p_user_name
,
bank_user_idno
:
p_user_idno
,
bank_name
:
p_user_bank_name
,
bank_no
:
p_user_bank_no
,
}
let
exist
=
await
this
.
lduserbankSve
.
findOne
(
b
);
if
(
!
exist
)
{
await
this
.
lduserbankSve
.
create
(
b
);
}
}
catch
(
e
)
{
console
.
log
(
e
.
stack
);
}
return
system
.
getResult2
(
signInfo
.
signUrl
);
}
async
contract
(
query
,
body
,
req
)
{
let
loginInfo
=
await
this
.
getLoginInfo
(
req
);
if
(
!
loginInfo
)
{
return
system
.
getErrResult2
(
"登录过期,请重新登录"
);
}
let
u
=
await
this
.
lduserSve
.
findById
(
loginInfo
.
user
.
id
);
let
contract
=
await
this
.
econtractSve
.
findInfo
({
id
:
u
.
econtract_id
});
return
system
.
getResult2
(
contract
);
}
async
genSignUserInfo
(
lduser
)
{
let
unionId
=
`LD_
${
lduser
.
p_id
}
_
${
lduser
.
id
}
`
;
let
user
=
await
this
.
userSve
.
findOne
({
unionId
:
unionId
});
if
(
!
user
)
{
user
=
await
this
.
userSve
.
create
({
appkey
:
lduser
.
p_id
,
unionId
:
unionId
,
userId3rd
:
lduser
.
id
,
userName
:
lduser
.
p_user_name
,
mobile
:
lduser
.
p_user_mobile
,
utype
:
0
,
});
}
let
eaccount
=
await
this
.
usereaccountSve
.
findOne
({
user_id
:
user
.
id
,
personsSign
:
lduser
.
p_user_idno
});
if
(
!
eaccount
)
{
eaccount
=
{};
eaccount
.
user_id
=
user
.
id
;
eaccount
.
userName
=
lduser
.
p_user_name
;
eaccount
.
mobile
=
lduser
.
p_user_mobile
;
eaccount
.
bankno
=
lduser
.
p_user_bank_no
;
eaccount
.
personsSign
=
lduser
.
p_user_idno
;
eaccount
=
await
this
.
usereaccountSve
.
create
(
eaccount
);
}
if
(
!
eaccount
.
eaccountid
)
{
//创建e签宝account 5.2.1 , 创建后save()
var
params
=
{
thirdId
:
`
${
unionId
}
_
${
eaccount
.
id
}
`
,
name
:
eaccount
.
userName
,
idNo
:
eaccount
.
personsSign
,
idType
:
19
,
mobile
:
eaccount
.
mobile
};
let
tt
=
await
this
.
utilesignbaoSve
.
createAccountId
(
params
,
"userCtl"
);
console
.
log
(
tt
,
"----------------------------------------------------tt------------ "
);
if
(
tt
&&
tt
.
code
==
1
&&
tt
.
data
)
{
console
.
log
(
tt
.
code
,
"----------------------------------------tt.code------------------------ "
);
eaccount
.
eaccountid
=
tt
.
data
.
accountId
;
await
eaccount
.
save
();
}
}
return
{
user
:
user
,
eaccount
:
eaccount
};
}
async
genSignUrl
(
lduser
)
{
let
partner
=
await
this
.
ldpartnerSve
.
findById
(
lduser
.
p_id
);
let
etemplateid
=
partner
.
ecid
;
let
etemplate
=
await
this
.
etemplateSve
.
findById
(
etemplateid
);
let
company
=
await
this
.
ecompanySve
.
findById
(
etemplate
.
ecompany_id
);
let
signUserInfo
=
await
this
.
genSignUserInfo
(
lduser
);
let
user
=
signUserInfo
.
user
;
let
eaccount
=
signUserInfo
.
eaccount
;
let
contract
=
{
name
:
company
.
name
,
etemplate_id
:
etemplateid
,
user_id
:
user
.
id
,
usereaccount_id
:
eaccount
.
id
,
ecompany_id
:
etemplate
.
ecompany_id
,
edocid
:
""
,
eflowid
:
""
,
esignUrl
:
""
,
eflowstatus
:
"1"
,
isInsure
:
false
,
};
contract
=
await
this
.
econtractSve
.
create
(
contract
);
let
today
=
new
Date
().
Format
(
"yyyy-MM-dd"
);
let
nameA
=
etemplate
.
nameA
;
let
eseal
=
await
this
.
esealSve
.
findOne
({
nameA
:
nameA
});
var
sealId
=
""
;
if
(
!
eseal
)
{
let
rs
=
await
this
.
utilesignbaoSve
.
creatEntSignet
(
settings
.
apiconfig
.
companyAccountId
(),
nameA
+
"alias"
,
nameA
,
""
,
""
,
"econtractCtl"
);
if
(
rs
&&
rs
.
code
==
1
)
{
sealId
=
rs
.
data
.
sealId
;
await
this
.
esealSve
.
create
({
nameA
:
nameA
,
sealId
:
sealId
,
});
}
else
{
return
system
.
getErrResult2
(
"签约失败, 生成印章错误"
);
}
}
else
{
sealId
=
eseal
.
sealId
;
}
let
params
=
{
templateId
:
etemplate
.
templateid
,
//模板id,由创建模板接口调用返回的templateId 必填
name
:
company
.
name
,
//合同模板名称 必填
simpleFormFields
:
{
nameA
:
nameA
,
//甲方 必填
nameB
:
eaccount
.
userName
,
//乙方 必填
unit
:
company
.
name
,
//合作单位(国美) 必填---------------------------超出长度风险---目前不知多少长度
signDateA
:
today
,
//甲方签约日期 必填
signDateB
:
today
//乙方签约日期 必填
}
};
let
ebaoAccountId
=
eaccount
.
eaccountid
;
//签署人账户id-- 必填
let
thirdOrderNo
=
contract
.
id
;
//第三方流水号,通知回调使用---选填
let
eBaoRedirectBossUrl
=
"https://bpotrade.gongsibao.com"
;
console
.
log
({
params
:
params
,
ebaoAccountId
:
ebaoAccountId
,
thirdOrderNo
:
thirdOrderNo
},
"-============= params ==========================="
);
let
tt
=
await
this
.
utilesignbaoSve
.
userSignContractNoTemplate
(
params
,
ebaoAccountId
,
thirdOrderNo
,
eBaoRedirectBossUrl
,
"ldApplet"
,
sealId
);
console
.
log
(
tt
,
"-============= result ==========================="
);
if
(
tt
&&
tt
.
code
==
1
)
{
contract
.
eflowid
=
tt
.
data
.
flowId
;
contract
.
edocid
=
tt
.
data
.
docId
;
contract
.
esignUrl
=
tt
.
data
.
signUrl
;
contract
.
save
();
return
{
contract
:
contract
,
signUrl
:
contract
.
esignUrl
,
}
}
return
null
;
}
async
saveBank
(
query
,
body
,
req
)
{
let
loginInfo
=
await
this
.
getLoginInfo
(
req
);
if
(
!
loginInfo
)
{
return
system
.
getErrResult2
(
"登录过期,请重新登录"
);
}
let
bank_user_name
=
this
.
trim
(
body
.
bank_user_name
);
let
bank_user_idno
=
this
.
trim
(
body
.
bank_user_idno
).
toUpperCase
();
let
bank_name
=
this
.
trim
(
body
.
bank_name
);
let
bank_no
=
this
.
trim
(
body
.
bank_no
);
if
(
!
bank_user_name
)
{
return
system
.
getErrResult2
(
"请填写真实姓名"
);
}
if
(
!
bank_user_idno
)
{
return
system
.
getErrResult2
(
"请填写身份证号码"
);
}
if
(
!
bank_no
)
{
return
system
.
getErrResult2
(
"请填写银行卡号"
);
}
let
bankParams
=
{
name
:
bank_user_name
,
idno
:
bank_user_idno
,
cardno
:
bank_no
,
};
let
bp
=
{
user_id
:
loginInfo
.
user
.
id
,
bank_user_name
:
bank_user_name
,
bank_user_idno
:
bank_user_idno
,
bank_name
:
bank_name
,
bank_no
:
bank_no
,
}
let
exists
=
await
this
.
lduserbankSve
.
create
(
bp
);
if
(
exists
)
{
return
system
.
getResult2
(
exists
);
}
let
tt
=
await
this
.
utilesignbaoSve
.
bankthree
(
bankParams
,
"ldApplet.saveSignInfo"
)
||
{};
console
.
log
(
"threeResult-----------------------------"
,
tt
);
if
(
!
tt
||
tt
.
code
==
-
120
)
{
return
system
.
getErrResult2
(
"银行三要素(姓名、身份证、银行卡号)验证失败"
);
}
if
(
tt
.
code
==
-
110
)
{
return
system
.
getErrResult2
(
"银行三要素验证失败"
);
}
let
bank
=
await
this
.
lduserbankSve
.
create
({
user_id
:
loginInfo
.
user
.
id
,
bank_user_name
:
bank_user_name
,
bank_user_idno
:
bank_user_idno
,
bank_name
:
bank_name
,
bank_no
:
bank_no
,
});
return
system
.
getResult2
(
bank
);
}
async
bankList
(
query
,
body
,
req
)
{
let
loginInfo
=
await
this
.
getLoginInfo
(
req
);
if
(
!
loginInfo
)
{
return
system
.
getErrResult2
(
"登录过期,请重新登录"
);
}
let
list
=
await
this
.
lduserbankSve
.
listByCondition
({
user_id
:
loginInfo
.
user
.
id
});
for
(
let
b
of
list
)
{
b
.
bank_no
=
b
.
bank_no
.
replace
(
/^
(\d{4})\d
+
(\d{4})
$/
,
"*****$2"
);
}
return
system
.
getResult2
(
list
);
}
async
cashOut
(
query
,
body
,
req
)
{
let
loginInfo
=
await
this
.
getLoginInfo
(
req
);
if
(
!
loginInfo
)
{
return
system
.
getErrResult2
(
"登录过期,请重新登录"
);
}
let
amt
=
Number
(
system
.
y2f
(
this
.
trim
(
body
.
amt
)));
let
bank_id
=
Number
(
this
.
trim
(
body
.
bank_id
));
if
(
amt
==
0
)
{
return
system
.
getErrResult2
(
"请输入提现金额"
);
}
if
(
!
bank_id
)
{
return
system
.
getErrResult2
(
"请选择提现银行卡"
);
}
let
bank
=
await
this
.
lduserbankSve
.
findById
(
bank_id
);
if
(
!
bank
)
{
return
system
.
getErrResult2
(
`银行卡[
${
bank_id
}
]不存在`
);
}
let
lduser
=
await
this
.
lduserSve
.
findById
(
loginInfo
.
user
.
id
);
if
(
amt
>
lduser
.
p_user_balance
)
{
return
system
.
getErrResult2
(
"提现金额超出余额,请重新输入"
);
}
// 查mcht
let
mcht
=
await
this
.
esettleSve
.
findMchtApiInfo
({
mchtId
:
loginInfo
.
mcht
.
mchtId
});
if
(
!
mcht
)
{
return
system
.
getErrResult2
(
"用户商户错误,请重新登录"
);
}
try
{
// 生成trade
let
trade
=
await
this
.
ldusertradeSve
.
create
({
p_id
:
lduser
.
p_id
,
user_id
:
lduser
.
id
,
amt
:
amt
,
trade_status
:
"01"
,
complete_time
:
new
Date
()
});
// 更新用户余额
let
ubrs
=
await
this
.
lduserSve
.
updateBalance
(
lduser
.
id
,
amt
*
-
1
);
console
.
log
(
ubrs
);
lduser
=
await
this
.
lduserSve
.
findById
(
lduser
.
id
);
// 生成out_trade_no
trade
.
out_trade_no
=
`LD_H5APP_
${
trade
.
user_id
}
_
${
trade
.
id
}
`
;
await
trade
.
save
();
// 发起交易
let
bizContent
=
[];
bizContent
.
push
({
"note"
:
"提现"
,
"idType"
:
"00"
,
"idName"
:
bank
.
bank_user_name
,
"seqNo"
:
"1000"
,
"accNo"
:
bank
.
bank_no
,
"mobile"
:
lduser
.
p_user_mobile
,
"amt"
:
Number
(
amt
),
"accType"
:
"00"
,
"idNo"
:
bank
.
bank_user_idno
});
// mchtId, t1.`company_name` AS companyName, t2.`main_id` AS mainId, t3.id AS appId, t3.secret
// var now = moment().add(30, 'seconds').format('YYYYMMDDHHmmss');
let
nonceStr
=
await
this
.
getUidStr
(
20
,
36
);
let
tradeTime
=
moment
().
format
(
'YYYYMMDDHHmmss'
);
var
param
=
{
"appId"
:
mcht
.
appId
,
"currency"
:
"CNY"
,
"mchtId"
:
mcht
.
mchtId
,
"nonceStr"
:
nonceStr
,
"notityUrl"
:
"https://bpohhr.gongsibao.com/api/econtractApi/transferNotify"
,
"outTradeNo"
:
trade
.
out_trade_no
,
"signType"
:
"MD5"
,
"tradeTime"
:
tradeTime
,
"bizContent"
:
bizContent
,
}
// now
let
signArr
=
[];
signArr
.
push
(
"appId="
+
param
.
appId
);
signArr
.
push
(
"currency="
+
param
.
currency
);
signArr
.
push
(
"mchtId="
+
param
.
mchtId
);
signArr
.
push
(
"nonceStr="
+
param
.
nonceStr
);
signArr
.
push
(
"notityUrl="
+
param
.
notityUrl
);
signArr
.
push
(
"outTradeNo="
+
param
.
outTradeNo
);
signArr
.
push
(
"signType="
+
param
.
signType
);
signArr
.
push
(
"tradeTime="
+
param
.
tradeTime
);
signArr
.
push
(
"key="
+
mcht
.
secret
);
param
.
sign
=
md5
(
signArr
.
join
(
"&"
)).
toUpperCase
();
console
.
log
(
JSON
.
stringify
(
param
));
try
{
let
rs
=
await
axios
({
method
:
'post'
,
url
:
"https://pay.gongsibao.com/merchant/order/transfer"
,
data
:
param
,
});
if
(
rs
.
data
.
code
===
0
)
{
trade
.
trade_status
=
"00"
;
await
trade
.
save
();
await
this
.
redisClient
.
setWithEx
(
req
.
headers
[
"ldh5sid"
]
+
"_user"
,
JSON
.
stringify
(
lduser
),
6
*
60
*
60
);
return
system
.
getResult2
(
"提现成功"
);
}
console
.
log
(
rs
.
data
);
}
catch
(
error
)
{
console
.
log
(
error
);
// 发起失败,删除trade
}
}
catch
(
e
)
{
console
.
log
(
e
);
}
return
system
.
getResult2
(
"提现成功,稍后到账"
);
}
async
tradeNotify
()
{
}
}
}
module
.
exports
=
LDApplet
;
module
.
exports
=
LDApplet
;
\ 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