package mtwm import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) func actOrderRules2Mtwm(actOrderRules []*model.ActOrderRule) (actDetails []*mtwmapi.FullDiscountActDetail) { for _, v := range actOrderRules { actDetails = append(actDetails, &mtwmapi.FullDiscountActDetail{ OriginalPrice: jxutils.IntPrice2Standard(v.SalePrice), ActPrice: jxutils.IntPrice2Standard(v.DeductPrice), }) } return actDetails } func storeSku2ActData(act *model.Act2, actStoreSku []*model.ActStoreSku2, handler func(int) bool) (actData []*mtwmapi.RetailDiscountActData) { for _, v := range actStoreSku { if handler == nil || handler(v.SyncStatus) { actData = append(actData, &mtwmapi.RetailDiscountActData{ AppFoodCode: utils.Int2Str(v.SkuID), // UserType: 0, StartTime: act.BeginAt.Unix(), EndTime: act.EndAt.Unix(), OrderLimit: act.LimitCount, DayLimit: act.LimitDaily, // Period: "", // WeeksTime: "", SettingType: mtwmapi.SettingTypeAsPrice, ActPrice: jxutils.IntPrice2Standard(v.ActPrice), // DiscountCoefficient: 0, Sequence: int(v.ActPrice), ItemID: utils.Str2Int64WithDefault(v.VendorActID, 0), }) } } return actData } func storeSku2ActData4Delete(actStoreSku []*model.ActStoreSku2, handler func(int) bool) (actIDList []string) { for _, v := range actStoreSku { if handler == nil || handler(v.SyncStatus) { if v.VendorActID != "" { actIDList = append(actIDList, v.VendorActID) } } } return actIDList } func isCreateOrUpdate(syncStatus int) bool { return model.IsSyncStatusNeedCreate(syncStatus) || model.IsSyncStatusNeedUpdate(syncStatus) } func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (err error) { actData := storeSku2ActData(act, actStoreSku, isCreateOrUpdate) if len(actData) > 0 { if globals.EnableMtwmStoreWrite { actResult, err2 := api.MtwmAPI.RetailDiscountBatchSave(vendorStoreID, actData) if err = err2; err != nil { return err } actResultMap := make(map[string]*mtwmapi.RetailDiscountActResult) for _, v := range actResult { actResultMap[v.AppFoodCode] = v } for _, v := range actStoreSku { if result := actResultMap[utils.Int2Str(v.SkuID)]; result != nil { v.VendorActID = utils.Int64ToStr(result.ActID) } } } else { for _, v := range actStoreSku { v.VendorActID = utils.Int64ToStr(jxutils.GenFakeID()) } } } return err } func cancelOneShopAct(ctx *jxcontext.Context, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (err error) { if list := storeSku2ActData4Delete(actStoreSku, model.IsSyncStatusNeedDelete); len(list) > 0 { err = api.MtwmAPI.RetailDiscountDelete(vendorStoreID, list) } return err } func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) { return nil }