Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -619,16 +619,13 @@ DO UPDATE SET dim_id = EXCLUDED.dim_id, updated_at = EXCLUDED.updated_at
|
||||
if c.Dim1 <= 0 {
|
||||
continue
|
||||
}
|
||||
v2 := int64(0)
|
||||
var v2any any = nil
|
||||
if c.Dim3.Valid && c.Dim3.Int64 > 0 {
|
||||
v2 = c.Dim3.Int64
|
||||
v2any = v2
|
||||
}
|
||||
// If we managed to resolve an "ItemDim3Code" id too, store it in val3 and mark mmdim_id=3.
|
||||
// Active key: val1=color, val3=itemdim3. val2 is size and is not part of price/campaign key.
|
||||
v3 := int64(0)
|
||||
if extraVal3 != nil {
|
||||
if vv, ok := extraVal3[fmt.Sprintf("%d|%d", c.Dim1, v2)]; ok && vv > 0 {
|
||||
if c.Dim3.Valid && c.Dim3.Int64 > 0 {
|
||||
v3 = c.Dim3.Int64
|
||||
} else if extraVal3 != nil {
|
||||
if vv, ok := extraVal3[fmt.Sprintf("%d|0", c.Dim1)]; ok && vv > 0 {
|
||||
v3 = vv
|
||||
}
|
||||
}
|
||||
@@ -1071,18 +1068,38 @@ VALUES (
|
||||
_ = upsertDimCombosCache(code, dims) // best-effort cache fill
|
||||
}
|
||||
|
||||
// 2) Last resort: MSSQL stock tokens, then seed mmitem_dim. Do not use
|
||||
// mk_mmitem_dim_combo as a write source; stale cache rows can create wrong keys.
|
||||
if len(dims) == 0 {
|
||||
d, err := loadDimsFromMssqlStock(code)
|
||||
if err != nil {
|
||||
logger.Error("save:pg:dims:mssql:error", "product_code", code, "err", err)
|
||||
} else {
|
||||
dims = d
|
||||
_ = upsertDimCombosCache(code, dims)
|
||||
// If PG doesn't have mmitem_dim rows for this product yet, try to seed them.
|
||||
ensureMMItemDimRows(mmItemID, dims, nil)
|
||||
// 2) Merge MSSQL variant master combos. PG may be partially populated; missing
|
||||
// colors/dim3 combos still need to be seeded before sdprc/zbggcampaign writes.
|
||||
if d, err := loadDimsFromMssqlStock(code); err != nil {
|
||||
logger.Error("save:pg:dims:mssql:error", "product_code", code, "err", err)
|
||||
} else if len(d) > 0 {
|
||||
seenDims := make(map[string]struct{}, len(dims)+len(d))
|
||||
merged := make([]dimCombo, 0, len(dims)+len(d))
|
||||
dim3Value := func(v sql.NullInt64) int64 {
|
||||
if v.Valid {
|
||||
return v.Int64
|
||||
}
|
||||
return 0
|
||||
}
|
||||
for _, c := range dims {
|
||||
k := fmt.Sprintf("%d|%d", c.Dim1, dim3Value(c.Dim3))
|
||||
if _, ok := seenDims[k]; ok {
|
||||
continue
|
||||
}
|
||||
seenDims[k] = struct{}{}
|
||||
merged = append(merged, c)
|
||||
}
|
||||
for _, c := range d {
|
||||
k := fmt.Sprintf("%d|%d", c.Dim1, dim3Value(c.Dim3))
|
||||
if _, ok := seenDims[k]; ok {
|
||||
continue
|
||||
}
|
||||
seenDims[k] = struct{}{}
|
||||
merged = append(merged, c)
|
||||
}
|
||||
dims = merged
|
||||
_ = upsertDimCombosCache(code, dims)
|
||||
ensureMMItemDimRows(mmItemID, d, nil)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user