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
eed25f4a
Commit
eed25f4a
authored
Aug 01, 2020
by
王昆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gsb
parent
1d520c59
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
201 additions
and
21 deletions
+201
-21
bpo-web/app/base/controller/impl/cwxsignapiCtl.js
+33
-19
bpo-web/app/base/service/impl/econtractSve.js
+166
-0
bpo-web/app/config/settings.js
+2
-2
No files found.
bpo-web/app/base/controller/impl/cwxsignapiCtl.js
View file @
eed25f4a
...
...
@@ -4,6 +4,7 @@ const CtlBase = require("../ctl.base");
const
uuidv4
=
require
(
'uuid/v4'
);
const
moment
=
require
(
'moment'
);
const
md5
=
require
(
"MD5"
);
const
uuidv1
=
require
(
'uuid/v1'
);
class
CWxSignApiCtl
extends
CtlBase
{
constructor
()
{
...
...
@@ -169,7 +170,7 @@ class CWxSignApiCtl extends CtlBase {
signInfo
=
await
this
.
cwxsigninfoSve
.
create
(
signInfo
);
// 异步签约
this
.
doSign
(
api
,
signInfo
,
params
);
await
this
.
doSign
(
api
,
signInfo
,
params
);
// openId回调
let
rs
=
{};
...
...
@@ -297,31 +298,44 @@ class CWxSignApiCtl extends CtlBase {
}
async
doSign
(
api
,
signInfo
,
params
)
{
let
res
;
if
(
api
.
app_type
==
1
)
{
// 普票签
// let res = await this.doSign2(api, signInfo, params);
res
=
await
this
.
dkcontractSve
.
autoSignNew
({
let
key
=
`
${
api
.
app_id
}
_
${
params
.
idNo
}
`
;
let
_lock
=
uuidv1
();
await
this
.
redisLock
.
lock
(
key
,
_lock
,
20
);
try
{
let
res
;
let
signParams
=
{
appId
:
"wxsign_"
+
api
.
app_id
,
ecid
:
api
.
ecid
,
userId
:
signInfo
.
id
,
userId
:
signInfo
.
userId
||
""
,
idName
:
params
.
idName
,
idNo
:
params
.
idNo
,
bankno
:
params
.
bankNo
,
mobile
:
params
.
mobile
,
});
if
(
res
.
code
==
0
)
{
signInfo
.
contract_id
=
res
.
data
.
contractId
;
signInfo
.
save
();
}
}
else
if
(
api
.
app_type
==
2
)
{
// 专票签
await
this
.
doSign3
(
api
,
signInfo
,
params
);
}
else
{
}
// 返回结果
if
(
api
.
wx_notify_url
)
{
// TODO 回调给接入方,时间不够,暂未实现
if
(
api
.
app_type
==
1
)
{
// 普票签
// let res = await this.doSign2(api, signInfo, params);
res
=
await
this
.
dkcontractSve
.
autoSignNew
(
signParams
);
if
(
res
.
code
==
0
)
{
signInfo
.
contract_id
=
res
.
data
.
contractId
;
signInfo
.
save
();
}
}
else
if
(
api
.
app_type
==
2
)
{
// 专票签
res
=
await
this
.
econtractSve
.
autoSignWX
(
signParams
);
if
(
res
.
code
==
0
)
{
signInfo
.
contract_id
=
res
.
data
.
contractId
;
signInfo
.
save
();
}
}
else
{
}
// 返回结果
if
(
api
.
wx_notify_url
)
{
// TODO 回调给接入方,时间不够,暂未实现
}
}
catch
(
e
)
{
}
finally
{
await
this
.
redisLock
.
unLock
(
key
,
_lock
);
}
}
...
...
bpo-web/app/base/service/impl/econtractSve.js
View file @
eed25f4a
...
...
@@ -2656,6 +2656,172 @@ class EcontractService extends ServiceBase {
return
this
.
returnjson
(
-
1
,
tt
.
message
||
"签约失败"
,
tt
.
code
);
}
async
autoSignWX
(
params
){
let
ecid
=
params
.
ecid
;
// 验证身份证是否签约过
let
todays
=
moment
().
format
(
"YYYY-MM-DD"
)
+
" 00:00:00"
;
let
contractId
=
await
this
.
dao
.
findSignedContractId
({
idno
:
params
.
idNo
,
ecid
:
ecid
,
today
:
todays
})
||
0
;
if
(
contractId
)
{
return
this
.
returnjson
(
0
,
"用户已经签约"
,
{
contractId
:
contractId
});
}
// ecid etemplate
var
etemplate
=
await
this
.
etemplateSve
.
findById
(
ecid
);
// ecompany
var
ecompany
=
await
this
.
ecompanyDao
.
findById
(
etemplate
.
ecompany_id
);
// p_user
var
unionId
=
params
.
appId
+
"_"
+
params
.
idNo
;
var
user
=
await
this
.
userDao
.
findOne
({
unionId
:
unionId
,
});
if
(
!
user
)
{
user
=
await
this
.
userDao
.
create
({
appkey
:
params
.
appId
,
unionId
:
unionId
,
userId3rd
:
params
.
userId
,
userName
:
params
.
idName
,
mobile
:
params
.
mobile
,
utype
:
0
,
});
}
// p_user_eaccount
var
eaccount
=
await
this
.
usereaccountDao
.
findOne
({
user_id
:
user
.
id
,
personsSign
:
params
.
idNo
,
})
||
{};
var
isNeedCreate
=
!
eaccount
.
eaccountid
||
eaccount
.
userName
!=
params
.
idName
||
eaccount
.
mobile
!=
params
.
mobile
||
eaccount
.
bankno
!=
params
.
bankno
;
eaccount
.
user_id
=
user
.
id
;
eaccount
.
userName
=
params
.
idName
;
eaccount
.
mobile
=
params
.
mobile
;
eaccount
.
bankno
=
params
.
bankno
;
eaccount
.
personsSign
=
params
.
idNo
;
if
(
eaccount
.
id
)
{
await
eaccount
.
save
();
}
else
{
eaccount
=
await
this
.
usereaccountDao
.
create
(
eaccount
);
}
// e签宝流程
if
(
isNeedCreate
)
{
var
uidStr
=
await
this
.
getUidStr
(
8
,
36
);
var
thirdId
=
etemplate
.
id
+
"_"
+
eaccount
.
id
+
uidStr
;
//2.创建e签宝account 5.2.1 , 创建后save()
var
params
=
{
thirdId
:
thirdId
,
name
:
eaccount
.
userName
,
idNo
:
eaccount
.
personsSign
,
idType
:
19
,
mobile
:
eaccount
.
mobile
};
var
getAccount
=
await
this
.
utilesignbaoSve
.
createAccountId
(
params
,
"econtractSve"
);
if
(
getAccount
&&
getAccount
.
code
==
1
&&
getAccount
.
data
)
{
eaccount
.
eaccountid
=
getAccount
.
data
.
accountId
;
await
eaccount
.
save
();
}
else
{
return
this
.
returnjson
(
-
1
,
"账户创建失败"
);
}
}
// 3.设置静默签署授权 5.2.5
if
(
!
eaccount
.
isGrantAuto
)
{
var
paramsGrant
=
{
grantAccountId
:
eaccount
.
eaccountid
};
var
grantAuto
=
await
this
.
utilesignbaoSve
.
grantAuthorization
(
paramsGrant
,
"econtractSve"
);
if
(
grantAuto
.
code
!=
1
)
{
return
this
.
returnjson
(
-
1
,
"静默签署设置失败"
);
}
eaccount
.
isGrantAuto
=
true
;
await
eaccount
.
save
();
}
// 创建合同 fileurl、esignUrl 怎么赋值????????????
let
econtract
=
{
name
:
ecompany
.
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,
};
econtract
=
await
this
.
create
(
econtract
);
// 创建印章id
var
sealId
=
""
;
var
eseal
=
await
this
.
esealSve
.
findOne
({
nameA
:
etemplate
.
nameA
});
// 生产环境需要打开
if
(
!
eseal
)
{
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"
);
var
signParams
=
{
templateId
:
etemplate
.
templateid
,
//模板id,由创建模板接口调用返回的templateId 必填
name
:
ecompany
.
name
,
//合同模板名称 必填
simpleFormFields
:
{
nameA
:
etemplate
.
nameA
,
//甲方 必填
nameB
:
eaccount
.
userName
,
//乙方 必填
unit
:
ecompany
.
name
,
//合作单位(国美) 必填---------------------------超出长度风险---目前不知多少长度
signDateA
:
today
,
//甲方签约日期 必填
signDateB
:
today
//乙方签约日期 必填
}
};
var
ebaoAccountId
=
eaccount
.
eaccountid
;
//签署人账户id-- 必填
var
thirdOrderNo
=
econtract
.
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
=
"已完成"
;
var
signTime
=
new
Date
();
econtract
.
completed_at
=
signTime
;
econtract
.
begin_at
=
signTime
;
var
end_at
=
new
Date
();
end_at
.
setFullYear
(
end_at
.
getFullYear
()
+
1
);
econtract
.
end_at
=
end_at
;
await
econtract
.
save
();
this
.
syncSign
(
econtract
.
id
);
// TODO DOWNLOAD OK
this
.
redisClient
.
rpushBCD
({
id
:
econtract
.
id
,
sve
:
"e"
});
return
this
.
returnjson
(
0
,
"success"
,
{
contractId
:
econtract
.
id
});
}
return
this
.
returnjson
(
-
1
,
tt
.
message
||
"签约失败"
,
tt
.
code
);
}
returnjson
(
code
,
msg
,
data
)
{
return
{
code
:
code
,
...
...
bpo-web/app/config/settings.js
View file @
eed25f4a
...
...
@@ -63,8 +63,8 @@ var settings = {
if
(
settings
.
env
==
"dev"
)
{
return
"http://39.106.185.66:8000"
;
}
else
{
//
return "https://pay.gongsibao.com";
return
"http://39.106.185.66:8000"
;
return
"https://pay.gongsibao.com"
;
//
return "http://39.106.185.66:8000";
}
},
opLogUrl
:
function
()
{
...
...
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