feat: PDD 批量采集支持可选客户端 (#74)

This commit is contained in:
chengma
2026-08-10 00:49:51 +08:00
parent c52d730728
commit d99c81310d
6 changed files with 196 additions and 31 deletions
+25 -13
View File
@@ -28,6 +28,12 @@ func (h *Handler) PddList(c *gin.Context) {
"读取 PDD 商品列表失败,数据没有被改动。刷新页面重试;一直失败请把这句话报给维护者。")
return
}
assignableClients, err := service.ListAssignableClients(h.db, currentUser(c), h.onlineThreshold)
if err != nil {
fail(c, http.StatusInternalServerError,
"读取可选客户端失败,数据没有被改动。刷新页面重试。")
return
}
// 底部状态条平时显示统计,刚做完操作时先显示操作结果。
// 操作结果是通过跳转带过来的 msg 参数传的(见 pddRedirect)。
@@ -49,16 +55,17 @@ func (h *Handler) PddList(c *gin.Context) {
}
detailValues.Set("page", strconv.Itoa(result.Page))
c.HTML(http.StatusOK, "pdd/list", page(c, "pdd", "PDD 商品", gin.H{
"Rows": result.Rows,
"Keyword": keyword,
"Status": statusLine,
"StatusFilter": string(status),
"StatusOptions": service.CollectStatusOptions(),
"HasAnyProducts": result.Total > 0,
"IsFiltered": result.IsFiltered,
"CurrentPage": result.Page,
"Pagination": service.NewPaginationView(result.Page, result.TotalPages, values.Encode()),
"DetailURL": "/pdd/detail?" + detailValues.Encode(),
"Rows": result.Rows,
"Keyword": keyword,
"Status": statusLine,
"StatusFilter": string(status),
"StatusOptions": service.CollectStatusOptions(),
"HasAnyProducts": result.Total > 0,
"IsFiltered": result.IsFiltered,
"CurrentPage": result.Page,
"Pagination": service.NewPaginationView(result.Page, result.TotalPages, values.Encode()),
"DetailURL": "/pdd/detail?" + detailValues.Encode(),
"AssignableClients": assignableClients,
}))
}
@@ -131,10 +138,15 @@ func (h *Handler) PddCollect(c *gin.Context) {
return
}
result, err := service.CreatePddCollectTasks(h.db, ids)
result, err := service.CreatePddCollectTasksForUser(h.db, currentUser(c), ids, c.PostForm("client_id"))
if err != nil {
fail(c, http.StatusInternalServerError,
"创建采集任务失败:"+err.Error()+"。这一批任务整体没有创建,可以直接重试。")
status := http.StatusInternalServerError
message := "创建采集任务失败,系统没有改动这一批数据。请稍后重试。"
if service.IsValidationError(err) {
status = http.StatusBadRequest
message = err.Error() + "。这一批任务整体没有创建,请重新选择。"
}
fail(c, status, message)
return
}