feat: 支持主列表选择每页条数 (#242)
This commit is contained in:
+14
-8
@@ -1246,6 +1246,12 @@ func ParseSybOrderNos(raw string) ([]string, error) {
|
||||
// `[必须]` 处理阶段由顺运宝规格键、PDD 关联、采集状态和规格映射实时推导,
|
||||
// 不额外保存一份容易过期的状态字段。
|
||||
func ListSybOrdersView(db *sql.DB, keyword, shop, stage string, page int) (*SybListResult, error) {
|
||||
return ListSybOrdersViewWithPageSize(db, keyword, shop, stage, page, DefaultPageSize)
|
||||
}
|
||||
|
||||
// ListSybOrdersViewWithPageSize 按白名单页容量查询顺运宝明细。
|
||||
func ListSybOrdersViewWithPageSize(db *sql.DB, keyword, shop, stage string, page, pageSize int) (*SybListResult, error) {
|
||||
pageSize = NormalizePageSize(pageSize)
|
||||
shop = strings.TrimSpace(shop)
|
||||
stage = ParseSybStage(stage)
|
||||
orderNos, err := ParseSybOrderNos(keyword)
|
||||
@@ -1264,18 +1270,18 @@ func ListSybOrdersView(db *sql.DB, keyword, shop, stage string, page int) (*SybL
|
||||
stage == SybStageAIMatched ||
|
||||
stage == SybStageTaskCreated || stage == SybStagePurchaseCompleted ||
|
||||
stage == SybStagePurchaseReview || stage == SybStagePurchaseBlocked {
|
||||
return listAdvancedSybStage(db, orderNos, shop, stage, page)
|
||||
return listAdvancedSybStage(db, orderNos, shop, stage, page, pageSize)
|
||||
}
|
||||
filter := repository.SybOrderFilter{OrderNos: orderNos, Shop: shop, Stage: stage}
|
||||
total, err := repository.CountSybOrders(db, filter)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
totalPages := TotalPages(total)
|
||||
totalPages := TotalPages(total, pageSize)
|
||||
page = ClampPage(page, totalPages)
|
||||
offset := (page - 1) * PageSize
|
||||
offset := (page - 1) * pageSize
|
||||
|
||||
rows, err := repository.ListSybOrderContexts(db, filter, PageSize, offset)
|
||||
rows, err := repository.ListSybOrderContexts(db, filter, pageSize, offset)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1311,7 +1317,7 @@ func ListSybOrdersView(db *sql.DB, keyword, shop, stage string, page int) (*SybL
|
||||
// 这些阶段不能只靠 SQL 判断:同一个 option key 是否仍存在,需要走唯一的
|
||||
// OptionKey 规范化逻辑。当前同步量是百到千级,先保证采购判断正确;普通列表
|
||||
// 和其余阶段仍在数据库分页。
|
||||
func listAdvancedSybStage(db *sql.DB, orderNos []string, shop, stage string, page int) (*SybListResult, error) {
|
||||
func listAdvancedSybStage(db *sql.DB, orderNos []string, shop, stage string, page, pageSize int) (*SybListResult, error) {
|
||||
contexts, err := repository.ListSybOrderContexts(db,
|
||||
repository.SybOrderFilter{OrderNos: orderNos, Shop: shop}, -1, 0)
|
||||
if err != nil {
|
||||
@@ -1329,13 +1335,13 @@ func listAdvancedSybStage(db *sql.DB, orderNos []string, shop, stage string, pag
|
||||
}
|
||||
}
|
||||
total := len(filtered)
|
||||
totalPages := TotalPages(total)
|
||||
totalPages := TotalPages(total, pageSize)
|
||||
page = ClampPage(page, totalPages)
|
||||
start := (page - 1) * PageSize
|
||||
start := (page - 1) * pageSize
|
||||
if start > total {
|
||||
start = total
|
||||
}
|
||||
end := start + PageSize
|
||||
end := start + pageSize
|
||||
if end > total {
|
||||
end = total
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user