浏览代码

修正线下订单退款

zhang 6 年之前
父节点
当前提交
5d3b88080e

+ 46 - 40
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -354,49 +354,56 @@ public class OrderController {
         }
 
         if (orderInfo.getOrderStatus() != 0) {
-
-            List<OrderWXPayRecordEntity> orderWXPayRecords =
-                    orderWXPayRecordService.getRecordsByOutTradeNo(orderInfo.getOrderSn());
-            //支付成功的发送到微信的订单编号
-            String paySuccessOutTradeNoWX = null;
-            if (orderWXPayRecords != null) {
-                for (OrderWXPayRecordEntity orderWXPayRecord : orderWXPayRecords) {
-                    if ("SUCCESS".equals(orderWXPayRecord.getTradeState())) {
-                        paySuccessOutTradeNoWX = orderWXPayRecord.getOutTradeNoWX();
-                        break;
+            //现金支付
+            if (Dict.payFlag.item_cash.getItem().equals(orderInfo.getPayFlag())) {
+                orderService.refund(orderInfo, null);
+                //微信支付
+            } else if (Dict.payFlag.item_weixin.getItem().equals(orderInfo.getPayFlag())) {
+
+                List<OrderWXPayRecordEntity> orderWXPayRecords =
+                        orderWXPayRecordService.getRecordsByOutTradeNo(orderInfo.getOrderSn());
+                //支付成功的发送到微信的订单编号
+                String paySuccessOutTradeNoWX = null;
+                if (orderWXPayRecords != null) {
+                    for (OrderWXPayRecordEntity orderWXPayRecord : orderWXPayRecords) {
+                        if ("SUCCESS".equals(orderWXPayRecord.getTradeState())) {
+                            paySuccessOutTradeNoWX = orderWXPayRecord.getOutTradeNoWX();
+                            break;
+                        }
                     }
                 }
-            }
 
-            // todo 退款
-            WechatRefundApiResult result = WechatUtil
-                    .wxRefund(paySuccessOutTradeNoWX, orderInfo.getActualPrice().doubleValue(),
-                              orderInfo.getActualPrice().doubleValue());
-            if (result.getResult_code().equals("SUCCESS")) {
-                orderService.refund(orderInfo, result);
-            } else {
-                OrderRefundEntity mallOrderRefund = orderRefundService.queryObjectByOrderId(orderInfo.getId());
-                OrderRefundEntity orderRefund = new OrderRefundEntity();
-                orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
-                orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().doubleValue()));
-                orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
-                orderRefund.setModTime(new Date());
-                orderRefund.setOutRefundNo(result.getOut_refund_no());
-                if (mallOrderRefund != null) {
-                    orderRefund.setId(mallOrderRefund.getId());
-                    orderRefundService.update(orderRefund);//退款记录
-                }
+                // todo 退款
+                WechatRefundApiResult result = WechatUtil
+                        .wxRefund(paySuccessOutTradeNoWX, orderInfo.getActualPrice().doubleValue(),
+                                  orderInfo.getActualPrice().doubleValue());
+                if (result.getResult_code().equals("SUCCESS")) {
+                    orderService.refund(orderInfo, result);
+                } else {
+                    OrderRefundEntity mallOrderRefund = orderRefundService.queryObjectByOrderId(orderInfo.getId());
+                    OrderRefundEntity orderRefund = new OrderRefundEntity();
+                    orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
+                    orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().doubleValue()));
+                    orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
+                    orderRefund.setModTime(new Date());
+                    orderRefund.setOutRefundNo(result.getOut_refund_no());
+                    if (mallOrderRefund != null) {
+                        orderRefund.setId(mallOrderRefund.getId());
+                        orderRefundService.update(orderRefund);//退款记录
+                    }
 
-                OrderExceptionRecordEntity mallOrderExceptionRecord = new OrderExceptionRecordEntity();
-                mallOrderExceptionRecord.setUserId(Integer.parseInt(orderInfo.getUserId() + ""));
-                mallOrderExceptionRecord.setOrderSn(orderInfo.getOrderSn());
-                mallOrderExceptionRecord.setExceptionStatus(Dict.exceptionStatus.item_03.getItem());
-                mallOrderExceptionRecord.setExceptionContent("退款失败" + result.getErr_code_des());
-                mallOrderExceptionRecord.setCreateTime(new Date());
-                orderExceptionRecordService.save(mallOrderExceptionRecord);
+                    OrderExceptionRecordEntity mallOrderExceptionRecord = new OrderExceptionRecordEntity();
+                    mallOrderExceptionRecord.setUserId(Integer.parseInt(orderInfo.getUserId() + ""));
+                    mallOrderExceptionRecord.setOrderSn(orderInfo.getOrderSn());
+                    mallOrderExceptionRecord.setExceptionStatus(Dict.exceptionStatus.item_03.getItem());
+                    mallOrderExceptionRecord.setExceptionContent("退款失败" + result.getErr_code_des());
+                    mallOrderExceptionRecord.setCreateTime(new Date());
+                    orderExceptionRecordService.save(mallOrderExceptionRecord);
 
-                return R.error(result.getErr_code_des());
+                    return R.error(result.getErr_code_des());
+                }
             }
