Files
jx-callback/business/jxstore/cms/sync.go
2018-09-13 23:11:02 +08:00

104 lines
3.3 KiB
Go

package cms
import (
"errors"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
)
type VendorSync struct {
}
var (
ErrHaveNotImplementedYet = errors.New("还没有实现")
ErrEntityNotExist = errors.New("找不到相应实体")
)
func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) {
if db == nil {
db = dao.GetDB()
}
var cats []*model.SkuCategory
cond := make(map[string]interface{})
if categoryID > 0 {
cond[model.FieldID] = categoryID
}
if err = dao.GetEntities(db, &cats, cond, true); err == nil {
for _, cat := range cats {
if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { //删除
err = GetPurchaseHandler(model.VendorIDJD).DeleteCategory(cat, userName)
} else if (cat.JdSyncStatus&model.SyncFlagNewMask) != 0 || isForce { // 新增
err = GetPurchaseHandler(model.VendorIDJD).CreateCategory(cat, userName)
} else if (cat.JdSyncStatus & model.SyncFlagModifiedMask) != 0 { // 修改
err = GetPurchaseHandler(model.VendorIDJD).UpdateCategory(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) {
if db == nil {
db = dao.GetDB()
}
var storeMapList []*model.StoreMap
if err = dao.GetEntities(db, &storeMapList, utils.Params2Map(model.FieldStoreID, store.ID), true); err == nil {
copiedStore := *store
for _, storeMap := range storeMapList {
if (vendorID == -1 || vendorID == storeMap.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
}
func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, userName string) (err error) {
if db == nil {
db = dao.GetDB()
}
var skuList []*model.Sku
cond := make(map[string]interface{})
if nameID != -1 {
cond[model.FieldNameID] = nameID
}
if skuID != -1 {
cond[model.FieldID] = skuID
}
if err = dao.GetEntities(db, &skuList, cond, true); err == nil {
for _, sku := range skuList {
if (skuID == -1 || skuID == sku.ID) && (isForce || sku.JdSyncStatus != 0) {
if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
err = GetPurchaseHandler(model.VendorIDJD).CreateSku(sku, userName)
} else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 新增
err = GetPurchaseHandler(model.VendorIDJD).DeleteSku(sku, userName)
} else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改
err = GetPurchaseHandler(model.VendorIDJD).UpdateSku(sku, userName)
}
if err == nil {
sku.JdSyncStatus = 0
dao.UpdateEntity(db, sku, model.FieldJdSyncStatus)
}
}
}
}
return err
}
func (v *VendorSync) SyncStoreSku(db *dao.DaoDB, storeID, skuID int, isForce bool, userName string) (err error) {
return err
}