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
c8539172
Commit
c8539172
authored
Jan 03, 2020
by
赵庆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gsb
parent
2ad362b7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
320 additions
and
267 deletions
+320
-267
bpo-web/app/base/api/impl/entcontractApi.js
+83
-9
bpo-web/app/base/service/impl/entcontractSve.js
+237
-258
No files found.
bpo-web/app/base/api/impl/entcontractApi.js
View file @
c8539172
const
system
=
require
(
"../../system"
);
const
md5
=
require
(
"MD5"
);
class
EntcontractApi
{
constructor
()
{
this
.
entcontractSve
=
system
.
getObject
(
"service.entcontractSve"
);
this
.
ecompanybusiSve
=
system
.
getObject
(
"service.ecompanybusiSve"
);
this
.
idcardClient
=
system
.
getObject
(
"util.idcardClient"
);
this
.
utilesignbaoSve
=
system
.
getObject
(
"service.utilesignbaoSve"
);
}
async
autoSign
(
pobj
)
{
// 处理参数
var
param
=
{
name
:
this
.
trim
(
pobj
.
name
),
//甲方 必填
addr
:
this
.
trim
(
pobj
.
addr
),
//甲方地址
legal
:
this
.
trim
(
pobj
.
legal
),
//甲方法定代表人
contactName
:
this
.
trim
(
pobj
.
contactName
),
//甲方联系人
contactMobile
:
this
.
trim
(
pobj
.
contactMobile
),
//甲方 联系电话
ecid
:
this
.
trim
(
pobj
.
ecid
),
appId
:
this
.
trim
(
pobj
.
appId
),
userId
:
this
.
trim
(
pobj
.
userId
),
name
:
this
.
trim
(
pobj
.
firstAddr
),
//甲方 必填
addr
:
this
.
trim
(
pobj
.
firstAddr
),
//甲方地址
legal
:
this
.
trim
(
pobj
.
firstLegal
),
//甲方法定代表人
contactName
:
this
.
trim
(
pobj
.
firstContactName
),
//甲方联系人
contactMobile
:
this
.
trim
(
pobj
.
firstContactMobile
),
//甲方 联系电话
idName
:
this
.
trim
(
pobj
.
idName
),
//姓名
mobile
:
this
.
trim
(
pobj
.
mobile
),
//手机号
idNo
:
this
.
trim
(
pobj
.
idNo
),
//身份证
...
...
@@ -104,10 +108,10 @@ class EntcontractApi {
}
if
(
!
param
.
idNo
)
{
return
this
.
returnjson
(
-
1
,
"请提供该用户身份证号"
)
}
else
{
if
(
!
await
this
.
idcardClient
.
checkIDCard
(
param
.
idNo
))
{
return
this
.
returnjson
(
-
1
,
"身份证格式不正确"
);
}
}
else
{
if
(
!
await
this
.
idcardClient
.
checkIDCard
(
param
.
idNo
))
{
return
this
.
returnjson
(
-
1
,
"身份证格式不正确"
);
}
}
if
(
!
param
.
nonceStr
)
{
return
this
.
returnjson
(
-
1
,
"请提供随机码"
)
...
...
@@ -134,6 +138,7 @@ class EntcontractApi {
}
var
signStr
=
signArr
.
join
(
"&"
)
+
"&key="
+
busi
.
key
;
var
sign
=
md5
(
signStr
).
toUpperCase
();
console
.
log
(
sign
)
if
(
param
.
sign
!=
sign
)
{
return
this
.
returnjson
(
1001001
,
"签名错误"
);
}
...
...
@@ -146,6 +151,75 @@ class EntcontractApi {
}
}
async
sinedUsers3rd
(
obj
,
req
)
{
// 验证合法性
var
appId
=
obj
.
appId
;
var
nonceStr
=
obj
.
nonceStr
;
var
idNo
=
obj
.
idNo
;
var
startId
=
obj
.
startId
||
0
;
var
userId
=
obj
.
userId
||
""
;
var
pageSize
=
20
;
var
busi
=
await
this
.
ecompanybusiSve
.
findOne
({
appId
:
appId
});
if
(
!
busi
)
{
return
{
code
:
1001003
,
msg
:
"配置信息错误,请联系薪必果人员进行配置"
};
}
var
signArr
=
[];
signArr
.
push
(
"appId="
+
appId
);
signArr
.
push
(
"idNo="
+
idNo
);
signArr
.
push
(
"nonceStr="
+
nonceStr
);
signArr
.
push
(
"startId="
+
startId
);
signArr
.
push
(
"userId="
+
userId
);
signArr
.
push
(
"key="
+
busi
.
key
);
var
sign
=
md5
(
signArr
.
join
(
"&"
)).
toUpperCase
();
if
(
sign
!=
obj
.
sign
)
{
return
{
code
:
1001001
,
msg
:
"签名失败"
};
}
var
params
=
{
entcompanyId
:
busi
.
ecompany_id
,
startId
:
startId
,
idNo
:
idNo
,
pageSize
:
pageSize
,
userId3rd
:
userId
,
};
try
{
var
userList
=
await
this
.
entcontractSve
.
findSignedUses4Push
(
params
);
var
result
=
{
code
:
0
,
msg
:
"success"
,
};
result
.
data
=
userList
;
return
result
;
}
catch
(
e
)
{
var
result
=
{
code
:
500
,
msg
:
"接口异常"
};
console
.
log
(
e
.
stack
);
//日志记录
logCtl
.
error
({
optitle
:
"校验是否签约error"
,
op
:
"api/econtractApi/validContract"
,
content
:
e
.
stack
,
clientIp
:
req
.
clientIp
});
return
result
;
}
}
trim
(
o
)
{
if
(
!
o
)
{
return
""
;
...
...
bpo-web/app/base/service/impl/entcontractSve.js
View file @
c8539172
const
ServiceBase
=
require
(
"../sve.base"
);
var
settings
=
require
(
"../../../config/settings"
);
const
moment
=
require
(
'moment'
);
const
system
=
require
(
"../../system"
);
const
md5
=
require
(
"MD5"
);
...
...
@@ -15,18 +16,18 @@ class EntcontractService extends ServiceBase {
this
.
esealSve
=
system
.
getObject
(
"service.esealSve"
);
this
.
ejobapplySve
=
system
.
getObject
(
"service.ejobapplySve"
);
this
.
restClient
=
system
.
getObject
(
"util.restClient"
);
this
.
yzmerchantsignedDao
=
system
.
getObject
(
"db.yzmerchantsignedDao"
)
this
.
URL
=
"http://39.106.185.66:8000/merchant/busi/reg"
this
.
yzmerchantsignedDao
=
system
.
getObject
(
"db.yzmerchantsignedDao"
)
;
this
.
URL
=
"http://39.106.185.66:8000/merchant/busi/reg"
;
this
.
YZKEY
=
"4a112ce87c38464d8d454caf23b7b31f"
}
async
autoSign
(
params
)
{
var
ecid
=
params
.
ecid
;
var
unionId
=
params
.
appId
+
"_"
+
eci
d
;
var
unionId
=
params
.
appId
+
"_"
+
params
.
userI
d
;
// enttemplate 模板查询
var
etemplate
=
await
this
.
enttemplateSve
.
findById
(
ecid
);
// ecompany
var
e
company
=
await
this
.
entcompanyDao
.
findById
(
e
template
.
entcompany_id
);
var
e
nt
template
=
await
this
.
enttemplateSve
.
findById
(
ecid
);
// e
nt
company
var
e
ntcompany
=
await
this
.
entcompanyDao
.
findById
(
ent
template
.
entcompany_id
);
// p_user
var
user
=
await
this
.
userDao
.
findOne
({
unionId
:
unionId
,
...
...
@@ -36,6 +37,7 @@ class EntcontractService extends ServiceBase {
user
=
await
this
.
userDao
.
create
({
appkey
:
params
.
appId
,
unionId
:
unionId
,
userId3rd
:
params
.
userId
,
userName
:
params
.
idName
,
mobile
:
params
.
mobile
,
utype
:
0
,
...
...
@@ -62,13 +64,13 @@ class EntcontractService extends ServiceBase {
}
// c_entcontract
var
econtract
=
await
this
.
dao
.
findOne
({
var
e
nt
contract
=
await
this
.
dao
.
findOne
({
eflowstatus
:
'2'
,
usereaccount_id
:
eaccount
.
id
,
enttemplate_id
:
ecid
,
});
if
(
econtract
)
{
if
(
e
nt
contract
)
{
return
this
.
returnjson
(
0
,
"用户已经签约,请不要重复签约"
);
}
...
...
@@ -80,8 +82,6 @@ class EntcontractService extends ServiceBase {
cardno
:
eaccount
.
bankno
};
var
threeResult
=
await
this
.
utilesignbaoSve
.
bankthree
(
bankthreeParams
,
"bankinfoAuth"
);
// {"code":-110,"message":"手机号格式错误","data":{}}
//1成功,-110提示验证信息有误,-120亲,提供的信息不正确,请验证后再试!
console
.
log
(
"threeResult-----------------------------"
,
threeResult
);
if
(
!
threeResult
||
threeResult
.
code
==
-
120
)
{
return
this
.
returnjson
(
-
1
,
"银行三要素(姓名、身份证、银行卡号)验证失败"
);
...
...
@@ -91,7 +91,7 @@ class EntcontractService extends ServiceBase {
}
var
uidStr
=
await
this
.
getUidStr
(
8
,
36
);
var
thirdId
=
etemplate
.
id
+
"_"
+
eaccount
.
id
+
uidStr
;
var
thirdId
=
e
nt
template
.
id
+
"_"
+
eaccount
.
id
+
uidStr
;
//2.创建e签宝account 5.2.1 , 创建后save()
var
params
=
{
...
...
@@ -123,26 +123,22 @@ class EntcontractService extends ServiceBase {
await
eaccount
.
save
();
}
// 创建合同
fileurl、esignUrl 怎么赋值????????????
econtract
=
{
name
:
ecompany
.
name
,
// 创建合同
e
nt
contract
=
{
name
:
e
nt
company
.
name
,
eflowstatusname
:
"签约中"
,
eflowstatus
:
"1"
,
// begin_at: now,
// completed_at: now,
user_id
:
eaccount
.
user_id
,
usereaccount_id
:
eaccount
.
id
,
enttemplate_id
:
etemplate
.
id
,
entcompany_id
:
ecompany
.
id
,
// end_at: end,
enttemplate_id
:
enttemplate
.
id
,
entcompany_id
:
entcompany
.
id
,
};
econtract
=
await
this
.
create
(
econtract
);
// 创建印章id
var
sealId
=
ecompany
.
sealId
;
entcontract
=
await
this
.
create
(
entcontract
);
var
sealId
=
entcompany
.
sealId
;
let
today
=
new
Date
().
Format
(
"yyyy"
)
+
"年"
+
new
Date
().
Format
(
"MM"
)
+
"月"
+
new
Date
().
Format
(
"dd"
)
+
"日"
;
var
signParams
=
{
templateId
:
etemplate
.
templateid
,
//模板id,由创建模板接口调用返回的templateId 必填
name
:
etemplate
.
name
,
//合同模板名称 必填
templateId
:
e
nt
template
.
templateid
,
//模板id,由创建模板接口调用返回的templateId 必填
name
:
e
nt
template
.
name
,
//合同模板名称 必填
simpleFormFields
:
{
nameA
:
params
.
name
,
//甲方 必填
addressA
:
params
.
addr
,
//甲方地址
...
...
@@ -150,15 +146,15 @@ class EntcontractService extends ServiceBase {
agentA
:
params
.
contactName
,
//甲方联系人
agentMobileA
:
params
.
contactMobile
,
//甲方 联系电话
nameB
:
e
company
.
n
ame
,
//乙方 必填
addressB
:
ecompany
.
addr
,
//乙方 地址
representB
:
ecompany
.
legal
,
//乙方 法定代表人
agentB
:
ecompany
.
contactName
,
//乙方 联系人
agentMobileB
:
e
company
.
contactM
obile
,
//乙方 联系电话
nameB
:
e
account
.
userN
ame
,
//乙方 必填
addressB
:
e
nt
company
.
addr
,
//乙方 地址
representB
:
e
nt
company
.
legal
,
//乙方 法定代表人
agentB
:
e
nt
company
.
contactName
,
//乙方 联系人
agentMobileB
:
e
account
.
m
obile
,
//乙方 联系电话
bankNameB
:
ecompany
.
bankAccount
,
//账户名称
bank
:
ecompany
.
bankName
,
//开户行
bankNumB
:
ecompany
.
bankNo
,
//账号
bankNameB
:
e
nt
company
.
bankAccount
,
//账户名称
bank
:
e
nt
company
.
bankName
,
//开户行
bankNumB
:
e
nt
company
.
bankNo
,
//账号
signDate
:
today
,
//签约时间
signDateA
:
today
,
//甲方签约日期 必填
...
...
@@ -166,186 +162,32 @@ class EntcontractService extends ServiceBase {
}
};
var
ebaoAccountId
=
eaccount
.
eaccountid
;
//签署人账户id-- 必填
var
thirdOrderNo
=
econtract
.
id
;
//第三方流水号,通知回调使用---选填
var
thirdOrderNo
=
e
nt
contract
.
id
;
//第三方流水号,通知回调使用---选填
var
eBaoRedirectBossUrl
=
""
;
var
tt
=
await
this
.
utilesignbaoSve
.
userAutoSignContractNoTemplate
(
signParams
,
ebaoAccountId
,
thirdOrderNo
,
eBaoRedirectBossUrl
,
"econtractSve"
,
sealId
);
if
(
tt
&&
tt
.
data
&&
tt
.
code
==
1
)
{
econtract
.
eflowid
=
tt
.
data
.
flowId
;
econtract
.
edocid
=
tt
.
data
.
docId
;
econtract
.
eflowstatus
=
'2'
;
econtract
.
eflowstatusname
=
"已完成"
;
e
nt
contract
.
eflowid
=
tt
.
data
.
flowId
;
e
nt
contract
.
edocid
=
tt
.
data
.
docId
;
e
nt
contract
.
eflowstatus
=
'2'
;
e
nt
contract
.
eflowstatusname
=
"已完成"
;
var
signTime
=
new
Date
();
econtract
.
completed_at
=
signTime
;
econtract
.
begin_at
=
signTime
;
e
nt
contract
.
completed_at
=
signTime
;
e
nt
contract
.
begin_at
=
signTime
;
var
end_at
=
new
Date
();
end_at
.
setFullYear
(
end_at
.
getFullYear
()
+
1
);
econtract
.
end_at
=
end_at
;
e
nt
contract
.
end_at
=
end_at
;
await
econtract
.
save
();
this
.
syncSign
(
e
contract
.
id
);
await
e
nt
contract
.
save
();
// this.syncSign(ent
contract.id);
return
await
this
.
createMerchant
(
params
);
// return this.returnjson(0, "success", {
// contractId: econtract.id
// contractId: e
nt
contract.id
// });
}
return
this
.
returnjson
(
-
1
,
tt
.
message
||
"签约失败"
,
tt
.
code
);
}
async
syncSign
(
contractId
)
{
var
contract
=
await
this
.
dao
.
findById
(
contractId
);
if
(
!
contract
)
{
return
null
;
}
var
account
=
await
this
.
usereaccountDao
.
findById
(
contract
.
usereaccount_id
);
if
(
!
account
)
{
return
null
;
}
var
user
=
await
this
.
userDao
.
findById
(
account
.
user_id
);
var
busi
=
await
this
.
ecompanybusiDao
.
findOne
({
etemplate_id
:
contract
.
enttemplate_id
});
if
(
!
account
.
isPush
&&
busi
&&
busi
.
postsignurl
)
{
var
param
=
{
"appId"
:
busi
.
appId
,
"idNo"
:
account
.
personsSign
,
"idName"
:
account
.
userName
,
"bankNo"
:
account
.
bankno
,
"mobile"
:
account
.
mobile
,
"appId3rd"
:
user
.
appId3rd
||
""
,
"userCode3rd"
:
user
.
userCode3rd
||
""
,
"userId3rd"
:
user
.
userId3rd
||
""
,
"branchCode3rd"
:
user
.
branchCode3rd
||
""
,
"nonceStr"
:
await
this
.
getUidStr
(
16
),
"beginDate"
:
await
this
.
formateTime
(
contract
.
begin_at
),
"endDate"
:
await
this
.
formateTime
(
contract
.
end_at
),
}
if
(
!
user
.
userCode3rd
&&
!
user
.
userId3rd
)
{
param
.
openId
=
user
.
openId
;
}
if
(
this
.
ydCompanyIds
.
indexOf
(
contract
.
ecompany_id
)
>
-
1
)
{
param
.
pbType
=
"eSign"
;
}
var
signArr
=
[];
signArr
.
push
(
"appId="
+
param
.
appId
);
signArr
.
push
(
"appId3rd="
+
param
.
appId3rd
);
signArr
.
push
(
"bankNo="
+
param
.
bankNo
);
signArr
.
push
(
"beginDate="
+
param
.
beginDate
);
signArr
.
push
(
"branchCode3rd="
+
param
.
branchCode3rd
);
signArr
.
push
(
"endDate="
+
param
.
endDate
);
signArr
.
push
(
"idName="
+
param
.
idName
);
signArr
.
push
(
"idNo="
+
param
.
idNo
);
signArr
.
push
(
"mobile="
+
param
.
mobile
);
signArr
.
push
(
"nonceStr="
+
param
.
nonceStr
);
if
(
!
user
.
userCode3rd
&&
!
user
.
userId3rd
)
{
signArr
.
push
(
"openId="
+
param
.
openId
);
}
// if (contract.ecompany_id == 10173 || contract.ecompany_id == 10174 || contract.ecompany_id == 10175 || contract.ecompany_id == 10207) {
if
(
this
.
ydCompanyIds
.
indexOf
(
contract
.
ecompany_id
)
>
-
1
)
{
signArr
.
push
(
"pbType=eSign"
);
}
signArr
.
push
(
"userCode3rd="
+
param
.
userCode3rd
);
signArr
.
push
(
"userId3rd="
+
param
.
userId3rd
);
signArr
.
push
(
"key="
+
busi
.
key
);
param
.
sign
=
md5
(
signArr
.
join
(
"&"
)).
toUpperCase
();
console
.
log
(
JSON
.
stringify
(
param
));
var
rs
=
""
;
try
{
var
rs
=
await
this
.
restClient
.
execPost
(
param
,
busi
.
postsignurl
);
if
(
rs
.
stdout
)
{
let
rsData
=
JSON
.
parse
(
rs
.
stdout
);
if
(
rsData
.
code
==
"0"
||
rsData
.
code
==
"0000"
)
{
account
.
isPush
=
true
;
account
.
save
();
}
}
return
rs
.
stdout
;
}
catch
(
error
)
{
console
.
log
(
rs
,
"push sign url "
+
busi
.
postsignurl
,
"rs = "
+
rs
);
console
.
log
(
error
);
return
"error"
;
}
}
}
async
findSignedUses4Push
(
params
)
{
// var params = {
// ecompanyId: busi.ecompany_id,
// startId: startId,
// idNo: idNo,
// pageSize: pageSize,
// userId3rd: userId,
// userCode3rd: userCode,
// branchCode3rd: branchCode,
// };
var
sql
=
[];
sql
.
push
(
"SELECT t1.id,t1.begin_at as beginDate,t1.end_at as endDate,"
);
sql
.
push
(
"t2.userName AS idName, t2.mobile ,t2.`personsSign` AS idNo, t1.completed_at AS signTime, t2.bankno AS bankNo,"
);
sql
.
push
(
"t3.userId3rd, t3.userCode3rd, t3.branchCode3rd, t1.fileurl AS fileUrl"
);
sql
.
push
(
"FROM c_econtract t1"
);
sql
.
push
(
"INNER JOIN p_user_eaccount t2 ON t1.`usereaccount_id` = t2.`id`"
);
sql
.
push
(
"INNER JOIN p_user t3 ON t2.`user_id` = t3.`id`"
);
sql
.
push
(
"WHERE t1.id > :startId AND t1.`ecompany_id` = :ecompanyId AND t1.`eflowstatus` = '2' AND t1.`end_at`>= NOW()"
);
if
(
params
.
idNo
)
{
sql
.
push
(
"AND t2.`personsSign` = :idNo"
);
}
if
(
params
.
userId3rd
)
{
sql
.
push
(
"AND t3.`userId3rd` = :userId3rd"
);
}
if
(
params
.
userCode3rd
)
{
sql
.
push
(
"AND t3.`userCode3rd` = :userCode3rd"
);
}
if
(
params
.
branchCode3rd
)
{
sql
.
push
(
"AND t3.`branchCode3rd` = :branchCode3rd"
);
}
sql
.
push
(
"ORDER BY t1.id ASC LIMIT :pageSize "
);
var
list
=
await
this
.
dao
.
customQuery
(
sql
.
join
(
" "
),
params
);
for
(
var
item
of
list
)
{
item
.
signTime
=
await
this
.
formateTime
(
item
.
signTime
);
item
.
beginDate
=
await
this
.
formateTime
(
item
.
beginDate
);
item
.
endDate
=
await
this
.
formateTime
(
item
.
endDate
);
}
return
list
;
}
async
getUidStr
(
len
,
radix
)
{
var
chars
=
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
.
split
(
''
);
var
uuid
=
[],
i
;
radix
=
radix
||
chars
.
length
;
if
(
len
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
uuid
[
i
]
=
chars
[
0
|
Math
.
random
()
*
radix
];
}
else
{
var
r
;
uuid
[
8
]
=
uuid
[
13
]
=
uuid
[
18
]
=
uuid
[
23
]
=
'-'
;
uuid
[
14
]
=
'4'
;
for
(
i
=
0
;
i
<
36
;
i
++
)
{
if
(
!
uuid
[
i
])
{
r
=
0
|
Math
.
random
()
*
16
;
uuid
[
i
]
=
chars
[(
i
==
19
)
?
(
r
&
0x3
)
|
0x8
:
r
];
}
}
}
return
uuid
.
join
(
''
);
}
returnjson
(
code
,
msg
,
data
)
{
return
{
code
:
code
,
msg
:
msg
,
data
:
data
||
null
}
}
async
createMerchant
(
params
)
{
var
data
=
{
appId
:
"1202849621743763458"
,
...
...
@@ -412,7 +254,7 @@ class EntcontractService extends ServiceBase {
});
var
reso
=
JSON
.
parse
(
rtn
.
stdout
);
if
(
!
erchants
)
{
this
.
yzmerchantsignedDao
.
create
({
this
.
yzmerchantsignedDao
.
create
({
companyName
:
params
.
name
,
appId
:
reso
.
data
.
appId
,
mchtId
:
reso
.
data
.
mchtId
,
...
...
@@ -434,12 +276,12 @@ class EntcontractService extends ServiceBase {
async
autoSignToPer
(
params
)
{
var
ecid
=
params
.
ecid
;
var
unionId
=
params
.
appId
+
"_"
+
params
.
userId
+
params
.
userCode
+
params
.
branchCode
;
// ecid etemplate
var
e
template
=
await
this
.
e
templateSve
.
findById
(
ecid
);
var
unionId
=
params
.
appId
+
"_"
+
params
.
userId
;
// ecid e
nt
template
var
e
nttemplate
=
await
this
.
ent
templateSve
.
findById
(
ecid
);
// ecompany
var
e
company
=
await
this
.
ecompanyDao
.
findById
(
etemplate
.
e
company_id
);
// e
nt
company
var
e
ntcompany
=
await
this
.
entcompanyDao
.
findById
(
enttemplate
.
ent
company_id
);
// p_user
var
user
=
await
this
.
userDao
.
findOne
({
...
...
@@ -474,23 +316,23 @@ class EntcontractService extends ServiceBase {
eaccount
=
await
this
.
usereaccountDao
.
create
(
eaccount
);
}
// c_econtract
var
econtract
=
await
this
.
dao
.
findOne
({
// c_e
nt
contract
var
e
nt
contract
=
await
this
.
dao
.
findOne
({
eflowstatus
:
'2'
,
usereaccount_id
:
eaccount
.
id
,
etemplate_id
:
ecid
,
e
nt
template_id
:
ecid
,
});
if
(
econtract
)
{
if
(
e
nt
contract
)
{
return
this
.
returnjson
(
0
,
"用户已经签约"
,
{
contractId
:
econtract
.
id
contractId
:
e
nt
contract
.
id
});
}
// e签宝流程
if
(
isNeedCreate
)
{
var
uidStr
=
await
this
.
getUidStr
(
8
,
36
);
var
thirdId
=
etemplate
.
id
+
"_"
+
eaccount
.
id
+
uidStr
;
var
thirdId
=
e
nt
template
.
id
+
"_"
+
eaccount
.
id
+
uidStr
;
//2.创建e签宝account 5.2.1 , 创建后save()
var
params
=
{
...
...
@@ -523,82 +365,218 @@ class EntcontractService extends ServiceBase {
}
// 创建合同 fileurl、esignUrl 怎么赋值????????????
econtract
=
{
name
:
e
company
.
name
,
e
nt
contract
=
{
name
:
e
nttemplate
.
name
,
eflowstatusname
:
"签约中"
,
eflowstatus
:
"1"
,
// begin_at: now,
// completed_at: now,
user_id
:
eaccount
.
user_id
,
usereaccount_id
:
eaccount
.
id
,
etemplate_id
:
etemplate
.
id
,
ecompany_id
:
ecompany
.
id
,
// end_at: end,
enttemplate_id
:
enttemplate
.
id
,
entcompany_id
:
enttemplate
.
id
,
};
econtract
=
await
this
.
create
(
econtract
);
// 创建印章id
var
sealId
=
""
;
var
eseal
=
await
this
.
esealSve
.
findOne
({
nameA
:
etemplate
.
nameA
});
// 生产环境需要打开
if
(
!
eseal
)
{
// var accountId = ""; // 测试
var
rs
=
await
this
.
utilesignbaoSve
.
creatEntSignet
(
settings
.
apiconfig
.
companyAccountId
(),
etemplate
.
nameA
+
"alias"
,
etemplate
.
nameA
,
""
,
""
,
"econtractSve"
);
// var rs = await this.utilesignbaoSve.creatEntSignet("740b19e0799a4d7abacfa1a31fb72b1e", etemplate.nameA + "alias", etemplate.nameA, "", "", "econtractSve");
if
(
rs
&&
rs
.
code
==
1
)
{
sealId
=
rs
.
data
.
sealId
;
await
this
.
esealSve
.
create
({
nameA
:
etemplate
.
nameA
,
sealId
:
sealId
,
});
}
else
{
return
this
.
returnjson
(
-
1
,
"生成印章错误"
);
}
}
else
{
sealId
=
eseal
.
sealId
;
}
let
today
=
new
Date
().
Format
(
"yyyy-MM-dd"
);
entcontract
=
await
this
.
create
(
entcontract
);
var
sealId
=
entcompany
.
sealId
;
// var eseal = await this.esealSve.findOne({
// nameA: enttemplate.nameA
// });
// // 生产环境需要打开
// if (!eseal) {
// // var accountId = ""; // 测试
//
// var rs = await this.utilesignbaoSve.creatEntSignet(settings.apiconfig.companyAccountId(), enttemplate.nameA + "alias", enttemplate.nameA, "", "", "econtractSve");
// // var rs = await this.utilesignbaoSve.creatEntSignet("740b19e0799a4d7abacfa1a31fb72b1e", enttemplate.nameA + "alias", enttemplate.nameA, "", "", "econtractSve");
// if (rs && rs.code == 1) {
// sealId = rs.data.sealId;
// await this.esealSve.create({
// nameA: enttemplate.nameA,
// sealId: sealId,
// });
// } else {
// return this.returnjson(-1, "生成印章错误");
// }
// } else {
// sealId = eseal.sealId;
// }
let
today
=
new
Date
().
Format
(
"yyyy"
)
+
"年"
+
new
Date
().
Format
(
"MM"
)
+
"月"
+
new
Date
().
Format
(
"dd"
)
+
"日"
;
var
signParams
=
{
templateId
:
etemplate
.
templateid
,
//模板id,由创建模板接口调用返回的templateId 必填
name
:
ecompany
.
name
,
//合同模板名称 必填
templateId
:
e
nt
template
.
templateid
,
//模板id,由创建模板接口调用返回的templateId 必填
name
:
e
nt
company
.
name
,
//合同模板名称 必填
simpleFormFields
:
{
nameA
:
e
template
.
nameA
,
//甲方 必填
nameA
:
e
ntcompany
.
legal
,
//甲方 必填
nameB
:
eaccount
.
userName
,
//乙方 必填
unit
:
ecompany
.
name
,
//合作单位(国美) 必填---------------------------超出长度风险---目前不知多少长度
unit
:
e
nt
company
.
name
,
//合作单位(国美) 必填---------------------------超出长度风险---目前不知多少长度
signDateA
:
today
,
//甲方签约日期 必填
signDateB
:
today
//乙方签约日期 必填
}
};
var
ebaoAccountId
=
eaccount
.
eaccountid
;
//签署人账户id-- 必填
var
thirdOrderNo
=
econtract
.
id
;
//第三方流水号,通知回调使用---选填
var
thirdOrderNo
=
e
nt
contract
.
id
;
//第三方流水号,通知回调使用---选填
var
eBaoRedirectBossUrl
=
""
;
var
tt
=
await
this
.
utilesignbaoSve
.
userAutoSignContractNoTemplate
(
signParams
,
ebaoAccountId
,
thirdOrderNo
,
eBaoRedirectBossUrl
,
"econtractSve"
,
sealId
);
if
(
tt
&&
tt
.
data
&&
tt
.
code
==
1
)
{
econtract
.
eflowid
=
tt
.
data
.
flowId
;
econtract
.
edocid
=
tt
.
data
.
docId
;
econtract
.
eflowstatus
=
'2'
;
econtract
.
eflowstatusname
=
"已完成"
;
e
nt
contract
.
eflowid
=
tt
.
data
.
flowId
;
e
nt
contract
.
edocid
=
tt
.
data
.
docId
;
e
nt
contract
.
eflowstatus
=
'2'
;
e
nt
contract
.
eflowstatusname
=
"已完成"
;
var
signTime
=
new
Date
();
econtract
.
completed_at
=
signTime
;
econtract
.
begin_at
=
signTime
;
e
nt
contract
.
completed_at
=
signTime
;
e
nt
contract
.
begin_at
=
signTime
;
var
end_at
=
new
Date
();
end_at
.
setFullYear
(
end_at
.
getFullYear
()
+
1
);
econtract
.
end_at
=
end_at
;
e
nt
contract
.
end_at
=
end_at
;
await
econtract
.
save
();
this
.
syncSign
(
e
contract
.
id
);
await
e
nt
contract
.
save
();
//this.syncSign(ent
contract.id);
return
this
.
returnjson
(
0
,
"success"
,
{
contractId
:
econtract
.
id
contractId
:
e
nt
contract
.
id
});
}
return
this
.
returnjson
(
-
1
,
tt
.
message
||
"签约失败"
,
tt
.
code
);
}
async
syncSign
(
contractId
)
{
var
contract
=
await
this
.
dao
.
findById
(
contractId
);
if
(
!
contract
)
{
return
null
;
}
var
account
=
await
this
.
usereaccountDao
.
findById
(
contract
.
usereaccount_id
);
if
(
!
account
)
{
return
null
;
}
var
user
=
await
this
.
userDao
.
findById
(
account
.
user_id
);
var
busi
=
await
this
.
ecompanybusiDao
.
findOne
({
etemplate_id
:
contract
.
enttemplate_id
});
if
(
!
account
.
isPush
&&
busi
&&
busi
.
postsignurl
)
{
var
param
=
{
"appId"
:
busi
.
appId
,
"idNo"
:
account
.
personsSign
,
"idName"
:
account
.
userName
,
"bankNo"
:
account
.
bankno
,
"mobile"
:
account
.
mobile
,
"appId3rd"
:
user
.
appId3rd
||
""
,
"userCode3rd"
:
user
.
userCode3rd
||
""
,
"userId3rd"
:
user
.
userId3rd
||
""
,
"branchCode3rd"
:
user
.
branchCode3rd
||
""
,
"nonceStr"
:
await
this
.
getUidStr
(
16
),
"beginDate"
:
await
this
.
formateTime
(
contract
.
begin_at
),
"endDate"
:
await
this
.
formateTime
(
contract
.
end_at
),
};
if
(
!
user
.
userCode3rd
&&
!
user
.
userId3rd
)
{
param
.
openId
=
user
.
openId
;
}
if
(
this
.
ydCompanyIds
.
indexOf
(
contract
.
entcompany_id
)
>
-
1
)
{
param
.
pbType
=
"eSign"
;
}
var
signArr
=
[];
signArr
.
push
(
"appId="
+
param
.
appId
);
signArr
.
push
(
"appId3rd="
+
param
.
appId3rd
);
signArr
.
push
(
"bankNo="
+
param
.
bankNo
);
signArr
.
push
(
"beginDate="
+
param
.
beginDate
);
signArr
.
push
(
"branchCode3rd="
+
param
.
branchCode3rd
);
signArr
.
push
(
"endDate="
+
param
.
endDate
);
signArr
.
push
(
"idName="
+
param
.
idName
);
signArr
.
push
(
"idNo="
+
param
.
idNo
);
signArr
.
push
(
"mobile="
+
param
.
mobile
);
signArr
.
push
(
"nonceStr="
+
param
.
nonceStr
);
if
(
!
user
.
userCode3rd
&&
!
user
.
userId3rd
)
{
signArr
.
push
(
"openId="
+
param
.
openId
);
}
// if (contract.ecompany_id == 10173 || contract.ecompany_id == 10174 || contract.ecompany_id == 10175 || contract.ecompany_id == 10207) {
if
(
this
.
ydCompanyIds
.
indexOf
(
contract
.
entcompany_id
)
>
-
1
)
{
signArr
.
push
(
"pbType=eSign"
);
}
signArr
.
push
(
"userCode3rd="
+
param
.
userCode3rd
);
signArr
.
push
(
"userId3rd="
+
param
.
userId3rd
);
signArr
.
push
(
"key="
+
busi
.
key
);
param
.
sign
=
md5
(
signArr
.
join
(
"&"
)).
toUpperCase
();
console
.
log
(
JSON
.
stringify
(
param
));
var
rs
=
""
;
try
{
var
rs
=
await
this
.
restClient
.
execPost
(
param
,
busi
.
postsignurl
);
if
(
rs
.
stdout
)
{
let
rsData
=
JSON
.
parse
(
rs
.
stdout
);
if
(
rsData
.
code
==
"0"
||
rsData
.
code
==
"0000"
)
{
account
.
isPush
=
true
;
account
.
save
();
}
}
return
rs
.
stdout
;
}
catch
(
error
)
{
console
.
log
(
rs
,
"push sign url "
+
busi
.
postsignurl
,
"rs = "
+
rs
);
console
.
log
(
error
);
return
"error"
;
}
}
}
async
findSignedUses4Push
(
params
)
{
var
sql
=
[];
sql
.
push
(
"SELECT t1.id,t1.begin_at as beginDate,t1.end_at as endDate,"
);
sql
.
push
(
"t2.userName AS idName, t2.mobile ,t2.`personsSign` AS idNo, t1.completed_at AS signTime, t2.bankno AS bankNo,"
);
sql
.
push
(
"t3.userId3rd, t3.userCode3rd, t3.branchCode3rd, t1.fileurl AS fileUrl"
);
sql
.
push
(
"FROM c_entcontract t1"
);
sql
.
push
(
"INNER JOIN p_user_eaccount t2 ON t1.`usereaccount_id` = t2.`id`"
);
sql
.
push
(
"INNER JOIN p_user t3 ON t2.`user_id` = t3.`id`"
);
sql
.
push
(
"WHERE t1.id > :startId AND t1.`entcompany_id` = :entcompanyId AND t1.`eflowstatus` = '2' AND t1.`end_at`>= NOW()"
);
if
(
params
.
idNo
)
{
sql
.
push
(
"AND t2.`personsSign` = :idNo"
);
}
if
(
params
.
userId3rd
)
{
sql
.
push
(
"AND t3.`userId3rd` = :userId3rd"
);
}
if
(
params
.
userCode3rd
)
{
sql
.
push
(
"AND t3.`userCode3rd` = :userCode3rd"
);
}
if
(
params
.
branchCode3rd
)
{
sql
.
push
(
"AND t3.`branchCode3rd` = :branchCode3rd"
);
}
sql
.
push
(
"ORDER BY t1.id ASC LIMIT :pageSize "
);
var
list
=
await
this
.
dao
.
customQuery
(
sql
.
join
(
" "
),
params
);
for
(
var
item
of
list
)
{
item
.
signTime
=
await
this
.
formateTime
(
item
.
signTime
);
item
.
beginDate
=
await
this
.
formateTime
(
item
.
beginDate
);
item
.
endDate
=
await
this
.
formateTime
(
item
.
endDate
);
}
return
list
;
}
async
getUidStr
(
len
,
radix
)
{
var
chars
=
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
.
split
(
''
);
var
uuid
=
[],
i
;
radix
=
radix
||
chars
.
length
;
if
(
len
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
uuid
[
i
]
=
chars
[
0
|
Math
.
random
()
*
radix
];
}
else
{
var
r
;
uuid
[
8
]
=
uuid
[
13
]
=
uuid
[
18
]
=
uuid
[
23
]
=
'-'
;
uuid
[
14
]
=
'4'
;
for
(
i
=
0
;
i
<
36
;
i
++
)
{
if
(
!
uuid
[
i
])
{
r
=
0
|
Math
.
random
()
*
16
;
uuid
[
i
]
=
chars
[(
i
==
19
)
?
(
r
&
0x3
)
|
0x8
:
r
];
}
}
}
return
uuid
.
join
(
''
);
}
returnjson
(
code
,
msg
,
data
)
{
return
{
code
:
code
,
msg
:
msg
,
data
:
data
||
null
}
}
}
module
.
exports
=
EntcontractService
;
\ 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