puzhibing
2026-07-31 74c6185eb500b362e777b24fc9cec1673da00df5
修改管理后台
1、修改退款后没有重新添加新的分账记录
1个文件已修改
15 ■■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -7947,22 +7947,23 @@
    }
    /**
     * 软删除旧的非成功/处理中的分账记录,为退款后重新计算分账做准备。
     * 物理删除旧的非成功/处理中的分账记录,为退款后重新计算分账做准备。
     * 仅删除 onlineShareStatus 不是 SUCCESS 或 PROCESSING 的记录,
     * 已成功线上分账的记录不可删除,避免重复分账。
     * <p>
     * 注意:采用物理删除而非软删除,因为表唯一键 uk_order_channel (charging_order_code, pay_channel)
     * 不包含 del_flag 字段,软删除后的记录仍占据唯一键,导致退款后无法插入同订单同渠道的新分账记录。
     */
    private void softDeleteStaleChargingOrderShareRecords(TChargingOrder chargingOrder) {
        if (chargingOrder == null || !StringUtils.hasLength(chargingOrder.getCode())) {
            return;
        }
        LambdaUpdateWrapper<TChargingOrderShareRecord> wrapper = new LambdaUpdateWrapper<>();
        LambdaQueryWrapper<TChargingOrderShareRecord> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TChargingOrderShareRecord::getChargingOrderCode, chargingOrder.getCode())
                .eq(TChargingOrderShareRecord::getDelFlag, false)
                .notIn(TChargingOrderShareRecord::getOnlineShareStatus, "SUCCESS", "PROCESSING")
                .set(TChargingOrderShareRecord::getDelFlag, true);
        int count = chargingOrderShareRecordMapper.update(null, wrapper);
                .notIn(TChargingOrderShareRecord::getOnlineShareStatus, "SUCCESS", "PROCESSING");
        int count = chargingOrderShareRecordMapper.delete(wrapper);
        if (count > 0) {
            log.info("软删除充电订单旧分账记录,订单号:{},删除数量:{}", chargingOrder.getCode(), count);
            log.info("物理删除充电订单旧分账记录,订单号:{},删除数量:{}", chargingOrder.getCode(), count);
        }
    }