Browse Source

保存订单

lijun 5 years ago
parent
commit
859eb2fde5

+ 1 - 1
src/main/java/com/caimei/controller/order/OrderController.java

@@ -135,7 +135,7 @@ public class OrderController {
      * "productInfo":[{"productId":1,"productNum":80},{"productId":2,"productNum":100}]
      * }
      * ]
-     * 参数6=balanceDeductionFlag是否使用余额抵扣(1使用,2使用)
+     * 参数6=balanceDeductionFlag是否使用余额抵扣(1使用,2使用)
      * 参数7=orderShouldPayFee订单应付金额(商品总金额 - 余额抵扣 - 经理折扣默认为0)
      */
     @ResponseBody

+ 41 - 1
src/main/java/com/caimei/service/order/impl/OrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.caimei.service.order.impl;
 
 import com.alibaba.fastjson.JSONArray;
+import com.caimei.controller.order.OrderController;
 import com.caimei.entity.*;
 import com.caimei.mapper.order.OrderMapper;
 import com.caimei.mapper.products.OrganizeProductsMapper;
@@ -12,16 +13,21 @@ import com.caimei.utils.AppUtils;
 import com.caimei.utils.NoUtils;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
 @Service
 public class OrderServiceImpl implements OrderService {
+    protected static final Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
+
     @Autowired
     private OrderMapper orderMapper;
     @Autowired
@@ -215,7 +221,8 @@ public class OrderServiceImpl implements OrderService {
             double productTotalFee = 0d;//商品总金额 (商品单价乘以数量,再加上税费[默认0])
             //double orderTotalFee = 0d;//小计金额 (商品折后单价乘以数量,再加上税费[默认0])商城下单和商品总金额一样
             double payTotalFee = 0d;//订单总额(小计金额减去经理折扣后,再加上运费[默认0])
-            double payableAmount = 0d;//真实支付金额(订单总额减去抵扣的账户余额)
+            BigDecimal payableAmount = new BigDecimal(0);//真实支付金额(订单总额减去抵扣的账户余额)
+            double balancePayFee = 0d;//余额支付金额
             for (Map<String, Object> shopOrderInfo : orderInfoList) {//遍历订单商品信息
                 String shopId = (String) shopOrderInfo.get("shopId");
                 String note = (String) shopOrderInfo.get("note");
@@ -243,7 +250,37 @@ public class OrderServiceImpl implements OrderService {
                     }
                 }
             }
+
+            //统计订单应付总金额
             payTotalFee = productTotalFee;
+            BigDecimal bdPayTotalFee = new BigDecimal(payTotalFee);
+            //判断余额使用
+            if (StringUtils.equals("1", balanceDeductionFlag)) {//勾选余额抵扣
+                //获取用户最新余额
+                Double userMoney = personalMapper.ableUserMoney(userId);
+                logger.info(">>>>>"+userId+"userMoney:"+userMoney);
+                if (null == userMoney) userMoney = 0d;
+                BigDecimal bdUserMoney = new BigDecimal(userMoney);
+                if (payTotalFee > userMoney) {//部分抵扣
+                    balancePayFee = userMoney;
+                    payableAmount = bdPayTotalFee.subtract(bdUserMoney);
+                    user.setAbleUserMoney(new BigDecimal(0));//余额抵扣用完
+                    userMapper.updateAbleUserMoney(user);
+                } else if (payTotalFee < userMoney.doubleValue()) {//全部用余额抵扣,无需直接,直接变成支付完成
+                    balancePayFee = payTotalFee;
+                    user.setAbleUserMoney(bdUserMoney.subtract(bdPayTotalFee));
+                    user.setUserMoney(bdUserMoney.subtract(bdPayTotalFee));
+                    userMapper.updateAbleUserMoney(user);
+//                    userMapper.updateUserMoney(user);
+                } else if (payTotalFee == userMoney.doubleValue()) {
+                    balancePayFee = payTotalFee;
+                    user.setAbleUserMoney(new BigDecimal(0));
+                    user.setUserMoney(bdUserMoney.subtract(bdPayTotalFee));
+                    userMapper.updateAbleUserMoney(user);
+//                    userMapper.updateUserMoney(user);
+                }
+            }
+
 
             //初始化主订单参数
             CmOrder cmOrder = new CmOrder();
@@ -292,6 +329,9 @@ public class OrderServiceImpl implements OrderService {
 
             //保存订单商品
 
+            //地址信息
+
+            //发票信息
 
             //获取用户最新余额,判断是否存在