京东活动即使创建失败,也记录平台活动ID
删除活动商品时,如果之前是同步失败状态,不调用SyncAct
This commit is contained in:
@@ -613,7 +613,7 @@ func GetActStoreSkuInfo(ctx *jxcontext.Context, actID int, vendorIDs []int, keyw
|
|||||||
|
|
||||||
func CancelAct(ctx *jxcontext.Context, actID int) (err error) {
|
func CancelAct(ctx *jxcontext.Context, actID int) (err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if err = DeleteActStoreSkuBind(ctx, db, actID, nil); err != nil {
|
if _, err = DeleteActStoreSkuBind(ctx, db, actID, nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = SyncAct(ctx, nil, actID, nil, false)
|
_, err = SyncAct(ctx, nil, actID, nil, false)
|
||||||
@@ -621,22 +621,26 @@ func CancelAct(ctx *jxcontext.Context, actID int) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// actStoreSkuParam为空,不会删除act_store_sku,但会删除act_store_sku_map
|
// actStoreSkuParam为空,不会删除act_store_sku,但会删除act_store_sku_map
|
||||||
func DeleteActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actStoreSkuParam []*ActStoreSkuParam) (err error) {
|
func DeleteActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actStoreSkuParam []*ActStoreSkuParam) (originSyncStatus int8, err error) {
|
||||||
actMap, err := dao.GetActVendorInfo(db, actID, nil)
|
actMap, err := dao.GetActVendorInfo(db, actID, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return 0, err
|
||||||
}
|
}
|
||||||
if len(actMap) == 0 {
|
if len(actMap) == 0 {
|
||||||
return fmt.Errorf("找不到活动:%d,或已被取消", actID)
|
return 0, fmt.Errorf("找不到活动:%d,或已被取消", actID)
|
||||||
|
}
|
||||||
|
if actMap[0].Status != model.ActStatusCreated {
|
||||||
|
// 如果不是正常状态直接跳过
|
||||||
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
actStoreSkuMap, err := dao.GetActStoreSkuVendorInfo(db, actID, nil, nil, nil)
|
actStoreSkuMap, err := dao.GetActStoreSkuVendorInfo(db, actID, nil, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return 0, err
|
||||||
}
|
}
|
||||||
act := actMap[partner.GetVendorIDsFromActMap(actMap)[0]]
|
act := actMap[partner.GetVendorIDsFromActMap(actMap)[0]]
|
||||||
if act.Status != model.ActStatusCreated || time.Now().Sub(act.EndAt) > 0 {
|
if act.Status != model.ActStatusCreated || time.Now().Sub(act.EndAt) > 0 {
|
||||||
return fmt.Errorf("当前活动状态:%s,不能进行此操作,或已过期", model.ActStatusName[act.Status])
|
return 0, fmt.Errorf("当前活动状态:%s,不能进行此操作,或已过期", model.ActStatusName[act.Status])
|
||||||
}
|
}
|
||||||
|
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
@@ -657,12 +661,13 @@ func DeleteActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, act
|
|||||||
model.FieldStoreID: v.StoreID,
|
model.FieldStoreID: v.StoreID,
|
||||||
model.FieldSkuID: v.SkuID,
|
model.FieldSkuID: v.SkuID,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return 0, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
isNeedCancelAct := true
|
isNeedCancelAct := true
|
||||||
for vendorID, act := range actMap {
|
for vendorID, act := range actMap {
|
||||||
|
originSyncStatus |= act.SyncStatus
|
||||||
isDeleteAll := true
|
isDeleteAll := true
|
||||||
isDeleteAtLeastOne := false
|
isDeleteAtLeastOne := false
|
||||||
if actStoreSkuParam != nil {
|
if actStoreSkuParam != nil {
|
||||||
@@ -684,7 +689,7 @@ func DeleteActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, act
|
|||||||
}, ctx.GetUserName(), nil)
|
}, ctx.GetUserName(), nil)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return 0, err
|
||||||
}
|
}
|
||||||
isDeleteAtLeastOne = true
|
isDeleteAtLeastOne = true
|
||||||
} else {
|
} else {
|
||||||
@@ -708,7 +713,7 @@ func DeleteActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, act
|
|||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
model.FieldSyncStatus: syncStatus,
|
model.FieldSyncStatus: syncStatus,
|
||||||
}, ctx.GetUserName(), nil); err != nil {
|
}, ctx.GetUserName(), nil); err != nil {
|
||||||
return err
|
return 0, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -724,11 +729,11 @@ func DeleteActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, act
|
|||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
model.FieldStatus: model.ActStatusCanceled,
|
model.FieldStatus: model.ActStatusCanceled,
|
||||||
}, ctx.GetUserName(), nil); err != nil {
|
}, ctx.GetUserName(), nil); err != nil {
|
||||||
return err
|
return 0, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
return err
|
return originSyncStatus, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo 当前逻辑要求传入活动的全部SKU信息(以便低层做一些判断,比如全部删除时要取消,所以暂时删除storeIDs与skuIDs这两个参数
|
// todo 当前逻辑要求传入活动的全部SKU信息(以便低层做一些判断,比如全部删除时要取消,所以暂时删除storeIDs与skuIDs这两个参数
|
||||||
@@ -914,7 +919,8 @@ func DeleteSkusFromAct(ctx *jxcontext.Context, vendorID int, skuIDs []int, isAsy
|
|||||||
}
|
}
|
||||||
if len(deleteList) > 0 {
|
if len(deleteList) > 0 {
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(deleteList, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(deleteList, false))
|
||||||
if err = DeleteActStoreSkuBind(ctx, db, actID, deleteList); err == nil {
|
originSyncStatus, err2 := DeleteActStoreSkuBind(ctx, db, actID, deleteList)
|
||||||
|
if err = err2; err == nil && originSyncStatus == 0 {
|
||||||
if _, err = SyncAct(ctx, task, actID, nil, false); err == nil {
|
if _, err = SyncAct(ctx, task, actID, nil, false); err == nil {
|
||||||
retVal = deleteList
|
retVal = deleteList
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ func TestCancelAct(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteActStoreBind(t *testing.T) {
|
func TestDeleteActStoreBind(t *testing.T) {
|
||||||
err := DeleteActStoreSkuBind(jxcontext.AdminCtx, dao.GetDB(), 1, []*ActStoreSkuParam{
|
_, err := DeleteActStoreSkuBind(jxcontext.AdminCtx, dao.GetDB(), 1, []*ActStoreSkuParam{
|
||||||
// &ActStoreSkuParam{
|
// &ActStoreSkuParam{
|
||||||
// ActStoreSku: model.ActStoreSku{
|
// ActStoreSku: model.ActStoreSku{
|
||||||
// StoreID: 100119,
|
// StoreID: 100119,
|
||||||
|
|||||||
@@ -242,6 +242,7 @@ func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
db := dao.GetDB()
|
||||||
err = func() (err error) {
|
err = func() (err error) {
|
||||||
if model.IsSyncStatusDelete(act.SyncStatus) {
|
if model.IsSyncStatusDelete(act.SyncStatus) {
|
||||||
for vendorActID := range vendorActInfoMap {
|
for vendorActID := range vendorActInfoMap {
|
||||||
@@ -257,6 +258,10 @@ func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITa
|
|||||||
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagModifiedMask))
|
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagModifiedMask))
|
||||||
} else if model.IsSyncStatusNew(act.SyncStatus) {
|
} else if model.IsSyncStatusNew(act.SyncStatus) {
|
||||||
if act.VendorActID, err = createSkuAct(ctx, act, actStoreSkuList4Create); err != nil {
|
if act.VendorActID, err = createSkuAct(ctx, act, actStoreSkuList4Create); err != nil {
|
||||||
|
if act.VendorActID != "" {
|
||||||
|
actMap := partner.Act2ActMap(act)
|
||||||
|
dao.UpdateEntity(db, actMap, "VendorActID")
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
updateItems = append(updateItems, partner.ActStoreSku2Update(actStoreSkuList4Create, model.SyncFlagNewMask)...)
|
updateItems = append(updateItems, partner.ActStoreSku2Update(actStoreSkuList4Create, model.SyncFlagNewMask)...)
|
||||||
@@ -289,7 +294,6 @@ func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITa
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}()
|
}()
|
||||||
db := dao.GetDB()
|
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(updateItems, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(updateItems, false))
|
||||||
_, err2 := dao.BatchUpdateEntityByKV(db, updateItems)
|
_, err2 := dao.BatchUpdateEntityByKV(db, updateItems)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ func (c *ActController) UpdateActStoreSkuBind() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(actStoreSkuDeleteList) > 0 {
|
if len(actStoreSkuDeleteList) > 0 {
|
||||||
if err = act.DeleteActStoreSkuBind(params.Ctx, db, params.ActID, actStoreSkuDeleteList); err != nil {
|
if _, err = act.DeleteActStoreSkuBind(params.Ctx, db, params.ActID, actStoreSkuDeleteList); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user