Skip to content

Latest commit

 

History

History
414 lines (326 loc) · 16.6 KB

CHANGELOG.md

File metadata and controls

414 lines (326 loc) · 16.6 KB

漂流瓶系统 - 功能更新日志

最新版本 (v1.4.0) - 2024年12月24日

新增功能

  • 举报系统

    • 用户可以对违规的漂流瓶或评论进行举报
    • 支持选择默认举报理由或自定义举报理由
    • 防止用户举报自己的内容
    • 防止重复举报已处理的内容
    • 同一内容的多次举报在后台合并显示
    • 后台管理员可以审核举报,支持以下操作:
      • 删除内容(软删除,可恢复)
      • 屏蔽漂流瓶内容(内容不显示但可捡起)
      • 屏蔽评论内容(内容不显示但评论保留)
      • 拒绝举报
      • 撤销之前的处理操作
    • 审核完成后自动向举报人发送消息通知
    • 审核完成后自动向被举报人发送警告消息(红色提醒)
    • 举报成功奖励积分(可在后台配置)
  • 软删除功能

    • 删除操作改为软删除(设置is_deleted=1),内容可恢复
    • 漂流瓶和评论都支持软删除
    • 撤销处理时可以恢复被删除的内容
  • 消息通知系统增强

    • 新增"举报反馈"消息类型
    • 系统消息支持(from_user_id为NULL)
    • 被举报人收到红色警告消息,提醒内容被处理的原因
    • 举报人收到蓝色信息消息,告知举报处理结果

数据库更新

  • 新增 reports 表(举报表)
  • bottles 表新增字段:
    • is_hidden (TINYINT(1)): 是否屏蔽
    • is_deleted (TINYINT(1)): 是否删除(软删除)
  • comments 表新增字段:
    • is_hidden (TINYINT(1)): 是否屏蔽
    • is_deleted (TINYINT(1)): 是否删除(软删除)
  • messages 表更新:
    • from_user_id 字段允许 NULL(表示系统消息)
    • type 字段新增 '举报反馈' 类型
  • system_settings 表新增配置:
    • POINTS_PER_REPORT_APPROVED: 举报成功奖励积分(默认5)

前端更新

  • 在 pick.html、profile_picked.html、profile_bottles.html 添加举报按钮
  • 举报模态框支持选择默认理由或自定义理由
  • 消息中心支持显示系统消息和举报反馈消息
  • 被举报人警告消息使用红色警告样式显示

后台管理更新

  • 新增"举报管理"页面(admin/reports.php)
  • 支持查看待审核、已审核、已拒绝的举报
  • 支持批量处理同一内容的多个举报
  • 支持撤销之前的处理操作
  • 系统设置页面新增举报成功积分配置

版本 (v1.3.1) - 2024年12月20日

性能优化

  • 数据库索引优化

    • 为所有主要表添加了性能优化索引
    • 优化了用户表(users)的查询性能,添加了 created_at、is_vip、status、vip_expire_date 索引
    • 优化了漂流瓶表(bottles)的查询性能,添加了 user_id、status、throw_time、bottle_type、quality_score 等索引
    • 优化了评论表(comments)的查询性能,添加了 bottle_id、user_id、created_at 等索引和复合索引
    • 优化了点赞表(likes)、捡瓶记录表(pick_records)、签到表(checkins)等表的查询性能
    • 优化了消息中心表(messages)的查询性能,添加了用户、已读状态、创建时间的复合索引
    • 优化了系统设置表(system_settings)的查询性能,添加了 setting_group 索引
    • 所有索引优化已合并到主数据库文件 driftbottle.sql 中
  • 数据库查询优化

    • 优化了后台控制面板的统计查询,从 29 次查询减少到 4 次
    • 优化了用户信息查询,合并多个查询为单个查询
    • 优化了漂流瓶列表查询,解决了 N+1 查询问题
    • 实现了系统设置缓存机制,大幅提升配置读取性能

功能改进

  • 高德地图 API Key 配置优化

    • 将高德地图 API Key 从代码配置改为后台数据库配置
    • 可在后台管理系统 → 系统设置 → 基本设置中直接配置和修改
    • API Key 已包含在数据库初始化脚本中,首次安装无需额外配置
    • 支持在后台界面中显示/隐藏 API Key,保护敏感信息
  • 网站备案和版权信息管理

    • 新增后台配置功能:可在系统设置 → 基本设置中配置备案号、公安备案号、版权信息、站长邮箱
    • 前台所有页面自动显示配置的备案信息和版权信息
    • 支持ICP备案号和公安备案号的链接跳转
    • 版权信息和站长邮箱信息可在后台灵活配置
    • 所有信息通过API动态加载,无需修改前端代码

