提交 ea68f379 authored 作者: 艾庆国's avatar 艾庆国

承运优化需求-风控自动处理

上级 fd42bae6
package com.clx.performance.vo.mq.settle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementOrderChildRiskAddMqParam {
private Integer id; //id
}
......@@ -123,6 +123,18 @@ public class RabbitSettlementConfig {
.with(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY);
}
/**
* 风控新增
*/
@Bean
public Queue settlementRiskAddQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_RISK_ADD_QUEUE);
}
@Bean
public Binding settlementRiskAddQueueBinding() {
return BindingBuilder.bind(settlementRiskAddQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_RISK_ADD_ROUTING_KEY);
}
/**
* 风控处理
*/
......
......@@ -68,6 +68,12 @@ public class RabbitKeySettlementConstants {
public static final String SETTLEMENT_PAY_STATUS_SYNC_QUEUE = PREFIX +"settlementPayStatus.sync"+QUEUE;
public static final String SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY = PREFIX +"settlementPayStatus.sync"+QUEUE_ROUTING_KEY;
/**
* 风控新增
*/
public static final String SETTLEMENT_RISK_ADD_QUEUE = PREFIX +"settlementRisk.add"+QUEUE;
public static final String SETTLEMENT_RISK_ADD_ROUTING_KEY = PREFIX +"settlementRisk.add"+QUEUE_ROUTING_KEY;
/**
* 风控处理
*/
......
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskAddMqParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 风控新增 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementRiskAddListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_RISK_ADD_QUEUE)
public void process(Message message) {
try{
log.info("结算-风控新增, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementOrderChildRiskAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-风控新增 失败,msg:{}", ExceptionUtils.getStackTrace(e));
}
}
private void process(SettlementOrderChildRiskAddMqParam mq){
settlementMqHandlerService.riskAdd(mq);
}
}
......@@ -18,6 +18,7 @@ import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildBrokerMqHandlerService;
import com.clx.performance.service.broker.OrderChildBrokerMqService;
import com.clx.performance.service.broker.OrderChildBrokerService;
import com.clx.performance.service.settle.SettlementPostService;
import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
import lombok.extern.slf4j.Slf4j;
......@@ -51,6 +52,9 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
@Autowired
private SettlementOrderChildRiskDao settlementOrderChildRiskDao;
@Autowired
private SettlementPostService settlementPostService;
@Transactional(rollbackFor = Exception.class)
@Override
public void orderChildSync(BrokerOrderChildSyncMqParam mq) {
......@@ -77,6 +81,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SETTLE_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark("同步无车承运异常");
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
}
}
public void doOrderChildSync(BrokerOrderChildSyncMqParam mq){
......
......@@ -40,10 +40,7 @@ import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.RedisUtil;
import com.clx.performance.utils.spring.ApplicationContextUtils;
import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
import com.clx.performance.vo.mq.settle.*;
import com.clx.performance.vo.pc.broker.TransportVO;
import com.clx.user.vo.feign.DriverInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
......@@ -343,6 +340,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
return;
}
else {
......@@ -407,6 +406,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
return;
}
......@@ -482,6 +483,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
return;
}
......@@ -520,6 +523,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SETTLE_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSettleMsg());
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
}
}
......@@ -914,6 +919,60 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
return uniqueOrderNumService.getUniqueOrderNum(com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToString(LocalDateTime.now(), com.msl.common.utils.LocalDateTimeUtils.DATE_DAY));
}
@Override
public void riskAdd(SettlementOrderChildRiskAddMqParam mq) {
SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao.getById(mq.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (Objects.equals(settlementOrderChildRisk.getStatus(), SettlementOrderChildRiskEnum.Status.PROCESSED.getCode())) {
return;
}
OrderChild orderChild = orderChildDao.getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
InvoicingCompanyVO invoicingCompanyByGroupCode = invoicingCompanyService.getInvoicingCompanyByGroupCode(orderChild.getInvoicingCompanyGroupCode());
if (!Objects.equals(invoicingCompanyByGroupCode.getRiskProcessType(), InvoicingCompanyEnum.RiskProcessType.AUTO.getCode())) {
return;
}
// 转普通单
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(settlementOrderChildRisk.getChildNo()).orNull();
settlementOrderChildRisk.setStatus(SettlementOrderChildRiskEnum.Status.PROCESSED.getCode());
settlementOrderChildRisk.setProcessMethod(SettlementOrderChildRiskEnum.ProcessMethod.CONVERT_ORDINARY.getCode());
settlementOrderChildRisk.setProcessBy("系统");
settlementOrderChildRisk.setProcessTime(LocalDateTime.now());
settlementOwnerDetail.setInvoiceType(SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
settlementOwnerDetail.setInvoicingCompanyId(null);
settlementOwnerDetail.setInvoicingCompanyShorterName(null);
settlementOwnerDetail.setInvoicingCompanyGroupCode(null);
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.SUCCESS.getCode());
settlementOwnerDetail.setInvoiceTypeModifiedTime(LocalDateTime.now());
settlementOwnerDetailDao.updateConvertOrdinary(settlementOwnerDetail);
settlementDriverDetail.setInvoiceType(settlementOwnerDetail.getInvoiceType());
settlementDriverDetail.setInvoicingCompanyId(settlementOwnerDetail.getInvoicingCompanyId());
settlementDriverDetail.setInvoicingCompanyShorterName(settlementOwnerDetail.getInvoicingCompanyShorterName());
settlementDriverDetail.setInvoicingCompanyGroupCode(settlementOwnerDetail.getInvoicingCompanyGroupCode());
settlementDriverDetailDao.updateConvertOrdinary(settlementDriverDetail);
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
if (settlementDriver != null) {
// 删除结算单
settlementDriverDao.deleteByKey(settlementDriver.getId());
}
settlementOrderChildRiskDao.updateProcess(settlementOrderChildRisk);
// 发送mq (风控处理)
settlementMqService.riskProcess(settlementOrderChildRisk.getId());
}
@Transactional(rollbackFor = Exception.class)
@Override
public void riskProcess(SettlementOrderChildRiskProcessMqParam mq) {
......
......@@ -6,10 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
import com.clx.performance.vo.mq.settle.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
......@@ -114,6 +111,18 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void riskAdd(Integer id) {
SettlementOrderChildRiskAddMqParam mq = new SettlementOrderChildRiskAddMqParam();
mq.setId(id);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_RISK_ADD_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void riskProcess(Integer id) {
SettlementOrderChildRiskProcessMqParam mq = new SettlementOrderChildRiskProcessMqParam();
......
......@@ -60,4 +60,11 @@ public class SettlementPostServiceImpl implements SettlementPostService {
}
}
@Override
public void riskAdd(Integer id) {
// 发送mq (风控新增)
settlementMqService.riskAdd(id);
}
}
......@@ -2,10 +2,7 @@ package com.clx.performance.service.settle;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
import com.clx.performance.vo.mq.settle.*;
public interface SettlementMqHandlerService {
......@@ -27,6 +24,7 @@ public interface SettlementMqHandlerService {
String settlementNoGenerate();
void riskAdd(SettlementOrderChildRiskAddMqParam mq);
void riskProcess(SettlementOrderChildRiskProcessMqParam mq);
void invoiceCompanyUpdate(SettlementOwnerDetialInvoiceCompanyUpdateMqParam mq);
......
......@@ -15,6 +15,8 @@ public interface SettlementMqService {
void payStatusSync(String childNo);
void riskAdd(Integer id);
void riskProcess(Integer id);
void updateInvoiceCompany(Integer id);
......
......@@ -15,4 +15,6 @@ public interface SettlementPostService {
void updateInvoice(List<String> childNoList);
void riskAdd(Integer id);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论