Forráskód Böngészése

消息服务,整合前端页面展示

nnkwrik 6 éve
szülő
commit
ac033a52b1

+ 2 - 2
im-service/src/main/java/io/github/nnkwrik/imservice/dao/HistoryMapper.java

@@ -68,7 +68,7 @@ public interface HistoryMapper {
             "                   </if>" +
             "                   ((u1 = #{user_id} and show_to_u1 = true) or (u2 = #{user_id} and show_to_u2 = true)))\n" +
             "                   group by chat_id\n" +
-            "                   HAVING max_time &lt;= #{offset_time,jdbcType=TIMESTAMP}) as foo\n" +
+            "                   HAVING max_time &lt; #{offset_time,jdbcType=TIMESTAMP}) as foo\n" +
             "         on foo.chat_id = history.chat_id and foo.max_time = history.send_time\n" +
             "       inner join chat on history.chat_id = chat.id\n" +
             "order by send_time desc" +
@@ -102,7 +102,7 @@ public interface HistoryMapper {
      */
     @Select("select u1_to_u2, message_type, message_body, send_time\n" +
             "from history\n" +
-            "where chat_id = #{chat_id} and send_time &lt;= #{offset_time,jdbcType=TIMESTAMP} order by send_time desc")
+            "where chat_id = #{chat_id} and send_time < #{offset_time,jdbcType=TIMESTAMP} order by send_time desc")
     List<History> getChatHistory(@Param("chat_id") int chatId,@Param("offset_time") Date offsetTime);
 
 

+ 4 - 1
im-service/src/main/java/io/github/nnkwrik/imservice/service/impl/FormServiceImpl.java

@@ -73,12 +73,15 @@ public class FormServiceImpl implements FormService {
         if (unreadList != null && unreadList.size() > 0) {
             chatHistory.addAll(unreadList);
             chatHistory = chatHistory.stream()
+                    .filter(a -> offsetTime.compareTo(a.getSendTime()) > 1)
                     .sorted((a, b) -> a.getSendTime().compareTo(b.getSendTime()))
                     .limit(size)
                     .collect(Collectors.toList());
         }
         vo.setHistoryList(chatHistory);
-        vo.setOffsetTime(chatHistory.get(0).getSendTime());
+        if (chatHistory.size() > 1) {
+            vo.setOffsetTime(chatHistory.get(0).getSendTime());
+        }
 
         return vo;
     }

+ 1 - 1
im-service/src/main/java/io/github/nnkwrik/imservice/service/impl/IndexServiceImpl.java

@@ -104,11 +104,11 @@ public class IndexServiceImpl implements IndexService {
                                              int size, Date offsetTime) {
         if (ObjectUtils.isEmpty(unreadMessage)) return new ArrayList<>();
         List<WsMessage> displayUnread = unreadMessage.stream()
+                .filter(msgList -> msgList != null && offsetTime.compareTo(msgList.get(msgList.size() - 1).getSendTime()) > 0)
                 .map(msgList -> {
                     unreadCount.put(msgList.get(0).getChatId(), msgList.size());
                     return msgList.get(msgList.size() - 1);
                 })
-                .filter(msg -> msg != null && offsetTime.compareTo(msg.getSendTime()) > 0)
                 .sorted((a, b) -> b.getSendTime().compareTo(a.getSendTime()))
                 .limit(size)
                 .collect(Collectors.toList());

+ 1 - 1
im-service/src/main/java/io/github/nnkwrik/imservice/service/impl/WebSocketServiceImpl.java

@@ -81,7 +81,7 @@ public class WebSocketServiceImpl implements WebSocketService {
 
     private void updateRedis(WsMessage message) {
         List<WsMessage> unreadList = redisClient.get(message.getChatId() + "");
-        if (unreadList != null) {
+        if (unreadList == null) {
             unreadList = new ArrayList<>();
         }
         unreadList.add(message);

+ 1 - 1
inner-api/src/main/java/fangxianyu/innerApi/goods/GoodsClientHandler.java

@@ -33,7 +33,7 @@ public class GoodsClientHandler {
 
     public Map<Integer, SimpleGoods> getSimpleGoodsList(List<Integer> goodsIdList) {
         log.info("从商品服务查询商品的简单信息");
-        if (goodsIdList.size() < 1){
+        if (goodsIdList == null || goodsIdList.size() < 1){
             log.info("商品idList为空,返回空的结果");
             return new HashMap<>();
         }

+ 1 - 1
inner-api/src/main/java/fangxianyu/innerApi/user/UserClientHandler.java

@@ -32,7 +32,7 @@ public class UserClientHandler {
 
     public Map<String, SimpleUser> getSimpleUserList(List<String> openIdList) {
         log.info("从用户服务查询用户的简单信息");
-        if (openIdList.size() < 1){
+        if (openIdList == null || openIdList.size() < 1) {
             log.info("用户idList为空,返回空的结果");
             return new HashMap<>();
         }

+ 12 - 10
wx-front/app.js

@@ -5,21 +5,23 @@ var user = require('./services/user.js');
 App({
   onLaunch: function () {
     //!!生产环境专用测试数据
-    // wx.setStorageSync('userInfo', this.testData.userInfo);
-    // wx.setStorageSync('token', '');
+    wx.setStorageSync('userInfo', this.testData.userInfo);
+    wx.setStorageSync('token', this.testData.token);
 
     // wx.setStorageSync('userInfo', null);
     // wx.setStorageSync('token', null);
 
     //获取用户的登录信息
-    user.checkLogin().then(res => {
-      console.log('app login')
-      this.globalData.userInfo = wx.getStorageSync('userInfo');
-      this.globalData.token = wx.getStorageSync('token');
-    }).catch(() => {
+    // user.checkLogin().then(res => {
+    //   console.log('app login')
+    //   this.globalData.userInfo = wx.getStorageSync('userInfo');
+    //   this.globalData.token = wx.getStorageSync('token');
+    // }).catch(() => {
       
-    });
+    // });
   },
+
+  
   
   globalData: {
     userInfo: {
@@ -33,9 +35,9 @@ App({
     userInfo: {
       openId: '1',
       nickName: '测试用户1',
-      avatarUrl: 'https://avatars2.githubusercontent.com/u/29662114?s=460&v=4'
+      avatarUrl: 'https://4.bp.blogspot.com/-gKPdnJWscyI/VCIkF3Po4DI/AAAAAAAAmjo/fAKkTMyf8hM/s170/monster01.png'
     },
-    token: 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdmF0YXJVcmwiOiJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI5NjYyMTE0P3M9NDYwJnY9NCIsIm9wZW5JZCI6IjEiLCJuaWNrTmFtZSI6Iua1i-ivleeUqOaItyIsImV4cCI6MTU0MzEyNzQ4OH0.ObcfDrCIgtY6AuqKqwZd_r8HnmjzHH_GsLA7161nBzUJeg2gvJ9xhMNniOKu0BmMI4dXn8TYyBLkee9y1xphLHCyQZwqgsLYKZFTfbcmSbpDAXjknA8qIsVAGpp5srChB6LoM1GDWiIRetJ-kBn0WopypMNck8kLFe6gdw7NyoafP0Wzrryf7DWAL56TlSOZ_IcubavcF58wX2oOMdS8_Q9NSh9Jj5lWJKkqAm395wdbnurFjOF3PtM5OlrJt4hqKcv3Sd9C_MOFiA3svlmmYjNfhUl8E9HEJpm1b5DmwxgkzMLty1VtZliL9hn0Ius4YOXJlk7IuLgHgBfDA2OyXQ',
+    token: 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdmF0YXJVcmwiOiJodHRwczovLzQuYnAuYmxvZ3Nwb3QuY29tLy1nS1BkbkpXc2N5SS9WQ0lrRjNQbzRESS9BQUFBQUFBQW1qby9mQUtrVE15ZjhoTS9zMTcwL21vbnN0ZXIwMS5wbmciLCJvcGVuSWQiOiIxIiwibmlja05hbWUiOiLmtYvor5XnlKjmiLcxIiwiZXhwIjoxNTQ0NDI1MzY1fQ.ZsuZLiaShOEFNZEeVYFtF7u568-ykyX3jXuznBgfnxo_G70TlQjALtHdkIZo8c-L6iSYGu45CN7Qwhs8_76l_C6dkwh8p-ncT1fDdVavsiTnqMY2oj_HqHR8hA2jMnB8QteH066F5IQihqcpAcFj4l_nZeBZ-zRAQNE9t3ufnD1qVCrOw9nRO7ywMunMUEqf0AGeRl3k2SWiShIRxuZsy2x5Iacu3CsLL1W9K1caA-tzydC4wrfwPwOdp1dlBNb0Fmo8jO3yR8rKojrwC61kOTnTB-YCC56cb_fUM6LiPrh6zFq6F3HSvYfXSha1s0JJom3lX4ycM5OwDcFBBh4EHQ',
   },
   post:{
     cate: {

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

@@ -1,5 +1,5 @@
 // const ApiRootUrl = 'https://5d876383.ngrok.io/';
-const ApiRootUrl = 'http://127.0.0.1:8080/';
+const ApiRootUrl = 'http://127.0.0.1:8805/';
 
 module.exports = {
   IndexUrl: ApiRootUrl + 'index/index', //首页数据接口
@@ -24,6 +24,9 @@ module.exports = {
   BrandList: ApiRootUrl + 'brand/list',  //品牌列表
   BrandDetail: ApiRootUrl + 'brand/detail',  //品牌详情
 
+  ChatIndex: ApiRootUrl + 'chat/index', //消息一览
+  ChatForm: ApiRootUrl + 'chat/form', //消息框
+
   CartList: ApiRootUrl + 'cart/index', //获取购物车的数据
   CartAdd: ApiRootUrl + 'cart/add', // 添加商品到购物车
   CartUpdate: ApiRootUrl + 'cart/update', // 更新购物车的商品

+ 153 - 9
wx-front/pages/chat/chatForm/chatForm.js

@@ -1,67 +1,211 @@
+var util = require('../../../utils/util.js');
+var api = require('../../../config/api.js');
 // pages/chat/chatForm/chatForm.js
 // https://blog.csdn.net/qq_35713752/article/details/78688311
+// https://blog.csdn.net/qq_35713752/article/details/80811397
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
-
+    id: 0,
+    historyList: [],
+    otherSide: {},
+    goods: {},
+    isU1: false,
+    myAvatar: '',
+    scrollTop: 0,
+    offsetTime: null,
+    size: 10,
+    scrollHeight: 0,
+    newScrollHeight: 0,
+    noMore: false,
   },
 
   /**
    * 生命周期函数--监听页面加载
    */
-  onLoad: function (options) {
+  onLoad: function(options) {
+    let now = new Date();
+    this.setData({
+      id: options.id,
+      myAvatar: wx.getStorageSync('userInfo').avatarUrl,
+      offsetTime: now.toISOString()
+    })
+    this.getHistory();
+
+
+  },
 
+  getHistory: function() {
+    let that = this;
+    util.request(api.ChatForm + '/' + this.data.id, {
+      offsetTime: this.data.offsetTime,
+      size: this.data.size
+    }).then(function(res) {
+      if (res.errno === 0) {
+        console.log(res.data);
+        that.setData({
+          otherSide: res.data.otherSide,
+          historyList: res.data.historyList.concat(that.data.historyList),
+          goods: res.data.goods,
+          isU1: res.data.isU1,
+          offsetTime: res.data.offsetTime,
+        });
+
+        if (res.data.historyList.length < that.data.size) {
+          that.setData({
+            noMore: true
+          })
+        }
+
+        console.log(that.data.historyList.length)
+        if (that.data.historyList.length < 11) {
+          wx.setNavigationBarTitle({
+            title: that.data.otherSide.nickName
+          })
+
+          // that.culScroll();   
+          // setTimeout(function () {
+          //   that.setData({
+          //     scrollTop: 5000,
+          //     scrollHeight: that.data.newScrollHeight
+          //   })
+
+          // }, 100);
+
+          let _this = that
+          that.getScrollHeight().then((res) => {
+            var scroll = res - _this.data.scrollHeight
+            _this.setData({
+              scrollTop: 5000,
+              scrollHeight: res,
+            })
+          })
+
+
+        } else {
+          console.log("加载了么")
+          // that.queryMultipleNodes();   
+          // setTimeout(function() {
+          //   var scroll = that.data.newScrollHeight - that.data.scrollHeight
+          //   console.log("加载了么: scrollTop " + scroll)
+          //   console.log("加载了么: newScrollHeight " + that.data.newScrollHeight)
+          //   console.log("加载了么: scrollHeight " + that.data.scrollHeight)
+          //   that.setData({
+          //     scrollTop: scroll,
+          //     scrollHeight: that.data.newScrollHeight,
+          //   })
+
+
+          // }, 100);
+
+          let _this=that
+   
+          that.getScrollHeight().then((res) => {
+            var scroll = res - _this.data.scrollHeight
+            _this.setData({
+              scrollTop: scroll,
+              scrollHeight: res,
+            })
+          })
+
+
+        }
+      } else {
+        console.log(res)
+      }
+    })
+  },
+  culScroll: function() {
+    let that = this
+
+    var query = wx.createSelectorQuery()
+    query.select('#hei').boundingClientRect()
+    query.selectViewport().scrollOffset()
+    query.exec(function(res) {
+      console.log("同步设置newScrollHeight" + res[0].top)
+      that.setData({
+        newScrollHeight: res[0].top
+      })
+
+    })
+
+  },
+  toGoods: function(event) {
+    let goodsId = event.target.dataset.id;
+    wx.navigateTo({
+      url: '/pages/goods/goods?id=' + goodsId,
+    });
+  },
+  more: function() {
+    console.log("到顶加载更多")
+    if (!this.data.noMore) {
+      this.getHistory()
+    }
   },
 
   /**
    * 生命周期函数--监听页面初次渲染完成
    */
-  onReady: function () {
+  onReady: function() {
 
   },
 
   /**
    * 生命周期函数--监听页面显示
    */
-  onShow: function () {
+  onShow: function() {
 
   },
 
   /**
    * 生命周期函数--监听页面隐藏
    */
-  onHide: function () {
+  onHide: function() {
 
   },
 
   /**
    * 生命周期函数--监听页面卸载
    */
-  onUnload: function () {
+  onUnload: function() {
 
   },
 
   /**
    * 页面相关事件处理函数--监听用户下拉动作
    */
-  onPullDownRefresh: function () {
+  onPullDownRefresh: function() {
 
   },
 
   /**
    * 页面上拉触底事件的处理函数
    */
-  onReachBottom: function () {
+  onReachBottom: function() {
 
   },
 
   /**
    * 用户点击右上角分享
    */
-  onShareAppMessage: function () {
+  onShareAppMessage: function() {
+
+  },
+  getScrollHeight: function() {
+    let that = this
+    return new Promise(function(resolve, reject) {
+      var query = wx.createSelectorQuery()
+      query.select('#hei').boundingClientRect()
+      query.selectViewport().scrollOffset()
+      query.exec(function(res) {
+        console.log("异步设置newScrollHeight" + res[0].top)
+        resolve(res[0].top);
+      })
+    });
 
   }
+
 })

+ 31 - 26
wx-front/pages/chat/chatForm/chatForm.wxml

@@ -1,11 +1,11 @@
 <view class="top-pop-box">
   <view class="top-pop">
     <view class="content">
-      <image class='img' mode='aspectFill' src='http://img.alicdn.com/bao/uploaded/i4/TB2HcB9v7omBKNjSZFqXXXtqVXa_!!0-fleamarket.jpg'></image>
+      <image class='img' mode='aspectFill' bindtap='toGoods' data-id='{{goods.id}}' src='{{goods.primaryPicUrl}}'></image>
       <view class='info'>
-        <view class='name'>84青轴红轴键盘</view>
+        <view class='name' bindtap='toGoods' data-id='{{goods.id}}'>{{goods.name}}</view>
         <view class='order'>
-          <view class='price'>¥ 249</view>
+          <view class='price' bindtap='toGoods' data-id='{{goods.id}}'>¥ {{goods.price}}</view>
           <view class='btn'>立即购买</view>
         </view>
         <view class='msg'>交易前聊一聊</view>
@@ -17,41 +17,45 @@
 
 
 <view class='news'>
-  <scroll-view scroll-y="true" scroll-top="5000" wx:key='' class='scroll'>
+  <scroll-view scroll-y="true" bindscrolltoupper="more" scroll-top="{{scrollTop}}" wx:key='' class='scroll' >
     <view class="historycon">
+      <!-- <view id="hei"></view> -->
 
-      <!-- 一条记录 -->
-      <view class='history'>
-        <view>
-          <text class='time'>2018-12-12 11:21</text>
-        </view>
+      <view wx:for="{{historyList}}" wx:key="{{index}}">
 
-        <view class='my_right'>
-          <view class='page_row'>
-            <text class='new_txt'> item.conten</text>
-            <view class='sanjiao my'></view>
-            <image class='new_img' mode='aspectFill' src='https://avatars2.githubusercontent.com/u/29662114?s=460&v=4'></image>
+        <!-- 自己发送 -->
+        <view class='history' wx:if="{{((isU1 && item.u1ToU2) || (!isU1 && !item.u1ToU2)) && item.messageType!=2}}">
+          <view class='time-view'>
+            <text class='time'>{{item.sendTime}}</text>
           </view>
-        </view>
-      </view>
-<!-- 一条记录结束 -->
-
 
-      <view class='history'>
-        <view>
-          <text class='time'>2018-12-12 11:21</text>
+          <view class='my_right'>
+            <view class='page_row'>
+              <text class='new_txt'>{{item.messageBody}}</text>
+              <view class='sanjiao my'></view>
+              <image class='new_img' mode='aspectFill' src='{{myAvatar}}'></image>
+            </view>
+          </view>
         </view>
 
-        <view class='you_left'>
-          <view class='page_row'>
+        <!-- 对方发送 -->
+        <view class='history' wx:elif="{{item.messageType!=2}}" id="msg{{item.sendTime}}">
+          <view class='time-view'>
+            <text class='time'>{{item.sendTime}}</text>
+          </view>
 
-            <image class='new_img' mode='aspectFill' src='https://avatars2.githubusercontent.com/u/29662114?s=460&v=4'></image>
-            <view class='sanjiao you'></view>
-            <text  class='new_txt'> 您正在与 tabdata.nickname 进行沟通您正在与 tabdata.nickname 进行沟通您正在与 tabdata.nickname 进行沟通您正在与 tabdata.nickname 进行沟通您正在与 tabdata.nickname 进行沟通您正在与 tabdata.nickname 进行沟通您正在与 tabdata.nickname 进行沟通</text>
+          <view class='you_left'>
+            <view class='page_row'>
+              <image class='new_img' mode='aspectFill' src='{{otherSide.avatarUrl}}'></image>
+              <view class='sanjiao you'></view>
+              <text class='new_txt'>{{item.messageBody}}</text>
 
+            </view>
           </view>
         </view>
+
       </view>
+      <view id="hei"></view>
     </view>
 
 
@@ -59,6 +63,7 @@
 </view>
 
 
+
 <view class="input-pop-box">
   <view class="input-pop">
 

+ 46 - 236
wx-front/pages/chat/chatIndex/chatIndex.js

@@ -1,5 +1,5 @@
-var util = require('../../utils/util.js');
-var api = require('../../config/api.js');
+var util = require('../../../utils/util.js');
+var api = require('../../../config/api.js');
 
 var app = getApp();
 
@@ -14,268 +14,78 @@ Page({
     },
     isEditCart: false,
     checkedAllStatus: true,
-    editCartList: []
+    editCartList: [],
+
+    chatList: [],
+    offsetTime: null,
+    size: 10,
   },
-  onLoad: function (options) {
+  onLoad: function(options) {
     // 页面初始化 options为页面跳转所带来的参数
 
 
   },
-  onReady: function () {
+  onReady: function() {
     // 页面渲染完成
 
   },
-  onShow: function () {
+  onShow: function() {
     // 页面显示
-    this.getCartList();
+    let now = new Date();
+    console.log(now.toISOString())
+
+    this.setData({
+      offsetTime: now.toISOString()
+    })
+
+    this.getChatList();
   },
-  onHide: function () {
+  onHide: function() {
     // 页面隐藏
 
   },
-  onUnload: function () {
+  onUnload: function() {
     // 页面关闭
 
   },
-  getCartList: function () {
+  getChatList: function() {
     let that = this;
-    util.request(api.CartList).then(function (res) {
+    util.request(api.ChatIndex, {
+      size: this.data.size,
+      offsetTime: this.data.offsetTime
+    }).then(function(res) {
       if (res.errno === 0) {
         console.log(res.data);
         that.setData({
-          cartGoods: res.data.cartList,
-          cartTotal: res.data.cartTotal
+          chatList: that.data.chatList.concat(res.data),
         });
-      }
-
-      that.setData({
-        checkedAllStatus: that.isCheckedAll()
-      });
-    });
-  },
-  isCheckedAll: function () {
-    //判断购物车商品已全选
-    return this.data.cartGoods.every(function (element, index, array) {
-      if (element.checked == true) {
-        return true;
       } else {
-        return false;
-      }
-    });
-  },
-  checkedItem: function (event) {
-    let itemIndex = event.target.dataset.itemIndex;
-    let that = this;
-
-    if (!this.data.isEditCart) {
-      util.request(api.CartChecked, { productIds: that.data.cartGoods[itemIndex].product_id, isChecked: that.data.cartGoods[itemIndex].checked ? 0 : 1 }, 'POST').then(function (res) {
-        if (res.errno === 0) {
-          console.log(res.data);
-          that.setData({
-            cartGoods: res.data.cartList,
-            cartTotal: res.data.cartTotal
-          });
-        }
-
-        that.setData({
-          checkedAllStatus: that.isCheckedAll()
-        });
-      });
-    } else {
-      //编辑状态
-      let tmpCartData = this.data.cartGoods.map(function (element, index, array) {
-        if (index == itemIndex){
-          element.checked = !element.checked;
-        }
-        
-        return element;
-      });
-
-      that.setData({
-        cartGoods: tmpCartData,
-        checkedAllStatus: that.isCheckedAll(),
-        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
-      });
-    }
-  },
-  getCheckedGoodsCount: function(){
-    let checkedGoodsCount = 0;
-    this.data.cartGoods.forEach(function (v) {
-      if (v.checked === true) {
-        checkedGoodsCount += v.number;
+        console.log(res)
       }
-    });
-    console.log(checkedGoodsCount);
-    return checkedGoodsCount;
-  },
-  checkedAll: function () {
-    let that = this;
-
-    if (!this.data.isEditCart) {
-      var productIds = this.data.cartGoods.map(function (v) {
-        return v.product_id;
-      });
-      util.request(api.CartChecked, { productIds: productIds.join(','), isChecked: that.isCheckedAll() ? 0 : 1 }, 'POST').then(function (res) {
-        if (res.errno === 0) {
-          console.log(res.data);
-          that.setData({
-            cartGoods: res.data.cartList,
-            cartTotal: res.data.cartTotal
-          });
-        }
-
-        that.setData({
-          checkedAllStatus: that.isCheckedAll()
-        });
-      });
-    } else {
-      //编辑状态
-      let checkedAllStatus = that.isCheckedAll();
-      let tmpCartData = this.data.cartGoods.map(function (v) {
-        v.checked = !checkedAllStatus;
-        return v;
-      });
-
-      that.setData({
-        cartGoods: tmpCartData,
-        checkedAllStatus: that.isCheckedAll(),
-        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
-      });
-    }
-
-  },
-  editCart: function () {
-    var that = this;
-    if (this.data.isEditCart) {
-      this.getCartList();
-      this.setData({
-        isEditCart: !this.data.isEditCart
-      });
-    } else {
-      //编辑状态
-      let tmpCartList = this.data.cartGoods.map(function (v) {
-        v.checked = false;
-        return v;
-      });
-      this.setData({
-        editCartList: this.data.cartGoods,
-        cartGoods: tmpCartList,
-        isEditCart: !this.data.isEditCart,
-        checkedAllStatus: that.isCheckedAll(),
-        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
-      });
-    }
-
+    })
   },
-  updateCart: function (productId, goodsId, number, id) {
-    let that = this;
-
-    util.request(api.CartUpdate, {
-      productId: productId,
-      goodsId: goodsId,
-      number: number,
-      id: id
-    }, 'POST').then(function (res) {
-      if (res.errno === 0) {
-        console.log(res.data);
-        that.setData({
-          //cartGoods: res.data.cartList,
-          //cartTotal: res.data.cartTotal
-        });
-      }
+  onPullDownRefresh: function () {
+    console.log("上拉刷新")
+    this.setData({
+      chatList: [],
+      offsetTime: null,
+      size: 10,
+    })
+    this.onShow()
+    setTimeout(function callback() {
+      wx.stopPullDownRefresh()
+    }, 500)
 
-      that.setData({
-        checkedAllStatus: that.isCheckedAll()
-      });
-    });
 
   },
-  cutNumber: function (event) {
-
-    let itemIndex = event.target.dataset.itemIndex;
-    let cartItem = this.data.cartGoods[itemIndex];
-    let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1;
-    cartItem.number = number;
+  onReachBottom: function () {
+    console.log("拉到底")
+    let chatList = this.data.chatList;
+    let offsetTime = chatList[chatList.length - 1].offsetTime;
     this.setData({
-      cartGoods: this.data.cartGoods
-    });
-    this.updateCart(cartItem.product_id, cartItem.goods_id, number, cartItem.id);
-  },
-  addNumber: function (event) {
-    let itemIndex = event.target.dataset.itemIndex;
-    let cartItem = this.data.cartGoods[itemIndex];
-    let number = cartItem.number + 1;
-    cartItem.number = number;
-    this.setData({
-      cartGoods: this.data.cartGoods
-    });
-    this.updateCart(cartItem.product_id, cartItem.goods_id, number, cartItem.id);
-
-  },
-  checkoutOrder: function () {
-    //获取已选择的商品
-    let that = this;
-
-    var checkedGoods = this.data.cartGoods.filter(function (element, index, array) {
-      if (element.checked == true) {
-        return true;
-      } else {
-        return false;
-      }
-    });
-
-    if (checkedGoods.length <= 0) {
-      return false;
-    }
-
-
-    wx.navigateTo({
-      url: '../shopping/checkout/checkout'
+      offsetTime: offsetTime,
     })
-  },
-  deleteCart: function () {
-    //获取已选择的商品
-    let that = this;
 
-    let productIds = this.data.cartGoods.filter(function (element, index, array) {
-      if (element.checked == true) {
-        return true;
-      } else {
-        return false;
-      }
-    });
-
-    if (productIds.length <= 0) {
-      return false;
-    }
-
-    productIds = productIds.map(function (element, index, array) {
-      if (element.checked == true) {
-        return element.product_id;
-      }
-    });
-
-
-    util.request(api.CartDelete, {
-      productIds: productIds.join(',')
-    }, 'POST').then(function (res) {
-      if (res.errno === 0) {
-        console.log(res.data);
-        let cartList = res.data.cartList.map(v => {
-          console.log(v);
-          v.checked = false;
-          return v;
-        });
-
-        that.setData({
-          cartGoods: cartList,
-          cartTotal: res.data.cartTotal
-        });
-      }
-
-      that.setData({
-        checkedAllStatus: that.isCheckedAll()
-      });
-    });
-  }
+    this.getChatList()
+  },
 })

+ 3 - 2
wx-front/pages/chat/chatIndex/chatIndex.json

@@ -1,3 +1,4 @@
 {
-    "backgroundColor": "#f4f4f4"
-}
+    "backgroundColor": "#f4f4f4",
+    "enablePullDownRefresh": true
+}

+ 17 - 36
wx-front/pages/chat/chatIndex/chatIndex.wxml

@@ -9,60 +9,41 @@
     </view>
   </view>
 
-  <!-- <view class="result-empty" wx:if="{{cartGoods.length <= 0}}">
-    <view class="c">
-      <image src="https://i.postimg.cc/v8KbQ4Sx/cry.png" />
-      <text>您还没有聊天记录</text>
-    </view>
-  </view> -->
 
 
-  <view class="result-list">
 
-    <navigator class="chat" url='/pages/chat/chatForm/chatForm'>
+  <view class="result-list" wx:if="{{chatList.length > 0}}">
+
+    <navigator class="chat" url='/pages/chat/chatForm/chatForm?id={{item.lastChat.chatId}}' wx:for="{{chatList}}">
       <view class="item">
         <view class='avatar-item'>
-          <image class="avatar" mode='aspectFill' src="https://avatars2.githubusercontent.com/u/29662114?s=460&v=4"></image>
+          <image class="avatar" mode='aspectFill' src="{{item.otherSide.avatarUrl}}"></image>
 
-          <view class='badge'>  <text class=' num'>99</text></view>
+          <view class='badge' wx:if="{{item.unreadCount}}">
+            <text class=' num'>{{item.unreadCount}}</text>
+          </view>
         </view>
         <view class="info">
           <view class="t">
-            <text class="name">测试用户</text>
+            <text class="name">{{item.otherSide.nickName}}</text>
           </view>
-          <view class="time">2018-10-12</view>
+          <view class="time">{{item.lastChat.sendTime}}</view>
           <view class="b">
-            <text class="chat-msg">你好.可以聊一下吗</text>
+            <text class="chat-msg">{{item.lastChat.messageBody}}</text>
           </view>
         </view>
-        <image class="img" mode='aspectFill' src="http://yanxuan.nosdn.127.net/04e05e9de3a471b1f6479dd137b459a8.png"></image>
+        <image class="img" mode='aspectFill' src="{{item.goods.primaryPicUrl}}"></image>
       </view>
     </navigator>
+    
 
-    <view class="chat">
-      <view class="item">
-        <view class='avatar-item'>
-          <image class="avatar" src="http://yanxuan.nosdn.127.net/04e05e9de3a471b1f6479dd137b459a8.png"></image>
-          <view class='badge'>  <text class=' num'>9</text></view>
-        </view>
-        <view class="info">
-          <view class="t">
-            <text class="name">测试用户</text>
-          </view>
-          <view class="time">2018-10-12</view>
-          <view class="b">
-            <text class="chat-msg">你好.可以聊一下吗</text>
-          </view>
-        </view>
-        <image class="img" src="http://yanxuan.nosdn.127.net/04e05e9de3a471b1f6479dd137b459a8.png"></image>
-      </view>
+  </view>
+  <view class="result-empty" wx:else>
+    <view class="c">
+      <image src="https://i.postimg.cc/v8KbQ4Sx/cry.png" />
+      <text>您还没有聊天记录</text>
     </view>
-
-
-
-
   </view>
 
 
-
 </view>

+ 0 - 2
wx-front/pages/chat/chatIndex/chatIndex.wxss

@@ -95,8 +95,6 @@ page {
   border-top: 1rpx solid #ddd;
 }
 
-
-
 .result-list .item .avatar-item {
   float: left;
   /* width:190rpx; */

+ 1 - 1
wx-front/utils/util.js

@@ -10,7 +10,7 @@ function formatTime(date) {
   var second = date.getSeconds()
 
 
-  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
+  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute].map(formatNumber).join(':')
 }
 
 function formatNumber(n) {