zhijiezhao 3 vuotta sitten
vanhempi
commit
4a0252193a

+ 2 - 0
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -40,6 +40,8 @@ public interface PayOrderMapper {
      * @param userId 用户Id
      */
     void updateMoneyByUserId(Double userMoney, Double ableUserMoney,Double onlineMoney,Integer userId);
+
+    void updateAbleMoney( Double ableUserMoney,Integer userId);
     /**
      * 根据用户Id更新线上余额
      *

+ 23 - 15
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -975,34 +975,42 @@ public class SubmitServiceImpl implements SubmitService {
                 if (3 != orderParamBo.getCartType()) {
                     // 部收款待发货
                     mainOrder.setStatus(21);
+                    //非协销下单,直接扣
+                    // 线上+线下只够部分抵扣,线上线下可用都置为0
+                    payOrderMapper.updateMoneyByUserId(0d, 0d, 0d, orderParamBo.getUserId());
+                    log.info("【提交订单】>>>>>更新用户余额,抵扣后剩余:[userMoney:" + 0 + "] ,ableUserMoney:" + 0);
+                }else{
+                    //协销下单,只扣可用余额
+                    payOrderMapper.updateAbleMoney(0d, orderParamBo.getUserId());
                 }
                 mainOrder.setReceiptStatus(2);
-                // 线上+线下只够部分抵扣,线上线下可用都置为0
-                payOrderMapper.updateMoneyByUserId(0d, 0d, 0d, orderParamBo.getUserId());
-                log.info("【提交订单】>>>>>更新用户余额,抵扣后剩余:[userMoney:" + 0 + "] ,ableUserMoney:" + 0);
             } else {
                 // 全部用余额抵扣, 直接变成支付完成
                 balancePayFee.set(payTotalFee.get());
                 payableAmount.set(0d);
+                Double availableMoney = MathUtil.sub(orderParamBo.getAbleUserMoney(), balancePayFee).doubleValue();
                 if (3 != orderParamBo.getCartType()) {
                     // 已收款待发货
                     mainOrder.setStatus(31);
+                    //非协销下单,直接扣
+                    // 线上余额全付
+                    if (MathUtil.compare(orderParamBo.getOnlineMoney(), balancePayFee) > 0) {
+                        Double onlineMoney = MathUtil.sub(orderParamBo.getOnlineMoney(), balancePayFee).doubleValue();
+                        payOrderMapper.updateOnlineMoneyByUserId(onlineMoney, availableMoney, orderParamBo.getUserId());
+                        log.info("【提交订单】>>>>>更新用户余额,抵扣后剩余:[userMoney:" + availableMoney + "] ,ableUserMoney:" + availableMoney);
+                    } else {
+                        //线上余额不够,线上全抵
+                        Double userMoney = MathUtil.sub(orderParamBo.getUserMoney(), MathUtil.sub(balancePayFee, orderParamBo.getOnlineMoney())).doubleValue();
+                        //更新线上/线下余额  线上置为0,全部抵扣
+                        payOrderMapper.updateMoneyByUserId(userMoney, MathUtil.sub(orderParamBo.getAbleUserMoney(), balancePayFee).doubleValue(), 0d, orderParamBo.getUserId());
+                    }
+                }else{
+                    //协销下单,只扣可用余额,确认订单在扣usermoney和onlinemoney
+                    payOrderMapper.updateAbleMoney(availableMoney, orderParamBo.getUserId());
                 }
                 mainOrder.setReceiptStatus(3);
                 mainOrder.setPayFlag(1);
                 isPaySuccessFlag = true;
-                // 线上余额全付
-                if (MathUtil.compare(orderParamBo.getOnlineMoney(), balancePayFee) > 0) {
-                    Double onlineMoney = MathUtil.sub(orderParamBo.getOnlineMoney(), balancePayFee).doubleValue();
-                    Double availableMoney = MathUtil.sub(orderParamBo.getAbleUserMoney(), balancePayFee).doubleValue();
-                    payOrderMapper.updateOnlineMoneyByUserId(onlineMoney, availableMoney, orderParamBo.getUserId());
-                    log.info("【提交订单】>>>>>更新用户余额,抵扣后剩余:[userMoney:" + availableMoney + "] ,ableUserMoney:" + availableMoney);
-                } else {
-                    //线上余额不够,线上全抵
-                    Double userMoney = MathUtil.sub(orderParamBo.getUserMoney(), MathUtil.sub(balancePayFee, orderParamBo.getOnlineMoney())).doubleValue();
-                    //更新线上/线下余额  线上置为0,全部抵扣
-                    payOrderMapper.updateMoneyByUserId(userMoney, MathUtil.sub(orderParamBo.getAbleUserMoney(), balancePayFee).doubleValue(), 0d, orderParamBo.getUserId());
-                }
             }
             // 支付时间
             mainOrder.setPayTime(curDateStr);

+ 5 - 0
src/main/resources/mapper/PayOrderMapper.xml

@@ -32,6 +32,11 @@
             onlineMoney   = #{onlineMoney}
         WHERE userID = #{userId}
     </update>
+    <update id="updateAbleMoney">
+        UPDATE USER
+        SET ableUserMoney = #{ableUserMoney}
+        WHERE userID = #{userId}
+    </update>
     <insert id="insertOrderPayLink" keyColumn="id" keyProperty="id"  parameterType="com.caimei365.order.model.vo.OrderPayLinkVo" useGeneratedKeys="true">
         INSERT INTO cm_order_pay_link (orderId, vipRecordId, vipMonth, linkLogo, unpaidAmount, generateTime, effectiveTime, payStatus, payType, delFlag)
         VALUES (#{orderId}, #{vipRecordId}, #{vipMonth}, #{linkLogo}, #{unpaidAmount}, #{generateTime}, #{effectiveTime}, #{payStatus}, #{payType}, #{delFlag})