77 lines
2.1 KiB
Go
77 lines
2.1 KiB
Go
package cms
|
|
|
|
import (
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"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 StoreManager struct {
|
|
}
|
|
|
|
var (
|
|
FixedStoreManager *StoreManager
|
|
)
|
|
|
|
func init() {
|
|
FixedStoreManager = &StoreManager{}
|
|
partner.InitStoreManager(FixedStoreManager)
|
|
}
|
|
|
|
func (s *StoreManager) OnStoreStatusChanged(vendorStoreID string, vendorID int, storeStatus int) (err error) {
|
|
db := dao.GetDB()
|
|
storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, vendorStoreID, vendorID)
|
|
if err == nil {
|
|
var storeKV, storeMapKV map[string]interface{}
|
|
if storeStatus == model.StoreStatusOpened {
|
|
if storeDetail.Status != model.StoreStatusOpened {
|
|
storeKV = map[string]interface{}{
|
|
"Status": model.StoreStatusOpened,
|
|
}
|
|
}
|
|
if storeDetail.VendorStatus != model.StoreStatusOpened {
|
|
storeMapKV = map[string]interface{}{
|
|
"Status": model.StoreStatusOpened,
|
|
}
|
|
}
|
|
} else {
|
|
if storeDetail.Status == model.StoreStatusOpened && storeDetail.VendorStatus == model.StoreStatusOpened {
|
|
storeMapKV = map[string]interface{}{
|
|
"Status": storeStatus,
|
|
}
|
|
} else if storeDetail.Status == model.StoreStatusClosed && storeStatus == model.StoreStatusClosed {
|
|
storeMapKV = map[string]interface{}{
|
|
"Status": model.StoreStatusOpened,
|
|
}
|
|
}
|
|
}
|
|
if err == nil && (storeKV != nil || storeMapKV != nil) {
|
|
dao.Begin(db)
|
|
defer func() {
|
|
if err != nil {
|
|
dao.Rollback(db)
|
|
}
|
|
}()
|
|
if storeKV != nil {
|
|
store := &model.Store{}
|
|
store.ID = storeDetail.Store.ID
|
|
if _, err = dao.UpdateEntityLogically(db, store, storeKV, "admin", nil); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if storeMapKV != nil {
|
|
if _, err = dao.UpdateEntityLogically(db, &model.StoreMap{}, storeMapKV, "admin", map[string]interface{}{
|
|
model.FieldStoreID: storeDetail.Store.ID,
|
|
model.FieldVendorID: vendorID,
|
|
model.FieldDeletedAt: utils.DefaultTimeValue,
|
|
}); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
dao.Commit(db)
|
|
}
|
|
}
|
|
return err
|
|
}
|