|
|
|
|
@@ -82,15 +82,16 @@ type StoreSkuBindInfo struct {
|
|
|
|
|
|
|
|
|
|
type tStoreSkuBindAndSpec struct {
|
|
|
|
|
model.StoreSkuBind
|
|
|
|
|
SkuStatus int
|
|
|
|
|
SkuNameStatus int
|
|
|
|
|
Name string
|
|
|
|
|
SpecQuality float32
|
|
|
|
|
SpecUnit string
|
|
|
|
|
SkuNamePrice int
|
|
|
|
|
SkuNameUnit string
|
|
|
|
|
RealSkuID int `orm:"column(real_sku_id)"`
|
|
|
|
|
|
|
|
|
|
SkuStatus int
|
|
|
|
|
SkuNameStatus int
|
|
|
|
|
Name string
|
|
|
|
|
SpecQuality float32
|
|
|
|
|
SpecUnit string
|
|
|
|
|
SkuNamePrice int
|
|
|
|
|
SkuNameUnit string
|
|
|
|
|
RealSkuID int `orm:"column(real_sku_id)"`
|
|
|
|
|
ExdSkuID string `orm:"column(exd_sku_id)"`
|
|
|
|
|
StoreName string
|
|
|
|
|
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -976,13 +977,13 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|
|
|
|
sql := `
|
|
|
|
|
SELECT
|
|
|
|
|
t2.*,
|
|
|
|
|
t1.id real_sku_id, t1.status sku_status, t1.spec_quality, t1.spec_unit,`
|
|
|
|
|
t1.id real_sku_id, t1.status sku_status, t1.spec_quality, t1.spec_unit, t1.exd_sku_id,`
|
|
|
|
|
if needGetExistingUnitPrice {
|
|
|
|
|
sql += " IF(t5.unit_price > 0, t5.unit_price, t3.price) sku_name_price,"
|
|
|
|
|
}
|
|
|
|
|
sql += `
|
|
|
|
|
t3.unit sku_name_unit, t3.name, t3.status sku_name_status,
|
|
|
|
|
ts.change_price_type
|
|
|
|
|
ts.change_price_type, ts.name store_name
|
|
|
|
|
FROM sku t1
|
|
|
|
|
JOIN store ts ON ts.id = ? AND ts.deleted_at = ?
|
|
|
|
|
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND t2.store_id = ts.id AND t2.deleted_at = ?
|
|
|
|
|
@@ -1037,41 +1038,43 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|
|
|
|
// globals.SugarLogger.Debug(utils.Format4Output(inSkuBind, false))
|
|
|
|
|
var skuBind *model.StoreSkuBind
|
|
|
|
|
if v.ID == 0 {
|
|
|
|
|
if skuBindInfo.IsFocus == 1 && v.SkuNameStatus == model.SkuStatusNormal && v.SkuStatus == model.SkuStatusNormal && isCanChangePrice {
|
|
|
|
|
skuBind = &model.StoreSkuBind{
|
|
|
|
|
StoreID: storeID,
|
|
|
|
|
SkuID: v.RealSkuID,
|
|
|
|
|
SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得
|
|
|
|
|
UnitPrice: unitPrice,
|
|
|
|
|
Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit),
|
|
|
|
|
Status: model.StoreSkuBindStatusDontSale, // 缺省不可售?
|
|
|
|
|
}
|
|
|
|
|
skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price)
|
|
|
|
|
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
|
|
|
|
skuBind.Status = tmpStatus
|
|
|
|
|
}
|
|
|
|
|
if globals.IsAddEvent {
|
|
|
|
|
err = AddEventDetail(db, ctx, model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, "", "")
|
|
|
|
|
}
|
|
|
|
|
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
|
|
|
|
dao.WrapAddIDCULDEntity(skuBind, userName)
|
|
|
|
|
// globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
|
|
|
|
if deletedSku := dao.GetDeletedStoreSkuBind(db, skuBind.StoreID, skuBind.SkuID); deletedSku == nil {
|
|
|
|
|
if err = dao.CreateEntity(db, skuBind); err != nil {
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
return nil, err
|
|
|
|
|
if !(strings.Contains(v.StoreName, model.ExdStoreName) && v.ExdSkuID == "") {
|
|
|
|
|
if skuBindInfo.IsFocus == 1 && v.SkuNameStatus == model.SkuStatusNormal && v.SkuStatus == model.SkuStatusNormal && isCanChangePrice {
|
|
|
|
|
skuBind = &model.StoreSkuBind{
|
|
|
|
|
StoreID: storeID,
|
|
|
|
|
SkuID: v.RealSkuID,
|
|
|
|
|
SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得
|
|
|
|
|
UnitPrice: unitPrice,
|
|
|
|
|
Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit),
|
|
|
|
|
Status: model.StoreSkuBindStatusDontSale, // 缺省不可售?
|
|
|
|
|
}
|
|
|
|
|
num = 1
|
|
|
|
|
} else {
|
|
|
|
|
// 需要处理,在删除某个门店商品,同步失败的情况下,又把商品重新关注。
|
|
|
|
|
// 所以统一处理成恢复删除的记录,这样避免问题
|
|
|
|
|
skuBind.ID = deletedSku.ID
|
|
|
|
|
// vendorSkuID的赋值意义不大
|
|
|
|
|
skuBind.MtwmID = deletedSku.MtwmID
|
|
|
|
|
skuBind.EbaiID = deletedSku.EbaiID
|
|
|
|
|
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
return nil, err
|
|
|
|
|
skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price)
|
|
|
|
|
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
|
|
|
|
skuBind.Status = tmpStatus
|
|
|
|
|
}
|
|
|
|
|
if globals.IsAddEvent {
|
|
|
|
|
err = AddEventDetail(db, ctx, model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, "", "")
|
|
|
|
|
}
|
|
|
|
|
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
|
|
|
|
dao.WrapAddIDCULDEntity(skuBind, userName)
|
|
|
|
|
// globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
|
|
|
|
if deletedSku := dao.GetDeletedStoreSkuBind(db, skuBind.StoreID, skuBind.SkuID); deletedSku == nil {
|
|
|
|
|
if err = dao.CreateEntity(db, skuBind); err != nil {
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
num = 1
|
|
|
|
|
} else {
|
|
|
|
|
// 需要处理,在删除某个门店商品,同步失败的情况下,又把商品重新关注。
|
|
|
|
|
// 所以统一处理成恢复删除的记录,这样避免问题
|
|
|
|
|
skuBind.ID = deletedSku.ID
|
|
|
|
|
// vendorSkuID的赋值意义不大
|
|
|
|
|
skuBind.MtwmID = deletedSku.MtwmID
|
|
|
|
|
skuBind.EbaiID = deletedSku.EbaiID
|
|
|
|
|
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|