Explorar o código

小程序直接退款流程优化

lishiqiang hai 1 día
pai
achega
0b49718085

+ 0 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/refund/RefundDetailMapper.java

@@ -36,6 +36,5 @@ public interface RefundDetailMapper extends BaseMapperX<RefundDetailDO> {
     List<Map<String,Object>> selectTradeDetailStatusByRefund(@Param("refundId") Long refundId);
 
     Map<String,Object> selectOrderOriginRefundAmount(@Param("orderId") Long orderId);
-    Map<String, Object> selectRefundAmountByOriginOrderNo(@Param("originOrderNo") String originOrderNo);
     Map<String, Object> selectRefundAmountFromOrderDetail(@Param("orderId")  Long orderId);
 }

+ 5 - 5
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/framework/mq/TradeMqReceiver.java

@@ -143,7 +143,7 @@ public class TradeMqReceiver {
     @RabbitListener(queues = TradeMqConfig.QUEUE_PROCESS_SUCCESS, concurrency = "5")
     @TenantIgnore
     public void processOrderProcessSuccess(String data, Message message, Channel channel) throws IOException {
-        log.debug("收到出票成功消息:" + data);
+        log.error("收到出票成功消息:" + data);
         try {
             TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(Long.parseLong(data));
             tradeOrderHandlers.forEach(handler -> handler.afterProcessSuccess(tradeOrderDO));
@@ -164,7 +164,7 @@ public class TradeMqReceiver {
     @RabbitListener(queues = TradeMqConfig.QUEUE_PROCESS_FAIL, concurrency = "3")
     @TenantIgnore
     public void processOrderProcessFail(String data, Message message, Channel channel) throws IOException {
-        log.debug("收到出票失败消息:" + data);
+        log.error("收到出票失败消息:" + data);
         try {
             TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(Long.parseLong(data));
             tradeOrderHandlers.forEach(handler -> handler.afterProcessFail(tradeOrderDO));
@@ -185,7 +185,7 @@ public class TradeMqReceiver {
     @RabbitListener(queues = TradeMqConfig.DL_QUEUE_ORDER_PAY, concurrency = "3")
     @TenantIgnore
     public void processOrderPayDelay(String data, Message message, Channel channel) throws IOException {
-        log.debug("收到支付延迟消息:" + data);
+        log.error("收到支付延迟消息:" + data);
         try {
             //验证订单是否支付,修改订单状态,发布支付超时消息
             tradeOrderPayService.orderPayTimeOutMessageHandler(Long.parseLong(data),false);
@@ -219,7 +219,7 @@ public class TradeMqReceiver {
     @RabbitListener(queues = TradeMqConfig.QUEUE_REFUND_AUDIT, concurrency = "2")
     @TenantIgnore
     public void processRefundAuditResult(String data, Message message, Channel channel) throws IOException {
-        log.debug("收到退款审核结果消息:" + data);
+        log.error("收到退款审核结果消息:" + data);
         try {
             otaStandardService.notifyRefundAuditResult(Long.parseLong(data));
             channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
@@ -336,7 +336,7 @@ public class TradeMqReceiver {
     @RabbitListener(queues = TradeMqConfig.ORDER_MARKETING_AUDIT, concurrency = "2")
     @TenantIgnore
     public void marketingAudit(String data, Message message, Channel channel) throws IOException {
-        log.info("政策审核MQ通知{}:", data);
+        log.error("政策审核MQ通知{}:", data);
         try {
             //审核通过处理数据
             //marketingService.marketingAuditNotice(data);

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/CommonHandler.java

@@ -97,7 +97,7 @@ public class CommonHandler implements TradeOrderHandler{
     @Override
     public void afterProcessSuccess(TradeOrderDO tradeOrderDO) {
         //旅行社平台金额
-        tradeOrderBizService.updatePlatAmountAfterProcessSuccess(tradeOrderDO);
+//        tradeOrderBizService.updatePlatAmountAfterProcessSuccess(tradeOrderDO);
     }
 
 

+ 5 - 10
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderBizServiceImpl.java

@@ -123,11 +123,7 @@ public class TradeOrderBizServiceImpl implements TradeOrderBizService {
 
     @Override
     public void updatePlatAmountAfterProcessSuccess(TradeOrderDO tradeOrderDO) {
-        //只有内部旅行社下的平台单才处理
-        if (!SellMethodEnum.isInnerAgencySellMethod(tradeOrderDO.getSellMethod())) {
-            return;
-        }
-        doUpdatePlatAmount(tradeOrderDO.getOrderNo());
+
     }
 
     @Override
@@ -149,11 +145,10 @@ public class TradeOrderBizServiceImpl implements TradeOrderBizService {
     }
 
     private void doUpdatePlatAmount(String originOrderNo) {
-        TenantUtils.executeIgnore(() -> {
-            BigDecimal platPayAmount = tradeOrderRepositoryService.getPlatPayAmountByOriginOrderNo(originOrderNo);
-            BigDecimal platRefundAmount = tradeRefundRepositoryService.getRefundAmountByOriginOrderNo(originOrderNo);
-            tradeOrderRepositoryService.updateOrderPlatAmount(originOrderNo, platPayAmount.subtract(platRefundAmount));
-        });
+//        TenantUtils.executeIgnore(() -> {
+//            BigDecimal platRefundAmount = tradeRefundRepositoryService.getRefundAmountByOriginOrderNo(originOrderNo);
+//            tradeOrderRepositoryService.updateOrderPlatAmount(originOrderNo, platPayAmount.subtract(platRefundAmount));
+//        });
     }
 
     @Override

+ 1 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/refund/impl/TradeRefundRepositoryServiceImpl.java

@@ -408,8 +408,7 @@ public class TradeRefundRepositoryServiceImpl implements TradeRefundRepositorySe
 
     @Override
     public BigDecimal getRefundAmountByOriginOrderNo(String originOrderNo) {
-        Map<String,Object> data = refundDetailMapper.selectRefundAmountByOriginOrderNo(originOrderNo);
-        return MapUtil.get(data,"totalRefundAmount",BigDecimal.class,BigDecimal.ZERO);
+        return BigDecimal.ZERO;
     }
 
     @Override

+ 29 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/refund/impl/TradeRefundServiceImpl.java

@@ -404,8 +404,36 @@ public class TradeRefundServiceImpl implements TradeRefundService {
                 if (flag == null) {
                     flag = true;
                 }
+
+                TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(refundDO.getOrderId());
+
+                ReduceStockReqDTO reqDTO = new ReduceStockReqDTO();
+                reqDTO.setOrderId(tradeOrderDO.getId());
+                reqDTO.setOrderStatus(tradeOrderDO.getOrderStatus());
+                //TODO: 当前默认为分销商,扣分销商库存,门店的后续再完善
+                reqDTO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());
+                reqDTO.setVoyageId(tradeOrderDO.getVoyageId());
+                reqDTO.setDistributorId(Long.valueOf(tradeOrderDO.getSourceId()));
+                reqDTO.setStoreId(tradeOrderDO.getStoreId());
+
+                TradeOrderTotalDO tradeOrderTotal = tradeOrderTotalMapper.selectOne(new LambdaQueryWrapper<TradeOrderTotalDO>().eq(TradeOrderTotalDO::getOldOrderId, tradeOrderDO.getId()));
+                reqDTO.setUseRoomNum(BigDecimal.valueOf(tradeOrderTotal.getUseRoomTotalNum()));
+
+                List<TradeVisitorDO> tradeDetailDOList = tradeVisitorMapper.selectShipVisitor(tradeOrderDO.getId());
+                List<OrderRoomUseDTO> orderRoomUseDTOList = new ArrayList<>();
+                Map<String, Long> collect = tradeDetailDOList.stream().filter(tradeVisitorDO -> tradeVisitorDO.getRoomId() != null).collect(Collectors.groupingBy(TradeVisitorDO::getRoomId, Collectors.counting()));
+                collect.keySet().forEach(roomId -> {
+                    if(StringUtils.isNotBlank(roomId)) {
+                        OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
+                        orderRoomUseDTO.setRoomId(Long.valueOf(roomId));
+                        orderRoomUseDTO.setNum(BigDecimal.valueOf(collect.get(roomId)).divide(new BigDecimal(2)));
+                        orderRoomUseDTOList.add(orderRoomUseDTO);
+                    }
+                });
+                reqDTO.setOrderRoomList(orderRoomUseDTOList);
+                voyageApi.cancelReduceStock(reqDTO);
             }
-        } catch (ServiceException e) {
+          } catch (ServiceException e) {
             e.printStackTrace();
             ExceptionUtils.log(log, "根据支付类型发起退款异常refundId:" + refundId, e);
             return CommonResult.error(e);

+ 1 - 15
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -10,7 +10,6 @@
         <result property="isRead" column="isRead"/>
         <result property="sourceName" column="source_name"/>
         <result property="externalOrderNo" column="external_order_no"/>
-        <result property="externalOriginOrderNo" column="external_origin_order_no"/>
         <result property="routePlanId" column="route_plan_id"/>
         <result property="routePlanName" column="route_plan_name"/>
         <result property="visitorType" column="visitor_type"/>
@@ -61,7 +60,6 @@
         <result property="isRead" column="isRead"/>
         <result property="sourceName" column="source_name"/>
         <result property="externalOrderNo" column="external_order_no"/>
-        <result property="externalOriginOrderNo" column="external_origin_order_no"/>
         <result property="routePlanId" column="route_plan_id"/>
         <result property="routePlanName" column="route_plan_name"/>
         <result property="visitorType" column="visitor_type"/>
@@ -318,10 +316,6 @@
             </otherwise>
         </choose>
 
-        <if test="vo.externalOriginOrderNo != null and vo.externalOriginOrderNo != ''">
-            AND td.external_origin_order_no = #{vo.externalOriginOrderNo}
-        </if>
-
         <if test="vo.memberId != null and vo.memberId != ''">
             AND td.member_id = #{vo.memberId}
         </if>
@@ -529,10 +523,6 @@
             </otherwise>
         </choose>
 
-        <if test="vo.externalOriginOrderNo != null and vo.externalOriginOrderNo != ''">
-            AND td.external_origin_order_no = #{vo.externalOriginOrderNo}
-        </if>
-
         <if test="vo.memberId != null and vo.memberId != ''">
             AND td.member_id = #{vo.memberId}
         </if>
@@ -710,10 +700,6 @@
             </otherwise>
         </choose>
 
-        <if test="vo.externalOriginOrderNo != null and vo.externalOriginOrderNo != ''">
-            AND td.external_origin_order_no = #{vo.externalOriginOrderNo}
-        </if>
-
         <if test="vo.memberId != null and vo.memberId != ''">
             AND td.member_id = #{vo.memberId}
         </if>
@@ -1033,7 +1019,7 @@
     </select>
 
     <select id="getPdaOrderInfo"  resultMap="MiddleWareDtoResultMap2">
-        SELECT td.id,td.is_read isRead,td.pay_amount,td.order_no,td.external_order_no,td.external_origin_order_no,td.route_plan_id,rt.name route_plan_name,td.visitor_type,td.travel_date,td.sell_method,td.source_id,td.source_name,td.store_id,td.seller_id,td.member_id,td.amount,td.order_status,td.remark,td.share_name,td.create_time,td.is_bind,td.area_manager_id,td.is_marketing,td.is_marketing_use,
+        SELECT td.id,td.is_read isRead,td.pay_amount,td.order_no,td.external_order_no,td.route_plan_id,rt.name route_plan_name,td.visitor_type,td.travel_date,td.sell_method,td.source_id,td.source_name,td.store_id,td.seller_id,td.member_id,td.amount,td.order_status,td.remark,td.share_name,td.create_time,td.is_bind,td.area_manager_id,td.is_marketing,td.is_marketing_use,
         tou.contact_name contactName,tou.credential_no credentialNo,tou.mobile,tou.county,tou.province,tou.city,td.is_change_order,td.agency_group_id,
         top.id payId,top.pay_amount payAmount,top.pay_status,top.payment_type,top.payment_date,top.payment_no,
         td.store_name,td.dispatch_status,td.is_invoice, td.confirm_type, td.travel_status, tr.refund_amount,td.finish_status,

+ 0 - 6
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/refund/RefundDetailMapper.xml

@@ -134,12 +134,6 @@
         group by tr.order_id
     </select>
 
-    <select id="selectRefundAmountByOriginOrderNo" resultType="java.util.Map">
-        select sum(refund_amount) totalRefundAmount
-        FROM  trade_order tod
-        inner join trade_refund tr on tod.id = tr.order_id
-        where tod.external_origin_order_no =#{originOrderNo}  and tr.refund_status=6
-    </select>
 
     <select id="selectRefundAmountFromOrderDetail" resultType="java.util.Map">
         select sum(tr.actual_price) totalRefundAmount