欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。

在这里插入图片描述

📌 概述

好友圈模块是福报养成计应用中的一个社交功能,它允许用户分享自己的福报成就和心得,查看好友的福报动态,互相鼓励和支持。通过好友圈,用户可以建立一个积极向上的社区氛围,激励彼此持续积累福报。这个模块的设计目的是增强应用的社交性,提高用户的参与度和粘性。

好友圈模块支持丰富的互动功能。用户可以分享福报成就、心得体会等内容,好友可以对分享进行点赞、评论和转发。系统会记录所有的互动数据,用户可以查看自己分享的热度和好友的反馈。

🔗 完整流程

第一部分:内容分享

用户在好友圈中发布分享,包括文字、图片等内容。系统会将分享内容保存到数据库,并将其显示在好友的动态流中。分享可以设置为公开或仅好友可见。

第二部分:动态展示

系统从数据库中查询用户好友的最新分享,按照时间倒序排列,展示在好友圈的动态流中。每个分享显示发布者的信息、内容、点赞数、评论数等。

第三部分:互动与反馈

用户可以对好友的分享进行点赞、评论和转发。系统会记录这些互动,并通知分享者有新的点赞或评论。用户可以查看自己分享的热度和好友的反馈。

🔧 Web 代码实现

<div class="moments-container">
  <div class="share-box">
    <textarea id="shareContent" placeholder="分享你的福报成就..."></textarea>
    <button onclick="shareMoment()">分享</button>
  </div>

  <div class="moments-feed" id="momentsFeed"></div>
</div>

HTML 结构包含分享输入框和动态流展示区域。用户可以在分享框中输入内容,点击分享按钮发布到好友圈。

JavaScript 逻辑

class MomentsModule {
  loadMoments() {
    cordova.exec(
      (result) => {
        this.renderMoments(result.moments);
      },
      (error) => console.error('加载动态失败:', error),
      'MomentsPlugin',
      'getMoments',
      []
    );
  }

  renderMoments(moments) {
    const feed = document.getElementById('momentsFeed');
    feed.innerHTML = '';
    moments.forEach(moment => {
      const div = document.createElement('div');
      div.className = 'moment-item';
      div.innerHTML = `
        <h4>${moment.userName}</h4>
        <p>${moment.content}</p>
        <div class="moment-actions">
          <button onclick="likeMoment(${moment.id})">👍 ${moment.likes}</button>
          <button onclick="commentMoment(${moment.id})">💬 ${moment.comments}</button>
        </div>
      `;
      feed.appendChild(div);
    });
  }
}

const momentsModule = new MomentsModule();
momentsModule.loadMoments();

JavaScript 代码通过 Cordova 的 exec 方法调用原生插件获取好友的最新动态。loadMoments 方法获取好友圈的动态列表,renderMoments 方法将动态渲染到页面上,每个动态显示发布者、内容、点赞数和评论数。

原生代码

export class MomentsPlugin {
  getMoments(callback: (data: any) => void): void {
    try {
      const db = this.getDatabase();
      const userId = this.getUserId();

      const moments = db.query(`
        SELECT m.id, u.name as userName, m.content, m.created_at,
               COUNT(DISTINCT l.id) as likes,
               COUNT(DISTINCT c.id) as comments
        FROM moments m
        JOIN users u ON m.user_id = u.id
        LEFT JOIN likes l ON m.id = l.moment_id
        LEFT JOIN comments c ON m.id = c.moment_id
        WHERE m.user_id IN (SELECT friend_id FROM friendships WHERE user_id = ?)
        GROUP BY m.id
        ORDER BY m.created_at DESC
      `, [userId]);

      callback({ moments });
    } catch (error) {
      callback({ moments: [] });
    }
  }

  private getDatabase(): any { return null; }
  private getUserId(): string { return ''; }
}

原生代码使用 ArkTS 实现好友圈的动态查询。系统查询当前用户的所有好友的分享,并统计每个分享的点赞数和评论数。结果按照发布时间倒序排列,最新的分享优先显示。

📝 总结

好友圈模块提供了社交分享功能,增强了应用的社交性。关键技术包括:内容分享、动态展示、互动统计等。通过 Cordova 与 OpenHarmony 的结合,实现了完整的社交功能。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