- 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

@@ -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
}