数据库更新

  • 合并了 add_amap_api_key.sql 到主数据库文件 driftbottle.sql
  • 所有数据库索引优化已包含在主数据库文件中
  • 新增备案号、公安备案号、版权信息、站长邮箱配置项到系统设置表
  • 新安装用户可直接使用优化后的数据库结构

版本 (v1.3.0) - 2024年12月20日

新增功能

  • IP地址追踪功能

    • 用户注册时自动记录注册IP地址
    • 用户登录时自动更新上次登录IP地址
    • 发布漂流瓶时自动记录IP地址(已有功能)
    • 发表评论时自动记录IP地址
    • 后台管理系统可查看用户注册IP、上次登录IP
    • 后台管理系统可查看漂流瓶和评论的IP地址
    • 用户详情页面显示注册IP、登录IP和评论内容
    • 漂流瓶详情页面显示漂流瓶IP和评论IP
    • 评论管理页面显示每条评论的IP地址
  • 评论回复功能(二级评论)

    • 支持对评论进行回复,实现二级评论结构
    • 回复以缩进方式显示,左侧有边框标识
    • 回复时显示"回复 @用户名"标识
    • 在"我扔出的漂流瓶"和"我捡到的漂流瓶"页面都可以查看和回复评论
    • 回复评论会通知被回复的用户,而不是漂流瓶所有者
    • 回复评论也会给被回复的用户增加积分
  • 评论功能增强

    • "我扔出的漂流瓶"页面现在显示所有评论内容(包括回复)
    • "我捡到的漂流瓶"页面现在显示所有评论内容(包括回复)
    • 评论后可以选择两种模式:
      • 仅评论:添加评论,但漂流瓶不丢回大海,依然显示在"我捡到的漂流瓶"中
      • 评论并丢回大海:添加评论并将漂流瓶状态更新为"漂流中",其他人可以捡起
    • 评论后漂流瓶依然显示在"我捡到的漂流瓶"中(无论选择哪种模式)
    • 丢回大海的漂流瓶别人捡起后可以看到所有评论内容
  • 消息中心功能增强

    • 支持点击未读消息标记为已读
    • 未读消息有蓝色边框和"未读"徽章标识
    • 点击后自动更新消息状态和未读数量
    • 优化消息显示样式(蓝色系配色)
    • 未读消息徽章样式优化(长方体、渐变背景、脉冲动画)
    • 消息卡片横排显示,字体调大

Bug 修复

  • 分页功能修复

    • 修复了"我扔出的漂流瓶"页面分页功能失效的问题
    • 修复了"我捡到的漂流瓶"页面分页功能失效的问题
    • 修复了点击第二页后内容无变化的问题
    • 改进了事件绑定机制,避免重复绑定
    • 添加了页面范围检查,确保分页正确工作
  • UI/UX 修复

    • 修复了个性签名更新成功弹窗位置问题(现在居中显示)
    • 优化了弹窗样式(圆角、阴影、动画效果)
    • 修复了未读消息按钮显示样式问题
    • 优化了消息中心标题布局(数字显示在标题后面)

技术改进

  • 优化了 getUserPickedBottles 函数,为每个漂流瓶获取评论列表(包括回复)
  • 优化了 getUserBottles 函数,为每个漂流瓶获取评论列表(包括回复)
  • 改进了 commentAndThrowBottle 函数,支持仅评论模式(不丢回大海)
  • 改进了分页渲染逻辑,使用事件委托避免重复绑定
  • 添加了更详细的调试日志
  • 移除了过滤已评论漂流瓶的逻辑,所有漂流瓶都显示

数据库更新

  • comments 表新增字段:
    • parent_id (INT(11), NULL): 父评论ID,NULL表示一级评论
    • reply_to_user_id (INT(11), NULL): 回复的目标用户ID
    • ip_address (VARCHAR(50), NULL): 评论IP地址
  • users 表新增字段:
    • register_ip (VARCHAR(50), NULL): 用户注册IP地址
    • last_login_ip (VARCHAR(50), NULL): 用户上次登录IP地址(已存在,现在会自动更新)
  • 新增索引:idx_parent_id、idx_reply_to_user_id、idx_ip_address(评论IP地址索引)
  • 新增外键约束:
    • parent_id 引用 comments(id) ON DELETE CASCADE
    • reply_to_user_id 引用 users(id) ON DELETE SET NULL

