Files
jx-callback/business/jxstore/cms/storeman.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
}