From d81ee09e6ebf93f842fe3a15629180a07b2b687b Mon Sep 17 00:00:00 2001 From: Junling Bu Date: Wed, 25 Apr 2018 19:53:25 +0800 Subject: [PATCH] =?UTF-8?q?fix[litemall-wx,=20litemall-wx-api]:=20?= =?UTF-8?q?=E5=B0=8F=E5=95=86=E5=9F=8E=E6=A8=A1=E6=8B=9F=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../litemall/db/util/OrderUtil.java | 5 ++- .../litemall/wx/web/WxOrderController.java | 44 +++++++++++++++++++ litemall-wx/config/api.js | 3 +- litemall-wx/pages/payResult/payResult.js | 37 +++++++++++++--- 4 files changed, 81 insertions(+), 8 deletions(-) diff --git a/litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderUtil.java b/litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderUtil.java index d17a3d47..19caccae 100644 --- a/litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderUtil.java +++ b/litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderUtil.java @@ -108,8 +108,11 @@ public class OrderUtil { handleOption.setComment(true); handleOption.setRebuy(true); } + else { + throw new IllegalStateException("status不支持"); + } - throw new IllegalStateException("status不支持"); + return handleOption; } public static List orderStatus(Integer showType){ diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java index 2fa91b63..1a6df209 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java @@ -356,6 +356,50 @@ public class WxOrderController { return ResponseUtil.ok(data); } + /** + * 付款订单 + * + * 1. 检测当前订单是否能够付款 + * 2. 微信支付平台返回支付订单ID + * 3. 设置订单付款状态 + * TODO 与微信后台交互产生付款订单ID,以及不同的付款状态 + * 目前这里直接设置订单已付款状态模拟支付成功 + * + * @param userId 用户ID + * @param body 订单信息,{ orderId:xxx } + * @return 订单操作结果 + * 成功则 { errno: 0, errmsg: '模拟付款支付成功' } + * 失败则 { errno: XXX, errmsg: XXX } + */ + @RequestMapping("pay") + public Object payPrepay(@LoginUser Integer userId, @RequestBody String body) { + if(userId == null){ + return ResponseUtil.unlogin(); + } + Integer orderId = JacksonUtil.parseInteger(body, "orderId"); + if (orderId == null) { + return ResponseUtil.badArgument(); + } + + LitemallOrder order = orderService.findById(orderId); + if (order == null) { + return ResponseUtil.badArgumentValue(); + } + if (!order.getUserId().equals(userId)) { + return ResponseUtil.badArgumentValue(); + } + + // 检测是否能够取消 + OrderHandleOption handleOption = OrderUtil.build(order); + if (!handleOption.isPay()) { + return ResponseUtil.fail(403, "订单不能支付"); + } + + order.setPayStatus(OrderUtil.STATUS_PAY); + orderService.updateById(order); + return ResponseUtil.ok("模拟付款支付成功"); + } + /** * 取消订单 * 1. 检测当前订单是否能够取消 diff --git a/litemall-wx/config/api.js b/litemall-wx/config/api.js index 59190d13..213c27f1 100644 --- a/litemall-wx/config/api.js +++ b/litemall-wx/config/api.js @@ -71,10 +71,11 @@ module.exports = { RegionList: WxApiRoot + 'region/list', //获取区域列表 OrderSubmit: WxApiRoot + 'order/submit', // 提交订单 + OrderPay: WxApiRoot + 'order/pay', // 支付订单 OrderList: WxApiRoot + 'order/list', //订单列表 OrderDetail: WxApiRoot + 'order/detail', //订单详情 OrderCancel: WxApiRoot + 'order/cancel', //取消订单 - OrderRefund: WxApiRoot + 'order/refund', //取消订单并退款 + OrderRefund: WxApiRoot + 'order/refund', //退款取消订单 OrderDelete: WxApiRoot + 'order/delete', //删除订单 OrderConfirm: WxApiRoot + 'order/confirm', //确认收货 OrderComment: WxApiRoot + 'order/comment', // 代评价商品信息 diff --git a/litemall-wx/pages/payResult/payResult.js b/litemall-wx/pages/payResult/payResult.js index 2172f566..a164e38e 100644 --- a/litemall-wx/pages/payResult/payResult.js +++ b/litemall-wx/pages/payResult/payResult.js @@ -31,12 +31,37 @@ Page({ }, payOrder() { - pay.payOrder(this.data.orderId).then(res => { - this.setData({ - status: true - }); - }).catch(res => { - util.showErrorToast('支付失败'); + let that = this; + // 目前不能支持微信支付,这里仅仅是模拟支付成功,同理,后台也仅仅是返回一个成功的消息而已 + wx.showModal({ + title: '目前不能微信支付', + content: '点击确定模拟支付成功,点击取消模拟未支付成功', + success: function (res) { + if (res.confirm) { + util.request(api.OrderPay, { orderId: that.data.orderId }, 'POST').then(res => { + if (res.errno === 0) { + that.setData({ + status: true + }); + } + else { + util.showErrorToast('支付失败'); + } + }); + } + else if (res.cancel) { + util.showErrorToast('支付失败'); + } + + } }); + + // pay.payOrder(this.data.orderId).then(res => { + // this.setData({ + // status: true + // }); + // }).catch(res => { + // util.showErrorToast('支付失败'); + // }); } }) \ No newline at end of file