fix: 采购价格上限按数量计算总价 (#181)
This commit is contained in:
@@ -162,7 +162,7 @@ func taskPayload(t *model.Task) gin.H {
|
||||
payload["options"] = options
|
||||
}
|
||||
}
|
||||
// 采购任务必须带数量和价格上限,这是 Client 的价格保护
|
||||
// 采购任务必须带数量和订单总价上限,这是 Client 的价格保护。
|
||||
if t.Quantity > 0 {
|
||||
payload["quantity"] = t.Quantity
|
||||
}
|
||||
|
||||
@@ -663,13 +663,13 @@ func (h *Handler) SybMatch(c *gin.Context) {
|
||||
// 2. 已采集成功(pdd_data 非空)
|
||||
// 3. 已有商品规格映射
|
||||
// 4. 数量 > 0
|
||||
// 5. **价格上限已填且 > 0**(Client 的价格保护,没有它会拒绝执行)
|
||||
// 5. **单价上限已填且 > 0**,后端按最新数量计算订单总价上限
|
||||
// 6. 已选择分配的客户端
|
||||
//
|
||||
// 校验不过的**不要静默跳过**,要列出来告诉操作员缺什么。
|
||||
func (h *Handler) SybCreateTask(c *gin.Context) {
|
||||
ids := c.PostFormArray("ids")
|
||||
prices := c.PostFormArray("max_price_yuan")
|
||||
unitPrices := c.PostFormArray("unit_price_limit_yuan")
|
||||
mappingKeys := c.PostFormArray("mapping_option_key")
|
||||
contextVersions := c.PostFormArray("context_version")
|
||||
if len(ids) == 0 {
|
||||
@@ -679,8 +679,8 @@ func (h *Handler) SybCreateTask(c *gin.Context) {
|
||||
requests := make([]service.PurchaseTaskRequest, 0, len(ids))
|
||||
preFailures := make([]service.TaskCreateError, 0)
|
||||
for i, sybID := range ids {
|
||||
if i >= len(prices) {
|
||||
preFailures = append(preFailures, service.TaskCreateError{SybID: sybID, Reason: "人民币价格上限不能为空"})
|
||||
if i >= len(unitPrices) {
|
||||
preFailures = append(preFailures, service.TaskCreateError{SybID: sybID, Reason: "人民币单价上限不能为空"})
|
||||
continue
|
||||
}
|
||||
if i >= len(mappingKeys) || i >= len(contextVersions) ||
|
||||
@@ -688,13 +688,13 @@ func (h *Handler) SybCreateTask(c *gin.Context) {
|
||||
preFailures = append(preFailures, service.TaskCreateError{SybID: sybID, Reason: "规格确认信息已失效,请刷新页面后重试"})
|
||||
continue
|
||||
}
|
||||
cent, err := service.ParsePriceYuanToCent(prices[i])
|
||||
cent, err := service.ParsePriceYuanToCent(unitPrices[i])
|
||||
if err != nil {
|
||||
preFailures = append(preFailures, service.TaskCreateError{SybID: sybID, Reason: err.Error()})
|
||||
continue
|
||||
}
|
||||
requests = append(requests, service.PurchaseTaskRequest{
|
||||
SybID: sybID, MaxPriceCent: cent,
|
||||
SybID: sybID, UnitPriceLimitCent: cent,
|
||||
MappingOptionKey: strings.TrimSpace(mappingKeys[i]),
|
||||
ContextVersion: strings.TrimSpace(contextVersions[i]),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user