diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 5f822edf1..5fba877fd 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -269,6 +269,12 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize sqlParams = append(sqlParams, pageSize, offset) skuNamesInfo = &SkuNamesInfo{} dao.Begin(db) // todo 这里用事务的原因是,SQL_CALC_FOUND_ROWS会出错 + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() if err = dao.GetRows(db, &skuNamesInfo.SkuNames, sqlData, sqlParams...); err == nil { countInfo := &struct{ Ct int }{} if err = dao.GetRow(db, countInfo, "SELECT FOUND_ROWS() ct"); err == nil { @@ -297,6 +303,12 @@ func AddSkuName(skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *m } db := dao.GetDB() dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() dao.WrapAddIDCULDEntity(&skuNameExt.SkuName, userName) if err = dao.CreateEntity(db, &skuNameExt.SkuName); err != nil { dao.Rollback(db) @@ -343,6 +355,12 @@ func UpdateSkuName(nameID int, payload map[string]interface{}, userName string) if len(valid) > 0 { db := dao.GetDB() dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() if num, err = dao.UpdateEntityByKV(db, skuName, valid, nil); err == nil && num == 1 { if payload["places"] != nil { var places []int @@ -381,6 +399,12 @@ func UpdateSkuName(nameID int, payload map[string]interface{}, userName string) func DeleteSkuName(nameID int, userName string) (num int64, err error) { db := dao.GetDB() dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() skuName := &model.SkuName{} skuName.ID = nameID if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 { diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index ba9b95eb2..7af5be308 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -184,6 +184,12 @@ func GetStores(keyword string, params map[string]interface{}, offset, pageSize i retVal = &StoresInfo{} db := dao.GetDB() dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() if err = dao.GetRows(db, &retVal.Stores, sql, sqlParams...); err == nil { countInfo := &struct{ Ct int }{} if err = dao.GetRow(db, countInfo, "SELECT FOUND_ROWS() ct"); err == nil { diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 54a13e815..e46bc727e 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -156,6 +156,12 @@ func GetStoreSkus(storeID int, keyword string, params map[string]interface{}, of skuNamesInfo = &StoreSkuNamesInfo{} // globals.SugarLogger.Debug(sqlData) dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() if err = dao.GetRows(db, &skuNamesInfo.SkuNames, sqlData, sqlParams...); err == nil { countInfo := &struct{ Ct int }{} if err = dao.GetRow(db, countInfo, "SELECT FOUND_ROWS() ct"); err == nil { @@ -191,6 +197,12 @@ func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string) existBindsMap[v.SkuID] = v } dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() for _, v := range skuBinds { skuBind, ok := existBindsMap[v.SkuID] if !ok {