98 lines
3.2 KiB
Go
98 lines
3.2 KiB
Go
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
|
|
}
|