Browse Source

feat[litemall-wx, litemall-wx-api]: 个人主页显示订单的相关数量

Junling Bu 7 years ago
parent
commit
f709522922

+ 38 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java

@@ -11,7 +11,9 @@ import org.springframework.util.StringUtils;
 import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Random;
 
 @Service
@@ -169,4 +171,40 @@ public class LitemallOrderService {
         example.or().andOrderSnEqualTo(orderSn).andDeletedEqualTo(false);
         return orderMapper.selectOneByExample(example);
     }
+
+    public Map<Object, Object> orderInfo(Integer userId){
+        LitemallOrderExample example = new LitemallOrderExample();
+        example.or().andUserIdEqualTo(userId).andDeletedEqualTo(false);
+        List<LitemallOrder> orders = orderMapper.selectByExampleSelective(example, LitemallOrder.Column.orderStatus);
+
+        int unpaid = 0;
+        int unship = 0;
+        int unrecv = 0;
+        int uncomment = 0;
+        for(LitemallOrder order : orders){
+            if(OrderUtil.isCreateStatus(order)){
+                unpaid++;
+            }
+            else if(OrderUtil.isPayStatus(order)){
+                unship++;
+            }
+            else if(OrderUtil.isShipStatus(order)){
+                unrecv++;
+            }
+            else if(OrderUtil.isConfirmStatus(order) || OrderUtil.isAutoConfirmStatus(order)){
+                uncomment++;
+            }
+            else {
+                // do nothing
+            }
+        }
+
+        Map<Object, Object> orderInfo = new HashMap<Object, Object>();
+        orderInfo.put("unpaid", unpaid);
+        orderInfo.put("unship", unship);
+        orderInfo.put("unrecv", unrecv);
+        orderInfo.put("uncomment", uncomment);
+        return orderInfo;
+
+    }
 }

+ 47 - 0
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxUserController.java

