+SyncSpecialAct
Act添加字段IsSpecail
This commit is contained in:
@@ -870,13 +870,17 @@ func SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, actID int, vendor
|
||||
if handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformActHandler); handler != nil {
|
||||
tmpActMap := &model.ActMap{}
|
||||
tmpActMap.ID = actMap[vendorID].MapID
|
||||
if err = handler.SyncAct(ctx, nil, actMap[vendorID], nil, actStoreSkuMap[vendorID]); err == nil {
|
||||
retVal = []int{1}
|
||||
if !globals.IsStoreSkuAct || actMap[vendorID].IsSpecial == 0 {
|
||||
if err = handler.SyncAct(ctx, task, actMap[vendorID], nil, actStoreSkuMap[vendorID]); err == nil {
|
||||
retVal = []int{1}
|
||||
} else {
|
||||
tmpActMap.Remark = utils.LimitUTF8StringLen(err.Error(), 1024)
|
||||
}
|
||||
// 保存最后一次同步错误信息
|
||||
dao.UpdateEntity(db, tmpActMap, "Remark")
|
||||
} else {
|
||||
tmpActMap.Remark = utils.LimitUTF8StringLen(err.Error(), 1024)
|
||||
SyncSpecialAct(ctx, task, actMap[vendorID], nil, actStoreSkuMap[vendorID])
|
||||
}
|
||||
// 保存最后一次同步错误信息
|
||||
dao.UpdateEntity(db, tmpActMap, "Remark")
|
||||
} else {
|
||||
globals.SugarLogger.Warnf("SyncAct strange actID:%d, vendorID:%d", actID, vendorID)
|
||||
}
|
||||
@@ -1150,3 +1154,95 @@ func ForceUpdateVendorPrice(ctx *jxcontext.Context, vendorID int, actType int, s
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func SyncActStoreSku2StoreSkuAct(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, act *model.Act2) (err error) {
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil || err != nil {
|
||||
dao.Rollback(db)
|
||||
if r != nil {
|
||||
panic(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
sql := `
|
||||
UPDATE store_sku_act t1
|
||||
JOIN act_store_sku_map t2 ON t2.store_id = t1.store_id AND t2.sku_id = t1.sku_id AND t2.vendor_id = t1.vendor_id AND t2.act_id = ? AND t2.sync_status <> 0
|
||||
JOIN act_store_sku t3 ON t3.store_id = t1.store_id AND t3.sku_id = t1.sku_id AND t3.act_id = t2.act_id
|
||||
SET
|
||||
t1.act_percentage = IF(t2.sync_status & ? = 0 AND t3.deleted_at = ?, t3.price_percentage, 0),
|
||||
t1.sync_status = ?,
|
||||
t1.updated_at = NOW(),
|
||||
t1.last_operator = ?,
|
||||
t1.hint_act_id = t2.act_id
|
||||
WHERE t1.vendor_id = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
act.ID,
|
||||
model.SyncFlagDeletedMask, utils.DefaultTimeValue,
|
||||
model.SyncFlagModifiedMask,
|
||||
ctx.GetUserName(),
|
||||
act.VendorID,
|
||||
}
|
||||
_, err = dao.ExecuteSQL(dao.GetDB(), sql, sqlParams...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sql = `
|
||||
INSERT INTO store_sku_act(id, created_at, updated_at, last_operator, store_id, sku_id, vendor_id, act_percentage, sync_status, hint_act_id)
|
||||
SELECT 0, NOW(), NOW(), ?, t2.store_id, t2.sku_id, t2.vendor_id, t3.price_percentage, ?, t2.act_id
|
||||
FROM act_store_sku_map t2
|
||||
JOIN act_store_sku t3 ON t3.store_id = t2.store_id AND t3.sku_id = t2.sku_id AND t3.act_id = t2.act_id
|
||||
LEFT JOIN store_sku_act t1 ON t2.store_id = t1.store_id AND t2.sku_id = t1.sku_id AND t2.vendor_id = t1.vendor_id
|
||||
WHERE t2.vendor_id = ? AND t2.act_id = ? AND t2.sync_status <> 0 AND t1.id IS NULL
|
||||
`
|
||||
sqlParams = []interface{}{
|
||||
ctx.GetUserName(), model.SyncFlagModifiedMask,
|
||||
act.VendorID, act.ID,
|
||||
}
|
||||
_, err = dao.ExecuteSQL(dao.GetDB(), sql, sqlParams...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sql = `
|
||||
UPDATE act_store_sku_map t2
|
||||
SET
|
||||
t2.deleted_at = IF(t2.sync_status & ? = 0, t2.deleted_at, NOW()),
|
||||
t2.sync_status = 0
|
||||
WHERE t2.vendor_id = ? AND t2.act_id = ?
|
||||
`
|
||||
sqlParams = []interface{}{
|
||||
model.SyncFlagDeletedMask,
|
||||
act.VendorID, act.ID,
|
||||
}
|
||||
_, err = dao.ExecuteSQL(dao.GetDB(), sql, sqlParams...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sql = `
|
||||
UPDATE act_map t4
|
||||
SET
|
||||
t4.sync_status = 0
|
||||
WHERE t4.vendor_id = ? AND t4.act_id = ?
|
||||
`
|
||||
sqlParams = []interface{}{
|
||||
act.VendorID, act.ID,
|
||||
}
|
||||
_, err = dao.ExecuteSQL(dao.GetDB(), sql, sqlParams...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dao.Commit(db)
|
||||
return err
|
||||
}
|
||||
|
||||
func SyncSpecialAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||
db := dao.GetDB()
|
||||
err = SyncActStoreSku2StoreSkuAct(ctx, db, parentTask, act)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1010,7 +1010,7 @@ func createStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendor
|
||||
globals.SugarLogger.Debugf("createStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
||||
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
||||
db := dao.GetDB()
|
||||
storeSkuActList, err := dao.GetStoresSkusAct(db, []int{storeID}, skuIDs, []int{vendorID}, 1, 0)
|
||||
storeSkuActList, err := dao.GetStoresSkusAct(db, 0, []int{storeID}, skuIDs, []int{vendorID}, 1, 0)
|
||||
if err == nil {
|
||||
storeSkuList2, storeSkuActMap := parseStoreSkuActList(true, storeSkuList, storeSkuActList)
|
||||
if len(storeSkuList2) > 0 {
|
||||
@@ -1039,7 +1039,7 @@ func cancelStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendor
|
||||
globals.SugarLogger.Debugf("cancelStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
||||
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
||||
db := dao.GetDB()
|
||||
storeSkuActList, err := dao.GetStoresSkusAct(db, []int{storeID}, skuIDs, []int{vendorID}, 0, 0)
|
||||
storeSkuActList, err := dao.GetStoresSkusAct(db, 0, []int{storeID}, skuIDs, []int{vendorID}, 0, 0)
|
||||
if err == nil {
|
||||
storeSkuList2, storeSkuActMap := parseStoreSkuActList(false, storeSkuList, storeSkuActList)
|
||||
if len(storeSkuList2) > 0 {
|
||||
|
||||
Reference in New Issue
Block a user