fix: 修复顺运宝采集任务孤儿状态 (#165)
This commit is contained in:
+15
-3
@@ -404,7 +404,7 @@ func (r *TaskListResult) StatusLine() string {
|
||||
|
||||
// DeleteTasks 批量删除任务,返回实际删掉的条数。
|
||||
func DeleteTasks(db *sql.DB, taskIDs []string) (int64, error) {
|
||||
return repository.DeleteTasks(db, dedupe(taskIDs))
|
||||
return deleteTasksInScope(db, dedupe(taskIDs), "", false)
|
||||
}
|
||||
|
||||
// DeleteTasksForUser 保证整批删除要么全部在当前范围内成功,要么全部回滚。
|
||||
@@ -413,7 +413,10 @@ func DeleteTasksForUser(db *sql.DB, actor *model.User, taskIDs []string) (int64,
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
ids := dedupe(taskIDs)
|
||||
return deleteTasksInScope(db, dedupe(taskIDs), visibleUserID, true)
|
||||
}
|
||||
|
||||
func deleteTasksInScope(db *sql.DB, ids []string, visibleUserID string, enforceExactScope bool) (int64, error) {
|
||||
if len(ids) == 0 {
|
||||
return 0, nil
|
||||
}
|
||||
@@ -422,13 +425,22 @@ func DeleteTasksForUser(db *sql.DB, actor *model.User, taskIDs []string) (int64,
|
||||
return 0, fmt.Errorf("开始删除任务事务失败: %w", err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
goodsIDs, err := repository.ListCollectTaskGoodsIDsInScope(tx, ids, visibleUserID)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
n, err := repository.DeleteTasksInScope(tx, ids, visibleUserID)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if n != int64(len(ids)) {
|
||||
if enforceExactScope && n != int64(len(ids)) {
|
||||
return 0, ErrTaskNotVisible
|
||||
}
|
||||
for _, goodsID := range goodsIDs {
|
||||
if _, err := repository.ResetCollectingIfNoActiveTask(tx, goodsID); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
if err := tx.Commit(); err != nil {
|
||||
return 0, fmt.Errorf("提交删除任务事务失败: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user