1
0
Quellcode durchsuchen

Merge branch 'master' of zj/kmall-pt into master

黄亚琴 vor 6 Jahren
Ursprung
Commit
f479ad0b67

+ 111 - 32
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -190,48 +190,62 @@ public class OrderController {
     @RequiresPermissions("order:getProcess")
     public R getProcess(@PathVariable("orderSn") String orderSn) {
         OrderProcessRecordEntity orderProcessRecordEntity = orderProcessRecordService.queryObjectByOrderSn(orderSn);
-        if(orderProcessRecordEntity != null){
-            if(orderProcessRecordEntity.getShipmentStartTime()!=null){
-                orderProcessRecordEntity.setShipmentStartTimeStr(DateUtils.format(orderProcessRecordEntity.getShipmentStartTime(),DateUtils.DATE_TIME_PATTERN));
+        if (orderProcessRecordEntity != null) {
+            if (orderProcessRecordEntity.getShipmentStartTime() != null) {
+                orderProcessRecordEntity.setShipmentStartTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getShipmentStartTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getShipmentSuccTime()!=null){
-                orderProcessRecordEntity.setShipmentSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getShipmentSuccTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getShipmentSuccTime() != null) {
+                orderProcessRecordEntity.setShipmentSuccTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getShipmentSuccTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getCustomsStartTime()!=null){
-                orderProcessRecordEntity.setCustomsStartTimeStr(DateUtils.format(orderProcessRecordEntity.getCustomsStartTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getCustomsStartTime() != null) {
+                orderProcessRecordEntity.setCustomsStartTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getCustomsStartTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getCustomsSuccTime()!=null){
-                orderProcessRecordEntity.setCustomsSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getCustomsSuccTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getCustomsSuccTime() != null) {
+                orderProcessRecordEntity.setCustomsSuccTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getCustomsSuccTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getWaybillStartTime()!=null){
-                orderProcessRecordEntity.setWaybillStartTimeStr(DateUtils.format(orderProcessRecordEntity.getWaybillStartTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getWaybillStartTime() != null) {
+                orderProcessRecordEntity.setWaybillStartTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getWaybillStartTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getWaybillSuccTime()!=null){
-                orderProcessRecordEntity.setWaybillSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getWaybillSuccTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getWaybillSuccTime() != null) {
+                orderProcessRecordEntity.setWaybillSuccTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getWaybillSuccTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getEleOrderStartTime()!=null){
-                orderProcessRecordEntity.setEleOrderStartTimeStr(DateUtils.format(orderProcessRecordEntity.getEleOrderStartTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getEleOrderStartTime() != null) {
+                orderProcessRecordEntity.setEleOrderStartTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getEleOrderStartTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getEleOrderSuccTime()!=null){
-                orderProcessRecordEntity.setEleOrderSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getEleOrderSuccTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getEleOrderSuccTime() != null) {
+                orderProcessRecordEntity.setEleOrderSuccTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getEleOrderSuccTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getAddOrderStartTime()!=null){
-                orderProcessRecordEntity.setAddOrderStartTimeStr(DateUtils.format(orderProcessRecordEntity.getAddOrderStartTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getAddOrderStartTime() != null) {
+                orderProcessRecordEntity.setAddOrderStartTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getAddOrderStartTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getAddOrderSuccTime()!=null){
-                orderProcessRecordEntity.setAddOrderSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getAddOrderSuccTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getAddOrderSuccTime() != null) {
+                orderProcessRecordEntity.setAddOrderSuccTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getAddOrderSuccTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getPaySuccTime()!=null){
-                orderProcessRecordEntity.setPaySuccTimeStr(DateUtils.format(orderProcessRecordEntity.getPaySuccTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getPaySuccTime() != null) {
+                orderProcessRecordEntity.setPaySuccTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getPaySuccTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getPayStartTime()!=null){
-                orderProcessRecordEntity.setPayStartTimeStr(DateUtils.format(orderProcessRecordEntity.getPayStartTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getPayStartTime() != null) {
+                orderProcessRecordEntity.setPayStartTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getPayStartTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getPaymentStartTime()!=null){
-                orderProcessRecordEntity.setPaymentStartTimeStr(DateUtils.format(orderProcessRecordEntity.getPaymentStartTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getPaymentStartTime() != null) {
+                orderProcessRecordEntity.setPaymentStartTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getPaymentStartTime(), DateUtils.DATE_TIME_PATTERN));
             }
-            if(orderProcessRecordEntity.getPaymentSuccTime()!=null){
-                orderProcessRecordEntity.setPaymentSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getPaymentSuccTime(),DateUtils.DATE_TIME_PATTERN));
+            if (orderProcessRecordEntity.getPaymentSuccTime() != null) {
+                orderProcessRecordEntity.setPaymentSuccTimeStr(
+                        DateUtils.format(orderProcessRecordEntity.getPaymentSuccTime(), DateUtils.DATE_TIME_PATTERN));
             }
         }
         return R.ok().put("orderProcessRecordEntity", orderProcessRecordEntity);
@@ -323,6 +337,71 @@ public class OrderController {
         return R.ok("退款成功");
     }
 
+
+    /**
+     * 订单退款请求
+     */
+    @RequiresPermissions(value = {"order:offilineRefund"})
+    @RequestMapping(value = "offilineRefund", method = RequestMethod.POST)
+    public Object offilineRefund(Long orderId) {
+        OrderEntity orderInfo = orderService.queryObject(orderId);
+        if (null == orderInfo) {
+            return R.error("订单不存在");
+        }
+        if (orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_401.getItem()) ||
+            orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
+            return R.error("订单已退款");
+        }
+
+        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;
+                    }
+                }
+            }
+
+            // 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);
+
+                return R.error(result.getErr_code_des());
+            }
+        }
+
+        return R.ok("退款成功");
+    }
+
     /**
      * 获取首页展示信息--会员购买率相关
      *
@@ -343,9 +422,9 @@ public class OrderController {
         Map resultObj = null;
         try {
             SysUserEntity user = ShiroUtils.getUserEntity();
-            resultObj = orderService.orderSubmit(offlineCartEntityList,user);
-            if (((Integer)resultObj.get("errno")) != 0) {
-                return R.error((String)resultObj.get("errmsg"));
+            resultObj = orderService.orderSubmit(offlineCartEntityList, user);
+            if (((Integer) resultObj.get("errno")) != 0) {
+                return R.error((String) resultObj.get("errmsg"));
             }
         } catch (Exception e) {
             e.printStackTrace();

+ 22 - 25
kmall-admin/src/main/webapp/js/shop/offilineOrderList.js

@@ -121,12 +121,9 @@ $(function () {
                     if (row.orderStatus == 0) {
                         htmlStr += '<button class="btn btn-outline btn-danger" onclick="vm.cancelUpdate(' + row.id + ')"><i class="fa fa-times-circle-o"></i>&nbsp;取消</button>&nbsp;';
                     }
-
-                    // if (row.orderStatus == 201) {
-                    //     if (row.isPaymentSend == 0 || row.isEleOrderSend == 0 || row.isCustomsSend == 0 || row.buyerPayCheck != 0) {
-                    //         htmlStr += '<button class="btn btn-outline btn-danger" onclick="vm.refundUpdate(' + row.id + ')"><i class="fa fa-times-circle-o"></i>&nbsp;退款</button>&nbsp;';
-                    //     }
-                    // }
+                    if (row.orderStatus == 201) {
+                        htmlStr += '<button class="btn btn-outline btn-danger" onclick="vm.refundUpdate(' + row.id + ')"><i class="fa fa-times-circle-o"></i>&nbsp;退款</button>&nbsp;';
+                    }
 
                     return htmlStr;
                 }
@@ -377,6 +374,25 @@ let vm = new Vue({
             //     layer.close(index);
             // });
         },
+        refundUpdate: function (rowId) {
+            let params = {};
+            params.orderId = rowId;
+
+            $.ajax({
+                type: "POST",
+                url: '../order/offilineRefund',
+                data: params,
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('退款成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+            });
+        },
         shippingBind: function (event) {
             let orderId = vm.order.id;
             $.ajax({
@@ -424,25 +440,6 @@ let vm = new Vue({
                     }
                 }
             });
-        },
-        refundUpdate: function (rowId) {
-            let params = {};
-            params.orderId = rowId;
-
-            $.ajax({
-                type: "POST",
-                url: '../order/refund',
-                data: params,
-                success: function (r) {
-                    if (r.code === 0) {
-                        alert('退款成功', function (index) {
-                            vm.reload();
-                        });
-                    } else {
-                        alert(r.msg);
-                    }
-                }
-            });
         }
     },
     created: function () {

+ 2 - 0
kmall-schedule/src/main/java/com/kmall/schedule/dao/QzOrderMapper.java

@@ -62,4 +62,6 @@ public interface QzOrderMapper {
      */
     Map queryOrder(String orderSn);
 
+    List<Map> queryWXPaySuccessRecords(String orderSn);
+
 }

+ 10 - 0
kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java

@@ -225,6 +225,16 @@ public class QzOrderService {
             for (Map map : refundOrderList) {
                 String out_trade_no = MapUtils.getString("merch_order_sn", map);
                 String order_id = MapUtils.getString("order_id", map);
+                Integer is_onffline_order = MapUtils.getInteger("is_onffline_order", map);
+                String order_sn = MapUtils.getString("order_sn", map);
+
+                if(is_onffline_order == 1){
+                    List<Map> paySuccessRecords = qzOrderMapper.queryWXPaySuccessRecords(order_sn);
+                    if(paySuccessRecords != null && paySuccessRecords.size() > 0){
+                        out_trade_no = MapUtils.getString("out_trade_no_wx", paySuccessRecords.get(0));
+                    }
+                }
+
                 WechatRefundQueryResult result = WechatUtil.wxRefundquery(out_trade_no);
                 if (result.getReturn_code().equalsIgnoreCase("SUCCESS")) {
                     if (result.getResult_code().equalsIgnoreCase("SUCCESS")) {

+ 8 - 2
kmall-schedule/src/main/resources/mybatis/mapper/QzOrderMapper.xml

@@ -48,11 +48,11 @@
 
 
     <select id="queryRefundOrderList" resultType="map">
-        select a.pay_transaction_id,a.merch_order_sn,a.order_sn,a.order_status,a.pay_status,f.out_refund_no,f.refund_id,f.order_id,f.id 'orderRefundId'
+        select a.pay_transaction_id,a.merch_order_sn,a.order_sn,a.order_status,a.pay_status,f.out_refund_no,f.refund_id,f.order_id,f.id 'orderRefundId',a.is_onffline_order
         from mall_order a
         inner join mall_order_refund f on a.id = f.order_id	where (f.out_refund_no is null or f.refund_id is null
         or f.refund_time is null or f.wechat_refund_status_des is null) and a.order_status = '401' and f.refund_status
-        in (2,5)  AND a.is_onffline_order = 0
+        in (2,5)
     </select>
 
     <select id="queryPayingOrderList" resultType="map">
@@ -156,4 +156,10 @@
         from mall_order
         WHERE order_sn = #{orderSn}
     </select>
+
+    <select id="queryWXPaySuccessRecords" resultType="map">
+		select id,out_trade_no_wx
+        from mall_order_wxpay_record
+        WHERE out_trade_no = #{orderSn} AND trade_state='SUCCESS'
+    </select>
 </mapper>