【DAOP-1.0】企业认证
【功能点】测试问题处理
Showing
3 changed files
with
98 additions
and
23 deletions
| 1 | package com.csbr.qingcloud.portal.domain.vo; | ||
| 2 | |||
| 3 | import com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO; | ||
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | ||
| 5 | import lombok.Data; | ||
| 6 | import org.springframework.util.MultiValueMap; | ||
| 7 | |||
| 8 | /** | ||
| 9 | * @description: 审批变更检查实体 | ||
| 10 | * @author: XiaoCQ | ||
| 11 | * @create: 2025-02-20 | ||
| 12 | */ | ||
| 13 | @Data | ||
| 14 | @Schema(name = "审批变更检查实体") | ||
| 15 | public class KafkaApproveDTO { | ||
| 16 | |||
| 17 | @Schema(description = "审批流参数") | ||
| 18 | private FlowUpdateStateDTO updateStateDTO; | ||
| 19 | |||
| 20 | @Schema(description = "请求头") | ||
| 21 | private MultiValueMap<String, String> header; | ||
| 22 | |||
| 23 | } |
| 1 | package com.csbr.qingcloud.portal.feign; | ||
| 2 | |||
| 3 | import com.csbr.cloud.common.config.FastCallFeignConfiguration; | ||
| 4 | import com.csbr.cloud.common.response.CommonRes; | ||
| 5 | import com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO; | ||
| 6 | import com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO; | ||
| 7 | import com.csbr.qingcloud.portal.domain.vo.UserQueryDTO; | ||
| 8 | import com.csbr.qingcloud.portal.domain.vo.UserVO; | ||
| 9 | import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; | ||
| 10 | import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty; | ||
| 11 | import csbr.cloud.entity.domain.base.vo.PageListVO; | ||
| 12 | import jakarta.validation.Valid; | ||
| 13 | import org.springframework.cloud.openfeign.FeignClient; | ||
| 14 | import org.springframework.http.MediaType; | ||
| 15 | import org.springframework.util.MultiValueMap; | ||
| 16 | import org.springframework.web.bind.annotation.*; | ||
| 17 | |||
| 18 | import java.net.URI; | ||
| 19 | import java.util.List; | ||
| 20 | |||
| 21 | /** | ||
| 22 | * @author Xiaocq | ||
| 23 | */ | ||
| 24 | @FeignClient(value = "ms-daop-workflow-service", configuration = FastCallFeignConfiguration.class) | ||
| 25 | public interface WorkflowFeign { | ||
| 26 | |||
| 27 | /** 动态业务处理 */ | ||
| 28 | @HystrixCommand(fallbackMethod = "CommonUtil.sleepFallback", commandProperties = { | ||
| 29 | @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "4500")}) | ||
| 30 | @RequestMapping(value = "/work-flow/data/allow-flow-core", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) | ||
| 31 | CommonRes<Boolean> allowFlowCore(@RequestBody FlowUpdateStateDTO dto, @RequestHeader(required = false) MultiValueMap<String, String> headers); | ||
| 32 | |||
| 33 | |||
| 34 | } |
| 1 | package com.csbr.qingcloud.portal.service.impl; | 1 | package com.csbr.qingcloud.portal.service.impl; |
| 2 | 2 | ||
| 3 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
| 4 | import com.alibaba.fastjson.JSONObject; | ||
| 5 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 4 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 6 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 7 | import com.csbr.cloud.common.enums.SystemError; | 6 | import com.csbr.cloud.common.enums.SystemError; |
| 8 | import com.csbr.cloud.common.enums.UserError; | 7 | import com.csbr.cloud.common.enums.UserError; |
| 9 | import com.csbr.cloud.common.enums.WorkFlowBizEnum; | 8 | import com.csbr.cloud.common.enums.WorkFlowBizEnum; |
| 9 | import com.csbr.cloud.common.exception.CsbrSystemException; | ||
| 10 | import com.csbr.cloud.common.exception.CsbrUserException; | 10 | import com.csbr.cloud.common.exception.CsbrUserException; |
| 11 | import com.csbr.cloud.common.util.CommonUtil; | ||
| 12 | import com.csbr.cloud.common.util.CsbrBeanUtil; | ||
| 13 | import com.csbr.cloud.common.util.MessageSourceUtil; | ||
| 11 | import com.csbr.cloud.mq.service.KafkaStdService; | 14 | import com.csbr.cloud.mq.service.KafkaStdService; |
| 15 | import com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO; | ||
| 12 | import com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO; | 16 | import com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO; |
| 13 | import com.csbr.cloud.workflow.feign.WorkflowFeign; | 17 | import com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO; |
| 18 | import com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO; | ||
| 19 | import com.csbr.qingcloud.portal.feign.WorkflowFeign; | ||
| 20 | import com.csbr.cloud.workflow.util.ApprovalFlowUtil; | ||
| 21 | import com.csbr.cloud.workflow.util.FlowAbstractImpl; | ||
| 14 | import com.csbr.qingcloud.portal.domain.vo.*; | 22 | import com.csbr.qingcloud.portal.domain.vo.*; |
| 15 | import com.csbr.qingcloud.portal.feign.PersonelFeign; | 23 | import com.csbr.qingcloud.portal.feign.PersonelFeign; |
| 16 | import com.csbr.qingcloud.portal.feign.UserFeign; | 24 | import com.csbr.qingcloud.portal.feign.UserFeign; |
| 17 | import com.csbr.qingcloud.portal.mybatis.entity.MfDemand; | 25 | import com.csbr.qingcloud.portal.mybatis.entity.MfDemand; |
| 26 | import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise; | ||
| 18 | import com.csbr.qingcloud.portal.mybatis.entity.MfEnterpriseChangeApprove; | 27 | import com.csbr.qingcloud.portal.mybatis.entity.MfEnterpriseChangeApprove; |
| 19 | import com.csbr.qingcloud.portal.mybatis.service.MfDemandService; | 28 | import com.csbr.qingcloud.portal.mybatis.service.MfDemandService; |
| 20 | import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseChangeApproveService; | 29 | import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseChangeApproveService; |
| 21 | import com.csbr.qingcloud.portal.service.EnterpriseChangeApproveService; | ||
| 22 | import com.csbr.qingcloud.portal.util.ObjectUtil; | ||
| 23 | import csbr.cloud.entity.domain.base.dao.BaseShardingDO; | ||
| 24 | import csbr.cloud.entity.enums.ApprovalStateEnum; | ||
| 25 | import com.csbr.cloud.common.exception.CsbrSystemException; | ||
| 26 | import com.csbr.cloud.common.util.CommonUtil; | ||
| 27 | import com.csbr.cloud.common.util.CsbrBeanUtil; | ||
| 28 | import com.csbr.cloud.workflow.util.ApprovalFlowUtil; | ||
| 29 | import com.csbr.cloud.workflow.util.FlowAbstractImpl; | ||
| 30 | import com.csbr.cloud.common.util.MessageSourceUtil; | ||
| 31 | import csbr.cloud.entity.domain.base.vo.PageListVO; | ||
| 32 | import com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO; | ||
| 33 | import com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO; | ||
| 34 | import com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO; | ||
| 35 | import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise; | ||
| 36 | import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService; | 30 | import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService; |
| 37 | import com.csbr.qingcloud.portal.service.EnterpriseService; | 31 | import com.csbr.qingcloud.portal.service.EnterpriseService; |
| 38 | import csbr.cloud.entity.utils.UserContextHolder; | 32 | import com.csbr.qingcloud.portal.util.ObjectUtil; |
| 33 | import csbr.cloud.entity.domain.base.vo.PageListVO; | ||
| 34 | import csbr.cloud.entity.enums.ApprovalStateEnum; | ||
| 39 | import io.seata.common.util.DateUtil; | 35 | import io.seata.common.util.DateUtil; |
| 36 | import io.seata.spring.annotation.GlobalTransactional; | ||
| 40 | import jakarta.annotation.Resource; | 37 | import jakarta.annotation.Resource; |
| 41 | import lombok.extern.slf4j.Slf4j; | 38 | import lombok.extern.slf4j.Slf4j; |
| 42 | import org.apache.commons.collections.CollectionUtils; | 39 | import org.apache.commons.collections.CollectionUtils; |
| ... | @@ -46,11 +43,15 @@ import org.springframework.beans.factory.annotation.Autowired; | ... | @@ -46,11 +43,15 @@ import org.springframework.beans.factory.annotation.Autowired; |
| 46 | import org.springframework.kafka.annotation.KafkaListener; | 43 | import org.springframework.kafka.annotation.KafkaListener; |
| 47 | import org.springframework.kafka.support.Acknowledgment; | 44 | import org.springframework.kafka.support.Acknowledgment; |
| 48 | import org.springframework.stereotype.Service; | 45 | import org.springframework.stereotype.Service; |
| 49 | import io.seata.spring.annotation.GlobalTransactional; | ||
| 50 | import org.springframework.transaction.annotation.Transactional; | 46 | import org.springframework.transaction.annotation.Transactional; |
| 47 | import org.springframework.util.LinkedMultiValueMap; | ||
| 48 | import org.springframework.util.MultiValueMap; | ||
| 49 | import org.springframework.web.context.request.RequestContextHolder; | ||
| 50 | import org.springframework.web.context.request.ServletRequestAttributes; | ||
| 51 | 51 | ||
| 52 | import java.util.ArrayList; | 52 | import java.util.ArrayList; |
| 53 | import java.util.Date; | 53 | import java.util.Date; |
| 54 | import java.util.Enumeration; | ||
| 54 | import java.util.List; | 55 | import java.util.List; |
| 55 | 56 | ||
| 56 | /** | 57 | /** |
| ... | @@ -412,19 +413,36 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris | ... | @@ -412,19 +413,36 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris |
| 412 | public Boolean lastApprove(FlowUpdateStateDTO dto) { | 413 | public Boolean lastApprove(FlowUpdateStateDTO dto) { |
| 413 | //如果是非认证会员认证审批通过了 则需要走kafka生成新会员 | 414 | //如果是非认证会员认证审批通过了 则需要走kafka生成新会员 |
| 414 | dto.setBackEndInvoke(true); | 415 | dto.setBackEndInvoke(true); |
| 415 | String topic = "tenant.enterprise"; | 416 | KafkaApproveDTO approveDTO = new KafkaApproveDTO(); |
| 416 | kafkaStdService.stdSendMsgWithPrefix(topic, JSON.toJSONString(dto)); | 417 | approveDTO.setHeader(getHeader()); |
| 418 | approveDTO.setUpdateStateDTO(dto); | ||
| 419 | kafkaStdService.stdSendMsgWithPrefix("tenant.enterprise", JSON.toJSONString(approveDTO)); | ||
| 417 | return true; | 420 | return true; |
| 418 | } | 421 | } |
| 419 | 422 | ||
| 423 | private MultiValueMap<String, String> getHeader(){ | ||
| 424 | ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()); | ||
| 425 | Enumeration<String> headerNames = servletRequestAttributes.getRequest().getHeaderNames(); | ||
| 426 | MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); | ||
| 427 | List<String> names = List.of("AUTHORIZATION", "X-USERINFO", "TENANT", "TOKEN"); | ||
| 428 | while (null != headerNames && headerNames.hasMoreElements()) { | ||
| 429 | String name = headerNames.nextElement(); | ||
| 430 | String value = servletRequestAttributes.getRequest().getHeader(name); | ||
| 431 | if (names.contains(name.toUpperCase())) { | ||
| 432 | headers.put(name, List.of(value)); | ||
| 433 | } | ||
| 434 | } | ||
| 435 | return headers; | ||
| 436 | } | ||
| 437 | |||
| 420 | @KafkaListener(containerFactory = "kafkaListenerContainerFactory", groupId = "scm.notify", topics = "${csbr.kafka.topic-prefix:}_"+"tenant.enterprise", | 438 | @KafkaListener(containerFactory = "kafkaListenerContainerFactory", groupId = "scm.notify", topics = "${csbr.kafka.topic-prefix:}_"+"tenant.enterprise", |
| 421 | errorHandler = "consumerAwareErrorHandler") | 439 | errorHandler = "consumerAwareErrorHandler") |
| 422 | public void addUserListener(List<ConsumerRecord<String, String>> records, Acknowledgment ack) { | 440 | public void addUserListener(List<ConsumerRecord<String, String>> records, Acknowledgment ack) { |
| 423 | ack.acknowledge(); | 441 | ack.acknowledge(); |
| 424 | for (ConsumerRecord<String, String> record : records) { | 442 | for (ConsumerRecord<String, String> record : records) { |
| 425 | try { | 443 | try { |
| 426 | FlowUpdateStateDTO dto = JSON.parseObject(record.value(),FlowUpdateStateDTO.class); | 444 | KafkaApproveDTO approveDTO = JSON.parseObject(record.value(),KafkaApproveDTO.class); |
| 427 | workflowFeign.allowFlowCore(dto).getData(); | 445 | workflowFeign.allowFlowCore(approveDTO.getUpdateStateDTO(),approveDTO.getHeader()).getData(); |
| 428 | } catch (Exception e) { | 446 | } catch (Exception e) { |
| 429 | log.error("企业认证出现异常: " + e.getMessage() + ";\nRecord Info: " + record.toString()); | 447 | log.error("企业认证出现异常: " + e.getMessage() + ";\nRecord Info: " + record.toString()); |
| 430 | e.printStackTrace(); | 448 | e.printStackTrace(); | ... | ... |
-
Please register or sign in to post a comment