+
         }
 
         return R.ok("退款成功");
@@ -441,7 +448,7 @@ public class OrderController {
     @RequestMapping("/confirmPay")
     @RequiresPermissions("order:confirmPay")
     public R confirmPay(@RequestBody Long id) {
-        orderService.confirmPay(id);
+        orderService.confirmPay(id, Dict.payFlag.item_cash);
 
         return R.ok();
     }
@@ -504,7 +511,6 @@ public class OrderController {
                 .wxMicropay(store.getMerchName() + "-" + store.getStoreName(), orderEntity.getOrderBizType(), null,
                             orderWXPayRecordCurrent.getOutTradeNoWX(), orderEntity.getActualPrice().doubleValue(),
                             "127.0.0.1", auth_code);
-        System.out.println("orderWXPayRecordEntity.id=" + orderWXPayRecordCurrent.getId());
         orderWXPayRecordService.updateRecord(orderWXPayRecordCurrent.getId(), wechatMicropayApiResult);
         System.out.println(wechatMicropayApiResult);
 
@@ -535,7 +541,7 @@ public class OrderController {
                     }
                 }
             }
-            orderService.confirmPay(id);
+            orderService.confirmPay(id, Dict.payFlag.item_weixin);
             r = R.ok();
             //用户支付中
         } else if (WechatUtil.WXTradeState.USERPAYING.getCode().equals(wechatMicropayApiResult.getTrade_state())) {

+ 11 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderEntity.java

@@ -130,6 +130,17 @@ public class OrderEntity
 
     private String isOnfflineOrder;
 
+    private String payFlag;
+
+    public String getPayFlag() {
+        return payFlag;
+    }
+
+    public void setPayFlag(String payFlag) {
+        this.payFlag = payFlag;
+    }
+
+
     public String getIsOnfflineOrder() {
         return isOnfflineOrder;
     }

+ 2 - 1
kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java

@@ -3,6 +3,7 @@ package com.kmall.admin.service;
 import com.kmall.admin.entity.OfflineCartEntity;
 import com.kmall.admin.entity.OrderEntity;
 import com.kmall.admin.entity.OrderRefundEntity;
+import com.kmall.api.contants.Dict;
 import com.kmall.common.entity.SysUserEntity;
 import com.kmall.common.utils.R;
 import com.kmall.common.utils.print.ticket.item.Ticket;
@@ -86,5 +87,5 @@ public interface OrderService {
 
     Map orderSubmit(List<OfflineCartEntity> offlineCartEntityList,SysUserEntity user);
 
-    int confirmPay(Long id);
+    int confirmPay(Long id, Dict.payFlag payFlag);
 }

+ 125 - 88
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -32,7 +32,8 @@ import java.util.*;
 
 
 @Service("orderService")
-public class OrderServiceImpl implements OrderService {
+public class OrderServiceImpl
+        implements OrderService {
     @Autowired
     private OrderDao orderDao;
     @Autowired
@@ -92,6 +93,7 @@ public class OrderServiceImpl implements OrderService {
 
     /**
      * 取消订单
+     *
      * @param order
      */
     @Override
@@ -116,11 +118,13 @@ public class OrderServiceImpl implements OrderService {
         map.put("orderId", order.getId());
         List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map);
         for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) {
-            ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao.queryByStoreIdProductId(Long.valueOf(order.getStoreId()), Long.valueOf(orderGoodsEntity.getProductId()));
+            ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao
+                    .queryByStoreIdProductId(Long.valueOf(order.getStoreId()),
+                                             Long.valueOf(orderGoodsEntity.getProductId()));
             if (null == storeRelaEntity || null == storeRelaEntity.getSellVolume()) {
                 storeRelaEntity.setSellVolume(0);
             }
-            BigDecimal sellVolume = new BigDecimal(storeRelaEntity.getSellVolume()-orderGoodsEntity.getNumber());//销售量
+            BigDecimal sellVolume = new BigDecimal(storeRelaEntity.getSellVolume() - orderGoodsEntity.getNumber());//销售量
             if (sellVolume.compareTo(Constant.ZERO) < 0) {
                 sellVolume = Constant.ZERO;
             }
@@ -211,12 +215,13 @@ public class OrderServiceImpl implements OrderService {
         // 获取门店
         StoreEntity storeEntity = storeDao.queryObject(orderEntity.getStoreId());
         // 获取清关信息
-        OrderProcessRecordEntity orderProcessRecordEntity = orderProcessRecordDao.queryObjectByOrderSn(orderEntity.getOrderSn());
+        OrderProcessRecordEntity orderProcessRecordEntity =
+                orderProcessRecordDao.queryObjectByOrderSn(orderEntity.getOrderSn());
 
         // 小票头
         TicketHead head = new TicketHead();
         head.setTitle(OmsMerchPropertiesBuilder.instance().getMerchName() + storeEntity.getStoreName());
-//        head.setMemberId(orderEntity.getUserName().toString());
+        //        head.setMemberId(orderEntity.getUserName().toString());
         head.setOrderId(orderEntity.getOrderSn());
         head.setTradeTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE").format(new Date()));
 
@@ -226,8 +231,12 @@ public class OrderServiceImpl implements OrderService {
         List<Goods> goodsList = new ArrayList<>();
         for (OrderGoodsEntity orderGoods : orderGoodsEntityList) {
             goodsTotal += orderGoods.getNumber();
-            total = total.add(orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber()))).setScale(2, BigDecimal.ROUND_HALF_UP);
-            Goods goods = new Goods(orderGoods.getGoodsName(), orderGoods.getRetailPrice().toString(), orderGoods.getNumber().toString(), orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber())).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+            total = total.add(orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber())))
+                         .setScale(2, BigDecimal.ROUND_HALF_UP);
+            Goods goods = new Goods(orderGoods.getGoodsName(), orderGoods.getRetailPrice().toString(),
+                                    orderGoods.getNumber().toString(),
+                                    orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber()))
+                                              .setScale(2, BigDecimal.ROUND_HALF_UP).toString());
             goodsList.add(goods);
         }
 
