Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
ms-data-circulation-portal-service
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
cc0314cf
authored
2025-02-20 19:16:37 +0800
by
肖初晴
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
【DAOP-1.0】企业认证
【功能点】测试问题处理
1 parent
a3f6bbe0
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
98 additions
and
23 deletions
src/main/java/com/csbr/qingcloud/portal/domain/vo/KafkaApproveDTO.java
src/main/java/com/csbr/qingcloud/portal/feign/WorkflowFeign.java
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseServiceImpl.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/KafkaApproveDTO.java
0 → 100644
View file @
cc0314c
package
com
.
csbr
.
qingcloud
.
portal
.
domain
.
vo
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
org.springframework.util.MultiValueMap
;
/**
* @description: 审批变更检查实体
* @author: XiaoCQ
* @create: 2025-02-20
*/
@Data
@Schema
(
name
=
"审批变更检查实体"
)
public
class
KafkaApproveDTO
{
@Schema
(
description
=
"审批流参数"
)
private
FlowUpdateStateDTO
updateStateDTO
;
@Schema
(
description
=
"请求头"
)
private
MultiValueMap
<
String
,
String
>
header
;
}
src/main/java/com/csbr/qingcloud/portal/feign/WorkflowFeign.java
0 → 100644
View file @
cc0314c
package
com
.
csbr
.
qingcloud
.
portal
.
feign
;
import
com.csbr.cloud.common.config.FastCallFeignConfiguration
;
import
com.csbr.cloud.common.response.CommonRes
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.qingcloud.portal.domain.vo.UserQueryDTO
;
import
com.csbr.qingcloud.portal.domain.vo.UserVO
;
import
com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand
;
import
com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty
;
import
csbr.cloud.entity.domain.base.vo.PageListVO
;
import
jakarta.validation.Valid
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.http.MediaType
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.bind.annotation.*
;
import
java.net.URI
;
import
java.util.List
;
/**
* @author Xiaocq
*/
@FeignClient
(
value
=
"ms-daop-workflow-service"
,
configuration
=
FastCallFeignConfiguration
.
class
)
public
interface
WorkflowFeign
{
/** 动态业务处理 */
@HystrixCommand
(
fallbackMethod
=
"CommonUtil.sleepFallback"
,
commandProperties
=
{
@HystrixProperty
(
name
=
"execution.isolation.thread.timeoutInMilliseconds"
,
value
=
"4500"
)})
@RequestMapping
(
value
=
"/work-flow/data/allow-flow-core"
,
method
=
RequestMethod
.
POST
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
Boolean
>
allowFlowCore
(
@RequestBody
FlowUpdateStateDTO
dto
,
@RequestHeader
(
required
=
false
)
MultiValueMap
<
String
,
String
>
headers
);
}
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseServiceImpl.java
View file @
cc0314c
package
com
.
csbr
.
qingcloud
.
portal
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.csbr.cloud.common.enums.SystemError
;
import
com.csbr.cloud.common.enums.UserError
;
import
com.csbr.cloud.common.enums.WorkFlowBizEnum
;
import
com.csbr.cloud.common.exception.CsbrSystemException
;
import
com.csbr.cloud.common.exception.CsbrUserException
;
import
com.csbr.cloud.common.util.CommonUtil
;
import
com.csbr.cloud.common.util.CsbrBeanUtil
;
import
com.csbr.cloud.common.util.MessageSourceUtil
;
import
com.csbr.cloud.mq.service.KafkaStdService
;
import
com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO
;
import
com.csbr.cloud.workflow.feign.WorkflowFeign
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO
;
import
com.csbr.qingcloud.portal.feign.WorkflowFeign
;
import
com.csbr.cloud.workflow.util.ApprovalFlowUtil
;
import
com.csbr.cloud.workflow.util.FlowAbstractImpl
;
import
com.csbr.qingcloud.portal.domain.vo.*
;
import
com.csbr.qingcloud.portal.feign.PersonelFeign
;
import
com.csbr.qingcloud.portal.feign.UserFeign
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfDemand
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterpriseChangeApprove
;
import
com.csbr.qingcloud.portal.mybatis.service.MfDemandService
;
import
com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseChangeApproveService
;
import
com.csbr.qingcloud.portal.service.EnterpriseChangeApproveService
;
import
com.csbr.qingcloud.portal.util.ObjectUtil
;
import
csbr.cloud.entity.domain.base.dao.BaseShardingDO
;
import
csbr.cloud.entity.enums.ApprovalStateEnum
;
import
com.csbr.cloud.common.exception.CsbrSystemException
;
import
com.csbr.cloud.common.util.CommonUtil
;
import
com.csbr.cloud.common.util.CsbrBeanUtil
;
import
com.csbr.cloud.workflow.util.ApprovalFlowUtil
;
import
com.csbr.cloud.workflow.util.FlowAbstractImpl
;
import
com.csbr.cloud.common.util.MessageSourceUtil
;
import
csbr.cloud.entity.domain.base.vo.PageListVO
;
import
com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO
;
import
com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
import
com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService
;
import
com.csbr.qingcloud.portal.service.EnterpriseService
;
import
csbr.cloud.entity.utils.UserContextHolder
;
import
com.csbr.qingcloud.portal.util.ObjectUtil
;
import
csbr.cloud.entity.domain.base.vo.PageListVO
;
import
csbr.cloud.entity.enums.ApprovalStateEnum
;
import
io.seata.common.util.DateUtil
;
import
io.seata.spring.annotation.GlobalTransactional
;
import
jakarta.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
...
...
@@ -46,11 +43,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.kafka.support.Acknowledgment
;
import
org.springframework.stereotype.Service
;
import
io.seata.spring.annotation.GlobalTransactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Enumeration
;
import
java.util.List
;
/**
...
...
@@ -412,19 +413,36 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
public
Boolean
lastApprove
(
FlowUpdateStateDTO
dto
)
{
//如果是非认证会员认证审批通过了 则需要走kafka生成新会员
dto
.
setBackEndInvoke
(
true
);
String
topic
=
"tenant.enterprise"
;
kafkaStdService
.
stdSendMsgWithPrefix
(
topic
,
JSON
.
toJSONString
(
dto
));
KafkaApproveDTO
approveDTO
=
new
KafkaApproveDTO
();
approveDTO
.
setHeader
(
getHeader
());
approveDTO
.
setUpdateStateDTO
(
dto
);
kafkaStdService
.
stdSendMsgWithPrefix
(
"tenant.enterprise"
,
JSON
.
toJSONString
(
approveDTO
));
return
true
;
}
private
MultiValueMap
<
String
,
String
>
getHeader
(){
ServletRequestAttributes
servletRequestAttributes
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
());
Enumeration
<
String
>
headerNames
=
servletRequestAttributes
.
getRequest
().
getHeaderNames
();
MultiValueMap
<
String
,
String
>
headers
=
new
LinkedMultiValueMap
<>();
List
<
String
>
names
=
List
.
of
(
"AUTHORIZATION"
,
"X-USERINFO"
,
"TENANT"
,
"TOKEN"
);
while
(
null
!=
headerNames
&&
headerNames
.
hasMoreElements
())
{
String
name
=
headerNames
.
nextElement
();
String
value
=
servletRequestAttributes
.
getRequest
().
getHeader
(
name
);
if
(
names
.
contains
(
name
.
toUpperCase
()))
{
headers
.
put
(
name
,
List
.
of
(
value
));
}
}
return
headers
;
}
@KafkaListener
(
containerFactory
=
"kafkaListenerContainerFactory"
,
groupId
=
"scm.notify"
,
topics
=
"${csbr.kafka.topic-prefix:}_"
+
"tenant.enterprise"
,
errorHandler
=
"consumerAwareErrorHandler"
)
public
void
addUserListener
(
List
<
ConsumerRecord
<
String
,
String
>>
records
,
Acknowledgment
ack
)
{
ack
.
acknowledge
();
for
(
ConsumerRecord
<
String
,
String
>
record
:
records
)
{
try
{
FlowUpdateStateDTO
dto
=
JSON
.
parseObject
(
record
.
value
(),
FlowUpdateStat
eDTO
.
class
);
workflowFeign
.
allowFlowCore
(
dto
).
getData
();
KafkaApproveDTO
approveDTO
=
JSON
.
parseObject
(
record
.
value
(),
KafkaApprov
eDTO
.
class
);
workflowFeign
.
allowFlowCore
(
approveDTO
.
getUpdateStateDTO
(),
approveDTO
.
getHeader
()
).
getData
();
}
catch
(
Exception
e
)
{
log
.
error
(
"企业认证出现异常: "
+
e
.
getMessage
()
+
";\nRecord Info: "
+
record
.
toString
());
e
.
printStackTrace
();
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
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 post a comment