API 更新

  • comment_bottle API 新增参数:
    • parent_id (可选): 父评论ID,用于回复评论
    • reply_to_user_id (可选): 被回复的用户ID
    • throw_back (可选, 默认true): 是否丢回大海,false表示仅评论

功能移除

  • 删除了"显示全部漂流瓶"按钮(所有漂流瓶默认显示,不再需要过滤)

版本 (v1.2.1) - 2024年12月23日

功能更新

  • 评论显示功能
    • "我捡到的漂流瓶"页面现在会显示每个漂流瓶的所有评论
    • 评论显示包括评论者、评论时间和评论内容
    • 评论者用户名可点击查看个人资料
    • 添加了 HTML 转义,防止 XSS 攻击

Bug 修复

  • 分页功能修复
    • 修复了"我扔出的漂流瓶"和"我捡到的漂流瓶"页面分页功能失效的问题
    • 修复了点击第二页后内容无变化的问题
    • 改进了事件绑定机制,避免重复绑定
    • 添加了页面范围检查,确保分页正确工作

技术改进

  • 优化了 getUserPickedBottles 函数,为每个漂流瓶获取评论列表
  • 改进了分页渲染逻辑,使用事件委托避免重复绑定
  • 添加了更详细的调试日志

注意: 此版本的功能已整合到 v1.3.0 中

版本 (v1.2.0) - 2024年12月20日

新增功能

  • 用户等级系统
    • 通过发漂流瓶、捡漂流瓶、评论等操作自动获得经验值
    • 根据经验值自动计算用户等级(等级公式:level = floor(sqrt(experience / 100)) + 1)
    • 在个人主页和用户公开主页显示等级徽章和经验条
    • 后台管理员可以查看和设置用户经验值
    • 后台系统设置中可以配置各项操作获得的经验值
    • 经验值历史记录功能

数据库更新

  • users 表新增字段:experience、level
  • 新增表:experience_history(经验值历史记录表)

API 更新

  • 新增 API 端点:get_experience_config、get_user_level_info

版本 (v1.1.0) - 2024年12月13日

新增功能

  • 语音漂流瓶功能
    • 支持录制和发布语音漂流瓶
    • 支持播放语音内容
    • 显示语音时长信息
    • 前端页面(扔瓶、捡瓶、个人中心)全面支持语音播放
    • 管理员后台支持语音播放和文件管理
    • 删除漂流瓶时自动删除关联的语音文件

数据库更新

  • bottles 表新增字段:bottle_type、audio_file、audio_duration

API 更新

  • 新增 API 端点:upload_audio(语音文件上传)

版本 (v1.0.2) - 2025年4月21日

更新网站图标

  • favicon.ico
  • 实在是强迫症了,随便整了一个上传了

更新内容

更新将所有数据配置相关功能改为MySQL数据库存储,主要包括:

  • 积分规则配置
  • 普通用户每日扔瓶限制
  • 普通用户每日捡瓶限制
  • VIP用户每日扔瓶限制
  • VIP用户每日捡瓶限制
  • 新增admin/settings.php系统设置页面
  • 支持修改网站名称等基本设置

系统设置页面

系统设置页面分为四个主要模块:

  • 基本设置:网站名称、网站URL、管理员邮箱等
  • 积分规则:签到积分、VIP额外积分、点赞获得积分等规则
  • 用户限制:普通用户和VIP用户的每日扔瓶和捡瓶限制
  • 内容设置:漂流瓶内容长度限制、评论长度限制等

更新将 VIP 会员开通所需积分配置改为从 MySQL 数据库存储,实现在后台可配置功能,主要包括:

  • VIP会员1个月开通所需积分
  • VIP会员3个月开通所需积分
  • VIP会员6个月开通所需积分
  • VIP会员12个月开通所需积分

功能说明

VIP会员积分配置

管理员可以通过后台"系统设置"页面的"VIP设置"选项卡修改以下配置:

  • VIP会员1个月开通积分:默认为 100 积分
  • VIP会员3个月开通积分:默认为 250 积分
  • VIP会员6个月开通积分:默认为 450 积分
  • VIP会员12个月开通积分:默认为 800 积分

