Browse Source

保存订单逻辑

lijun 5 năm trước cách đây
mục cha
commit
a7eedef633

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

@@ -128,7 +128,7 @@ public class OrderController {
     /**
      * 提交订单接口
      *
-     * @return code:-1=(用户账户异常,数据异常,操作异常等),1提交成功(msg=1支付完成,2未完成支付)
+     * @return code:-1=(用户账户异常,数据异常,操作异常等),1提交成功(支付完成),2提交成功(未支付),code为1和2的情况下出现 data{orderNo:订单号,orderID:订单ID,payTotalFee:订单金额,orderMark:订单标识}
      * @Param params参数格式:
      * 参数1=userId用户ID
      * 参数2=organizeID组织ID,
@@ -155,8 +155,8 @@ public class OrderController {
         HttpSession session = request.getSession();
         String openid = (String) session.getAttribute("openid");
         Integer organizeID1 = (Integer) session.getAttribute("organizeID");
-//        CmOperationUser currentUser = loginService.doLogin("oEjHd4gCC7SO5Eo3ogt5g4pj2mNU", 1);
-        CmOperationUser currentUser = loginService.doLogin(openid, organizeID1);
+        CmOperationUser currentUser = loginService.doLogin("oEjHd4gCC7SO5Eo3ogt5g4pj2mNU", 1);
+//        CmOperationUser currentUser = loginService.doLogin(openid, organizeID1);
         if (null == currentUser) {
             return wxJsonModel.error("-1", "用户账户异常");
         }

+ 22 - 31
src/main/java/com/caimei/service/order/impl/OrderServiceImpl.java

@@ -240,7 +240,6 @@ public class OrderServiceImpl implements OrderService {
         boolean isPaySuccessFlag = false;//是完成支付(默认不是,只有余额抵扣才算)
         CmOrder cmOrder = new CmOrder();
         List<CmOrderProduct> orderProductList = new ArrayList<>();//整理订单商品列表
-//        List<Integer> shopIDs = new ArrayList<>();//整理子订单列表
         HashMap<Integer, String> shopIDs = new HashMap<>();
         Date date = new Date();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -261,10 +260,9 @@ public class OrderServiceImpl implements OrderService {
                 Object productInfo = shopOrderInfo.get("productInfo");//一个子订单对应的商品信息
                 if (null == shopId) return wxJsonModel.error("-1", "供应商数据异常");
                 if (null == productInfo) return wxJsonModel.error("-1", "订单商品数据异常");
-//                shopIDs.add(shopId);
-                shopIDs.put(shopId,note);
+                shopIDs.put(shopId, note);
 
-                //获取子订单商品信息
+                /**获取子订单商品信息*/
                 List<Map<String, Object>> productInfoList = (List<Map<String, Object>>) productInfo;
                 if (!CollectionUtils.isEmpty(productInfoList)) {
                     for (Map<String, Object> product : productInfoList) {//遍历所有商品
@@ -296,8 +294,6 @@ public class OrderServiceImpl implements OrderService {
                         cmOrderProduct.setOrganizeProductID(cmOrganizeProducts.getId());
                         cmOrderProduct.setOrganizeID(organizeID);
                         //预留在保存保存子订单的时候添加
-//                        cmOrderProduct.setShopOrderID(0);
-//                        cmOrderProduct.setShopOrderNo("");
                         cmOrderProduct.setProductNo(null);
                         cmOrderProduct.setNum(productNum);
                         cmOrderProduct.setPresentNum(0);
@@ -406,6 +402,14 @@ public class OrderServiceImpl implements OrderService {
                     cmOrder.setPayTime(dateStr);//支付时间
 
                 }
+            } else {
+                payableAmount = new BigDecimal(payTotalFee);//无余额支付的时就是真实支付金额
+            }
+
+            /**判断前端传入orderShouldPayFee订单应付金额,和后台计算应付金额对比*/
+            double v = payableAmount.subtract(new BigDecimal(orderShouldPayFee)).doubleValue();
+            if (v > -0.1d || v < 0.1d) {
+                return wxJsonModel.error("-1", "订单付款金额异常");
             }
 
             /**判断发票使用*/
@@ -455,9 +459,9 @@ public class OrderServiceImpl implements OrderService {
             //保存住订单数据
             orderMapper.insert(cmOrder);
             Integer orderID = cmOrder.getOrderID();
-            logger.info(">>>>>orderID:"+orderID);
+            logger.info(">>>>>orderID:" + orderID);
 
-            if(useBalanceFlag){
+            if (useBalanceFlag) {
                 /**添加余额收支记录*/
                 CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
                 cmUserBalanceRecord.setUserId(userId);
@@ -470,13 +474,8 @@ public class OrderServiceImpl implements OrderService {
                 userMapper.insertUserBalanceRecord(cmUserBalanceRecord);
             }
 
-
-
-            /**保存子订单后更新主订单信息*/
-            cmOrder.setShopOrderIDs("");//子订单ID:1000,1002
-
             /**保存订单商品*/
-            for(CmOrderProduct product:orderProductList){//循环插入数据
+            for (CmOrderProduct product : orderProductList) {//循环插入数据
                 product.setOrderID(orderID);
                 product.setOrderNo(orderNo);
                 //保存订单商品数据
@@ -491,7 +490,6 @@ public class OrderServiceImpl implements OrderService {
                 Integer shopID = shopOrder.getKey();
                 String note = shopOrder.getValue();
 
-
                 /**统计子订单金额信息*/
                 CmOrderProduct cmOrderProduct = new CmOrderProduct();
                 cmOrderProduct.setOrderID(cmOrder.getOrderID());
@@ -502,20 +500,15 @@ public class OrderServiceImpl implements OrderService {
                 BigDecimal productAmount = new BigDecimal(0); //商品总金额
                 BigDecimal needPayAmount = new BigDecimal(0);//需要支付金额
                 BigDecimal preferential = new BigDecimal(0);// 优惠金额
-                BigDecimal fee = new BigDecimal(0);//运费
                 BigDecimal brokerage = new BigDecimal(0);//佣金
                 Double shopProductAmount = 0D;//商品费
-                Double shopTaxFee = 0D; //付给供应商税费
-                Integer itemCount = 0;//总数
                 Integer buyNum = 0;//总购买数
-                Integer presentNum = 0;//总赠送数
                 //计算子订单信息
                 for (CmOrderProduct orderProduct : cmOrderProductList) {
                     productAmount = MathUtil.add(productAmount, orderProduct.getTotalAmount());//商品总金额 包括赠品
                     totalAmount = MathUtil.add(totalAmount, orderProduct.getTotalFee());//订单总金额 包括税费
                     needPayAmount = MathUtil.add(needPayAmount, orderProduct.getShouldPayFee()); //应付金额
                     buyNum += orderProduct.getNum();//总购买数
-                    itemCount += (orderProduct.getNum() + orderProduct.getPresentNum());
                     preferential = MathUtil.add(preferential, orderProduct.getPreferential());
                     brokerage = MathUtil.add(brokerage, orderProduct.getCmFee());
                     shopProductAmount += (orderProduct.getShopProductAmount() == null ? 0D : orderProduct.getShopProductAmount());
@@ -583,30 +576,28 @@ public class OrderServiceImpl implements OrderService {
             }
 
             //更新主订单信息
-            cmOrder.setShopOrderIDs(shopOrderIDs);
+            cmOrder.setShopOrderIDs(shopOrderIDs);//子订单ID:1000,1002
             orderMapper.update(cmOrder);
 
-            //地址信息
+            //保存地址信息
 
-            //发票信息
-
-            //获取用户最新余额,判断是否存在
+            //保存发票信息
 
             //提交订单完成后清理购物车(用户ID,商品ID)
             if (StringUtils.equals("1", cartType)) {//购物车提交后清理购物车
 
             }
         }
-        Map<String,String> info = new HashMap<>();
+        Map<String, String> info = new HashMap<>();
         info.put("orderID", String.valueOf(cmOrder.getOrderID()));
         info.put("orderNo", String.valueOf(cmOrder.getOrderNo()));
-        info.put("orderMark", "#"+String.valueOf(cmOrder.getOrderID())+"#");
+        info.put("orderMark", "#" + String.valueOf(cmOrder.getOrderID()) + "#");
         info.put("payTotalFee", String.valueOf(cmOrder.getPayTotalFee()));//应付订单金额
         info.put("payableAmount", String.valueOf(cmOrder.getPayableAmount()));//真实需要付款金额
-        if(isPaySuccessFlag){//余额抵扣成功
-            return wxJsonModel.success("1",info,"提交成功且已支付");//1提交成功[且支付完成]
-        }else{
-            return wxJsonModel.success("2",info,"提交成功但未支付");
+        if (isPaySuccessFlag) {//余额抵扣成功
+            return wxJsonModel.success("1", info, "提交成功且已支付");//1提交成功[且支付完成]
+        } else {
+            return wxJsonModel.success("2", info, "提交成功但未支付");
         }
     }