提交 74ad94ea authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v7.9_small_version_fix_20231213'

# Conflicts: # performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
...@@ -2,12 +2,15 @@ package com.clx.performance.service.impl; ...@@ -2,12 +2,15 @@ package com.clx.performance.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.enums.OrderEnum; import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.OrderCancelReasonParam; import com.clx.order.param.feign.OrderCancelReasonParam;
import com.clx.order.param.feign.RollbackOrderWeightParam; import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.order.param.mq.FreezeTriggerMqParam;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.component.GoodsOrderTruckRecordComponent; import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderCancelComponent; import com.clx.performance.component.OrderCancelComponent;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
...@@ -15,6 +18,7 @@ import com.clx.performance.dao.OrderChildDao; ...@@ -15,6 +18,7 @@ import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderCancelParam; import com.clx.performance.param.pc.OrderCancelParam;
...@@ -24,6 +28,8 @@ import com.clx.performance.service.*; ...@@ -24,6 +28,8 @@ import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService; import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.vo.app.OrderChildVO; import com.clx.performance.vo.app.OrderChildVO;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.enums.owner.FreezeSettingEnum;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
...@@ -31,6 +37,7 @@ import com.msl.user.data.UserSessionData; ...@@ -31,6 +37,7 @@ import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder; import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
...@@ -39,10 +46,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -39,10 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -75,6 +79,9 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -75,6 +79,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OrderGoodsService orderGoodsService; private final OrderGoodsService orderGoodsService;
private final OwnerInfoService ownerInfoService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -686,6 +693,28 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -686,6 +693,28 @@ public class OrderCancelServiceImpl implements OrderCancelService {
//订单取消恢复货单的剩余吨数为0 //订单取消恢复货单的剩余吨数为0
orderGoodsService.batchUpdateResidueWeight(orderGoodsList); orderGoodsService.batchUpdateResidueWeight(orderGoodsList);
//触发自动冻结的mq消费逻辑
triggerAutoFreeze(orderInfoFeign.getOwnerUserNo(),orderNo);
}
//订单取消增加自动冻结的消息触发
private void triggerAutoFreeze(Long ownerUserNo,String orderNo){
try{
OwnerInfoFeignVO ownerInfo = ownerInfoService.getOwnerInfo(ownerUserNo);
//充值成功并且当前货主是冻结方式是自动冻结,则触发自动冻结的mq监听
if(Objects.equals(ownerInfo.getFreezeSetting(), FreezeSettingEnum.AUTO.getCode())){
log.info("货主取消订单,发送自动冻结的mq消息,货主编号:{},订单编号:{}",ownerUserNo,orderNo);
FreezeTriggerMqParam mq = new FreezeTriggerMqParam();
mq.setUserNo(ownerUserNo);
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build();
//设置延时5秒处理,防止事务未提交
message.getMessageProperties().setHeader("x-delay", 5000);
rabbitTemplate.send(RabbitKeyConstants.FREEZE_TRIGGER_EXCHANGE, RabbitKeyConstants.FREEZE_TRIGGER_ROUTING_KEY,message);
}
}catch (Exception e){
log.warn("货主取消订单,自动冻结发生异常:{}", ExceptionUtils.getStackTrace(e));
}
} }
@Override @Override
......
...@@ -461,7 +461,6 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -461,7 +461,6 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
* 限制货单更新剩余吨数不能小于35吨 * 限制货单更新剩余吨数不能小于35吨
**/ **/
private void limitOrderGoodsResidueWeight(BigDecimal residueTransportWeight){ private void limitOrderGoodsResidueWeight(BigDecimal residueTransportWeight){
if(residueTransportWeight.compareTo(BigDecimal.ZERO) != 0 && residueTransportWeight.compareTo(new BigDecimal("35")) < 0){ if(residueTransportWeight.compareTo(BigDecimal.ZERO) != 0 && residueTransportWeight.compareTo(new BigDecimal("35")) < 0){
throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND,"当前货单剩余吨数不足35吨,无法挂单"); throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND,"当前货单剩余吨数不足35吨,无法挂单");
} }
......
...@@ -12,8 +12,8 @@ import com.clx.order.param.mq.FreezeTriggerMqParam; ...@@ -12,8 +12,8 @@ import com.clx.order.param.mq.FreezeTriggerMqParam;
import com.clx.performance.common.MqWrapper; import com.clx.performance.common.MqWrapper;
import com.clx.performance.component.IdGenerateSnowFlake; import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.config.ClxMessageConfig; import com.clx.performance.config.ClxMessageConfig;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.*; import com.clx.performance.dao.*;
import com.clx.performance.enums.IdTypeEnum; import com.clx.performance.enums.IdTypeEnum;
import com.clx.performance.enums.OwnerAccountEnum; import com.clx.performance.enums.OwnerAccountEnum;
...@@ -41,8 +41,8 @@ import com.clx.performance.utils.excel.ExcelUtil; ...@@ -41,8 +41,8 @@ import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.OwnerAccountAllVO; import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO; import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO;
import com.clx.performance.vo.pc.OwnerAccountVO; import com.clx.performance.vo.pc.OwnerAccountVO;
import com.clx.user.feign.OwnerFeign;
import com.clx.user.enums.owner.FreezeSettingEnum; import com.clx.user.enums.owner.FreezeSettingEnum;
import com.clx.user.feign.OwnerFeign;
import com.clx.user.feign.OwnerInfoFeign; import com.clx.user.feign.OwnerInfoFeign;
import com.clx.user.param.pc.owner.UpdateOwnerBindCardFeignParam; import com.clx.user.param.pc.owner.UpdateOwnerBindCardFeignParam;
import com.clx.user.vo.feign.OwnerInfoFeignVO; import com.clx.user.vo.feign.OwnerInfoFeignVO;
...@@ -57,23 +57,19 @@ import lombok.AllArgsConstructor; ...@@ -57,23 +57,19 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder; import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.UUID;
@Slf4j @Slf4j
@Service @Service
...@@ -415,7 +411,7 @@ public class OwnerAccountServiceImpl implements OwnerAccountService { ...@@ -415,7 +411,7 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
mq.setUserNo(ownerUserNo); mq.setUserNo(ownerUserNo);
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build(); Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build();
//设置延时5秒处理,防止事务未提交 //设置延时5秒处理,防止事务未提交
message.getMessageProperties().setExpiration("5000"); message.getMessageProperties().setHeader("x-delay", 5000);
rabbitTemplate.send(RabbitKeyConstants.FREEZE_TRIGGER_EXCHANGE, RabbitKeyConstants.FREEZE_TRIGGER_ROUTING_KEY,message); rabbitTemplate.send(RabbitKeyConstants.FREEZE_TRIGGER_EXCHANGE, RabbitKeyConstants.FREEZE_TRIGGER_ROUTING_KEY,message);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论