@@ -0,0 +1,47 @@
+package org.linlinjava.litemall.wx.web;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.linlinjava.litemall.core.util.ResponseUtil;
+import org.linlinjava.litemall.db.service.LitemallOrderService;
+import org.linlinjava.litemall.wx.annotation.LoginUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/wx/user")
+@Validated
+public class WxUserController {
+    private final Log logger = LogFactory.getLog(WxUserController.class);
+
+    @Autowired
+    private LitemallOrderService orderService;
+
+    /**
+     * 用户信息
+     *
+     * @param userId 用户ID
+     * @return 用户信息
+     *   成功则
+     *  {
+     *      errno: 0,
+     *      errmsg: '成功',
+     *      data: xxx
+     *  }
+     *   失败则 { errno: XXX, errmsg: XXX }
+     */
+    @GetMapping("index")
+    public Object list(@LoginUser Integer userId) {
+        if(userId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        Map<Object, Object> data = new HashMap<Object, Object>();
+        data.put("order", orderService.orderInfo(userId));
+        return ResponseUtil.ok(data);
+    }
+
+}

+ 4 - 1
litemall-wx/config/api.js

@@ -85,5 +85,8 @@ module.exports = {
  GroupOnMy: WxApiRoot + 'groupon/my', //团购API-我的团购
  GroupOnDetail: WxApiRoot + 'groupon/detail', //团购API-详情
  GroupOnJoin: WxApiRoot + 'groupon/join', //团购API-详情
-  StorageUpload: WxApiRoot + 'storage/upload' //图片上传
+ StorageUpload: WxApiRoot + 'storage/upload', //图片上传,
+
+ UserIndex: WxApiRoot + 'user/index', //个人页面用户相关信息
+
 };

+ 15 - 0
litemall-wx/pages/ucenter/index/index.js

@@ -8,6 +8,12 @@ Page({
     userInfo: {
       nickName: '点击登录',
       avatarUrl: 'http://yanxuan.nosdn.127.net/8945ae63d940cc42406c3f67019c5cb6.png'
+    },
+    order: {
+      unpaid: 0,
+      unship: 0,
+      unrecv: 0,
+      uncomment: 0
     }
   },
   onLoad: function(options) {
@@ -24,6 +30,15 @@ Page({
       this.setData({
         userInfo: userInfo,
       });
+
+      let that = this;
+      util.request(api.UserIndex).then(function (res) {
+        if (res.errno === 0) {
+          that.setData({
+            order: res.data.order
+          });
+        }
+      });
     }
 
   },

+ 11 - 6
litemall-wx/pages/ucenter/index/index.wxml

@@ -15,18 +15,23 @@
     </view>
     <view class='user_column'>
       <view class='user_column_item' bindtap='goOrderIndex' data-index='1' data-route='/pages/ucenter/order/order'>
-        <image class='user_column_item_image' src='/static/images/pendpay.png'></image>
+        <text class="user_column_item_badge" wx:if="{{order.unpaid != 0}}">{{order.unpaid}}</text>
+        <image class='user_column_item_image' src='/static/images/pendpay.png'>   
+</image>
         <view class='user_column_item_text'>待付款</view>
       </view>
       <view class='user_column_item' bindtap='goOrderIndex' data-index='2' data-route='/pages/ucenter/order/order'>
+        <text class="user_column_item_badge" wx:if="{{order.unship != 0}}">{{order.unship}}</text>
         <image class='user_column_item_image' src='/static/images/send.png'></image>
         <view class='user_column_item_text'>待发货</view>
       </view>
       <view class='user_column_item' bindtap='goOrderIndex' data-index='3' data-route='/pages/ucenter/order/order'>
+        <text class="user_column_item_badge" wx:if="{{order.unrecv != 0}}">{{order.unrecv}}</text>
         <image class='user_column_item_image' src='/static/images/receive.png'></image>
         <view class='user_column_item_text'>待收货</view>
       </view>
       <view class='user_column_item' bindtap='goOrderIndex' data-index='4' data-route='/pages/ucenter/order/order'>
+        <text class="user_column_item_badge" wx:if="{{order.uncomment != 0}}">{{order.uncomment}}</text>
         <image class='user_column_item_image' src='/static/images/comment.png'></image>
         <view class='user_column_item_text'>待评价</view>
       </view>
@@ -40,23 +45,23 @@
   </view>
   <view class='user_column'>
 
-    <view class='user_column_item' bindtap='goCoupon' data-route='/pages/ucenter/order/order'>
+    <view class='user_column_item' bindtap='goCoupon'>
       <image class='user_column_item_image' src='/static/images/coupon.png'></image>
       <view class='user_column_item_text'>优惠卷</view>
     </view>
-    <view class='user_column_item' bindtap='goCollect' data-route='/pages/ucenter/order/order'>
+    <view class='user_column_item' bindtap='goCollect'>
       <image class='user_column_item_image' src='/static/images/icon_collect.png'></image>
       <view class='user_column_item_text'>商品收藏</view>
     </view>
-    <view class='user_column_item' bindtap='goFootprint' data-route='/pages/ucenter/order/order'>
+    <view class='user_column_item' bindtap='goFootprint'>
       <image class='user_column_item_image' src='/static/images/footprint.png'></image>
       <view class='user_column_item_text'>浏览足迹</view>
     </view>
-    <view class='user_column_item' bindtap='goGroupon' data-route='/pages/ucenter/order/order'>
+    <view class='user_column_item' bindtap='goGroupon'>
       <image class='user_column_item_image' src='/static/images/group.png'></image>
       <view class='user_column_item_text'>我的拼团</view>
     </view>
-    <view class='user_column_item' bindtap='goOrderIndex' data-route='/pages/ucenter/order/order'>
+    <view class='user_column_item' bindtap='goOrderIndex'>
       <image class='user_column_item_image' src='/static/images/aftersale.png'></image>
       <view class='user_column_item_text'>退款/售后</view>
     </view>

+ 13 - 1
litemall-wx/pages/ucenter/index/index.wxss

@@ -100,8 +100,20 @@ page {
 .user_column_item {
   width: 30%;
   height: 140rpx;
-  /* background: #757575; */
+  background: #fff;
   text-align: center;
+  position: relative;
+}
+
+.user_column_item_badge {
+  height: 28rpx;
+  width: 28rpx;
+  position: absolute;
+  background: #b4282d;
+  color: #fff;
+  border-radius: 50%;
+  margin-top:20rpx;
+  margin-left:40rpx;
 }
 
 .user_column_item_image {