zoujiajian 9 months ago
parent
commit
2b742fb75f

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/mapper/claudecode/ClaudeCodeDeductOrderRelateMapper.java

@@ -2,6 +2,9 @@ package com.cyksj.mapper.claudecode;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.ClaudeCodeDeductOrderRelate;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 项目名: yhlxj11111111
@@ -10,4 +13,5 @@ import com.cyksj.model.entity.ClaudeCodeDeductOrderRelate;
  * 创建时间:2025/10/15 10:43
  */
 public interface ClaudeCodeDeductOrderRelateMapper extends BaseMapper<ClaudeCodeDeductOrderRelate> {
+	Integer selectDeductUpgradeRelation(@Param("relationId") Long relationId, @Param("userIds") List<Long> userIdList);
 }

+ 16 - 0
netflix-dao/src/main/resources/mapper/ClaudeCodeDeductOrderRelateMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.cyksj.mapper.claudecode.ClaudeCodeDeductOrderRelateMapper">
+
+    <select id="selectDeductUpgradeRelation" resultType="java.lang.Integer">
+        select count(o.id) from claude_code_deduct_order_relate ccor inner join order_don o on o.id = ccor.order_id
+        and ccor.relation_id = #{relationId}
+        where o.user_id in
+        <foreach collection="userIds" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        and o.status = 'refund'
+        limit 1
+    </select>
+</mapper>

+ 5 - 1
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -1044,7 +1044,11 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                         .eq(UserTicketClearedRecord::getSource, UserTicketClearedRecord.Source.cc_deduct)
                         .gt(UserTicketClearedRecord::getCreatedTime, orderDon.getCreatedTime()));
                 if (selectCount1 > 0) {
-                    throw BusinessRuntimeException.getInstance("车票已被抵扣升级 无法退款");
+                    //抵扣车票对应的 新车票是否已经退款
+                    Integer selectCount = claudeCodeDeductOrderRelateMapper.selectDeductUpgradeRelation(relationId, userIdList);
+                    if (selectCount == 0) {
+                        throw BusinessRuntimeException.getInstance("车票已被抵扣升级 无法退款");
+                    }
                 }
             }
             //虚拟原订单是否已过期