RegMs If 4 rokov pred
rodič
commit
28587adc58

+ 37 - 0
cloudfunctions/listMessages/index.js

@@ -4,6 +4,7 @@ const cloud = require('wx-server-sdk')
 cloud.init()
 const db = cloud.database()
 const _ = db.command
+const $ = db.command.aggregate
 
 // 云函数入口函数
 exports.main = async (event, context) => {
@@ -69,6 +70,42 @@ exports.main = async (event, context) => {
         }
       })
 
+    return {
+      list: messages.list,
+      next_page_token: event.page_token + messages.list.length,
+      status: 'OK'
+    }
+  } else if (event.favorite) {
+    const messages = await db.collection('message')
+      .aggregate()
+      .lookup({
+        from: 'favorite',
+        let: {
+          msg_id: '$_id'
+        },
+        pipeline: $.pipeline()
+          .match(_.expr($.and([$.eq(['$msg_id', '$$msg_id']), $.eq(['$user_id', OPENID])])))
+          .project({
+            _id: 0,
+            favorite_time: 1
+          }).done(),
+        as: 'favorite'
+      })
+      .unwind('$favorite')
+      .skip(event.page_token)
+      .limit(event.page_size)
+      .lookup({
+        from: 'publisher',
+        localField: 'pub_id',
+        foreignField: '_id',
+        as: 'publisher'
+      })
+      .end()
+
+    for (let i = 0; i < messages.list.length; i++) {
+      messages.list[i].publisher = messages.list[i].publisher[0]
+    }
+
     return {
       list: messages.list,
       next_page_token: event.page_token + messages.list.length,

+ 3 - 2
miniprogram/components/itemmyLikeMessage/itemmyLikeMessage.wxml

@@ -2,7 +2,8 @@
 <view class="card" catchtap="getActivityInfo">
   <view class="profile">
     <view class="publisher-name primary-text-color">
-      <image class="publisher-avatar" src="{{item.publisherAvatar}}" mode="aspectFill" data-publisher-id="{{item.publisherID}}" />
+      <image class="publisher-avatar" src="{{item.publisher.avatar}}" mode="aspectFill"
+        data-publisher-id="{{item.pub_id}}" />
       <text style="font-weight:900">{{item.publisherName}}</text>
     </view>
     <image class="like" src="/images/like/{{like ? 'heart' : 'hollowheart'}}.png" catchtap="toggleLike" />
@@ -10,4 +11,4 @@
   <view class="title">{{item.title}}</view>
   <view class="sub-title">{{item.subTitle}}</view>
   <view class="line divider-color"></view>
-</view>
+</view>

+ 36 - 13
miniprogram/pages/myFavor/myFavor.js

@@ -1,25 +1,48 @@
 Component({
   data: {
-    newNews: []
+    pageToken: 0,
+    favorData: []
   },
 
   lifetimes: {
-    ready: function() {
+    ready: function () {
       wx.showLoading({
         title: "加载中"
       })
-      const db = wx.cloud.database()
-      db.collection("likeData").where({
-        type: "message"
-      }).get({
-        success: function (res) {
-          if (res.data.length == 0) {
-            wx.hideLoading()
-            return
-          }
-          this.processData(res.data)
-        }.bind(this)
+      wx.cloud.callFunction({
+        name: 'listMessages',
+        data: {
+          favorite: true,
+          page_token: this.data.pageToken,
+          page_size: 20
+        }
+      }).then(res => {
+        wx.hideLoading()
+        if (res.result.status !== 'OK') {
+          wx.showToast({
+            title: res.result.errMsg,
+            icon: 'none'
+          })
+          return
+        }
+        this.setData({
+          favorData: this.data.favorData.concat(res.result.list),
+          pageToken: res.result.next_page_token
+        })
       })
+
+      // const db = wx.cloud.database()
+      // db.collection("likeData").where({
+      //   type: "message"
+      // }).get({
+      //   success: function (res) {
+      //     if (res.data.length == 0) {
+      //       wx.hideLoading()
+      //       return
+      //     }
+      //     this.processData(res.data)
+      //   }.bind(this)
+      // })
     }
   },
 

+ 2 - 2
miniprogram/pages/myFavor/myFavor.wxml

@@ -1,6 +1,6 @@
 <!-- 消息-我的消息组件,含component:itemmyNews;含data:newNewsData -->
 <view class="page">
-  <view class="card" wx:for="{{newNews}}" wx:for-item="item" wx:key="id">
-    <itemmyLikeMessage item="{{item}}"/>
+  <view class="card" wx:for="{{favorData}}" wx:for-item="favor" wx:key="id">
+    <itemmyLikeMessage item="{{favor}}" />
   </view>
 </view>