5.3 KiB
5.3 KiB
🔍 找到问题了 - 日历数据不一致原因
日期: 2026-01-24
问题: 重新编译后,日历还是和预约数据不一致
🎯 问题分析
您的反馈
- 重新编译了后端和前端
- 日历还是只显示6个订单
- 预约页面显示62个待服务订单
从截图看到
- 日历页面显示"全部6"
- 日历页面显示"待服务2"
- 日历页面显示"服务中1"
- 日历页面显示"已完成3"
🔍 可能的原因
原因1: 视图切换按钮没有显示(最可能)
问题: 前端代码已更新,但视图切换按钮可能没有显示出来
检查方法:
- 打开日历页面
- 查看是否有"月视图"和"全部订单"两个按钮
- 如果没有,说明前端没有正确编译或缓存问题
解决方法:
# 清除前端缓存并重新编译
cd peidu/uniapp
npm run clean # 如果有这个命令
rm -rf node_modules/.cache # 清除缓存
npm run dev:mp-weixin # 重新编译
原因2: 订单状态定义不一致
问题: 预约页面和日历页面对"待服务"的定义不同
预约页面:
- 查询
status=1的订单 - 显示为"待服务"
日历页面(修复前):
- 查询
status IN (1, 2, 3, 4)的订单 - status=1: 待接单
- status=2: 待服务
- status=3: 服务中
- status=4: 已完成
可能的情况:
- 62个订单的status可能是0(待支付)
- 日历不显示status=0的订单
- 所以只显示6个
原因3: 用户ID不匹配
问题: 62个订单可能不属于当前登录用户
检查方法: 执行SQL查看订单分布:
SELECT
user_id,
COUNT(*) AS total,
SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS status_1
FROM `order`
WHERE deleted = 0
GROUP BY user_id;
原因4: 后端接口没有生效
问题: 后端虽然编译了,但没有重启服务
检查方法:
- 打开浏览器开发者工具
- 进入Network标签
- 刷新日历页面
- 查看是否有
/api/calendar/all-appointments请求 - 如果没有,说明前端没有调用新接口
🧪 立即诊断
步骤1: 执行SQL诊断
# 双击执行
peidu/sql/执行紧急诊断-日历数据.bat
在Navicat中执行SQL,重点查看:
- SQL 1: 订单状态分布
- SQL 4: 待服务订单总数
- SQL 6: 日历API会查询到的数据
步骤2: 检查前端是否有视图切换按钮
打开日历页面,查看是否有这两个按钮:
┌─────────────────────────────┐
│ [月视图] [全部订单] │
└─────────────────────────────┘
如果没有这两个按钮,说明前端没有正确更新。
步骤3: 检查浏览器控制台
- 打开日历页面
- 按F12打开开发者工具
- 查看Console标签,看是否有错误
- 查看Network标签,看API请求
💡 快速解决方案
方案1: 清除缓存重新编译(推荐)
# 1. 停止前端开发服务器
# 2. 清除缓存
cd peidu/uniapp
rm -rf unpackage
rm -rf node_modules/.cache
# 3. 重新编译
npm run dev:mp-weixin
# 4. 在微信开发者工具中重新打开项目
方案2: 强制刷新小程序
- 在微信开发者工具中
- 点击"编译" → "清除缓存" → "清除全部缓存"
- 重新编译
方案3: 检查订单状态
如果62个订单的status=0(待支付),需要修改日历查询条件:
修改文件: CalendarServiceImpl.java
// 原来的查询条件
.in("status", Arrays.asList(1, 2, 3, 4))
// 修改为包含status=0
.in("status", Arrays.asList(0, 1, 2, 3, 4))
📊 预期结果
如果前端正确更新
日历页面应该显示:
┌─────────────────────────────┐
│ [月视图] [全部订单] │ ← 这两个按钮
└─────────────────────────────┘
点击"全部订单"后:
- 应该显示所有订单(包括62个待服务)
- 统计数据应该更新
如果是订单状态问题
执行SQL后应该看到:
status=0: 62个订单(待支付)
status=1: 2个订单(待服务)
status=3: 1个订单(服务中)
status=4: 3个订单(已完成)
🎯 下一步
立即执行
- ✅ 执行SQL诊断(双击
执行紧急诊断-日历数据.bat) - ✅ 检查日历页面是否有视图切换按钮
- ✅ 查看浏览器控制台是否有错误
根据结果
- 如果没有视图切换按钮: 清除缓存重新编译
- 如果有按钮但数据不对: 查看SQL诊断结果
- 如果SQL显示只有6条数据: 检查订单状态和用户ID
📝 请告诉我
执行SQL诊断后,请告诉我:
-
SQL 1的结果: 各状态有多少订单?
status=0: __ 个 status=1: __ 个 status=2: __ 个 status=3: __ 个 status=4: __ 个 -
SQL 4的结果: 待服务订单总数是多少?
total_count: __ status_1_count: __ status_2_count: __ -
SQL 6的结果: 返回了多少条记录?
记录数: __ -
前端检查: 日历页面是否有"月视图"和"全部订单"两个按钮?
⬜ 有 ⬜ 没有
根据这些信息,我可以准确定位问题并提供解决方案!