cc0314cf by 肖初晴

【DAOP-1.0】企业认证

【功能点】测试问题处理
1 parent a3f6bbe0
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;
}
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);
}
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(),FlowUpdateStateDTO.class);
workflowFeign.allowFlowCore(dto).getData();
KafkaApproveDTO approveDTO = JSON.parseObject(record.value(),KafkaApproveDTO.class);
workflowFeign.allowFlowCore(approveDTO.getUpdateStateDTO(),approveDTO.getHeader()).getData();
} catch (Exception e) {
log.error("企业认证出现异常: " + e.getMessage() + ";\nRecord Info: " + record.toString());
e.printStackTrace();
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!