一、动态发布功能
1. 前端实现(UniApp)
- 动态表单设计
使用uni-forms
组件构建动态发布表单,支持图文混排、话题标签(如#话题
)和地理位置标记。
- 富文本编辑器集成
通过uView UI
的u-parse
或第三方插件(如TinyMCE
)实现富文本编辑,支持表情、@用户和链接跳转。 - 实时预览与校验
在用户输入时动态校验内容长度(如限制 500 字),并实时显示剩余字数。
2. 后端实现(PHP)
- 接口设计
提供POST /api/dynamic/publish
接口,接收动态内容、图片列表和话题标签。
public function publish(Request $request) {
$user = auth()->user();
$data = $request->validate([
'content' => 'required|string|max:500',
'images' => 'array',
'tags' => 'array'
]);
// 存储动态到数据库
$dynamic = Dynamic::create([
'user_id' => $user->id,
'content' => $data['content'],
'images' => json_encode($data['images'])
]);
// 关联话题标签
$dynamic->tags()->attach($data['tags']);
return response()->json(['code' => 200, 'data' => $dynamic]);
}
二、话题分类功能
1. 话题分类设计
- 多级分类
采用树形结构存储话题分类(如科技 > 编程 > PHP
),支持无限级嵌套。 - 话题标签管理
提供话题标签的增删改查接口,支持热门话题推荐(按动态数量排序)。
2. 动态与话题关联
- 关联表设计
使用中间表dynamic_topic
存储动态与话题的关联关系。 - 话题页展示
在话题详情页展示该话题下的动态列表,支持按时间、热度排序。
三、用户互动功能
1. 点赞与评论
- 点赞功能
- 前端:点击按钮切换点赞状态,实时更新点赞数。
- 后端:使用 Redis 缓存热门动态的点赞数,减少数据库查询。
- 评论功能
- 支持二级嵌套评论,通过缩进或层级标记区分。
- 评论内容实时审核,防止违规内容发布。
2. @提醒与消息通知
- @提醒机制
- 解析评论内容中的
@用户名
,生成提醒记录并推送。 - 使用 WebSocket 或轮询实现实时提醒。
- 解析评论内容中的
- 消息中心
- 展示系统通知、评论回复提醒和 @提醒。
- 支持一键标记已读。
3. 实时聊天(可选)
- WebSocket 集成
使用 Swoole 或第三方 IM SDK(如融云、环信)实现实时聊天功能。- 支持单聊、群聊和 @提醒。
- 消息历史存储在 MySQL 中,支持离线消息推送。
四、优化策略
- 性能优化
- 使用 Redis 缓存热门动态、用户会话和话题数据。
- 对动态列表采用分页加载,减少初始加载时间。
- 安全防护
- 防止 SQL 注入、XSS 攻击和 CSRF 攻击。
- 敏感数据(如密码)使用 BCrypt 加密存储。
- 用户体验优化
- 图片懒加载:使用
uni.lazyLoad
优化图片加载性能。 - 本地缓存:使用
uni.setStorage
缓存用户信息和常用数据。
- 图片懒加载:使用