Przeglądaj źródła

Revert "线上/下余额退款"

This reverts commit 4336d0269415a13abe56b07ed9e75d68705a9c55.
zhijiezhao 3 lat temu
rodzic
commit
e54823fc83

+ 32 - 47
src/main/java/com/caimei/modules/bulkpurchase/web/CmRefundsProductController.java

@@ -267,39 +267,37 @@ public class CmRefundsProductController extends BaseController {
             BpClause bpClause = new BpClause();
             bpClause.setEnabledStatus("1");
             List<BpClause> bpClauses = bpClauseService.findList(bpClause);
-
             CmDiscernReceipt cmDiscernReceipt = cmDiscernReceiptDao.findPayType(newOrder.getOrderID().toString());
+
             //是否可以线上退回
             boolean returnOnline = false;
             if (cmDiscernReceipt != null && "1".equals(cmDiscernReceipt.getPayWay())) {
                 Date splitTime = cmDiscernReceiptDao.findSplitTime(newOrder.getOrderID());
                 if (splitTime != null) {
-                    Calendar calendar = Calendar.getInstance();
-                    calendar.setTime(splitTime);
-                    calendar.set(Calendar.HOUR_OF_DAY, 23);
-                    calendar.set(Calendar.MINUTE, 20);
-                    if (calendar.getTime().compareTo(new Date()) > 0) {
-                        returnOnline = true;
-                    }
+//                    Calendar calendar = Calendar.getInstance();
+//                    calendar.setTime(splitTime);
+//                    calendar.set(Calendar.HOUR_OF_DAY, 23);
+//                    calendar.set(Calendar.MINUTE, 20);
+//                    if (calendar.getTime().compareTo(new Date()) > 0) {
+//                        returnOnline = true;
+//                    }
+                    returnOnline = false;
                 } else {
                     returnOnline = true;
                 }
             }
-            //订单支付线上余额
             Double onlineMoney = cmDiscernReceiptDao.findOnlineMoney(newOrder.getOrderID().toString());
-            //线上只能全退,理论不用考虑线上退款
-//            Double refundOnlineMoney = cmDiscernReceiptDao.findRefundOnlineMoney(newOrder.getOrderID().toString());
-            //订单支付线下余额
+            Double refundOnlineMoney = cmDiscernReceiptDao.findRefundOnlineMoney(newOrder.getOrderID().toString());
             Double userMoney = cmDiscernReceiptDao.findUserMoney(newOrder.getOrderID().toString());
             Double refundUserMoney = cmDiscernReceiptDao.findRefundUserMoney(newOrder.getOrderID().toString());
             refundUserMoney = null == refundUserMoney ? 0 : refundUserMoney;
-//            refundOnlineMoney = null == refundOnlineMoney ? 0 : refundOnlineMoney;
+            refundOnlineMoney = null == refundOnlineMoney ? 0 : refundOnlineMoney;
             onlineMoney = null == onlineMoney ? 0 : onlineMoney;
             userMoney = null == userMoney ? 0 : userMoney;
             //线上线下余额-退款
-//            onlineMoney -= refundOnlineMoney;
+            onlineMoney -= refundOnlineMoney;
             userMoney -= refundUserMoney;
-            //退线上/线下
+            //todo 退线上/线下
             if (cmDiscernReceipt != null && "3".equals(cmDiscernReceipt.getPayWay())) {
                 Date splitTime = cmDiscernReceiptDao.findSplitTime(newOrder.getOrderID());
                 if (splitTime != null) {
@@ -307,45 +305,32 @@ public class CmRefundsProductController extends BaseController {
                     calendar.setTime(splitTime);
                     calendar.set(Calendar.HOUR_OF_DAY, 23);
                     calendar.set(Calendar.MINUTE, 20);
-                    //分帐后,如果在当天时间的11.20之前
                     if (calendar.getTime().compareTo(new Date()) > 0) {
-                        //余额全付
-                        //如果当前单线上余额>0,无线下,全付,退线上
-                        if (onlineMoney > 0 && userMoney == 0 && "31".equals(newOrder.getStatus())) {
-                            //1. 当订单全部被线上余额抵扣掉时,订单直接支付成功,无需再支付,但这抵扣掉的线上余额需要参与分账
-                            //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
+                        // 分账前 如果当前单线上余额支付>0并且>退款可以退线上
+                        if (onlineMoney > 0 && MathUtil.compare(onlineMoney, refundOnlineMoney) > 0) {
                             returnOnline = true;
                         }
-                        if (onlineMoney > 0 && userMoney == 0 && "21".equals(newOrder.getStatus())) {
-                            //2. 当线上余额只抵扣了部分订单金额,该订单只能走线上支付
-                            //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
-                            returnOnline = true;
+                        if (userMoney > 0 && newOrder.getPayableAmount() == 0 && MathUtil.compare(newOrder.getPayTotalFee(), newOrder.getBalancePayFee()) == 0) {
+                            //余额全付其中有线下,重新置为不能线上
+                            returnOnline = false;
+                        }
+                        if (onlineMoney > 0 && userMoney > 0 && newOrder.getPayableAmount() > 0) {
+                            //单没付完,线上线下余额都有,不能线上
+                            returnOnline = false;
                         }
-//                        if (userMoney > 0 && onlineMoney > 0 && newOrder.getPayableAmount() == 0 && "31".equals(newOrder.getStatus())) {
-//                            //5. 当线上余额和线下余额两者都抵扣了且将订单金额全部抵扣完了,订单直接支付成功,无需再支付,但这抵扣掉的线上余额需要参与分账
-//                            //此种订单的退款方式有:线下转账,账户余额(两者只能选一个),只能全部退款
-//                            returnOnline = false;
-//                        }
-//                        if (onlineMoney > 0 && userMoney > 0 && "21".equals(newOrder.getStatus())) {
-//                            //6. 当线上余额和线下余额两者都抵扣了但只抵扣了部分订单金额,订单只能走线下支付,点击提交订单,跳转到线下支付页面
-//                            //此种订单的退款方式有:线下转账,账户余额(两者只能选一个),只能全部退款
-//                            //7. 当订单多次付款,前笔款已经分账,后笔款暂未分账,此时申请退款
-//                            //此种订单的退款方式有:线下转账,账户余额(两者只能选一个),只能全部退款,而且是都退到线下余额
-//                            returnOnline = false;
-//                        }
                     }
-                }
-                //未分账
-                else {
-                    if (onlineMoney > 0 && userMoney == 0 && "31".equals(newOrder.getStatus())) {
-                        //1. 当订单全部被线上余额抵扣掉时,订单直接支付成功,无需再支付,但这抵扣掉的线上余额需要参与分账
-                        //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
+                } else {
+                    // 分账前 如果当前单线上余额支付>0并且>退款可以退线上
+                    if (onlineMoney > 0 && MathUtil.compare(onlineMoney, refundOnlineMoney) > 0) {
                         returnOnline = true;
                     }
-                    if (onlineMoney > 0 && userMoney == 0 && "21".equals(newOrder.getStatus())) {
-                        //2. 当线上余额只抵扣了部分订单金额,该订单只能走线上支付
-                        //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
-                        returnOnline = true;
+                    if (userMoney > 0 && newOrder.getPayableAmount() == 0 && MathUtil.compare(newOrder.getPayTotalFee(), newOrder.getBalancePayFee()) == 0) {
+                        //余额全付其中有线下,重新置为不能线上
+                        returnOnline = false;
+                    }
+                    if (userMoney > 0 && onlineMoney > 0 && newOrder.getPayableAmount() > 0) {
+                        //单没付完,线上线下余额都有,不能线上
+                        returnOnline = false;
                     }
                 }
             }

+ 4 - 19
src/main/java/com/caimei/modules/order/web/NewOrderController.java

@@ -699,26 +699,11 @@ public class NewOrderController extends BaseController {
         Double balancePayFee = order.getBalancePayFee();
         CmUser u = cmUserService.get(userID + "");
         if (null != u && null != balancePayFee) {
-            Double userMoney = null == u.getUserMoney() ? 0 : u.getUserMoney();
-            Double onlineMoney = null == u.getOnlineMoney() ? 0 : u.getOnlineMoney();
-            //线上使用余额
-            Double onlineUseMoney = 0d;
-            //线下使用余额
-            Double userUseMoney = 0d;
-            //可用余额
-            Double ableUserMoney = u.getAbleUserMoney();
-            if (onlineMoney > u.getAbleUserMoney()) {
-                onlineUseMoney = u.getAbleUserMoney();
-            } else {
-                userUseMoney = u.getAbleUserMoney() - onlineMoney;
+            Double userMoney = u.getUserMoney();
+            if (null != userMoney) {
+                u.setUserMoney(userMoney - balancePayFee);
+                cmUserDao.updateMoney(u);
             }
-            ableUserMoney = MathUtil.sub(ableUserMoney, MathUtil.add(onlineUseMoney, userUseMoney)).doubleValue();
-            onlineMoney = MathUtil.sub(onlineMoney, onlineUseMoney).doubleValue();
-            userMoney = MathUtil.sub(userMoney, userUseMoney).doubleValue();
-            u.setAbleUserMoney(ableUserMoney);
-            u.setOnlineMoney(onlineMoney);
-            u.setUserMoney(userMoney);
-            cmUserDao.update(u);
         }
         addMessage(redirectAttributes, "确认订单成功");
         return "redirect:" + Global.getAdminPath() + "/order/detail/?id=" + orderID;