Pārlūkot izejas kodu

线上/下余额退款

zhijiezhao 3 gadi atpakaļ
vecāks
revīzija
3289f730cb

+ 8 - 2
src/main/java/com/caimei/modules/order/dao/CmReceiptOrderRelationDao.java

@@ -34,6 +34,12 @@ public interface CmReceiptOrderRelationDao extends CrudDao<CmReceiptOrderRelatio
     Date findOnlinePayment(Integer orderID);
 
     Double findOnlineMoneyPay(Integer orderId);
-    //查未分帐的充为线上余额的订金/余额订单
-    List<String> findMborderId(Integer orderId);
+
+    List<String> findMborderId(Integer userId);
+
+    Integer findUserId(Integer orderId);
+
+    Double findMoney(String mbOrderId);
+
+    String findPayTypeByOrderRequestNo(String mbOrderId);
 }

+ 8 - 24
src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java

@@ -833,15 +833,14 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                     Double onlineMoneyPay = cmReceiptOrderRelationDao.findOnlineMoneyPay(orderId);
                     if (null != onlineMoneyPay && onlineMoneyPay >= 0.01) {
                         //根据userid查产生线上余额的唯一请求单号,发起退款请求
-                        String userId = cmReceiptOrderRelationDao.findUserId(orderId);
-                        //用户名下未分帐的线上充值订金/余额订单唯一订单号
-                        ArrayList<String> orderRequestNos = cmReceiptOrderRelationDao.findMborderId(userId);
-                        //用户名下线上退款回线上余额的原唯一订单号
-                        ArrayList<String> orderRequestNo = cmReceiptOrderRelationDao.findOrderRequestNo(userId);
-                        if (orderRequestNo != null && orderRequestNo.size() > 0) {
-                            for (String s : orderRequestNo) {
+                        Integer userId = cmReceiptOrderRelationDao.findUserId(orderId);
+                        //用户名下未分帐的线上余额订单mborderid
+                        List<String> mborderIds = cmReceiptOrderRelationDao.findMborderId(userId);
+                        //用户名下线上退款回线上余额的原mborderid
+                        if (mborderIds != null && mborderIds.size() > 0) {
+                            for (String s : mborderIds) {
                                 if (onlineMoneyPay > 0) {
-                                    //该单退还金
+                                    //该单线上余
                                     Double money = cmReceiptOrderRelationDao.findMoney(s);
                                     //待支付总线上余额>该笔退款金额,则退全额,否则退待支付
                                     Double refundMoney = MathUtil.compare(onlineMoneyPay, money) > 0 ? money : onlineMoneyPay;
@@ -849,27 +848,12 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                                     //todo 退款
 
 
-                                    onlineMoneyPay = MathUtil.sub(onlineMoneyPay, money).doubleValue();
-                                }
-                            }
-                        }
-                        if (orderRequestNos != null && orderRequestNos.size() > 0) {
-                            for (String requestNo : orderRequestNos) {
-                                if (onlineMoneyPay > 0) {
-                                    //该单退还金额
-                                    Double money = cmReceiptOrderRelationDao.findMoney(requestNo);
-                                    //待支付总线上余额>该笔退款金额,则退全额,否则退待支付
-                                    Double refundMoney = MathUtil.compare(onlineMoneyPay, money) > 0 ? money : onlineMoneyPay;
-                                    String payType=cmReceiptOrderRelationDao.findPayTypeByOrderRequestNo(requestNo);
-                                    //todo 退款
-
-
                                     onlineMoneyPay = MathUtil.sub(onlineMoneyPay, money).doubleValue();
                                 }
                             }
                         }
                         if(onlineMoneyPay<=0){
-                            CmUser user = cmUserDao.get(userId);
+                            CmUser user = cmUserDao.get(userId.toString());
                             //线上余额退完,user表减余额,cubr表统计余额减少
                             CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
                             cmUserBalanceRecord.setBalanceType("19");

+ 20 - 2
src/main/resources/mappings/modules/order/CmReceiptOrderRelationMapper.xml

@@ -212,14 +212,32 @@
 	</select>
 	<select id="findMborderId" resultType="java.lang.String">
 		SELECT cror.mbOrderId FROM cm_receipt_order_relation cror
-		LEFT JOIN cm_user_balance_record cubr ON cror.orderID=cubr.orderId
+		LEFT JOIN cm_user_balance_record cubr ON cror.orderID = cubr.orderId
 		LEFT JOIN cm_order co ON cror.orderID = co.orderID
-		WHERE cubr.balanceType IN (16,17)
+		WHERE cubr.balanceType IN (13, 16, 17, 18, 19)
 		  AND cror.splitStatus = 0
 		  AND cubr.type = 1
 		  AND cror.delFlag = 0
 		  AND cubr.delFlag = 0
 		  AND co.delFlag = 0
 		  AND co.refundType != 2
+          AND cubr.userId = #{userId}
+        order by cror.associateAmount desc
 	</select>
+	<select id="findUserId" resultType="java.lang.Integer">
+		select userId
+		from cm_order
+		where orderID = #{orderId}
+	</select>
+    <select id="findMoney" resultType="java.lang.Double">
+        select associateAmount
+        from cm_receipt_order_relation
+        where mbOrderId = #{mbOrderId}
+    </select>
+    <select id="findPayTypeByOrderRequestNo" resultType="java.lang.String">
+        SELECT payType
+        FROM cm_discern_receipt cdr
+        LEFT JOIN cm_receipt_order_relation cror ON cror.receiptID = cdr.id
+        WHERE mbOrderId = #{mbOrderId}
+    </select>
 </mapper>