- Store and StoreMap add DeletedAt.
This commit is contained in:
@@ -111,7 +111,7 @@ func UpdatePlaces(places []map[string]interface{}, userName string) (num int64,
|
|||||||
}
|
}
|
||||||
placeid := &model.Place{}
|
placeid := &model.Place{}
|
||||||
valid := dao.NormalMakeMapByFieldList(place, []string{"jdCode", "enabled", "mtpsPrice"}, userName)
|
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
|
return num, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
@@ -29,7 +28,7 @@ func GetVendorCategories(vendorID int, parentID string) (vendorCats []*model.Sku
|
|||||||
if parentID != "-1" {
|
if parentID != "-1" {
|
||||||
cond[model.FieldParentID] = parentID
|
cond[model.FieldParentID] = parentID
|
||||||
}
|
}
|
||||||
return vendorCats, dao.GetEntities(nil, &vendorCats, cond, false)
|
return vendorCats, dao.GetEntitiesByKV(nil, &vendorCats, cond, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// parentID 为-1表示所有
|
// parentID 为-1表示所有
|
||||||
@@ -62,7 +61,7 @@ func UpdateCategory(categoryID int, payload map[string]interface{}, userName str
|
|||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
|
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
|
||||||
db := dao.GetDB()
|
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)
|
err = CurVendorSync.SyncCategory(db, categoryID, false, userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,7 +79,7 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
|
|||||||
parentCat = nil
|
parentCat = nil
|
||||||
}
|
}
|
||||||
if err == 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)
|
catsLen := len(cats)
|
||||||
if catsLen != len(categoryIDs) {
|
if catsLen != len(categoryIDs) {
|
||||||
return ErrInputCatsDoesntMatch
|
return ErrInputCatsDoesntMatch
|
||||||
@@ -132,7 +131,7 @@ func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, e
|
|||||||
} else if countInfos[2].Ct != 0 {
|
} else if countInfos[2].Ct != 0 {
|
||||||
return 0, errors.New("还有商品类别使用此类别,不能删除")
|
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)
|
err = CurVendorSync.SyncCategory(db, cat.ID, false, userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -348,7 +347,7 @@ func AddSkuName(skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *m
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if tmpInfo.TotalCount != 1 {
|
if tmpInfo.TotalCount != 1 {
|
||||||
// return nil, ErrEntityNotExist
|
return nil, ErrEntityNotExist
|
||||||
}
|
}
|
||||||
outSkuNameExt = tmpInfo.SkuNames[0]
|
outSkuNameExt = tmpInfo.SkuNames[0]
|
||||||
err = CurVendorSync.SyncSku(db, outSkuNameExt.SkuName.ID, -1, false, userName)
|
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)
|
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 utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil {
|
||||||
if places, ok := payload["places"].([]interface{}); ok {
|
if places, ok := payload["places"].([]interface{}); ok {
|
||||||
if _, err = dao.ExecuteSQL(db, "DELETE FROM sku_name_place_bind WHERE name_id = ?", nameID); err == nil {
|
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 {
|
if err == nil {
|
||||||
sku := &model.Sku{}
|
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 = err2; err == nil {
|
||||||
if err = dao.GetEntity(db, skuName); err == nil {
|
dao.Commit(db)
|
||||||
dao.Commit(db)
|
err2 = CurVendorSync.SyncSku(db, nameID, -1, false, userName)
|
||||||
err2 = CurVendorSync.SyncSku(db, skuName.ID, -1, false, userName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -421,12 +422,12 @@ func DeleteSkuName(nameID int, userName string) (num int64, err error) {
|
|||||||
skuName.ID = nameID
|
skuName.ID = nameID
|
||||||
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
|
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
|
||||||
dummy := &model.Sku{}
|
dummy := &model.Sku{}
|
||||||
num2, err2 := dao.UpdateEntityByKV(db, dummy, map[string]interface{}{
|
num2, err2 := dao.DeleteEntityLogically(db, dummy, map[string]interface{}{
|
||||||
model.FieldDeletedAt: time.Now(),
|
|
||||||
model.FieldLastOperator: userName,
|
|
||||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||||
"Status": model.SkuStatusDeleted,
|
model.FieldStatus: model.SkuStatusDeleted,
|
||||||
}, utils.Params2Map(model.FieldNameID, skuName.ID))
|
}, userName, map[string]interface{}{
|
||||||
|
model.FieldNameID: nameID,
|
||||||
|
})
|
||||||
if err2 == nil {
|
if err2 == nil {
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
if num2 > 0 {
|
if num2 > 0 {
|
||||||
@@ -466,7 +467,7 @@ func UpdateSku(skuID int, payload map[string]interface{}, userName string) (num
|
|||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
|
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
|
||||||
db := dao.GetDB()
|
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 {
|
if num == 1 {
|
||||||
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
|
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
|
||||||
} else {
|
} else {
|
||||||
@@ -481,7 +482,10 @@ func DeleteSku(skuID int, userName string) (num int64, err error) {
|
|||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
sku := &model.Sku{}
|
sku := &model.Sku{}
|
||||||
sku.ID = skuID
|
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 {
|
if num == 1 {
|
||||||
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
|
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -38,12 +38,12 @@ func GetStores(keyword string, params map[string]interface{}, offset, pageSize i
|
|||||||
FROM store t1
|
FROM store t1
|
||||||
LEFT JOIN place city ON t1.city_code = city.code AND city.level = 2
|
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 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 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
|
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
|
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 := `
|
sqlWhere := `
|
||||||
WHERE
|
WHERE t1.deleted_at = '1970-01-01 00:00:00'
|
||||||
`
|
`
|
||||||
sqlParams := make([]interface{}, 0)
|
sqlParams := make([]interface{}, 0)
|
||||||
if keyword != "" {
|
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)+"%")
|
||||||
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 {
|
if params["fromStatus"] != nil {
|
||||||
fromStatus := params["fromStatus"].(int)
|
fromStatus := params["fromStatus"].(int)
|
||||||
toStatus := fromStatus
|
toStatus := fromStatus
|
||||||
@@ -196,21 +186,34 @@ func UpdateStore(storeID int, payload map[string]interface{}, userName string) (
|
|||||||
}
|
}
|
||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if num, err = dao.UpdateEntityByKV(db, store, valid, nil); err == nil && num == 1 {
|
dao.Begin(db)
|
||||||
dummy := &model.StoreMap{}
|
defer func() {
|
||||||
_, err2 := dao.UpdateEntityByKV(db, dummy, utils.Params2Map(model.FieldSyncStatus, model.SyncFlagModifiedMask), utils.Params2Map(model.FieldStoreID, store.ID))
|
if r := recover(); r != nil {
|
||||||
if err = err2; err == nil {
|
dao.Rollback(db)
|
||||||
if err = dao.GetEntity(db, store); err == nil {
|
panic(r)
|
||||||
err = CurVendorSync.SyncStore(db, -1, store, false, userName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}()
|
||||||
|
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
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateStore(store *model.Store, userName string) (id int, err error) {
|
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 {
|
if err = dao.CreateEntity(nil, store); err == nil {
|
||||||
return store.ID, err
|
return store.ID, err
|
||||||
}
|
}
|
||||||
@@ -224,14 +227,14 @@ func GetStoreVendorMaps(db *dao.DaoDB, storeID int, vendorID int) (storeMaps []*
|
|||||||
if vendorID != -1 {
|
if vendorID != -1 {
|
||||||
cond[model.FieldVendorID] = vendorID
|
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) {
|
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 {
|
if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil {
|
||||||
store, err := handler.ReadStore(storeMap.VendorStoreID)
|
store, err := handler.ReadStore(storeMap.VendorStoreID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dao.WrapAddIDCULEntity(storeMap, userName)
|
dao.WrapAddIDCULDEntity(storeMap, userName)
|
||||||
storeMap.StoreID = storeID
|
storeMap.StoreID = storeID
|
||||||
storeMap.VendorID = vendorID
|
storeMap.VendorID = vendorID
|
||||||
storeMap.DeliveryType = store.DeliveryType
|
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 {
|
if err = dao.CreateEntity(db, storeMap); err == nil {
|
||||||
store.ID = storeID
|
dao.Commit(db)
|
||||||
if err = dao.GetEntity(db, store); err == nil {
|
outStoreMap = storeMap
|
||||||
dao.Commit(db)
|
err = CurVendorSync.SyncStore(db, storeMap.VendorID, storeID, true, userName)
|
||||||
outStoreMap = storeMap
|
|
||||||
err = CurVendorSync.SyncStore(db, storeMap.VendorID, store, true, userName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dao.Rollback(db)
|
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) {
|
func DeleteStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) {
|
||||||
storeMap := &model.StoreMap{
|
storeMap := &model.StoreMap{}
|
||||||
StoreID: storeID,
|
if num, err = dao.DeleteEntityLogically(db, storeMap, map[string]interface{}{
|
||||||
VendorID: vendorID,
|
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) {
|
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改变才需要同步到厂商
|
if valid["status"] != nil { // 对于store vendor map,只有Status改变才需要同步到厂商
|
||||||
valid[model.FieldSyncStatus] = model.SyncFlagModifiedMask
|
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 {
|
if valid["status"] != nil {
|
||||||
store := &model.Store{}
|
err = CurVendorSync.SyncStore(db, vendorID, storeID, false, userName)
|
||||||
store.ID = storeID
|
|
||||||
if err = dao.GetEntity(db, store); err == nil {
|
|
||||||
err = CurVendorSync.SyncStore(db, vendorID, store, false, userName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteStore(db *dao.DaoDB, storeID int, userName string) (num int64, err error) {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -296,12 +296,12 @@ func UpdateStoreSku(storeID int, skuBindInfo *StoreSkuBindInfo, userName string)
|
|||||||
if ok {
|
if ok {
|
||||||
if v.IsFocus == -1 {
|
if v.IsFocus == -1 {
|
||||||
delNum++
|
delNum++
|
||||||
_, err = dao.DeleteEntityLogically(db, skuBind, nil, userName, map[string]interface{}{
|
_, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
|
||||||
model.FieldStatus: model.StoreSkuBindStatusDeleted,
|
model.FieldStatus: model.StoreSkuBindStatusDeleted,
|
||||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||||
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
|
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
|
||||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||||
})
|
}, userName, nil)
|
||||||
} else {
|
} else {
|
||||||
// todo 如果修改ebai与elm ID怎么处理呢?
|
// todo 如果修改ebai与elm ID怎么处理呢?
|
||||||
if v.IsFocus == 1 {
|
if v.IsFocus == 1 {
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package cms
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
"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/jxutils/tasksch"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"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 {
|
if categoryID > 0 {
|
||||||
cond[model.FieldID] = categoryID
|
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) {
|
tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
cat := batchItemList[0].(*model.SkuCategory)
|
cat := batchItemList[0].(*model.SkuCategory)
|
||||||
if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { //删除
|
if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { //删除
|
||||||
@@ -76,17 +75,16 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID int, store *model.Store, isForce bool, userName string) (err error) {
|
func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce bool, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("SyncStore, store:%s", utils.Format4Output(store, true))
|
globals.SugarLogger.Debugf("SyncStore, storeID:%d", storeID)
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = dao.GetDB()
|
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)
|
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 (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) {
|
||||||
if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil {
|
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
|
storeMap.SyncStatus = 0
|
||||||
_, err = dao.UpdateEntity(db, storeMap, model.FieldSyncStatus)
|
_, 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 {
|
if skuID != -1 {
|
||||||
cond[model.FieldID] = skuID
|
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) {
|
tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
sku := batchItemList[0].(*model.Sku)
|
sku := batchItemList[0].(*model.Sku)
|
||||||
if (skuID == -1 || skuID == sku.ID) && (isForce || sku.JdSyncStatus != 0) {
|
if (skuID == -1 || skuID == sku.ID) && (isForce || sku.JdSyncStatus != 0) {
|
||||||
|
|||||||
@@ -48,13 +48,13 @@ func Init(objCreator func(objHint string) interface{}, interfaceTypes ...interfa
|
|||||||
func (m *DurableTaskMan) LoadPendingTask() (err error) {
|
func (m *DurableTaskMan) LoadPendingTask() (err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
tasks := make([]*model.DurableTask, 0)
|
tasks := make([]*model.DurableTask, 0)
|
||||||
if err = dao.GetEntities(db, &tasks, utils.Params2Map(model.FieldStatus, 0), true); err == nil {
|
if err = dao.GetEntitiesByKV(db, &tasks, utils.Params2Map(model.FieldStatus, 0), true); err == nil {
|
||||||
for _, task := range tasks {
|
for _, task := range tasks {
|
||||||
dTask := &DurableTask{
|
dTask := &DurableTask{
|
||||||
data: task,
|
data: task,
|
||||||
}
|
}
|
||||||
m.tasks[task.TaskID] = dTask
|
m.tasks[task.TaskID] = dTask
|
||||||
return dao.GetEntities(db, &dTask.items, utils.Params2Map(model.FieldStatus, 0), true)
|
return dao.GetEntitiesByKV(db, &dTask.items, utils.Params2Map(model.FieldStatus, 0), true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -3,11 +3,8 @@ package dao
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"reflect"
|
"reflect"
|
||||||
"time"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -54,7 +51,6 @@ type DaoDB struct {
|
|||||||
// }
|
// }
|
||||||
// return err
|
// return err
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// beego orm的对于传代表字段的字串,数据库字段名(完全匹配,区分大小写),结构体字段名(不区分大小写)都可以
|
// beego orm的对于传代表字段的字串,数据库字段名(完全匹配,区分大小写),结构体字段名(不区分大小写)都可以
|
||||||
|
|
||||||
func GetDB() *DaoDB {
|
func GetDB() *DaoDB {
|
||||||
@@ -115,31 +111,6 @@ func GetEntity(db *DaoDB, item interface{}, cols ...string) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEntities(db *DaoDB, item interface{}, conditions map[string]interface{}, isIncludeDeleted bool) (err error) {
|
|
||||||
if db == nil {
|
|
||||||
db = GetDB()
|
|
||||||
}
|
|
||||||
err = utils.CallFuncLogError(func() error {
|
|
||||||
typeInfo := reflect.TypeOf(item).Elem().Elem()
|
|
||||||
if typeInfo.Kind() == reflect.Ptr {
|
|
||||||
typeInfo = typeInfo.Elem()
|
|
||||||
}
|
|
||||||
qs := db.db.QueryTable(reflect.New(typeInfo).Interface())
|
|
||||||
for k, v := range conditions {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
qs = qs.Limit(-1)
|
|
||||||
if !isIncludeDeleted {
|
|
||||||
if _, ok := typeInfo.FieldByName(model.FieldDeletedAt); ok {
|
|
||||||
qs = qs.Filter(model.FieldDeletedAt, utils.DefaultTimeValue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err = qs.All(item)
|
|
||||||
return err
|
|
||||||
}, reflect.TypeOf(item).Name())
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateEntity(db *DaoDB, item interface{}, cols ...string) (num int64, err error) {
|
func UpdateEntity(db *DaoDB, item interface{}, cols ...string) (num int64, err error) {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = GetDB()
|
db = GetDB()
|
||||||
@@ -151,25 +122,6 @@ func UpdateEntity(db *DaoDB, item interface{}, cols ...string) (num int64, err e
|
|||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateEntityByKV(db *DaoDB, item interface{}, kvs map[string]interface{}, conditions map[string]interface{}) (num int64, err error) {
|
|
||||||
if db == nil {
|
|
||||||
db = GetDB()
|
|
||||||
}
|
|
||||||
err = utils.CallFuncLogError(func() error {
|
|
||||||
qs := db.db.QueryTable(item)
|
|
||||||
if conditions == nil {
|
|
||||||
qs = qs.Filter(model.FieldID, jxutils.GetObjFieldByName(item, model.FieldID))
|
|
||||||
} else {
|
|
||||||
for k, v := range conditions {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
num, err = qs.Update(kvs)
|
|
||||||
return err
|
|
||||||
}, reflect.TypeOf(item).Name())
|
|
||||||
return num, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func CreateEntity(db *DaoDB, item interface{}) (err error) {
|
func CreateEntity(db *DaoDB, item interface{}) (err error) {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = GetDB()
|
db = GetDB()
|
||||||
@@ -192,31 +144,6 @@ func DeleteEntity(db *DaoDB, item interface{}, cols ...string) (num int64, err e
|
|||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteEntityLogically(db *DaoDB, item interface{}, conditions map[string]interface{}, logicDeletedBy string, kvs map[string]interface{}) (num int64, err error) {
|
|
||||||
if db == nil {
|
|
||||||
db = GetDB()
|
|
||||||
}
|
|
||||||
err = utils.CallFuncLogError(func() error {
|
|
||||||
qs := db.db.QueryTable(item)
|
|
||||||
if len(conditions) == 0 {
|
|
||||||
qs = qs.Filter(model.FieldID, jxutils.GetObjFieldByName(item, model.FieldID))
|
|
||||||
} else {
|
|
||||||
for k, v := range conditions {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
qs = qs.Filter(model.FieldDeletedAt, utils.DefaultTimeValue)
|
|
||||||
updateValues := map[string]interface{}{
|
|
||||||
model.FieldDeletedAt: time.Now(),
|
|
||||||
model.FieldUpdatedAt: time.Now(),
|
|
||||||
model.FieldLastOperator: logicDeletedBy,
|
|
||||||
}
|
|
||||||
num, err = qs.Update(utils.MergeMaps(updateValues, kvs))
|
|
||||||
return err
|
|
||||||
}, reflect.TypeOf(item).Name())
|
|
||||||
return num, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExecuteSQL(db *DaoDB, sql string, params ...interface{}) (num int64, err error) {
|
func ExecuteSQL(db *DaoDB, sql string, params ...interface{}) (num int64, err error) {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = GetDB()
|
db = GetDB()
|
||||||
|
|||||||
71
business/model/dao/dao_bz.go
Normal file
71
business/model/dao/dao_bz.go
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
package dao
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 这里面的函数要求实体是IDCUDL的,即含有ID, UpdatedAt, LastOperator, DeletedAt字段
|
||||||
|
|
||||||
|
func GetEntitiesByKV(db *DaoDB, item interface{}, conditions map[string]interface{}, isIncludeDeleted bool) (err error) {
|
||||||
|
if db == nil {
|
||||||
|
db = GetDB()
|
||||||
|
}
|
||||||
|
err = utils.CallFuncLogError(func() error {
|
||||||
|
typeInfo := reflect.TypeOf(item).Elem().Elem()
|
||||||
|
if typeInfo.Kind() == reflect.Ptr {
|
||||||
|
typeInfo = typeInfo.Elem()
|
||||||
|
}
|
||||||
|
qs := db.db.QueryTable(reflect.New(typeInfo).Interface())
|
||||||
|
for k, v := range conditions {
|
||||||
|
qs = qs.Filter(k, v)
|
||||||
|
}
|
||||||
|
qs = qs.Limit(-1)
|
||||||
|
if !isIncludeDeleted {
|
||||||
|
if _, ok := typeInfo.FieldByName(model.FieldDeletedAt); ok {
|
||||||
|
qs = qs.Filter(model.FieldDeletedAt, utils.DefaultTimeValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_, err = qs.All(item)
|
||||||
|
return err
|
||||||
|
}, reflect.TypeOf(item).Name())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateEntityByKV(db *DaoDB, item interface{}, kvs map[string]interface{}, conditions map[string]interface{}) (num int64, err error) {
|
||||||
|
if db == nil {
|
||||||
|
db = GetDB()
|
||||||
|
}
|
||||||
|
err = utils.CallFuncLogError(func() error {
|
||||||
|
qs := db.db.QueryTable(item)
|
||||||
|
if conditions == nil {
|
||||||
|
qs = qs.Filter(model.FieldID, jxutils.GetObjFieldByName(item, model.FieldID))
|
||||||
|
} else {
|
||||||
|
for k, v := range conditions {
|
||||||
|
qs = qs.Filter(k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
num, err = qs.Update(kvs)
|
||||||
|
return err
|
||||||
|
}, reflect.TypeOf(item).Name())
|
||||||
|
return num, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}) (num int64, err error) {
|
||||||
|
return UpdateEntityByKV(db, item, utils.MergeMaps(kvs, map[string]interface{}{
|
||||||
|
model.FieldUpdatedAt: time.Now(),
|
||||||
|
model.FieldLastOperator: userName,
|
||||||
|
}), utils.MergeMaps(conditions, map[string]interface{}{
|
||||||
|
model.FieldDeletedAt: utils.DefaultTimeValue,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}) (num int64, err error) {
|
||||||
|
return UpdateEntityLogically(db, item, utils.MergeMaps(kvs, map[string]interface{}{
|
||||||
|
model.FieldDeletedAt: time.Now(),
|
||||||
|
}), userName, conditions)
|
||||||
|
}
|
||||||
@@ -44,17 +44,26 @@ func TestGetPlaceByName(t *testing.T) {
|
|||||||
func TestUpdateKV(t *testing.T) {
|
func TestUpdateKV(t *testing.T) {
|
||||||
dummy := &model.Store{}
|
dummy := &model.Store{}
|
||||||
kvs := map[string]interface{}{
|
kvs := map[string]interface{}{
|
||||||
"status": 100,
|
"status": 100,
|
||||||
"Tel1": "tel1",
|
"Tel1": "tel1",
|
||||||
"tEl2": "tel2",
|
"tEl2": "tel2",
|
||||||
"deliverY_Range_type": 15,
|
"deliveryRangeType": 15,
|
||||||
}
|
}
|
||||||
cond := map[string]interface{}{
|
cond := map[string]interface{}{
|
||||||
"id": 100002,
|
"id": 100002,
|
||||||
}
|
}
|
||||||
num, err := UpdateEntityByKV(nil, dummy, kvs, cond)
|
num, err := UpdateEntityLogically(nil, dummy, kvs, "autotest", cond)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
t.Log(num)
|
t.Log(num)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestWrapAddIDCULEntity(t *testing.T) {
|
||||||
|
dummy := &model.Store{}
|
||||||
|
WrapAddIDCULEntity(dummy, "autotest")
|
||||||
|
if dummy.LastOperator != "autotest" {
|
||||||
|
t.Fatal("last operator is not same")
|
||||||
|
}
|
||||||
|
t.Log(dummy)
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,17 +16,17 @@ func NormalFilterMapByStructObject(mapData map[string]interface{}, obj interface
|
|||||||
|
|
||||||
func NormalMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) {
|
func NormalMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) {
|
||||||
retVal, _ = NormalFilterMapByStructObject(mapData, obj)
|
retVal, _ = NormalFilterMapByStructObject(mapData, obj)
|
||||||
if len(retVal) > 0 {
|
// if len(retVal) > 0 {
|
||||||
WrapUpdateULEntity(retVal, userName)
|
// WrapUpdateULEntity(retVal, userName)
|
||||||
}
|
// }
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func NormalMakeMapByFieldList(mapData map[string]interface{}, fields []string, userName string) (retVal map[string]interface{}) {
|
func NormalMakeMapByFieldList(mapData map[string]interface{}, fields []string, userName string) (retVal map[string]interface{}) {
|
||||||
retVal, _ = jxutils.FilterMapByFieldList(mapData, fields)
|
retVal, _ = jxutils.FilterMapByFieldList(mapData, fields)
|
||||||
if len(retVal) > 0 {
|
// if len(retVal) > 0 {
|
||||||
WrapUpdateULEntity(retVal, userName)
|
// WrapUpdateULEntity(retVal, userName)
|
||||||
}
|
// }
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -112,9 +112,9 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Store struct {
|
type Store struct {
|
||||||
ModelIDCUL
|
ModelIDCULD
|
||||||
|
|
||||||
Name string `orm:"size(255);unique" json:"name"`
|
Name string `orm:"size(255)" json:"name"`
|
||||||
CityCode int `orm:"default(0);null" json:"cityCode"` // todo ?
|
CityCode int `orm:"default(0);null" json:"cityCode"` // todo ?
|
||||||
DistrictCode int `orm:"default(0);null" json:"districtCode"` // todo ?
|
DistrictCode int `orm:"default(0);null" json:"districtCode"` // todo ?
|
||||||
Address string `orm:"size(255)" json:"address"`
|
Address string `orm:"size(255)" json:"address"`
|
||||||
@@ -133,8 +133,14 @@ type Store struct {
|
|||||||
DeliveryType int8 `orm:"-" json:"-"`
|
DeliveryType int8 `orm:"-" json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*Store) TableUnique() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"Name", "DeletedAt"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type StoreSub struct {
|
type StoreSub struct {
|
||||||
ModelIDCUL
|
ModelIDCULD
|
||||||
|
|
||||||
StoreID int `orm:"column(store_id)"`
|
StoreID int `orm:"column(store_id)"`
|
||||||
Index int // 子店序号,为0表示主店
|
Index int // 子店序号,为0表示主店
|
||||||
@@ -148,12 +154,12 @@ type StoreSub struct {
|
|||||||
|
|
||||||
func (*StoreSub) TableUnique() [][]string {
|
func (*StoreSub) TableUnique() [][]string {
|
||||||
return [][]string{
|
return [][]string{
|
||||||
[]string{"StoreID", "Index"},
|
[]string{"StoreID", "Index", "DeletedAt"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type StoreMap struct {
|
type StoreMap struct {
|
||||||
ModelIDCUL
|
ModelIDCULD
|
||||||
|
|
||||||
StoreID int `orm:"column(store_id)" json:"storeID"`
|
StoreID int `orm:"column(store_id)" json:"storeID"`
|
||||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||||
@@ -170,13 +176,13 @@ type StoreMap struct {
|
|||||||
|
|
||||||
func (*StoreMap) TableUnique() [][]string {
|
func (*StoreMap) TableUnique() [][]string {
|
||||||
return [][]string{
|
return [][]string{
|
||||||
[]string{"StoreID", "VendorID"},
|
[]string{"StoreID", "VendorID", "DeletedAt"},
|
||||||
[]string{"VendorStoreID", "VendorID"},
|
[]string{"VendorStoreID", "VendorID", "DeletedAt"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type StoreCourierMap struct {
|
type StoreCourierMap struct {
|
||||||
ModelIDCUL
|
ModelIDCULD
|
||||||
|
|
||||||
StoreID int `orm:"column(store_id)"`
|
StoreID int `orm:"column(store_id)"`
|
||||||
VendorID int `orm:"column(vendor_id)"`
|
VendorID int `orm:"column(vendor_id)"`
|
||||||
@@ -186,7 +192,7 @@ type StoreCourierMap struct {
|
|||||||
|
|
||||||
func (*StoreCourierMap) TableUnique() [][]string {
|
func (*StoreCourierMap) TableUnique() [][]string {
|
||||||
return [][]string{
|
return [][]string{
|
||||||
[]string{"StoreID", "VendorID"},
|
[]string{"StoreID", "VendorID", "DeletedAt"},
|
||||||
[]string{"VendorStoreID", "VendorID"},
|
[]string{"VendorStoreID", "VendorID", "DeletedAt"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,9 @@ func (p *PurchaseHandler) UpdateStore(storeID int, userName string) (err error)
|
|||||||
}
|
}
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableStoreWrite {
|
||||||
err = api.EbaiAPI.ShopUpdate(params)
|
if err = api.EbaiAPI.ShopUpdate(params); err == nil {
|
||||||
|
// todo 设置 shop_id
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ type tJdStoreInfo struct {
|
|||||||
JdStoreStatus int
|
JdStoreStatus int
|
||||||
VendorStoreID string `orm:"column(vendor_store_id)"`
|
VendorStoreID string `orm:"column(vendor_store_id)"`
|
||||||
RealLastOperator string
|
RealLastOperator string
|
||||||
|
SyncStatus int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
||||||
@@ -82,15 +83,22 @@ func (p *PurchaseHandler) UpdateStore(storeID int, userName string) (err error)
|
|||||||
var store tJdStoreInfo
|
var store tJdStoreInfo
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*, city.jd_code jd_city_code, district.jd_code jd_district_code, t2.status jd_store_status, t2.vendor_store_id,
|
SELECT t1.*, city.jd_code jd_city_code, district.jd_code jd_district_code, t2.status jd_store_status, t2.vendor_store_id,
|
||||||
IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator
|
IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator, t2.sync_status
|
||||||
FROM store t1
|
FROM store t1
|
||||||
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ?
|
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ?
|
||||||
LEFT JOIN place city ON t1.city_code = city.code
|
LEFT JOIN place city ON t1.city_code = city.code
|
||||||
LEFT JOIN place district ON t1.district_code = district.code
|
LEFT JOIN place district ON t1.district_code = district.code
|
||||||
WHERE t1.id = ?`
|
WHERE t1.id = ?
|
||||||
|
ORDER BY t2.updated_at DESC
|
||||||
|
LIMIT 1;
|
||||||
|
`
|
||||||
if err = dao.GetRow(db, &store, sql, model.VendorIDJD, storeID); err == nil {
|
if err = dao.GetRow(db, &store, sql, model.VendorIDJD, storeID); err == nil {
|
||||||
|
outSystemID := ""
|
||||||
|
if store.SyncStatus&model.SyncFlagDeletedMask == 0 {
|
||||||
|
outSystemID = utils.Int2Str(int(store.ID))
|
||||||
|
}
|
||||||
params := map[string]interface{}{
|
params := map[string]interface{}{
|
||||||
"outSystemId": utils.Int2Str(int(store.ID)), // todo 直接修改这个字段可能会有问题
|
"outSystemId": outSystemID, // todo 直接修改这个字段可能会有问题
|
||||||
"stationName": jxutils.ComposeStoreName(store.Name, partner.StoreNameSeparator, VendorStorePrefix),
|
"stationName": jxutils.ComposeStoreName(store.Name, partner.StoreNameSeparator, VendorStorePrefix),
|
||||||
"stationAddress": store.Address,
|
"stationAddress": store.Address,
|
||||||
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
|
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ func Init() {
|
|||||||
|
|
||||||
if globals.EnableStore {
|
if globals.EnableStore {
|
||||||
orm.RegisterModel(&model.Place{})
|
orm.RegisterModel(&model.Place{})
|
||||||
orm.RegisterModel(&model.Store{}, &model.StoreSub{}, &model.StoreMap{})
|
orm.RegisterModel(&model.Store{}, &model.StoreSub{}, &model.StoreMap{}, &model.StoreCourierMap{})
|
||||||
orm.RegisterModel(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{})
|
orm.RegisterModel(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{})
|
||||||
// db.Set("gorm:table_options", "CHARSET=utf8mb4").AutoMigrate(&model.SkuCategory{})
|
// db.Set("gorm:table_options", "CHARSET=utf8mb4").AutoMigrate(&model.SkuCategory{})
|
||||||
orm.RegisterModel(&model.SkuCategory{})
|
orm.RegisterModel(&model.SkuCategory{})
|
||||||
|
|||||||
Reference in New Issue
Block a user