|
@@ -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 {
|
|
|
|
|
|
//保存订单商品
|
|
|
|
|
|
+ //地址信息
|
|
|
+
|
|
|
+ //发票信息
|
|
|
|
|
|
//获取用户最新余额,判断是否存在
|
|
|
|