Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-mvp
Project
Project
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
fangxinjiang
yifu-mvp
Commits
017b5d76
Commit
017b5d76
authored
Oct 17, 2025
by
fangxinjiang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/MVP1.7.16' into MVP1.7.16
parents
655cc466
66b6fe4b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
105 additions
and
40 deletions
+105
-40
FascController.java
...loud/plus/v1/yifu/archives/controller/FascController.java
+27
-40
FascService.java
...yifu/cloud/plus/v1/yifu/archives/service/FascService.java
+2
-0
FascServiceImpl.java
...d/plus/v1/yifu/archives/service/impl/FascServiceImpl.java
+23
-0
FascUtil.java
.../com/yifu/cloud/plus/v1/yifu/archives/utils/FascUtil.java
+53
-0
No files found.
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/controller/FascController.java
View file @
017b5d76
...
@@ -99,41 +99,19 @@ public class FascController {
...
@@ -99,41 +99,19 @@ public class FascController {
return
fascService
.
urgeTask
(
id
);
return
fascService
.
urgeTask
(
id
);
}
}
/**
* @param id 合同待签订任务记录表TEmployeeContractPre:id
* @Description: 获取附件
* @Author: hgw
* @Date: 2025/10/13 17:24
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation
(
description
=
"获取附件"
)
@GetMapping
(
"/getFileByRequestId"
)
public
R
<
String
>
getFileByRequestId
(
@RequestParam
String
id
)
throws
ApiException
{
return
fascService
.
getFileByRequestId
(
id
);
}
// 法大大回调
/*@ResponseBody
@PostMapping(value = "/api/fascCallback")
public String fddEventCallback(@RequestHeader HttpHeaders headers,
@RequestParam("bizContent") String bizContent) throws Exception {
//appSecret,由开发者登陆到法大大官网,在应用管理管理中点击应用详情里面获取
String appSecret = "xxxx";
//获取请求头参数
String appId = headers.getFirst("X-FASC-App-Id");
String signType = headers.getFirst("X-FASC-Sign-Type");
String sign = headers.getFirst("X-FASC-Sign");
String timestamp = headers.getFirst("X-FASC-Timestamp");
//事件名称,开发者可以根据不同事件名称去解析bizContent的值,实现不同的逻辑
String event = headers.getFirst("X-FASC-Event");
String nonce = headers.getFirst("X-FASC-Nonce");
//验签
Map<String, String> paramMap = new HashMap<>();
paramMap.put("X-FASC-App-Id", appId);
paramMap.put("X-FASC-Sign-Type", "HMAC-SHA256");
paramMap.put("X-FASC-Timestamp", timestamp);
paramMap.put("X-FASC-Nonce", nonce);
paramMap.put("X-FASC-Event", event);
paramMap.put("bizContent", bizContent);
//参数排序,ascii码排序
String sortParam = FddCryptUtil.sortParameters(paramMap);
//生成签名后可以进行校验
String signature = FddCryptUtil.sign(sortParam, timestamp, appSecret);
if(!signature.equals(sign)) {
//log.error("日志记录,签名失败");
//为了不重复接收该请求,建议这里返回success,返回success后这条消息法大大将中断重试回调机制
return "{\"code\":\"200\";\"msg\":\"success\"}";
}
return "{\"code\":\"200\";\"msg\":\"success\"}";
}*/
@Operation
(
summary
=
"异步通知"
,
description
=
"异步通知"
)
@Operation
(
summary
=
"异步通知"
,
description
=
"异步通知"
)
@RequestMapping
(
value
=
"/api/fascCallback"
)
@RequestMapping
(
value
=
"/api/fascCallback"
)
...
@@ -141,15 +119,17 @@ public class FascController {
...
@@ -141,15 +119,17 @@ public class FascController {
// 新增推送日志
// 新增推送日志
TFascPushLog
pushLog
=
new
TFascPushLog
();
TFascPushLog
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
request
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ONE_STRING
);
pushLog
.
setTaskStatus
(
CommonConstants
.
ONE_STRING
);
pushLog
.
setTypeKey
(
"签署任务事件,异步通知"
);
pushLog
.
setTypeKey
(
"签署任务事件,异步通知"
);
pushLog
.
setTypeName
(
"签署任务事件,异步通知"
);
pushLog
.
setTypeName
(
"签署任务事件,异步通知"
);
tFascPushLogService
.
save
(
pushLog
);
tFascPushLogService
.
save
(
pushLog
);
if
(
checkSign
(
request
))
{
if
(
checkSign
(
request
,
pushLog
))
{
pushLog
.
setTaskStatus
(
CommonConstants
.
TWO_STRING
);
tFascPushLogService
.
updateById
(
pushLog
);
return
R
.
failed
(
"验签失败"
);
return
R
.
failed
(
"验签失败"
);
}
}
tFascPushLogService
.
updateById
(
pushLog
);
String
fddEvent
=
request
.
getHeader
(
FASC_EVENT
);
String
fddEvent
=
request
.
getHeader
(
FASC_EVENT
);
String
fddBizContent
=
request
.
getParameter
(
FASC_BIZ_CONTENT
);
String
fddBizContent
=
request
.
getParameter
(
FASC_BIZ_CONTENT
);
if
(
Common
.
isNotNull
(
fddEvent
))
{
if
(
Common
.
isNotNull
(
fddEvent
))
{
...
@@ -173,25 +153,32 @@ public class FascController {
...
@@ -173,25 +153,32 @@ public class FascController {
pushLog
.
setReturnData
(
"签署任务作废事件:fddEvent:"
+
fddEvent
+
";fddBizContent:"
+
fddBizContent
);
pushLog
.
setReturnData
(
"签署任务作废事件:fddEvent:"
+
fddEvent
+
";fddBizContent:"
+
fddBizContent
);
return
R
.
ok
(
null
,
"success"
);
return
R
.
ok
(
null
,
"success"
);
}
}
tFascPushLogService
.
updateById
(
pushLog
);
}
}
tFascPushLogService
.
updateById
(
pushLog
);
return
R
.
ok
(
null
,
"success"
);
return
R
.
ok
(
null
,
"success"
);
}
}
//验证签名,返回true表示失败
//验证签名,返回true表示失败
public
boolean
checkSign
(
HttpServletRequest
request
)
throws
Exception
{
public
boolean
checkSign
(
HttpServletRequest
request
,
TFascPushLog
pushLog
)
throws
Exception
{
Map
<
String
,
String
>
paraMap
=
new
HashMap
<>();
Map
<
String
,
String
>
paraMap
=
new
HashMap
<>();
paraMap
.
put
(
RequestConstants
.
APP_ID
,
request
.
getHeader
(
RequestConstants
.
APP_ID
));
paraMap
.
put
(
RequestConstants
.
APP_ID
,
request
.
getHeader
(
RequestConstants
.
APP_ID
));
paraMap
.
put
(
RequestConstants
.
SIGN_TYPE
,
request
.
getHeader
(
RequestConstants
.
SIGN_TYPE
));
paraMap
.
put
(
RequestConstants
.
SIGN_TYPE
,
request
.
getHeader
(
RequestConstants
.
SIGN_TYPE
));
paraMap
.
put
(
RequestConstants
.
TIMESTAMP
,
request
.
getHeader
(
RequestConstants
.
TIMESTAMP
));
String
timeStamp
=
request
.
getHeader
(
RequestConstants
.
TIMESTAMP
);
paraMap
.
put
(
RequestConstants
.
TIMESTAMP
,
timeStamp
);
paraMap
.
put
(
RequestConstants
.
NONCE
,
request
.
getHeader
(
RequestConstants
.
NONCE
));
paraMap
.
put
(
RequestConstants
.
NONCE
,
request
.
getHeader
(
RequestConstants
.
NONCE
));
paraMap
.
put
(
FASC_EVENT
,
request
.
getHeader
(
FASC_EVENT
));
paraMap
.
put
(
FASC_EVENT
,
request
.
getHeader
(
FASC_EVENT
));
paraMap
.
put
(
FASC_BIZ_CONTENT
,
request
.
getParameter
(
FASC_BIZ_CONTENT
));
paraMap
.
put
(
FASC_BIZ_CONTENT
,
request
.
getParameter
(
FASC_BIZ_CONTENT
));
//参数排序,ascii码排序
//参数排序,ascii码排序
String
sortParam
=
FddCryptUtil
.
sortParameters
(
paraMap
);
String
sortParam
=
FddCryptUtil
.
sortParameters
(
paraMap
);
pushLog
.
setPushData
(
sortParam
);
//计算之后得到签名 该签名需要放到请求头
//计算之后得到签名 该签名需要放到请求头
String
signature
=
FddCryptUtil
.
sign
(
sortParam
,
request
.
getHeader
(
RequestConstants
.
TIMESTAMP
),
fascConfig
.
getAppSecret
());
if
(
Common
.
isEmpty
(
sortParam
)
||
Common
.
isEmpty
(
timeStamp
))
{
return
true
;
}
String
signature
=
FddCryptUtil
.
sign
(
sortParam
,
timeStamp
,
fascConfig
.
getAppSecret
());
if
(
StringUtils
.
equals
(
signature
,
request
.
getHeader
(
RequestConstants
.
SIGN
)))
{
if
(
StringUtils
.
equals
(
signature
,
request
.
getHeader
(
RequestConstants
.
SIGN
)))
{
return
false
;
return
false
;
}
}
...
...
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/service/FascService.java
View file @
017b5d76
...
@@ -41,5 +41,7 @@ public interface FascService extends IService<FddContractInfo> {
...
@@ -41,5 +41,7 @@ public interface FascService extends IService<FddContractInfo> {
// 催办签署任务
// 催办签署任务
R
<
String
>
urgeTask
(
String
id
)
throws
ApiException
;
R
<
String
>
urgeTask
(
String
id
)
throws
ApiException
;
// 获取附件
R
<
String
>
getFileByRequestId
(
String
id
)
throws
ApiException
;
}
}
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/service/impl/FascServiceImpl.java
View file @
017b5d76
...
@@ -245,6 +245,29 @@ public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContr
...
@@ -245,6 +245,29 @@ public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContr
return
fascUtil
.
urgeTask
(
contract
,
tFascPushLogService
,
tEmployeeContractPreMapper
);
return
fascUtil
.
urgeTask
(
contract
,
tFascPushLogService
,
tEmployeeContractPreMapper
);
}
}
/**
* @param id TEmployeeContractPre主键
* @Description: 获取附件
* @Author: hgw
* @Date: 2025/10/15 17:56
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Override
public
R
<
String
>
getFileByRequestId
(
String
id
)
throws
ApiException
{
// templateName 签署任务模板名称
TEmployeeContractPre
contract
=
tEmployeeContractPreMapper
.
selectById
(
id
);
if
(
contract
==
null
)
{
return
R
.
failed
(
"未找到合同"
);
}
if
(
Common
.
isEmpty
(
contract
.
getRequestId
()))
{
return
R
.
failed
(
"无requestId,请检查数据"
);
}
// TODO - 判断什么状态催办等,需要产品定
return
fascUtil
.
getFileByRequestId
(
contract
,
tFascPushLogService
,
tEmployeeContractPreMapper
);
}
}
}
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/utils/FascUtil.java
View file @
017b5d76
...
@@ -17,6 +17,7 @@ import com.fasc.open.api.v5_1.req.template.SignTemplateDetailReq;
...
@@ -17,6 +17,7 @@ import com.fasc.open.api.v5_1.req.template.SignTemplateDetailReq;
import
com.fasc.open.api.v5_1.req.template.SignTemplateListFilterInfo
;
import
com.fasc.open.api.v5_1.req.template.SignTemplateListFilterInfo
;
import
com.fasc.open.api.v5_1.res.service.AccessTokenRes
;
import
com.fasc.open.api.v5_1.res.service.AccessTokenRes
;
import
com.fasc.open.api.v5_1.res.signtask.CreateSignTaskRes
;
import
com.fasc.open.api.v5_1.res.signtask.CreateSignTaskRes
;
import
com.fasc.open.api.v5_1.res.signtask.SignTaskGetFileRes
;
import
com.fasc.open.api.v5_1.res.template.DocumentInfo
;
import
com.fasc.open.api.v5_1.res.template.DocumentInfo
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateDetailRes
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateDetailRes
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateListInfo
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateListInfo
;
...
@@ -35,6 +36,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
...
@@ -35,6 +36,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.LocalDateTimeUtils
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.LocalDateTimeUtils
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
org.checkerframework.checker.units.qual.C
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -606,5 +608,56 @@ public class FascUtil {
...
@@ -606,5 +608,56 @@ public class FascUtil {
return
R
.
failed
(
"res无返回"
);
return
R
.
failed
(
"res无返回"
);
}
}
// 获取附件
public
R
<
String
>
getFileByRequestId
(
TEmployeeContractPre
contract
,
TFascPushLogService
tFascPushLogService
,
TEmployeeContractPreMapper
tEmployeeContractPreMapper
)
throws
ApiException
{
OpenApiClient
openApiClient
=
new
OpenApiClient
(
fascConfig
.
getAppId
(),
fascConfig
.
getAppSecret
(),
fascConfig
.
getAppUrl
());
String
accessToken
=
this
.
getFascToken
(
openApiClient
);
SignTaskClient
signTaskClient
=
new
SignTaskClient
(
openApiClient
)
;
SignTaskGetFileReq
signTaskGetFileReq
=
new
SignTaskGetFileReq
()
;
signTaskGetFileReq
.
setSignTaskId
(
contract
.
getRequestId
())
;
signTaskGetFileReq
.
setAccessToken
(
accessToken
)
;
// 新增推送日志
TFascPushLog
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setPushData
(
JSON
.
toJSONString
(
signTaskClient
,
features
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ZERO_STRING
);
String
empIdCard
=
contract
.
getEmpIdcard
();
pushLog
.
setTypeKey
(
"获取附件,身份证:"
+
empIdCard
);
pushLog
.
setTypeName
(
"获取附件"
);
pushLog
.
setContractId
(
contract
.
getId
());
tFascPushLogService
.
save
(
pushLog
);
BaseRes
<
SignTaskGetFileRes
>
res
=
signTaskClient
.
signTaskGetFile
(
signTaskGetFileReq
)
;
if
(
res
!=
null
)
{
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
res
,
features
));
pushLog
.
setTaskStatus
(
res
.
isSuccess
()
?
CommonConstants
.
ONE_STRING
:
CommonConstants
.
TWO_STRING
);
tFascPushLogService
.
updateById
(
pushLog
);
if
(
res
.
isSuccess
())
{
if
(
Common
.
isNotNull
(
res
.
getData
())
&&
Common
.
isNotNull
(
res
.
getData
().
getDocs
()))
{
for
(
SignTaskGetFileRes
.
DocFileInfo
doc
:
res
.
getData
().
getDocs
())
{
if
(
Common
.
isNotNull
(
doc
.
getFddFileUrl
()))
{
// TODO-存储文档
//contract.setFileId(doc.getFileId());
}
}
}
contract
.
setProcessStatus
(
CommonConstants
.
dingleDigitStrArray
[
9
]);
tEmployeeContractPreMapper
.
updateById
(
contract
);
return
R
.
ok
();
}
else
{
contract
.
setRequestMsg
(
res
.
getMsg
());
tEmployeeContractPreMapper
.
updateById
(
contract
);
return
R
.
failed
(
res
.
getMsg
());
}
}
return
R
.
failed
(
"res无返回"
);
}
}
}
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