15044148858 2 nedēļas atpakaļ
vecāks
revīzija
8be0bd5079

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

@@ -211,7 +211,8 @@ public class CardAppController extends BaseController {
     @PostMapping("/refund")
     @ResponseBody
     public AjaxResult refund(@RequestBody VipCardLog vipCardLog) {
-        AjaxResult ajaxResult = vipCardLogService.refundById(vipCardLog, true);
+        // 1. 先计算退款金额,不更新订单状态和账户信息
+        AjaxResult ajaxResult = vipCardLogService.refundById(vipCardLog, true, false);
         if (ajaxResult.get("data") != null) {
             VipCardLog data = (VipCardLog) ajaxResult.get("data");
             AppRefundParam appRefundParam = new AppRefundParam();
@@ -221,7 +222,10 @@ public class CardAppController extends BaseController {
             appRefundParam.setUserId(Long.valueOf(data.getUserId()));
             appRefundParam.setDescription(vipCardLog.getDescription());
             try {
+                // 2. 执行微信退款
                 payController.refund(appRefundParam);
+                // 3. 微信退款成功后,更新订单状态和账户信息
+                return vipCardLogService.refundById(vipCardLog, false, true);
             } catch (Exception e) {
                 return AjaxResult.error("退款失败!");
             }

+ 1 - 1
qmjszx-admin/src/main/java/beilv/web/controller/competition/CompetitionController.java

@@ -194,7 +194,7 @@ public class CompetitionController extends BaseController {
     @GetMapping("/close/{orderId}")
     @ResponseBody
     public AjaxResult closeStadiumById(@PathVariable("orderId") String orderId) {
-        return vipCardLogService.refundById(new VipCardLog(orderId), false);
+        return vipCardLogService.refundById(new VipCardLog(orderId), false, true);
     }
 
 }

+ 1 - 1
qmjszx-admin/src/main/java/beilv/web/controller/vipCardLog/VipCardLogController.java

@@ -123,6 +123,6 @@ public class VipCardLogController extends BaseController {
     @PostMapping("/refund")
     @ResponseBody
     public AjaxResult refund(VipCardLog vipCardLog){
-        return vipCardLogService.refundById(vipCardLog, false);
+        return vipCardLogService.refundById(vipCardLog, false, true);
     }
 }

+ 1 - 1
qmjszx-business/src/main/java/beilv/vipCardLog/service/IVipCardLogService.java

@@ -69,7 +69,7 @@ public interface IVipCardLogService {
 
     int getRegistrantsNumber(VipCardLog vipCardLog);
 
-    AjaxResult refundById(VipCardLog vipCardLog, boolean isOnline);
+    AjaxResult refundById(VipCardLog vipCardLog, boolean isOnline, boolean executeUpdate);
 
     List<Map<String, Object>> selectYueQiuList(VipCardLog vipCardLog);
 

+ 37 - 26
qmjszx-business/src/main/java/beilv/vipCardLog/service/impl/VipCardLogServiceImpl.java

@@ -257,7 +257,7 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
     }
 
     @Override
-    public AjaxResult refundById(VipCardLog vipCardLog, boolean isOnline) {
+    public AjaxResult refundById(VipCardLog vipCardLog, boolean isOnline, boolean executeUpdate) {
 
 
         if(StringUtils.isEmpty(vipCardLog.getId())){
@@ -318,8 +318,6 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
                 if (cancelTime.isBefore(now)) {
                     return AjaxResult.error("距离开场不足" + cancelMinutes + "分钟, 不允许线上退款!如需退款请线下联系工作人员!");
                 }
-                admissionTicket.setAdmissionTicketStatus("0");
-                ticketService.updateBeilvAdmissionTicket(admissionTicket);
             }
 
 
@@ -372,35 +370,48 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
         }
 
         vipCardLog.setRefundPrice(refundPrice);
+        orderInfo.setRefundPrice(refundPrice);
+
+        // executeUpdate=true 时才执行更新操作(包括订单状态、会员卡余额、次卡次数等)
+        if (executeUpdate) {
+            if("vipCard".equals(orderInfo.getPaymentType())){
+                //查询会员卡信息
+                VipCard vipCard = vipCardService.selectVipCardById(orderInfo.getPaymentId());
+                //写入会员卡流水
+                VipCardAmountLog vipCardAmountLog = new VipCardAmountLog(orderInfo.getUserId(), orderInfo.getPaymentId(), orderInfo.getId(), vipCard.getBalance(), refundPrice, "1");
+                amountLogMapper.insertVipCardAmountLog(vipCardAmountLog);
+                vipCard.setBalance(vipCardAmountLog.getRemainingAmount());
+                vipCardService.updateVipCard(vipCard);
+
+            } else if ("numCard".equals(orderInfo.getPaymentType())) {
+                //查询次卡信息
+                UserMembershipCard userMembershipCard = userMembershipCardService.selectUserMembershipCardById(Long.valueOf(orderInfo.getPaymentId()));
+                //剩余使用次数+1
+                userMembershipCard.setRemainingNumber(userMembershipCard.getRemainingNumber() + refundSum);
+                //更新次卡信息
+                userMembershipCardService.updateUserMembershipCard(userMembershipCard);
+            }
 
-        if("vipCard".equals(orderInfo.getPaymentType())){
-            //查询会员卡信息
-            VipCard vipCard = vipCardService.selectVipCardById(orderInfo.getPaymentId());
-            //写入会员卡流水
-            VipCardAmountLog vipCardAmountLog = new VipCardAmountLog(orderInfo.getUserId(), orderInfo.getPaymentId(), orderInfo.getId(), vipCard.getBalance(), refundPrice, "1");
-            amountLogMapper.insertVipCardAmountLog(vipCardAmountLog);
-            vipCard.setBalance(vipCardAmountLog.getRemainingAmount());
-            vipCardService.updateVipCard(vipCard);
-
-        } else if ("weChart".equals(orderInfo.getPaymentType())) {
-            orderInfo.setRefundPrice(refundPrice);
-        } else if ("numCard".equals(orderInfo.getPaymentType())) {
-            //查询次卡信息
-            UserMembershipCard userMembershipCard = userMembershipCardService.selectUserMembershipCardById(Long.valueOf(orderInfo.getPaymentId()));
-            //剩余使用次数+1
-            userMembershipCard.setRemainingNumber(userMembershipCard.getRemainingNumber() + refundSum);
-            //更新次卡信息
-            userMembershipCardService.updateUserMembershipCard(userMembershipCard);
-        }
+            vipCardLog.setRefundTime(DateUtils.getNowDate());
+            vipCardLog.setPaymentStatus("payment_status_refunded");
+            vipCardLogMapper.updateVipCardLog(vipCardLog);
 
-        vipCardLog.setRefundTime(DateUtils.getNowDate());
-        vipCardLog.setPaymentStatus("payment_status_refunded");
-        vipCardLogMapper.updateVipCardLog(vipCardLog);
+            // 如果是约球订单,更新场次状态
+            if ("yueqiu".equals(orderInfo.getOrderType())) {
+                AdmissionTicket admissionTicket = new AdmissionTicket();
+                admissionTicket.setId(orderInfo.getBusId());
+                admissionTicket.setAdmissionTicketStatus("0");
+                ticketService.updateBeilvAdmissionTicket(admissionTicket);
+            }
+
+            return AjaxResult.success("退款成功!");
+        }
 
+        // executeUpdate=false 时只返回计算结果,不更新任何状态
         if ("weChart".equals(orderInfo.getPaymentType())){
             return AjaxResult.success(orderInfo);
         }
-        return AjaxResult.success("退款成功!");
+        return AjaxResult.success("退款金额计算成功!");
 
     }