- Store and StoreMap add DeletedAt.

This commit is contained in:
gazebo
2018-09-20 10:07:58 +08:00
parent f874c37d14
commit 9d88344ddb
14 changed files with 206 additions and 172 deletions

View File

@@ -111,7 +111,7 @@ func UpdatePlaces(places []map[string]interface{}, userName string) (num int64,
}
placeid := &model.Place{}
valid := dao.NormalMakeMapByFieldList(place, []string{"jdCode", "enabled", "mtpsPrice"}, userName)
if num, err = dao.UpdateEntityByKV(nil, placeid, valid, utils.Params2Map("Code", place["code"])); err != nil {
if num, err = dao.UpdateEntityLogically(nil, placeid, valid, userName, utils.Params2Map("Code", place["code"])); err != nil {
return num, err
}
}

View File

@@ -4,7 +4,6 @@ import (
"errors"
"strconv"
"strings"
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
@@ -29,7 +28,7 @@ func GetVendorCategories(vendorID int, parentID string) (vendorCats []*model.Sku
if parentID != "-1" {
cond[model.FieldParentID] = parentID
}
return vendorCats, dao.GetEntities(nil, &vendorCats, cond, false)
return vendorCats, dao.GetEntitiesByKV(nil, &vendorCats, cond, false)
}
// parentID 为-1表示所有
@@ -62,7 +61,7 @@ func UpdateCategory(categoryID int, payload map[string]interface{}, userName str
if len(valid) > 0 {
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
db := dao.GetDB()
if num, err = dao.UpdateEntityByKV(db, cat, valid, nil); err == nil {
if num, err = dao.UpdateEntityLogically(db, cat, valid, userName, nil); err == nil {
err = CurVendorSync.SyncCategory(db, categoryID, false, userName)
}
}
@@ -80,7 +79,7 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
parentCat = nil
}
if err == nil {
if err = dao.GetEntities(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
catsLen := len(cats)
if catsLen != len(categoryIDs) {
return ErrInputCatsDoesntMatch
@@ -132,7 +131,7 @@ func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, e
} else if countInfos[2].Ct != 0 {
return 0, errors.New("还有商品类别使用此类别,不能删除")
}
if num, err = dao.DeleteEntityLogically(db, cat, nil, userName, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask)); err == nil && num == 1 {
if num, err = dao.DeleteEntityLogically(db, cat, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask), userName, nil); err == nil && num == 1 {
err = CurVendorSync.SyncCategory(db, cat.ID, false, userName)
}
}
@@ -348,7 +347,7 @@ func AddSkuName(skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *m
return nil, err
}
if tmpInfo.TotalCount != 1 {
// return nil, ErrEntityNotExist
return nil, ErrEntityNotExist
}
outSkuNameExt = tmpInfo.SkuNames[0]
err = CurVendorSync.SyncSku(db, outSkuNameExt.SkuName.ID, -1, false, userName)
@@ -369,7 +368,7 @@ func UpdateSkuName(nameID int, payload map[string]interface{}, userName string)
panic(r)
}
}()
if num, err = dao.UpdateEntityByKV(db, skuName, valid, nil); err == nil && num == 1 {
if num, err = dao.UpdateEntityLogically(db, skuName, valid, userName, nil); err == nil && num == 1 {
if utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil {
if places, ok := payload["places"].([]interface{}); ok {
if _, err = dao.ExecuteSQL(db, "DELETE FROM sku_name_place_bind WHERE name_id = ?", nameID); err == nil {
@@ -390,12 +389,14 @@ func UpdateSkuName(nameID int, payload map[string]interface{}, userName string)
}
if err == nil {
sku := &model.Sku{}
_, err2 := dao.UpdateEntityByKV(db, sku, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagModifiedMask), utils.Params2Map(model.FieldNameID, skuName.ID))
_, err2 := dao.UpdateEntityLogically(db, sku, map[string]interface{}{
model.FieldJdSyncStatus: model.SyncFlagModifiedMask,
}, userName, map[string]interface{}{
model.FieldNameID: nameID,
})
if err = err2; err == nil {
if err = dao.GetEntity(db, skuName); err == nil {
dao.Commit(db)
err2 = CurVendorSync.SyncSku(db, skuName.ID, -1, false, userName)
}
dao.Commit(db)
err2 = CurVendorSync.SyncSku(db, nameID, -1, false, userName)
}
}
}
@@ -421,12 +422,12 @@ func DeleteSkuName(nameID int, userName string) (num int64, err error) {
skuName.ID = nameID
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
dummy := &model.Sku{}
num2, err2 := dao.UpdateEntityByKV(db, dummy, map[string]interface{}{
model.FieldDeletedAt: time.Now(),
model.FieldLastOperator: userName,
num2, err2 := dao.DeleteEntityLogically(db, dummy, map[string]interface{}{
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
"Status": model.SkuStatusDeleted,
}, utils.Params2Map(model.FieldNameID, skuName.ID))
model.FieldStatus: model.SkuStatusDeleted,
}, userName, map[string]interface{}{
model.FieldNameID: nameID,
})
if err2 == nil {
dao.Commit(db)
if num2 > 0 {
@@ -466,7 +467,7 @@ func UpdateSku(skuID int, payload map[string]interface{}, userName string) (num
if len(valid) > 0 {
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
db := dao.GetDB()
if num, err = dao.UpdateEntityByKV(db, sku, valid, nil); err == nil {
if num, err = dao.UpdateEntityLogically(db, sku, valid, userName, nil); err == nil {
if num == 1 {
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
} else {
@@ -481,7 +482,10 @@ func DeleteSku(skuID int, userName string) (num int64, err error) {
db := dao.GetDB()
sku := &model.Sku{}
sku.ID = skuID
if num, err = dao.DeleteEntityLogically(db, sku, nil, userName, nil); err == nil {
if num, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
model.FieldStatus: model.SkuStatusDeleted,
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
}, userName, nil); err == nil {
if num == 1 {
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
} else {

View File

@@ -38,12 +38,12 @@ func GetStores(keyword string, params map[string]interface{}, offset, pageSize i
FROM store t1
LEFT JOIN place city ON t1.city_code = city.code AND city.level = 2
LEFT JOIN place district ON t1.district_code = district.code AND district.level = 3
LEFT JOIN store_map jdm ON t1.id = jdm.store_id AND jdm.vendor_id = 0
LEFT JOIN store_map elmm ON t1.id = elmm.store_id AND elmm.vendor_id = 2
LEFT JOIN store_map ebaim ON t1.id = ebaim.store_id AND ebaim.vendor_id = 3
LEFT JOIN store_map jdm ON t1.id = jdm.store_id AND jdm.vendor_id = 0 AND jdm.deleted_at = '1970-01-01 00:00:00'
LEFT JOIN store_map elmm ON t1.id = elmm.store_id AND elmm.vendor_id = 2 AND elmm.deleted_at = '1970-01-01 00:00:00'
LEFT JOIN store_map ebaim ON t1.id = ebaim.store_id AND ebaim.vendor_id = 3 AND ebaim.deleted_at = '1970-01-01 00:00:00'
`
sqlWhere := `
WHERE
WHERE t1.deleted_at = '1970-01-01 00:00:00'
`
sqlParams := make([]interface{}, 0)
if keyword != "" {
@@ -89,17 +89,7 @@ func GetStores(keyword string, params map[string]interface{}, offset, pageSize i
sqlParams = append(sqlParams, "%"+params["tel"].(string)+"%")
sqlParams = append(sqlParams, "%"+params["tel"].(string)+"%")
}
// if params["cardCond"] != nil {
// cardCond := params["cardCond"].(int)
// if cardCond == -1 || cardCond == 1 {
// sqlFrom += "\nLEFT JOIN bill_info ON t1.store_id = bill_info.jx_store_id\n"
// if cardCond == -1 {
// sqlWhere += " AND bill_info.id IS NULL"
// } else {
// sqlWhere += " AND bill_info.id IS NOT NULL"
// }
// }
// }
if params["fromStatus"] != nil {
fromStatus := params["fromStatus"].(int)
toStatus := fromStatus
@@ -196,21 +186,34 @@ func UpdateStore(storeID int, payload map[string]interface{}, userName string) (
}
if len(valid) > 0 {
db := dao.GetDB()
if num, err = dao.UpdateEntityByKV(db, store, valid, nil); err == nil && num == 1 {
dummy := &model.StoreMap{}
_, err2 := dao.UpdateEntityByKV(db, dummy, utils.Params2Map(model.FieldSyncStatus, model.SyncFlagModifiedMask), utils.Params2Map(model.FieldStoreID, store.ID))
if err = err2; err == nil {
if err = dao.GetEntity(db, store); err == nil {
err = CurVendorSync.SyncStore(db, -1, store, false, userName)
}
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
if num, err = dao.UpdateEntityLogically(db, store, valid, userName, nil); err == nil && num == 1 {
dummy := &model.StoreMap{}
_, err2 := dao.UpdateEntityLogically(db, dummy, map[string]interface{}{
model.FieldSyncStatus: model.SyncFlagModifiedMask,
}, userName, map[string]interface{}{
model.FieldStoreID: store.ID,
})
if err = err2; err == nil {
dao.Commit(db)
err = CurVendorSync.SyncStore(db, -1, store.ID, false, userName)
}
}
if err != nil {
dao.Rollback(db)
}
}
return num, err
}
func CreateStore(store *model.Store, userName string) (id int, err error) {
dao.WrapAddIDCULEntity(store, userName)
dao.WrapAddIDCULDEntity(store, userName)
if err = dao.CreateEntity(nil, store); err == nil {
return store.ID, err
}
@@ -224,14 +227,14 @@ func GetStoreVendorMaps(db *dao.DaoDB, storeID int, vendorID int) (storeMaps []*
if vendorID != -1 {
cond[model.FieldVendorID] = vendorID
}
return storeMaps, dao.GetEntities(db, &storeMaps, cond, false)
return storeMaps, dao.GetEntitiesByKV(db, &storeMaps, cond, false)
}
func AddStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, storeMap *model.StoreMap, userName string) (outStoreMap *model.StoreMap, err error) {
if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil {
store, err := handler.ReadStore(storeMap.VendorStoreID)
if err == nil {
dao.WrapAddIDCULEntity(storeMap, userName)
dao.WrapAddIDCULDEntity(storeMap, userName)
storeMap.StoreID = storeID
storeMap.VendorID = vendorID
storeMap.DeliveryType = store.DeliveryType
@@ -248,12 +251,9 @@ func AddStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, storeMap *model.Sto
}
}()
if err = dao.CreateEntity(db, storeMap); err == nil {
store.ID = storeID
if err = dao.GetEntity(db, store); err == nil {
dao.Commit(db)
outStoreMap = storeMap
err = CurVendorSync.SyncStore(db, storeMap.VendorID, store, true, userName)
}
dao.Commit(db)
outStoreMap = storeMap
err = CurVendorSync.SyncStore(db, storeMap.VendorID, storeID, true, userName)
}
if err != nil {
dao.Rollback(db)
@@ -266,11 +266,17 @@ func AddStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, storeMap *model.Sto
}
func DeleteStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) {
storeMap := &model.StoreMap{
StoreID: storeID,
VendorID: vendorID,
storeMap := &model.StoreMap{}
if num, err = dao.DeleteEntityLogically(db, storeMap, map[string]interface{}{
model.FieldSyncStatus: model.SyncFlagDeletedMask,
model.FieldStatus: model.StoreStatusDisabled,
}, userName, map[string]interface{}{
model.FieldStoreID: storeID,
model.FieldVendorID: vendorID,
}); err == nil && num > 0 {
err = CurVendorSync.SyncStore(db, vendorID, storeID, true, userName)
}
return dao.DeleteEntity(db, storeMap, model.FieldStoreID, model.FieldVendorID)
return num, err
}
func UpdateStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, payload map[string]interface{}, userName string) (num int64, err error) {
@@ -294,16 +300,19 @@ func UpdateStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, payload map[stri
if valid["status"] != nil { // 对于store vendor map只有Status改变才需要同步到厂商
valid[model.FieldSyncStatus] = model.SyncFlagModifiedMask
}
if num, err = dao.UpdateEntityByKV(db, dummyStoreMap, valid, utils.Params2Map(model.FieldStoreID, storeID, model.FieldVendorID, vendorID)); err == nil {
if num, err = dao.UpdateEntityLogically(db, dummyStoreMap, valid, userName, map[string]interface{}{
model.FieldStoreID: storeID,
model.FieldVendorID: vendorID,
}); err == nil && num > 0 {
if valid["status"] != nil {
store := &model.Store{}
store.ID = storeID
if err = dao.GetEntity(db, store); err == nil {
err = CurVendorSync.SyncStore(db, vendorID, store, false, userName)
}
err = CurVendorSync.SyncStore(db, vendorID, storeID, false, userName)
}
}
}
}
return num, err
}
func DeleteStore(db *dao.DaoDB, storeID int, userName string) (num int64, err error) {
return 0, err
}

View File

@@ -296,12 +296,12 @@ func UpdateStoreSku(storeID int, skuBindInfo *StoreSkuBindInfo, userName string)
if ok {
if v.IsFocus == -1 {
delNum++
_, err = dao.DeleteEntityLogically(db, skuBind, nil, userName, map[string]interface{}{
_, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
model.FieldStatus: model.StoreSkuBindStatusDeleted,
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
})
}, userName, nil)
} else {
// todo 如果修改ebai与elm ID怎么处理呢
if v.IsFocus == 1 {

View File

@@ -3,7 +3,6 @@ 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/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model"
@@ -54,7 +53,7 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u
if categoryID > 0 {
cond[model.FieldID] = categoryID
}
if err = dao.GetEntities(db, &cats, cond, true); err == nil {
if err = dao.GetEntitiesByKV(db, &cats, cond, true); err == nil {
tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
cat := batchItemList[0].(*model.SkuCategory)
if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { //删除
@@ -76,17 +75,16 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u
return err
}
func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID int, store *model.Store, isForce bool, userName string) (err error) {
globals.SugarLogger.Debugf("SyncStore, store:%s", utils.Format4Output(store, true))
func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce bool, userName string) (err error) {
globals.SugarLogger.Debugf("SyncStore, storeID:%d", storeID)
if db == nil {
db = dao.GetDB()
}
err = v.LoopStoreMap(db, store.ID, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
err = v.LoopStoreMap(db, storeID, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
storeMap := batchItemList[0].(*model.StoreMap)
globals.SugarLogger.Debugf("SyncStore, storeMap:%s", utils.Format4Output(store, true))
if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) {
if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil {
if err = handler.UpdateStore(store.ID, userName); err == nil {
if err = handler.UpdateStore(storeID, userName); err == nil {
storeMap.SyncStatus = 0
_, err = dao.UpdateEntity(db, storeMap, model.FieldSyncStatus)
}
@@ -116,7 +114,7 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
if skuID != -1 {
cond[model.FieldID] = skuID
}
if err = dao.GetEntities(db, &skuList, cond, true); err == nil {
if err = dao.GetEntitiesByKV(db, &skuList, cond, true); err == nil {
tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
sku := batchItemList[0].(*model.Sku)
if (skuID == -1 || skuID == sku.ID) && (isForce || sku.JdSyncStatus != 0) {