feat: 任务改用采集采购独立序号 (#172)
This commit is contained in:
+9
-12
@@ -647,8 +647,12 @@ func RecollectPddProductForUser(db *sql.DB, actor *model.User, goodsID, clientID
|
||||
return result, nil
|
||||
}
|
||||
|
||||
taskID, err := repository.NextTaskID(tx, model.TaskCollect)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
if err := repository.InsertCollectTaskForClientAndUser(
|
||||
tx, newCollectTaskID(), p.GoodsID, p.URL, clientID, actor.UserID); err != nil {
|
||||
tx, taskID, p.GoodsID, p.URL, clientID, actor.UserID); err != nil {
|
||||
return result, err
|
||||
}
|
||||
result.Created = 1
|
||||
@@ -726,7 +730,10 @@ func createPddCollectTasks(db *sql.DB, goodsIDs []string, clientID, visibleUserI
|
||||
continue
|
||||
}
|
||||
|
||||
taskID := newCollectTaskID()
|
||||
taskID, err := repository.NextTaskID(tx, model.TaskCollect)
|
||||
if err != nil {
|
||||
return CollectTaskResult{}, err
|
||||
}
|
||||
if err := repository.InsertCollectTaskForClientAndUser(
|
||||
tx, taskID, p.GoodsID, p.URL, clientID, createdByUserID); err != nil {
|
||||
return CollectTaskResult{}, err
|
||||
@@ -808,16 +815,6 @@ func FormatCollectTaskMessage(r CollectTaskResult) string {
|
||||
return msg
|
||||
}
|
||||
|
||||
// newCollectTaskID 生成采集任务编号。
|
||||
// 带 COL- 前缀是为了在日志和数据库里一眼认出这是采集任务而不是采购任务。
|
||||
func newCollectTaskID() string {
|
||||
id := newID()
|
||||
if len(id) > 16 {
|
||||
id = id[:16]
|
||||
}
|
||||
return "COL-" + id
|
||||
}
|
||||
|
||||
// dedupe 去掉重复项并保持原有顺序,顺带丢掉空串。
|
||||
func dedupe(values []string) []string {
|
||||
seen := make(map[string]bool, len(values))
|
||||
|
||||
@@ -610,6 +610,10 @@ func TestCreatePddCollectTasks_不指定客户端(t *testing.T) {
|
||||
if result.Created != 1 || result.Skipped() != 0 {
|
||||
t.Fatalf("Created=%d Skipped=%d,期望 1/0", result.Created, result.Skipped())
|
||||
}
|
||||
var taskID string
|
||||
if err := db.QueryRow(`SELECT task_id FROM tasks WHERE task_type='collect' AND pdd_goods_id='737116531267'`).Scan(&taskID); err != nil || taskID != "cj1" {
|
||||
t.Fatalf("第一条采集任务编号=%q err=%v,期望 cj1", taskID, err)
|
||||
}
|
||||
|
||||
status, assigned, url, ok := collectTaskOf(t, db, "737116531267")
|
||||
if !ok {
|
||||
|
||||
@@ -240,8 +240,12 @@ func CreatePurchaseTasksWithOptions(db *sql.DB, actor *model.User, requests []Pu
|
||||
result.Failures = append(result.Failures, TaskCreateError{SybID: request.SybID, Reason: reason})
|
||||
continue
|
||||
}
|
||||
taskID, err := repository.NextTaskID(tx, model.TaskPurchase)
|
||||
if err != nil {
|
||||
return PurchaseTaskResult{}, err
|
||||
}
|
||||
if err := repository.InsertPurchaseTask(tx, model.Task{
|
||||
TaskID: newPurchaseTaskID(), AssignedClient: clientID,
|
||||
TaskID: taskID, AssignedClient: clientID,
|
||||
CreatedByUserID: actor.UserID,
|
||||
ExecutionMode: executionMode, LiveConfirmedBy: confirmedBy, LiveConfirmedAt: confirmedAt,
|
||||
SybID: context.Order.SybID, OrderNo: context.Order.OrderNo,
|
||||
@@ -315,14 +319,6 @@ func validatePurchaseRequest(q repository.Execer, request PurchaseTaskRequest) (
|
||||
return "", context, choice.OptionsJSON, nil
|
||||
}
|
||||
|
||||
func newPurchaseTaskID() string {
|
||||
id := newID()
|
||||
if len(id) > 16 {
|
||||
id = id[:16]
|
||||
}
|
||||
return "PUR-" + id
|
||||
}
|
||||
|
||||
// parsePriceYuanToCent 把网页输入的人民币元精确转成分,不使用浮点数。
|
||||
func ParsePriceYuanToCent(raw string) (int64, error) {
|
||||
raw = strings.TrimSpace(raw)
|
||||
|
||||
@@ -314,17 +314,17 @@ func TestCreatePurchaseTasks_安全字段和重复保护(t *testing.T) {
|
||||
t.Fatalf("创建结果=%+v err=%v", result, err)
|
||||
}
|
||||
var task model.Task
|
||||
var status string
|
||||
err = db.QueryRow(`SELECT status, assigned_client, syb_id, order_no, goods_id,
|
||||
var status, taskID string
|
||||
err = db.QueryRow(`SELECT task_id, status, assigned_client, syb_id, order_no, goods_id,
|
||||
shopee_sku_id, pdd_goods_url, pdd_goods_id, pdd_options, quantity, max_price_cent
|
||||
FROM tasks WHERE task_type='purchase' AND syb_id='SYB-1'`).Scan(
|
||||
&status, &task.AssignedClient, &task.SybID, &task.OrderNo, &task.GoodsID,
|
||||
&taskID, &status, &task.AssignedClient, &task.SybID, &task.OrderNo, &task.GoodsID,
|
||||
&task.ShopeeSKUID, &task.PddGoodsURL, &task.PddGoodsID, &task.PddOptions,
|
||||
&task.Quantity, &task.MaxPriceCent)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if status != "assigned" || task.MaxPriceCent != 4200 || task.MaxPriceCent == 999900 ||
|
||||
if taskID != "cg1" || status != "assigned" || task.MaxPriceCent != 4200 || task.MaxPriceCent == 999900 ||
|
||||
task.Quantity != 1 || task.PddOptions != key || task.AssignedClient != "CLIENT-1" {
|
||||
t.Fatalf("采购任务字段不安全或不完整: status=%s task=%+v", status, task)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user