Browse Source

线上支付限制

zhijiezhao 3 years ago
parent
commit
2143f2f9f2

+ 4 - 0
src/main/java/com/caimei365/order/mapper/OrderCommonMapper.java

@@ -150,4 +150,8 @@ public interface OrderCommonMapper {
      * 根据用户id查询注册时间
      */
     Date getUserRegisterTime(Integer userId);
+
+    Double findUserMoney(Integer orderId);
+
+    Double findOnlineMoney(Integer orderId);
 }

+ 10 - 3
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -333,11 +333,17 @@ public class PayOrderServiceImpl implements PayOrderService {
         //能否线上判断付供应商是否大于订单金额
 //        orderCommonService.getDiscernReceiptAndSetOrder(order);
 //        boolean payButton = order.isPayButton();
-        // 总成本>应付 不能线上 B2B<10块
+        // 总成本>应付 不能线上
         //todo 判断线上/线下余额
-//        log.info("成本: " + totalCostPrice + "==================  实付: " + order.getPayableAmount());
+        Double userMoney = orderCommonMapper.findUserMoney(orderId);
+        Double onlineMoney = orderCommonMapper.findOnlineMoney(orderId);
+        userMoney = userMoney == null ? 0 : userMoney;
+        onlineMoney = onlineMoney == null ? 0 : onlineMoney;
         if (MathUtil.compare(totalCostPrice, order.getPayableAmount()) > 0 || order.getPayableAmount() <= 0.01) {
             map.put("onlinePay", 2);
+        } else if (userMoney > 0 && onlineMoney > 0 && !"31".equals(order.getStatus())) {
+            //当线上余额和线下余额两者都抵扣了但只抵扣了部分订单金额,订单只能走线下支付,点击提交订单,跳转到线下支付页面
+            map.put("onlinePay", 2);
         } else {
             map.put("onlinePay", 1);
         }
@@ -1120,7 +1126,8 @@ public class PayOrderServiceImpl implements PayOrderService {
         }
     }
 
-    /**todo 佣金要改进入采美网络
+    /**
+     * todo 佣金要改进入采美网络
      * 分账详情
      */
     private List<SplitAccountPo> setSplitAccountDetail(OrderVo order, PayParamBo payParam) {

+ 14 - 0
src/main/resources/mapper/OrderCommonMapper.xml

@@ -490,4 +490,18 @@
     <select id="getUserRegisterTime" resultType="java.util.Date">
         select registerTime from user where userID = #{userId}
     </select>
+    <select id="findUserMoney" resultType="java.lang.Double">
+        SELECT SUM(amount)
+        FROM cm_user_balance_record
+        WHERE orderId = #{orderId}
+          AND balanceType = 1
+          AND delflag = 0
+    </select>
+    <select id="findOnlineMoney" resultType="java.lang.Double">
+        SELECT SUM(amount)
+        FROM cm_user_balance_record
+        WHERE orderId = #{orderId}
+          AND balanceType = 10
+          AND delflag = 0
+    </select>
 </mapper>