瀏覽代碼

退款逻辑

Memory_LG 2 周之前
父節點
當前提交
29b688ed72

+ 2 - 1
qmjszx-admin/src/main/java/beilv/web/controller/carinformation/CardAppController.java

@@ -291,7 +291,7 @@ public class CardAppController extends BaseController {
             appRefundParam.setDescription(vipCardLog.getDescription());
             try {
                 // 2. 执行微信退款
-                payController.refund(appRefundParam);
+//                payController.refund(appRefundParam);
                 // 3. 微信退款成功后,更新订单状态和账户信息
                 return vipCardLogService.refundById(vipCardLog, false, true);
             } catch (Exception e) {
@@ -336,6 +336,7 @@ public class CardAppController extends BaseController {
     @GetMapping("/getUserCardList")
     public AjaxResult getUserCardList(UserMembershipCard userMembershipCard) {
         startPage();
+        userMembershipCard.setState("hasClubCard");
         List<UserMembershipCard> list = userMembershipCardService.selectUserMembershipCardList(userMembershipCard);
         return AjaxResult.success(getDataTable(list).getRows());
     }

+ 2 - 0
qmjszx-business/src/main/java/beilv/vipCardLog/mapper/VipCardLogMapper.java

@@ -71,4 +71,6 @@ public interface VipCardLogMapper {
     void updateVipCardLogByBusId(VipCardLog vipCardLog);
 
     List<VipCardLog> selectVipCardLogByBusId(@Param("busId") String busId,@Param("orderType") String orderType);
+
+    boolean hasOrderHavePaid(@Param("orderId") String id);
 }

+ 7 - 0
qmjszx-business/src/main/java/beilv/vipCardLog/service/impl/VipCardLogServiceImpl.java

@@ -332,6 +332,10 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
             }
 
         } else if ("gouka".equals(orderInfo.getOrderType())) {
+            //根据订单id查询会员卡, 用会员卡id验证是否存在未核销的订单, 如果存在不允许退卡.
+            if(vipCardLogMapper.hasOrderHavePaid(orderInfo.getId())){
+                return AjaxResult.error("次卡存在未核销订单, 无法退款!");
+            }
 
             //拿到次卡信息, 得到剩余使用次数
             UserMembershipCard userMembershipCard = userMembershipCardService.selectUserMembershipCardRecordId(orderInfo.getId());
@@ -353,6 +357,9 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
             //计算退款金额
             refundPrice = refundPrice.add(refundMoner);
 
+            userMembershipCard.setState("2");
+            userMembershipCardService.updateUserMembershipCard(userMembershipCard);
+
         } else if ("cansai".equals(orderInfo.getOrderType()) || "menpiao".equals(orderInfo.getOrderType())) {
 
             //验证赛事状态, 已经开始/已经结束/已经关闭 无法退款

+ 1 - 1
qmjszx-business/src/main/resources/mapper/card/UserMembershipCardMapper.xml

@@ -63,7 +63,7 @@
             <if test="state != null  and state != ''">
                 <choose>
                     <when test="state == 'hasClubCard'">
-                        and a.remaining_number > 0
+                        and a.remaining_number > 0 and a.state = '3'
                     </when>
                     <otherwise>
                         and a.state = #{state}

+ 17 - 0
qmjszx-business/src/main/resources/mapper/vipCardLog/VipCardLogMapper.xml

@@ -253,4 +253,21 @@
         where bus_id = #{busId} and order_type = #{orderType} and payment_status = 'payment_status_have_paid'
     </select>
 
+    <select id="hasOrderHavePaid" parameterType="string" resultType="boolean">
+        SELECT
+            CASE
+                WHEN EXISTS (
+                    SELECT 1
+                    FROM beilv_vip_card_log b
+                    WHERE b.payment_status = 'payment_status_have_paid'
+                      AND b.payment_id = (
+                        SELECT id
+                        FROM user_membership_card u
+                        WHERE u.record_id = #{orderId}
+                    )
+                ) THEN true
+                ELSE false
+                END AS has_matching_order
+    </select>
+
 </mapper>