@@ -238,13 +247,14 @@ public class OrderServiceImpl implements OrderService {
         cashInfo.setReceipts(orderEntity.getActualPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
         cashInfo.setOddChange("0.00");
         cashInfo.setCoupon(orderEntity.getCouponPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
-        cashInfo.setFreight(new BigDecimal(orderEntity.getFreightPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
+        cashInfo.setFreight(
+                new BigDecimal(orderEntity.getFreightPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
         cashInfo.setPaymentMode("微信支付");
 
         // 海关清单
         CusListing cusListing = new CusListing();
         cusListing.setOrderId(orderEntity.getOrderSn());
-        if(!orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_11.getItem())){
+        if (!orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_11.getItem())) {
             cusListing.setWaybillId(orderProcessRecordEntity.getLogisticsNo());
             cusListing.setInvtNo(orderProcessRecordEntity.getInvtNo());
             cusListing.setConsignee(orderEntity.getConsignee());
@@ -265,34 +275,41 @@ public class OrderServiceImpl implements OrderService {
         if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
             order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
         }
-        order.setPayStatus(Integer.parseInt(Dict.payStatus.item_3.getItem()));
+
+        if (Dict.payFlag.item_cash.getItem().equals(order.getPayFlag())) {
+            order.setPayStatus(Integer.parseInt(Dict.payStatus.item_4.getItem()));
+        }else{
+            order.setPayStatus(Integer.parseInt(Dict.payStatus.item_3.getItem()));
+
+            OrderRefundEntity mallOrderRefund = orderRefundDao.queryObjectByOrderId(order.getId());
+
+            OrderRefundEntity orderRefund = new OrderRefundEntity();
+            orderRefund.setRefundId(result.getRefund_id());
+            orderRefund.setOutRefundNo(result.getOut_refund_no());
+            orderRefund
+                    .setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
+            orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_5.getItem()));//退款处理中
+            orderRefund.setModTime(new Date());
+
+            if (mallOrderRefund != null) {
+                orderRefund.setId(mallOrderRefund.getId());
+                orderRefund.setRefundType(mallOrderRefund.getRefundType());
+                orderRefundDao.update(orderRefund);
+            } else {
+                orderRefund.setOrderId(Integer.parseInt(order.getId() + ""));
+                orderRefund.setUserId(Integer.parseInt(order.getUserId() + ""));
+                orderRefund.setCreateTime(new Date());
+                orderRefundDao.save(orderRefund);//退款记录
+            }
+        }
+
+        orderDao.update(order);//修改为退款中
 
         // 判断是否有优惠券
         UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
         if (null != couponVo) {
             userCouponDao.cancelOrder(couponVo);
         }
-        orderDao.update(order);//修改为退款中
-
-        OrderRefundEntity mallOrderRefund = orderRefundDao.queryObjectByOrderId(order.getId());
-
-        OrderRefundEntity orderRefund = new OrderRefundEntity();
-        orderRefund.setRefundId(result.getRefund_id());
-        orderRefund.setOutRefundNo(result.getOut_refund_no());
-        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
-        orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_5.getItem()));//退款处理中
-        orderRefund.setModTime(new Date());
-
-        if(mallOrderRefund !=null){
-            orderRefund.setId(mallOrderRefund.getId());
-            orderRefund.setRefundType(mallOrderRefund.getRefundType());
-            orderRefundDao.update(orderRefund);
-        }else{
-            orderRefund.setOrderId(Integer.parseInt(order.getId()+""));
-            orderRefund.setUserId(Integer.parseInt(order.getUserId()+""));
-            orderRefund.setCreateTime(new Date());
-            orderRefundDao.save(orderRefund);//退款记录
-        }
 
         if (!needUpdateStock) {
             return;
@@ -302,11 +319,13 @@ public class OrderServiceImpl implements OrderService {
         map.put("orderId", order.getId());
         List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map);
         for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) {
-            ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao.queryByStoreIdProductId(Long.valueOf(order.getStoreId()), Long.valueOf(orderGoodsEntity.getProductId()));
+            ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao
+                    .queryByStoreIdProductId(Long.valueOf(order.getStoreId()),
+                                             Long.valueOf(orderGoodsEntity.getProductId()));
             if (null == storeRelaEntity || null == storeRelaEntity.getSellVolume()) {
                 storeRelaEntity.setSellVolume(0);
             }
-            BigDecimal sellVolume = new BigDecimal(storeRelaEntity.getSellVolume()-orderGoodsEntity.getNumber());//销售量
+            BigDecimal sellVolume = new BigDecimal(storeRelaEntity.getSellVolume() - orderGoodsEntity.getNumber());//销售量
             if (sellVolume.compareTo(Constant.ZERO) < 0) {
                 sellVolume = Constant.ZERO;
             }
@@ -327,7 +346,7 @@ public class OrderServiceImpl implements OrderService {
     @Transactional
     public void applyRefundDeal(OrderEntity orderInfo, OrderRefundEntity refundEntity) {
         refundEntity.setApprovalTime(new Date());
-//        refundEntity.setApprover(ShiroUtils.getUserId());
+        //        refundEntity.setApprover(ShiroUtils.getUserId());
         //  退积分
         try {
             Integer integral = 1;
@@ -374,9 +393,9 @@ public class OrderServiceImpl implements OrderService {
             result = orderDao.getTodayUserOrder();
         } else if ("todayUserSales".equals(type)) {
             result = orderDao.getTodayUserSales();
-        } else if("incomeSum".equals(type)){
+        } else if ("incomeSum".equals(type)) {
             result = orderDao.getIncomeSum();
-        } else if("payedOrderCount".equals(type)){
+        } else if ("payedOrderCount".equals(type)) {
             result = orderDao.getPayedOrderCount();
         }
         return result;
@@ -388,11 +407,11 @@ public class OrderServiceImpl implements OrderService {
         if (orderEntity == null) {
             throw new RRException("此订单不存在!");
         }
-        if(orderEntity.getShippingStatus() == 0){
-            if(orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())
-                    || orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem())){
+        if (orderEntity.getShippingStatus() == 0) {
+            if (orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem()) ||
+                orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem())) {
                 throw new RRException("此订单还未发货!");
-            }else{
+            } else {
                 if (StringUtils.isNullOrEmpty(orderEntity.getShippingNo())) {
                     throw new RRException("此订单还未发货!");
                 }
@@ -401,22 +420,26 @@ public class OrderServiceImpl implements OrderService {
 
         Map logisticsInfo = new HashMap();
         List<WuliuEntity> wuliuEntityList = new ArrayList<>();
-        OrderProcessRecordEntity orderProcessRecordEntity = orderProcessRecordDao.queryObjectByOrderSn(orderEntity.getOrderSn());
+        OrderProcessRecordEntity orderProcessRecordEntity =
+                orderProcessRecordDao.queryObjectByOrderSn(orderEntity.getOrderSn());
         if (orderProcessRecordEntity != null) {
-            if(orderEntity.getOrderBizType().equals(Dict.orderBizType.item_10.getItem())
-                    || orderEntity.getOrderBizType().equals(Dict.orderBizType.item_02.getItem())) {
+            if (orderEntity.getOrderBizType().equals(Dict.orderBizType.item_10.getItem()) ||
+                orderEntity.getOrderBizType().equals(Dict.orderBizType.item_02.getItem())) {
                 WuliuEntity wuliuEntity = new WuliuEntity();
-                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(orderProcessRecordEntity.getCustomsSuccTime()));
-                wuliuEntity.setAcceptStation(PrintTicketPropertiesBuilder.instance().getAddress()
-                        + "送达" + storeDao.queryObject(orderEntity.getStoreId()).getStoreAddress()
-                        + ";交易完成,用户已提走");
+                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+                                                  .format(orderProcessRecordEntity.getCustomsSuccTime()));
+                wuliuEntity.setAcceptStation(PrintTicketPropertiesBuilder.instance().getAddress() + "送达" +
+                                             storeDao.queryObject(orderEntity.getStoreId()).getStoreAddress() +
+                                             ";交易完成,用户已提走");
                 wuliuEntityList.add(wuliuEntity);
             }
-            if (StringUtils.isNotEmpty(orderEntity.getShippingCode())
-                    && StringUtils.isNotEmpty(orderEntity.getShippingNo()) &&orderProcessRecordEntity.getShipmentStartTime()!=null) {
-                JSONObject traces = KdniaoUtil.getOrderTracesByJson(orderEntity.getShippingCode(), orderEntity.getShippingNo());
+            if (StringUtils.isNotEmpty(orderEntity.getShippingCode()) &&
+                StringUtils.isNotEmpty(orderEntity.getShippingNo()) &&
+                orderProcessRecordEntity.getShipmentStartTime() != null) {
+                JSONObject traces =
+                        KdniaoUtil.getOrderTracesByJson(orderEntity.getShippingCode(), orderEntity.getShippingNo());
                 List<Map> mapList = (List<Map>) traces.get("Traces");
-                if(mapList!=null&&mapList.size()>0) {
+                if (mapList != null && mapList.size() > 0) {
                     for (Map map : mapList) {
                         WuliuEntity wuliuEntity = new WuliuEntity();
                         wuliuEntity.setAcceptTime(map.get("AcceptTime").toString());
@@ -424,24 +447,27 @@ public class OrderServiceImpl implements OrderService {
                         wuliuEntityList.add(wuliuEntity);
                     }
                 }
-                String state = traces.get("State")+"";
+                String state = traces.get("State") + "";
                 if (Dict.logisticsStatus.item_0.getItem().equals(state) && traces.getBoolean("Success")) {
-                    String reason = traces.get("Reason")+"";
+                    String reason = traces.get("Reason") + "";
                     WuliuEntity wuliuEntity = new WuliuEntity();
                     wuliuEntity.setAcceptStation(reason);
                     wuliuEntityList.add(wuliuEntity);
                 }
             }
-            if (Dict.isSend.item_1.getItem().equalsIgnoreCase(orderProcessRecordEntity.getIsCustomsSend()) && orderProcessRecordEntity.getShipmentStartTime() != null) {
+            if (Dict.isSend.item_1.getItem().equalsIgnoreCase(orderProcessRecordEntity.getIsCustomsSend()) &&
+                orderProcessRecordEntity.getShipmentStartTime() != null) {
                 WuliuEntity wuliuEntity = new WuliuEntity();
-                wuliuEntity.setAcceptStation( "订单已出库");
-                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(orderProcessRecordEntity.getShipmentStartTime()));
+                wuliuEntity.setAcceptStation("订单已出库");
+                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+                                                  .format(orderProcessRecordEntity.getShipmentStartTime()));
                 wuliuEntityList.add(wuliuEntity);
             }
             if (Dict.isSend.item_1.getItem().equals(orderProcessRecordEntity.getIsCustomsSend())) {
                 WuliuEntity wuliuEntity = new WuliuEntity();
                 wuliuEntity.setAcceptStation("订单清关完成,等待仓库发货");
-                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(orderProcessRecordEntity.getCustomsSuccTime()));
+                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+                                                  .format(orderProcessRecordEntity.getCustomsSuccTime()));
                 wuliuEntityList.add(wuliuEntity);
             }
 
@@ -450,22 +476,26 @@ public class OrderServiceImpl implements OrderService {
                 wuliuEntity.setAcceptStation("订单清关失败");
                 wuliuEntityList.add(wuliuEntity);
             }
-            if (Dict.isSend.item_1.getItem().equalsIgnoreCase(orderProcessRecordEntity.getIsEleOrderSend()) && orderProcessRecordEntity.getWaybillSuccTime()!=null) {
+            if (Dict.isSend.item_1.getItem().equalsIgnoreCase(orderProcessRecordEntity.getIsEleOrderSend()) &&
+                orderProcessRecordEntity.getWaybillSuccTime() != null) {
                 WuliuEntity wuliuEntity = new WuliuEntity();
                 wuliuEntity.setAcceptStation("海关三单发送成功");
-                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(orderProcessRecordEntity.getWaybillSuccTime()));
+                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+                                                  .format(orderProcessRecordEntity.getWaybillSuccTime()));
                 wuliuEntityList.add(wuliuEntity);
             }
-            if(Dict.isSend.item_1.getItem().equals(orderProcessRecordEntity.getIsPaymentSend())){
+            if (Dict.isSend.item_1.getItem().equals(orderProcessRecordEntity.getIsPaymentSend())) {
                 WuliuEntity wuliuEntity = new WuliuEntity();
                 wuliuEntity.setAcceptStation("订单支付成功");
-                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(orderProcessRecordEntity.getPaySuccTime()));
+                wuliuEntity.setAcceptTime(
+                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(orderProcessRecordEntity.getPaySuccTime()));
                 wuliuEntityList.add(wuliuEntity);
             }
-            if(Dict.isSend.item_1.getItem().equalsIgnoreCase(orderProcessRecordEntity.getIsAddOrderSend())){
+            if (Dict.isSend.item_1.getItem().equalsIgnoreCase(orderProcessRecordEntity.getIsAddOrderSend())) {
                 WuliuEntity wuliuEntity = new WuliuEntity();
                 wuliuEntity.setAcceptStation("订单下单成功");
-                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(orderProcessRecordEntity.getAddOrderSuccTime()));
+                wuliuEntity.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+                                                  .format(orderProcessRecordEntity.getAddOrderSuccTime()));
                 wuliuEntityList.add(wuliuEntity);
             }
         }
@@ -487,10 +517,10 @@ public class OrderServiceImpl implements OrderService {
 
     @Transactional
     @Override
-    public Map orderSubmit(List<OfflineCartEntity> offlineCartList,SysUserEntity user){
+    public Map orderSubmit(List<OfflineCartEntity> offlineCartList, SysUserEntity user) {
         Map resultObj = new HashMap();
-        try{
-            if(user == null) {
+        try {
+            if (user == null) {
                 resultObj.put("errno", 400);
                 resultObj.put("errmsg", "用户登录超时,请重新登录");
                 return resultObj;
@@ -500,7 +530,7 @@ public class OrderServiceImpl implements OrderService {
                 resultObj.put("errmsg", "该操作只允许店员账户操作");
                 return resultObj;
             }
-            if(org.apache.commons.lang3.StringUtils.isEmpty(user.getMerchSn())){
+            if (org.apache.commons.lang3.StringUtils.isEmpty(user.getMerchSn())) {
                 resultObj.put("errno", 400);
                 resultObj.put("errmsg", "操作用户的商户编号为空,请先维护用户商户编号信息再来操作");
                 return resultObj;
@@ -524,19 +554,21 @@ public class OrderServiceImpl implements OrderService {
             }
             // 检查库存和更新库存
             for (OfflineCartEntity cartEntity : offlineCartEntityList) {
-                if(goodsDao.queryObject(cartEntity.getGoodsId()) == null){
+                if (goodsDao.queryObject(cartEntity.getGoodsId()) == null) {
                     resultObj.put("errno", 400);
                     resultObj.put("errmsg", "订单提交失败:商品不存在");
                     return resultObj;
                 }
                 //取得规格的信息,判断规格库存
-                ProductStoreRelaEntity productInfo = productStoreRelaDao.queryByGoodsIdAndStoreId(Long.valueOf(storeId),Long.valueOf(cartEntity.getGoodsId()));
-                synchronized (productInfo){
-                    if (null == productInfo || null == productInfo.getStockNum() || productInfo.getStockNum() < cartEntity.getNumber()) {
+                ProductStoreRelaEntity productInfo = productStoreRelaDao
+                        .queryByGoodsIdAndStoreId(Long.valueOf(storeId), Long.valueOf(cartEntity.getGoodsId()));
+                synchronized (productInfo) {
+                    if (null == productInfo || null == productInfo.getStockNum() ||
+                        productInfo.getStockNum() < cartEntity.getNumber()) {
                         resultObj.put("errno", 400);
                         resultObj.put("errmsg", "库存不足,仅剩余" + productInfo.getStockNum());
                         return resultObj;
-                    }else{
+                    } else {
                         productInfo.setStockNum(productInfo.getStockNum() - cartEntity.getNumber());
                         productInfo.setStoreId(Long.valueOf(storeId));
                         productInfo.addSellVolume();
@@ -544,13 +576,13 @@ public class OrderServiceImpl implements OrderService {
                     }
                 }
             }
-            String merchOrderSn = "EMATO"+CommonUtil.generateOrderNumber();
-            OrderEntity order = setOrderVo(user,offlineCartEntityList,user.getMerchSn());
+            String merchOrderSn = "EMATO" + CommonUtil.generateOrderNumber();
+            OrderEntity order = setOrderVo(user, offlineCartEntityList, user.getMerchSn());
             order.setStoreId(storeId);
             order.setMerchOrderSn(merchOrderSn);
 
             //开启事务,插入订单信息和订单商品
-            if(order != null) {
+            if (order != null) {
                 orderDao.save(order);
                 if (null == order.getId()) {
                     resultObj.put("errno", 400);
@@ -570,7 +602,7 @@ public class OrderServiceImpl implements OrderService {
                 resultObj.put("errmsg", "订单提交成功");
                 resultObj.put("data", orderInfoMap);
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
             resultObj.put("errno", 400);
             resultObj.put("errmsg", "订单异常");
@@ -581,15 +613,18 @@ public class OrderServiceImpl implements OrderService {
 
     /**
      * 设置订单数据
+     *
      * @param loginUser
      * @return
      */
-    public OrderEntity setOrderVo(SysUserEntity loginUser,List<OfflineCartEntity> offlineCartEntityList,String merchSn){
+    public OrderEntity setOrderVo(SysUserEntity loginUser, List<OfflineCartEntity> offlineCartEntityList,
+                                  String merchSn) {
         OrderEntity orderInfo = new OrderEntity();
         BigDecimal freightPrice = new BigDecimal(0.00);
         BigDecimal goodsTotalPrice = new BigDecimal(0.00);
         for (OfflineCartEntity offlineCartEntity : offlineCartEntityList) {
-            goodsTotalPrice = goodsTotalPrice.add(offlineCartEntity.getRetailPrice().multiply(new BigDecimal(offlineCartEntity.getNumber())));
+            goodsTotalPrice = goodsTotalPrice
+                    .add(offlineCartEntity.getRetailPrice().multiply(new BigDecimal(offlineCartEntity.getNumber())));
         }
         //订单价格计算:订单的总价+运费
         BigDecimal orderTotalPrice = goodsTotalPrice.add(freightPrice);
@@ -602,23 +637,23 @@ public class OrderServiceImpl implements OrderService {
         BigDecimal actualPrice = orderTotalPrice.subtract(couponPrice);
 
         //商户(拼音首字母)+业务类型+编号
-//        String merchSn = OmsMerchPropertiesBuilder.instance().getMerchSn();
-//        String merchShortName = OmsMerchPropertiesBuilder.instance().getMerchShortName();
+        //        String merchSn = OmsMerchPropertiesBuilder.instance().getMerchSn();
+        //        String merchShortName = OmsMerchPropertiesBuilder.instance().getMerchShortName();
         MerchEntity merchEntity = merchDao.findByMerchSn(merchSn);
         String merchShortName = "";
-        if(merchEntity != null){
+        if (merchEntity != null) {
             merchShortName = merchEntity.getMerchShortName();
         }
         String orderSn = merchShortName + Dict.orderBizType.item_11.getItem() + CommonUtil.generateOrderNumber();
         orderInfo.setOrderSn(orderSn);
         orderInfo.setMerchSn(merchSn);
-        orderInfo.setUserId(Integer.parseInt(loginUser.getUserId()+""));
+        orderInfo.setUserId(Integer.parseInt(loginUser.getUserId() + ""));
         orderInfo.setFreightPrice(freightPrice.intValue());
         orderInfo.setOrderBizType(Dict.orderBizType.item_11.getItem());
 
         /*orderInfo.setCoupon_id(userCouponId);
         orderInfo.setCoupon_name(couponName);*/
-//        orderInfo.setFullCutPrice(fullCutCouponDec);//使用的优惠券
+        //        orderInfo.setFullCutPrice(fullCutCouponDec);//使用的优惠券
         orderInfo.setCouponPrice(couponPrice);
         orderInfo.setPostscript("");//留言
         orderInfo.setAddTime(new Date());
@@ -646,10 +681,10 @@ public class OrderServiceImpl implements OrderService {
     }
 
 
-    public OrderGoodsEntity setOrderGoodsVo(OrderEntity orderInfo,OfflineCartEntity goodsItem){
+    public OrderGoodsEntity setOrderGoodsVo(OrderEntity orderInfo, OfflineCartEntity goodsItem) {
         GoodsEntity goodsVo = goodsDao.queryObject(goodsItem.getGoodsId());
         OrderGoodsEntity orderGoodsVo = new OrderGoodsEntity();
-        orderGoodsVo.setOrderId(Integer.parseInt(orderInfo.getId()+""));
+        orderGoodsVo.setOrderId(Integer.parseInt(orderInfo.getId() + ""));
         orderGoodsVo.setGoodsId(goodsItem.getGoodsId());
         orderGoodsVo.setGoodsSn(goodsItem.getGoodsSn());
         orderGoodsVo.setProductId(goodsItem.getProductId());
@@ -667,7 +702,7 @@ public class OrderServiceImpl implements OrderService {
     }
 
     @Override
-    public OrderEntity queryObjectBySysUser(Long id){
+    public OrderEntity queryObjectBySysUser(Long id) {
         OrderEntity orderEntity = orderDao.queryObjectBySysUser(id);
 
         Map<String, Object> map = new HashMap<String, Object>();
@@ -676,10 +711,11 @@ public class OrderServiceImpl implements OrderService {
         orderEntity.setOrderGoodsEntityList(orderGoodsEntityList);
         return orderEntity;
     }
+
     @Override
-    public int confirmPay(Long id) {
+    public int confirmPay(Long id, Dict.payFlag payFlag) {
         SysUserEntity user = ShiroUtils.getUserEntity();
-        if(user == null) {
+        if (user == null) {
             throw new RRException("用户登录超时,请重新登录");
         }
         if (!user.getRoleType().equalsIgnoreCase("2")) {
@@ -700,6 +736,7 @@ public class OrderServiceImpl implements OrderService {
         }
         orderEntity.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_201.getItem()));
         orderEntity.setPayStatus(Integer.parseInt(Dict.payStatus.item_2.getItem()));
+        orderEntity.setPayFlag(payFlag.getItem());
         orderEntity.setPayTime(new Date());
         orderDao.update(orderEntity);
         return 0;

+ 4 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderDao.xml

@@ -50,6 +50,7 @@
         <result property="isPaymentSend" column="is_payment_send"/>
         <result property="isEleOrderSend" column="is_ele_order_send"/>
         <result property="isCustomsSend" column="is_customs_send"/>
+        <result property="payFlag" column="pay_flag"/>
         <result column="buyer_pay_check" property="buyerPayCheck"/>
         <result property="merchSn" column="merch_sn"/>
         <result property="sku" column="sku"/>
@@ -265,6 +266,7 @@
 			`store_id`,
 			`order_biz_type`,
 			`is_onffline_order`,
+			`pay_flag`,
             `merch_sn`,
             `create_time`,
             `mod_time`
@@ -307,6 +309,7 @@
 			#{storeId},
 			#{orderBizType},
 			#{isOnfflineOrder},
+			#{payFlag},
             #{merchSn},
             #{createTime},
             #{modTime}
@@ -350,6 +353,7 @@
             <if test="callbackStatus != null">`callback_status` = #{callbackStatus},</if>
             <if test="orderType != null">`order_type` = #{orderType},</if>
             <if test="storeId != null">`store_id` = #{storeId},</if>
+            <if test="payFlag != null">`pay_flag` = #{payFlag},</if>
             <if test="orderBizType != null">`order_biz_type` = #{orderBizType},</if>
             <if test="merchSn != null">`merch_sn` = #{merchSn},</if>
             <if test="createTime != null">`create_time` = #{createTime},</if>

+ 1 - 1
kmall-admin/src/main/resources/mybatis/mapper/UserDao.xml

@@ -61,7 +61,7 @@
     </select>
 
     <select id="queryTotal" resultType="int">
-        select count(*) from mall_user
+        select count(distinct mall_user.id) from mall_user
         LEFT JOIN mall_merch_user ON mall_user.id=mall_merch_user.user_id
         LEFT JOIN mall_user_level ON mall_user.user_level_id=mall_user_level.id
         WHERE 1=1

+ 6 - 6
kmall-admin/src/main/webapp/WEB-INF/page/sys/main.html

@@ -259,10 +259,10 @@
         },
         created: function () {
             let vue = this;
-            $.getJSON("../order/queryTotal", function (r) {
+            $.getJSON("../order/queryTotal?isOnfiilineOrder=0", function (r) {
                 vue.orderSum = r.sum;
             });
-            $.getJSON("../order/queryTotal?orderStatus=201&payStatus=2", function (r) {
+            $.getJSON("../order/queryTotal?orderStatus=201&payStatus=2&isOnfiilineOrder=0", function (r) {
                 vue.dfOrderSum = r.sum;
                 if (r.sum > 0) {
                     iview.Notice.info({
@@ -285,16 +285,16 @@
                     iN.setTitle(true).player();
                 }
             });
-            $.getJSON("../order/queryTotal?shippingStatus=1", function (r) {
+            $.getJSON("../order/queryTotal?isOnfiilineOrder=0&shippingStatus=1", function (r) {
                 vue.yfOrderSum = r.sum;
             });
-            $.getJSON("../order/queryTotal?orderStatus=0", function (r) {
+            $.getJSON("../order/queryTotal?isOnfiilineOrder=0&orderStatus=0", function (r) {
                 vue.yfkOrderSum = r.sum;
             });
-            $.getJSON("../order/queryTotal?orderStatus=402", function (r) {
+            $.getJSON("../order/queryTotal?isOnfiilineOrder=0&orderStatus=402", function (r) {
                 vue.ywcOrderSum = r.sum;
             });
-            $.getJSON("../order/queryTotal?shippingStatus=4", function (r) {
+            $.getJSON("../order/queryTotal?isOnfiilineOrder=0&shippingStatus=4", function (r) {
                 vue.thcOrderSum = r.sum;
             });
             $.getJSON("../order/getUserOrderInfo?type=yfkOrderUserSum", function (r) {

+ 4 - 1
kmall-api/src/main/java/com/kmall/api/contants/Dict.java

@@ -13,7 +13,10 @@ public class Dict {
     public enum payFlag {
         item_weixin("weixin", "微信"),
         item_tenpay("tenpay", "财付通"),
-        item_alipay("alipay", "支付宝");
+        item_alipay("alipay", "支付宝"),
+        item_pingan("pingan", "平安支付"),
+        item_wxglobalpay("wxglobalpay", "微信国际支付"),
+        item_cash("cash", "现金");
 
         private String item;
         private String itemName;

+ 3 - 2
kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java

@@ -228,9 +228,9 @@ public class QzOrderService {
                 Integer is_onffline_order = MapUtils.getInteger("is_onffline_order", map);
                 String order_sn = MapUtils.getString("order_sn", map);
 
-                if(is_onffline_order == 1){
+                if (is_onffline_order == 1) {
                     List<Map> paySuccessRecords = qzOrderMapper.queryWXPaySuccessRecords(order_sn);
-                    if(paySuccessRecords != null && paySuccessRecords.size() > 0){
+                    if (paySuccessRecords != null && paySuccessRecords.size() > 0) {
                         out_trade_no = MapUtils.getString("out_trade_no_wx", paySuccessRecords.get(0));
                     }
                 }
@@ -418,6 +418,7 @@ public class QzOrderService {
                             Map orderRaram = new HashMap();
                             orderRaram.put("payStatus", 2);//已支付
                             orderRaram.put("orderStatus", 201);//已支付
+                            orderRaram.put("payFlag", "weixin");
                             orderRaram.put("payTime", new Date());
                             orderRaram.put("orderId", MapUtils.getInteger("id", order));
                             qzOrderMapper.updateOrderInfo(orderRaram);

+ 1 - 0
kmall-schedule/src/main/resources/mybatis/mapper/QzOrderMapper.xml

@@ -72,6 +72,7 @@
         <set>
             <if test="orderStatus != null">a.order_status = #{orderStatus},</if>
             <if test="payStatus != null">a.pay_status = #{payStatus},</if>
+            <if test="payFlag != null">a.pay_flag = #{payFlag},</if>
             <if test="payTransactionId != null">a.pay_transaction_id = #{payTransactionId},</if>
             <if test="payTime != null">a.pay_time = #{payTime},</if>
         </set>