Project

General

Profile

解析Bug #435

v3.0: Some order data is missing when paging the order list

Added by Zhongbao Ye about 1 year ago. Updated about 1 year ago.

Status:
新建
Priority:
普通
Assignee:
Target version:
IT: Easytryck (Sweden) - v3.0
Start date:
Due date:
% Done:

0%

Estimated time:
4.00 h

Description

Task Details
  1. Investigate the cause of data loss.
Input
  • Bruce
Output
  • Report and Solution

Others

#1

Updated by Zhongbao Ye about 1 year ago

Output(2024/10/15) 九亭

原因: order list 分页处理错误

详细信息:

列表显示的SQL查询的步骤:
step 1. 查询满足所有条件的订单ids。 Sql: 【... limit 0, 80】
step 2. 查询所有的order products 数据,sql:   【... order_id in (step 1 的ids)】。
        该结果按照order products级别展示,条数肯定是大于/等于80

列表分页查询步骤:
step 1. 根据前端传递offset字段(列表总行数),组装limit数据,Sql:【... limit offset, 80】
step 2. 查询所有的order products 相关字段,sql:   【... order_id in (step 1 的ids)】。

问题出在offset字段,前端offset返回的是order products总行数(order products总行数>=订单总数),这将在后端查询sql时,错误计算limit(正确:limit 80, 80,错误:limit offset, 80)

解决方案:
  1. 前端正确计算offset(取去重后的order总个数,而不是取所有 order product的总个数)
    • 前端框架封装好的offset处理方式,(不推荐)
  2. 后端修改Sql查询(推荐)
    • Old: 查询满足条件的所有order
    • New: 查询满足条件的所有order products

因影响性不是很大,紧急度低。暂时先记录于此,后续找时间修改。

Also available in: Atom PDF