配置实时生效

所有配置修改后立即生效,无需重启服务器。系统会自动从数据库读取最新的配置值。

功能变更

  • 取消使用伪静态功能
    • 修改nginx.htaccess配置文件,注释掉伪静态转发规则
    • 清空.htaccess文件,彻底取消Apache伪静态规则
    • 修改前端JavaScript API调用,从使用伪静态路径格式改为传统的GET参数格式
    • 增强前端代码错误处理和调试功能,提高系统稳定性
    • 改进表单提交验证,增加防护检查机制

问题修复

  • 修复注册页面中表单ID不匹配问题,确保输入验证正确工作
  • 修复API调用路径,将所有api.php/endpoint格式的调用改为api.php?action=endpoint格式
  • 增加错误日志和调试信息,提供更详细的问题排查支持
  • 增强JavaScript代码的健壮性,添加必要的错误捕获和空值检查

版本 (v1.0.1) - 2025年4月20日

新增功能

  • 增强安全功能

    • 增强了sanitizeInput函数,使用更严格的参数
    • 添加了专门的HTML过滤函数sanitizeHtml,允许基本HTML标签但过滤危险内容
    • 添加了URL过滤函数sanitizeUrl
    • 添加了SQL过滤函数sanitizeSql
    • 创建了完整的安全中间件类Security,提供了
      • 内容安全策略(CSP)设置
      • 安全相关的HTTP响应头
      • 会话固定攻击防护
      • CSRF令牌生成和验证
      • 输入验证和过滤
      • 恶意输入检测
    • 在API处理流程中增加了恶意输入检测
    • 为常用API端点增加了详细的验证规则
    • 前端添加了CSRF令牌处理工具以及获取CSRF令牌的API端点
    • 增强了 Security 类:
      • 扩展了恶意模式检测,添加更多XSS和SQL注入模式
      • 添加了更严格的HTML净化函数 purifyHtml
      • 添加了JSON数据过滤和安全输出功能
    • 改进了基本过滤函数:
      • 为所有过滤函数添加了类型检查
      • 增强了URL过滤,阻止更多危险协议
      • 集成了高级HTML过滤
    • 添加了专门的验证器类 Validator:
      • 提供了对用户名、密码、URL、电子邮件等的高级验证
      • 实现了文本和HTML内容的验证和长度检查
      • 添加了密码强度评估
    • 优化了API处理:
      • 使用安全输出JSON函数
      • 记录潜在的攻击尝试
      • 改进了CORS和预检请求处理
  • 新增账号封禁功能

    • 管理员可以控制账号是否允许登陆
    • 已运行用户使用update_user_status.sql新增数据表
  • VIP会员系统

    • 实现VIP会员购买和续费功能
    • VIP会员享有更高的漂流瓶发送配额
    • VIP会员特权标识和界面优化
    • VIP到期自动检测和状态更新
  • 用户签到系统

    • 每日签到获取积分奖励
    • 连续签到奖励增加
    • 签到统计(月度签到次数、连续签到天数)
  • 个性化设置

    • 用户可以设置个性签名,展示在个人资料页
    • 个性签名字数限制为50字
  • 积分系统

    • 用户可通过多种方式获取积分(签到、互动等)
    • 积分历史记录
    • 积分用途扩展
  • 漂流瓶功能增强

    • 评论功能优化,支持实时评论
    • 对漂流瓶添加点赞功能
    • 匿名发送选项
    • 漂流瓶发送频率限制
  • UI/UX改进

    • 响应式界面优化,提升移动端体验
    • 漂流瓶性别区分(蓝色表示男性,粉色表示女性)
    • 交互反馈优化
    • 导航栏状态根据登录状态动态更新
  • 安全性增强

    • IP地址记录与保护
    • 非VIP用户IP地址部分隐藏
    • 后端验证增强

优化改进

  • 使用MutationObserver监听DOM变化,优化漂流瓶交互体验
  • 优化API响应结构,提高前端数据处理效率
  • 漂流瓶存储结构优化

问题修复

  • 修复用户签名更新后不显示的问题
  • 修复VIP状态检测逻辑
  • 修复漂流瓶评论按钮事件绑定问题

计划中的功能

  • 漂流瓶内容分类系统
  • 用户间私信功能
  • 漂流瓶收藏功能
  • 更多的用户个性化设置
  • 用户等级系统