diff --git a/doc/api.md b/doc/api.md index a7ba1626..3d380fcc 100644 --- a/doc/api.md +++ b/doc/api.md @@ -158,7 +158,7 @@ list是对象数组,total是总的数量。 "password': "user123' } -2. 成功以后,会接收后端想要的一个token, +2. 成功以后,前端会接收后端响应的一个token, { "errno": 0, @@ -1399,12 +1399,58 @@ API应该存在版本控制,以保证兼容性。 接口链接 - + GET /wx/order/list + 请求参数 + showType: 订单类型,0则全部,1则待付款,2则待发货,3则待收货,4则代评价 + page: 请求页码 + limit: 每一页数量 + sort: 排序字段 + order: 升序降序 响应结果 + { + "errno": 0, + "data": { + "total": 1, + "pages": 1, + "limit": 10, + "page": 1, + "list": [ + { + "orderStatusText": "未付款", + "isGroupin": false, + "orderSn": "20190509607545", + "actualPrice": 3989.00, + "goodsList": [ + { + "number": 1, + "picUrl": "http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png", + "id": 3, + "goodsName": "云端沙发组合", + "specifications": [ + "标准" + ] + } + ], + "id": 3, + "handleOption": { + "cancel": true, + "delete": false, + "pay": true, + "comment": false, + "confirm": false, + "refund": false, + "rebuy": false + } + } + ] + }, + "errmsg": "成功" + } + 错误码 略 @@ -1417,15 +1463,68 @@ API应该存在版本控制,以保证兼容性。 接口链接 + GET /wx/order/detail + 请求参数 + orderId: 订单ID + 响应结果 + { + "errno": 0, + "data": { + "orderInfo": { + "consignee": "d", + "address": "北京市市辖区东城区 ddd", + "addTime": "2019-05-09 15:30:29", + "orderSn": "20190509607545", + "actualPrice": 3989.00, + "mobile": "13811111111", + "orderStatusText": "未付款", + "goodsPrice": 3999.00, + "couponPrice": 10.00, + "id": 3, + "freightPrice": 0.00, + "handleOption": { + "cancel": true, + "delete": false, + "pay": true, + "comment": false, + "confirm": false, + "refund": false, + "rebuy": false + } + }, + "orderGoods": [ + { + "id": 3, + "orderId": 3, + "goodsId": 1109008, + "goodsName": "云端沙发组合", + "goodsSn": "1109008", + "productId": 140, + "number": 1, + "price": 3999.00, + "specifications": [ + "标准" + ], + "picUrl": "http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png", + "comment": 0, + "addTime": "2019-05-09 15:30:29", + "updateTime": "2019-05-09 15:30:29", + "deleted": false + } + ] + }, + "errmsg": "成功" + } + 错误码 略 -#### 2.6.3 创建新订单 +#### 2.6.3 创建订单 应用场景 @@ -1433,13 +1532,29 @@ API应该存在版本控制,以保证兼容性。 接口链接 + POST /wx/order/submit 请求参数 + { + "cartId": 0, + "addressId": 3, + "couponId": -1, + "message": "", + "grouponRulesId": 0, + "grouponLinkId": 0 + } 响应结果 - + { + "errno": 0, + "data": { + "orderId": 4 + }, + "errmsg": "成功" + } + 错误码 略 @@ -1452,18 +1567,24 @@ API应该存在版本控制,以保证兼容性。 接口链接 - + POST /wx/order/cancel + 请求参数 + orderId: 订单ID 响应结果 - + { + "errno": 0, + "errmsg": "成功" + } + 错误码 略 -#### 2.6.4 订单的微信预支付交易单 +#### 2.6.5 微信预支付交易单 应用场景 @@ -1471,21 +1592,200 @@ API应该存在版本控制,以保证兼容性。 接口链接 + POST /wx/order/prepay + +说明 + + 具体微信支付交互流程和预支付使用方式,见官方文档: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1 请求参数 - + orderId: 订单ID + 响应结果 { errno: 0, - errmsg: "成功" + errmsg: "成功", + data: { + appId: 'xxx', + timeStamp: 'xxx', + nonceStr: 'xxx', + packageValue: 'xxx', + signType: 'xxx', + paySign: 'xxx' + } } 错误码 略 - + +#### 2.6.6 确认收货 + +应用场景 + + 订单确认收货 + +接口链接 + + POST /wx/order/confirm + +请求参数 + + orderId: 订单ID + +响应结果 + + { + "errno": 0, + "errmsg": "成功" + } + +错误码 + + 略 + +#### 2.6.7 订单删除 + +应用场景 + + 删除订单记录 + +接口链接 + + POST /wx/order/delete + +请求参数 + + orderId: 订单ID + +响应结果 + + { + "errno": 0, + "errmsg": "成功" + } + +错误码 + + 略 + +#### 2.6.8 订单退款 + +应用场景 + + 订单已经支付但是商家未发货,用户可以点击退款按钮申请退款取消订单。 + +说明 + + 退款请求发送以后,不会自动退款,仅仅是后端设置退款请求记录。 + 管理员在管理后台看到退款请求以后会手动退款或者拒绝退款。 + +接口链接 + + POST /wx/order/refund + +请求参数 + + orderId: 订单ID + +响应结果 + + { + "errno": 0, + "errmsg": "成功" + } + +错误码 + + 略 + + +#### 2.6.9 待评价商品 + +应用场景 + + 用户确认收货以后,可以待评价的订单商品。 + +接口链接 + + GET /wx/order/goods + +请求参数 + + orderId: 订单ID + goodsId: 商品ID + +响应结果 + + { + "errno": 0, + "data": { + "id": 4, + "orderId": 4, + "goodsId": 1109008, + "goodsName": "云端沙发组合", + "goodsSn": "1109008", + "productId": 140, + "number": 1, + "price": 3999.00, + "specifications": [ + "标准" + ], + "picUrl": "http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png", + "comment": 0, + "addTime": "2019-05-09 17:06:54", + "updateTime": "2019-05-09 17:06:54", + "deleted": false + }, + "errmsg": "成功" + } + +错误码 + + 略 + + +#### 2.6.10 订单评价 + +应用场景 + + 订单评价 + +接口链接 + + POST /wx/order/comment + +请求参数 + + orderGoodsId: 订单商品ID + content: 评价内容 + star: 评分,1分至5分 + hasPicture: 是否有评价图片 + picUrls: 评价图片列表 + +例如 + + { + "orderGoodsId": 4, + "content": "不错", + "star": 5, + "hasPicture": true, + "picUrls": [] + } + +响应结果 + + { + "errno": 0, + "errmsg": "成功" + } + +错误码 + + 略 + ### 2.7 会员服务 ### 2.8 收货地址服务 @@ -1502,7 +1802,6 @@ API应该存在版本控制,以保证兼容性。 请求参数 - userId: 用户ID page: 请求页码 limit: 每一页数量 sort: 排序字段 @@ -1554,7 +1853,6 @@ API应该存在版本控制,以保证兼容性。 请求参数 - userId: 用户ID id: 收货地址ID 响应结果 @@ -2761,6 +3059,8 @@ API应该存在版本控制,以保证兼容性。 ### 2.19 对象存储服务 +### 2.20 其他服务 + ## 3 管理后台API服务 diff --git a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java index 44059941..0cd4b9ca 100644 --- a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java +++ b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java @@ -69,7 +69,7 @@ public class LitemallOrderService { return orderSn; } - public List queryByOrderStatus(Integer userId, List orderStatus, Integer page, Integer limit) { + public List queryByOrderStatus(Integer userId, List orderStatus, Integer page, Integer limit, String sort, String order) { LitemallOrderExample example = new LitemallOrderExample(); example.setOrderByClause(LitemallOrder.Column.addTime.desc()); LitemallOrderExample.Criteria criteria = example.or(); @@ -78,6 +78,10 @@ public class LitemallOrderService { criteria.andOrderStatusIn(orderStatus); } criteria.andDeletedEqualTo(false); + if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) { + example.setOrderByClause(sort + " " + order); + } + PageHelper.startPage(page, limit); return litemallOrderMapper.selectByExample(example); } diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxOrderService.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxOrderService.java index afd210d9..3298f71a 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxOrderService.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxOrderService.java @@ -8,7 +8,6 @@ import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.github.binarywang.wxpay.constant.WxPayConstants; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; -import com.github.pagehelper.PageInfo; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -120,33 +119,31 @@ public class WxOrderService { * @param limit 分页大小 * @return 订单列表 */ - public Object list(Integer userId, Integer showType, Integer page, Integer limit) { + public Object list(Integer userId, Integer showType, Integer page, Integer limit, String sort, String order) { if (userId == null) { return ResponseUtil.unlogin(); } List orderStatus = OrderUtil.orderStatus(showType); - List orderList = orderService.queryByOrderStatus(userId, orderStatus, page, limit); - long count = PageInfo.of(orderList).getTotal(); - int totalPages = (int) Math.ceil((double) count / limit); + List orderList = orderService.queryByOrderStatus(userId, orderStatus, page, limit, sort, order); List> orderVoList = new ArrayList<>(orderList.size()); - for (LitemallOrder order : orderList) { + for (LitemallOrder o : orderList) { Map orderVo = new HashMap<>(); - orderVo.put("id", order.getId()); - orderVo.put("orderSn", order.getOrderSn()); - orderVo.put("actualPrice", order.getActualPrice()); - orderVo.put("orderStatusText", OrderUtil.orderStatusText(order)); - orderVo.put("handleOption", OrderUtil.build(order)); + orderVo.put("id", o.getId()); + orderVo.put("orderSn", o.getOrderSn()); + orderVo.put("actualPrice", o.getActualPrice()); + orderVo.put("orderStatusText", OrderUtil.orderStatusText(o)); + orderVo.put("handleOption", OrderUtil.build(o)); - LitemallGroupon groupon = grouponService.queryByOrderId(order.getId()); + LitemallGroupon groupon = grouponService.queryByOrderId(o.getId()); if (groupon != null) { orderVo.put("isGroupin", true); } else { orderVo.put("isGroupin", false); } - List orderGoodsList = orderGoodsService.queryByOid(order.getId()); + List orderGoodsList = orderGoodsService.queryByOid(o.getId()); List> orderGoodsVoList = new ArrayList<>(orderGoodsList.size()); for (LitemallOrderGoods orderGoods : orderGoodsList) { Map orderGoodsVo = new HashMap<>(); @@ -162,12 +159,7 @@ public class WxOrderService { orderVoList.add(orderVo); } - Map result = new HashMap<>(); - result.put("count", count); - result.put("data", orderVoList); - result.put("totalPages", totalPages); - - return ResponseUtil.ok(result); + return ResponseUtil.okList(orderVoList, orderList); } /** 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 356b1c6a..24838bd6 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 @@ -2,6 +2,8 @@ package org.linlinjava.litemall.wx.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.linlinjava.litemall.core.validator.Order; +import org.linlinjava.litemall.core.validator.Sort; import org.linlinjava.litemall.wx.annotation.LoginUser; import org.linlinjava.litemall.wx.service.WxOrderService; import org.springframework.beans.factory.annotation.Autowired; @@ -34,8 +36,10 @@ public class WxOrderController { public Object list(@LoginUser Integer userId, @RequestParam(defaultValue = "0") Integer showType, @RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "10") Integer limit) { - return wxOrderService.list(userId, showType, page, limit); + @RequestParam(defaultValue = "10") Integer limit, + @Sort @RequestParam(defaultValue = "add_time") String sort, + @Order @RequestParam(defaultValue = "desc") String order) { + return wxOrderService.list(userId, showType, page, limit, sort, order); } /** diff --git a/litemall-wx/pages/ucenter/index/index.js b/litemall-wx/pages/ucenter/index/index.js index 8cbb4051..060c0759 100644 --- a/litemall-wx/pages/ucenter/index/index.js +++ b/litemall-wx/pages/ucenter/index/index.js @@ -60,6 +60,11 @@ Page({ }, goOrder() { if (this.data.hasLogin) { + try { + wx.setStorageSync('tab', 0); + } catch (e) { + + } wx.navigateTo({ url: "/pages/ucenter/order/order" }); diff --git a/litemall-wx/pages/ucenter/order/order.js b/litemall-wx/pages/ucenter/order/order.js index cb7bfd6d..7490148f 100644 --- a/litemall-wx/pages/ucenter/order/order.js +++ b/litemall-wx/pages/ucenter/order/order.js @@ -6,7 +6,7 @@ Page({ orderList: [], showType: 0, page: 1, - size: 10, + limit: 10, totalPages: 1 }, onLoad: function(options) { @@ -26,13 +26,13 @@ Page({ util.request(api.OrderList, { showType: that.data.showType, page: that.data.page, - size: that.data.size + limit: that.data.limit }).then(function(res) { if (res.errno === 0) { console.log(res.data); that.setData({ - orderList: that.data.orderList.concat(res.data.data), - totalPages: res.data.totalPages + orderList: that.data.orderList.concat(res.data.list), + totalPages: res.data.pages }); } }); @@ -58,7 +58,7 @@ Page({ orderList: [], showType: showType, page: 1, - size: 10, + limit: 10, totalPages: 1 }); this.getOrderList(); diff --git a/renard-wx/pages/ucenter/order/order.js b/renard-wx/pages/ucenter/order/order.js index 288d5ba4..d49b5a28 100644 --- a/renard-wx/pages/ucenter/order/order.js +++ b/renard-wx/pages/ucenter/order/order.js @@ -6,7 +6,7 @@ Page({ orderList: [], showType: 0, page: 1, - size: 10, + limit: 10, totalPages: 1 }, onLoad: function(options) { @@ -26,12 +26,12 @@ Page({ util.request(api.OrderList, { showType: that.data.showType, page: that.data.page, - size: that.data.size + limit: that.data.limit }).then(function(res) { if (res.errno === 0) { that.setData({ - orderList: that.data.orderList.concat(res.data.data), - totalPages: res.data.totalPages + orderList: that.data.orderList.concat(res.data.list), + totalPages: res.data.pages }); wx.hideLoading(); } @@ -58,7 +58,7 @@ Page({ orderList: [], showType: showType, page: 1, - size: 10, + limit: 10, totalPages: 1 }); this.getOrderList();