Files
jx-callback/business/jxstore/cms/cms.go
2018-09-11 11:38:31 +08:00

79 lines
2.3 KiB
Go

package cms
import (
"errors"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
)
type VendorSync struct {
}
var (
CurVendorSync VendorSync
)
var (
ErrHaveNotImplementedYet = errors.New("还没有实现")
ErrEntityNotExist = errors.New("找不到相应实体")
)
func GetPurchaseHandler(vendorID int) partner.IPurchasePlatformHandler {
return basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(vendorID)
}
func (v *VendorSync) SyncCategory(categoryID int, isForce bool, userName string) (err error) {
db := dao.GetDB()
cats := []*model.SkuCategory{}
cond := make(map[string]interface{})
if categoryID != 0 {
cond["ID"] = categoryID
}
err = dao.GetEntities(db, &cats, cond, true)
for _, cat := range cats {
if (cat.JdSyncStatus & model.SyncFlagNewMask) != 0 { // 新增
err = GetPurchaseHandler(model.VendorIDJD).CreateCategory(cat, userName)
} else if (cat.JdSyncStatus&model.SyncFlagModifiedMask) != 0 || isForce { // 修改
err = GetPurchaseHandler(model.VendorIDJD).UpdateCategory(cat, userName)
} else if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 {
err = GetPurchaseHandler(model.VendorIDJD).DeleteCategory(cat, userName)
}
if err == nil {
cat.JdSyncStatus = 0
_, err = dao.UpdateEntity(db, cat, model.FieldJdSyncStatus)
}
if err != nil {
break
}
}
return err
}
func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID int, store *model.Store, isForce bool, userName string) (err error) {
var (
storeMaps []*model.StoreMap
)
if db == nil {
db = dao.GetDB()
}
err = dao.GetEntities(db, &storeMaps, utils.Params2Map(model.FieldStoreID, store.ID), true)
if err == nil {
// globals.SugarLogger.Debug(utils.Format4Output(store, false))
copiedStore := *store
for _, storeMap := range storeMaps {
if (vendorID == -1 || storeMap.VendorID == vendorID) && (isForce || storeMap.SyncStatus != 0) {
copiedStore.Status = mergeStoreStatus(store.Status, storeMap.Status)
if err = GetPurchaseHandler(storeMap.VendorID).UpdateStore(storeMap.VendorStoreID, &copiedStore, userName); err == nil {
storeMap.SyncStatus = 0
dao.UpdateEntity(db, storeMap, model.FieldSyncStatus)
}
}
}
}
return err
}