@@ -8,6 +8,7 @@ import (
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/baseapi/utils/errlist"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/datares"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
@@ -97,10 +98,25 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string
}
cat . Seq = maxSeq . MaxSeq + 1
}
if err = dao . CreateEntity ( nil , cat ) ; err == nil {
outCat = cat
_ , er r = CurVendorSync . SyncCategory ( ctx , nil , cat . ID , false , userName )
dao . Begin ( db )
defer func ( ) {
if r : = recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
} ( )
if err = dao . CreateEntity ( db , cat ) ; err != nil {
dao . Rollback ( db )
return nil , err
}
if err = OnCreateThing ( db , int64 ( cat . ID ) , model . ThingTypeCategory ) ; err != nil {
dao . Rollback ( db )
return nil , err
}
dao . Commit ( db )
outCat = cat
_ , err = CurVendorSync . SyncCategory ( ctx , nil , cat . ID , false , userName )
return outCat , err
}
@@ -119,64 +135,71 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i
syncStatus = model . SyncFlagModifiedMask
valid [ model . FieldJdSyncStatus ] = int8 ( syncStatus ) | cat . JdSyncStatus
}
if num , err = dao . UpdateEntityLogically ( db , cat , valid , userName , nil ) ; err == nil {
SetStoreCategorySyncStatus2 ( db , nil , [ ] int { categoryID } , model . SyncFlagModifiedMask )
var skuIDs [ ] int
if valid [ "jdCategoryID" ] != nil || valid [ "ebaiCategoryID" ] != nil || valid [ "mtwmCategoryID" ] != nil ||
valid [ "jdPricePercentage" ] != nil || valid [ "ebaiPricePercentage" ] != nil || valid [ "mtwmPricePercentage" ] != nil {
if skuList , err2 := dao . GetSkuByCats ( db , [ ] int { categoryID } ) ; err2 == nil && len ( skuList ) > 0 {
for _ , sku := range skuList {
skuIDs = append ( skuIDs , sku . ID )
}
if valid [ "jdCategoryID" ] != nil {
dao . SetSkuSyncStatus ( db , model . VendorIDJD , skuIDs , model . SyncFlagModifiedMask )
}
// todo 如下逻辑, 在不同平台同时改pricePercentage与平台分类映射时, 会不必要的打上多余的标记
var vendorIDs [ ] int
syncStatus := model . SyncFlagModifiedMask
if valid [ "jdPricePercentage" ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDJD )
syncStatus |= model . SyncFlagPriceMask
}
dao . Begin ( db )
defer func ( ) {
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
}( )
if num , err = dao . UpdateEntityLogically ( db , cat , valid , userName , nil ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if err = OnUpdateThing ( db , int64 ( categoryID ) , model . ThingTypeCategory ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
dao . Commit ( db )
if valid [ "ebaiPricePercentage" ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDEBAI )
syncStatus |= model . SyncFlagPriceMask
} else if valid [ "ebaiCategoryID " ] != nil {
vendorIDs = append ( vend orIDs , model . VendorIDEBAI )
}
SetStoreCategorySyncStatus2 ( db , nil , [ ] int { categoryID } , model . SyncFlagModifiedMask )
var skuIDs [ ] int
if valid [ "jdCategoryID" ] != nil || valid [ "ebaiCategoryID" ] != nil || valid [ "mtwmCategoryID" ] != nil ||
valid [ "jdPricePercentage" ] != nil || valid [ "ebaiPricePercentage" ] != nil || valid [ "mtwmPricePercentage " ] != nil {
if skuList , err2 : = dao . GetSkuByCats ( db , [ ] int { categ ory ID} ) ; err2 == nil && len ( skuList ) > 0 {
for _ , sku := range skuList {
skuIDs = append ( skuIDs , sku . ID )
}
if valid [ "jdCategoryID" ] != nil {
dao . SetSkuSyncStatus ( db , model . VendorIDJD , skuIDs , model . SyncFlagModifiedMask )
}
if valid [ "mtwmPricePercentage" ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDMTWM )
syncStatus | = model . SyncFlagPrice Mask
} else if valid [ "mtwmCategoryID " ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDMTWM )
}
if len ( vendorIDs ) > 0 {
SetStoreSkuSyncStatus2 ( db , nil , vendorIDs , skuIDs , syncStatus )
}
// todo 如下逻辑, 在不同平台同时改pricePercentage与平台分类映射时, 会不必要的打上多余的标记
var vendorIDs [ ] int
syncStatus : = model . SyncFlagModified Mask
if valid [ "jdPricePercentage " ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDJD )
syncStatus |= model . SyncFlagPriceMask
}
if valid [ "ebaiPricePercentage" ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDEBAI )
syncStatus |= model . SyncFlagPriceMask
} else if valid [ "ebaiCategoryID" ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDEBAI )
}
if valid [ "mtwmPricePercentage" ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDMTWM )
syncStatus |= model . SyncFlagPriceMask
} else if valid [ "mtwmCategoryID" ] != nil {
vendorIDs = append ( vendorIDs , model . VendorIDMTWM )
}
if len ( vendorIDs ) > 0 {
SetStoreSkuSyncStatus2 ( db , nil , vendorIDs , skuIDs , syncStatus )
}
}
_ , err = CurVendorSync . SyncCategory ( ctx , db , categoryID , false , userName )
if len ( skuIDs ) > 0 {
CurVendorSync . SyncSkus ( ctx , db , nil , skuIDs , true , true , userName )
}
}
_ , err = CurVendorSync . SyncCategory ( ctx , db , categoryID , false , userName )
if len ( skuIDs ) > 0 {
CurVendorSync . SyncSkus ( ctx , db , nil , skuIDs , true , true , userName )
}
}
return num , err
}
func SetStoreCategorySyncStatus2 ( db * dao . DaoDB , storeIDs [ ] int , catIDs [ ] int , syncStatus int ) ( num int64 , err error ) {
// dao.Begin(db)
// defer func() {
// if r := recover(); r != nil || err != nil {
// dao.Rollback(db)
// if r != nil {
// panic(r)
// }
// }
// }()
for _ , vendorID := range partner . GetSingleStoreVendorIDs ( ) {
num2 , err2 := dao . SetStoreCategorySyncStatus ( db , vendorID , storeIDs , catIDs , syncStatus )
if err = err2 ; err != nil {
@@ -184,43 +207,52 @@ func SetStoreCategorySyncStatus2(db *dao.DaoDB, storeIDs []int, catIDs []int, sy
}
num += num2
}
// dao.Commit(db)
return num , nil
}
func ReorderCategories ( ctx * jxcontext . Context , parentID int , categoryIDs [ ] int , userName string ) ( err error ) {
var cats [ ] * model . SkuCategory
parentCat := & model . SkuCategory { }
parentCat . ID = parentID
db := dao . GetDB ( )
if parentID ! = 0 {
err = dao . GetEntity ( db , parentC at)
} else {
parentCat = nil
}
if err = = nil {
if err = dao . GetEntitiesByKV ( db , & cats , utils . Params2Map ( model . FieldParentID , parentID ) , false ) ; err == nil {
catsLen : = len ( cats )
if catsLen != len ( categoryIDs ) {
return ErrInputCatsDoesntMatch
if err = dao . GetEntitiesByKV ( db , & cats , utils . Params2Map ( model . FieldParentID , parentID ) , false ) ; err = = nil {
catsLen : = len ( c ats )
if catsLen != len ( categoryIDs ) {
return ErrInputCatsDoesntMatch
}
catsMap : = make ( map [ int ] * model . SkuCategory , catsLen )
for _ , cat := range cats {
catsMap [ cat . ID ] = cat
}
dao . Begin ( db )
defer func ( ) {
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
catsMap := make ( map [ int ] * model . SkuCategory , catsLen )
for _ , cat := range cats {
catsMap [ cat . ID ] = cat
} ( )
for k , v := range categoryID s {
if catsMap [ v ] = = nil {
dao . Rollback ( db )
return fmt . Errorf ( "分类:%d不在%d分类下" , v , parentID )
}
for k , v : = range categoryIDs {
catsMap [ v ] . Seq = k
catsMap [ v ] . LastOperato r = ctx . GetUserName ( )
if _ , err = dao . UpdateEntity ( db , catsMap [ v ] ) ; err != nil {
b reak
}
catsMap [ v ] . Seq = k
catsMap [ v ] . LastOperator = ctx . GetUserName ( )
if _ , er r = dao . UpdateEntity ( db , catsMap [ v ] ) ; err != nil {
dao . Rollback ( db )
return err
}
SetStoreCategorySyncStatus2 ( db , nil , categoryIDs , model . SyncFlagModifiedMask )
if err == nil {
_ , err = CurVendorSync . SyncReorderCategories ( ctx , db , parentID , false , userName )
CurVendorSync . SyncStoresCategory ( ctx , db , nil , nil , false , true , true )
if err = OnUpdateThing ( db , int64 ( catsMap [ v ] . ID ) , model . ThingTypeCategory ) ; err != nil {
dao . Rollback ( db )
return err
}
}
dao . Commit ( db )
SetStoreCategorySyncStatus2 ( db , nil , categoryIDs , model . SyncFlagModifiedMask )
if err == nil {
_ , err = CurVendorSync . SyncReorderCategories ( ctx , db , parentID , false , userName )
CurVendorSync . SyncStoresCategory ( ctx , db , nil , nil , false , true , true )
}
}
return err
}
@@ -252,14 +284,25 @@ func DeleteCategory(ctx *jxcontext.Context, categoryID int, userName string) (nu
}
dao . Begin ( db )
defer func ( ) {
dao . Rollback ( db )
} ( )
if _ , err = DeleteCategoryMap ( ctx , db , categoryID ) ; err == nil {
if num , err = dao . DeleteEntityLogically ( db , cat , utils . Params2Map ( model . FieldJdSyncStatus , model . SyncFlagDeletedMask ) , userName , nil ) ; err == nil && num == 1 {
dao . Commit ( db )
_ , err = CurVendorSync . SyncCategory ( ctx , db , cat . ID , false , userName )
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
} ( )
if _ , err = DeleteCategoryMap ( ctx , db , categoryID ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if err = OnDeleteThing ( db , int64 ( categoryID ) , model . ThingTypeCategory ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if num , err = dao . DeleteEntityLogically ( db , cat , utils . Params2Map ( model . FieldJdSyncStatus , model . SyncFlagDeletedMask ) , userName , nil ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
dao . Commit ( db )
_ , err = CurVendorSync . SyncCategory ( ctx , db , cat . ID , false , userName )
}
return num , err
}
@@ -620,6 +663,10 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
dao . Rollback ( db )
return nil , err
}
if err = OnCreateThing ( db , int64 ( skuNameExt . SkuName . ID ) , model . ThingTypeSkuName ) ; err != nil {
dao . Rollback ( db )
return nil , err
}
for _ , sku := range skuNameExt . Skus {
dao . WrapAddIDCULDEntity ( sku , userName )
sku . NameID = skuNameExt . ID
@@ -728,52 +775,72 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
}
} ( )
valid [ model . FieldJdSyncStatus ] = model . SyncFlagModifiedMask | skuName . JdSyncStatus
if num , err = dao . UpdateEntityLogically ( db , skuName , valid , userName , nil ) ; err = = nil {
if utils . Interface2Int64WithDefault ( payload [ "isGlobal" ] , 0 ) == 0 && payload [ "places" ] != nil {
if places , ok := payload [ "places" ] . ( [ ] interface { } ) ; ok {
if _ , err = dao . DeleteSkuNamePlace ( db , nameID , nil ) ; err == nil {
for _ , placeCode := range places {
placeBind := & model . SkuNamePlaceBind { }
placeBind . PlaceCode = int ( utils . Interface2Int64WithDefault ( placeCode , 0 ) )
if placeBind . PlaceCode > 0 {
dao . WrapAddIDCULEntity ( placeBind , userName )
placeBind . NameID = nameID
err = dao . CreateEntity ( db , placeBind )
} else {
dao . Rollback ( db )
return 0 , errors . New ( "地点代码非法" )
}
}
}
}
}
if err == nil {
skuList , err2 := dao . GetSkus ( db , nil , [ ] int { nameID } , nil , nil )
if err = err2 ; err == nil {
for _ , v := range skuList {
sku := & v . Sku
sku . JdSyncStatus |= model . SyncFlagModifiedMask
sku . LastOperator = userName
sku . UpdatedAt = time . Now ( )
dao . UpdateEntity ( db , sku )
}
}
if err == nil {
skuIDs , err2 := dao . GetSkuIDByNames ( db , [ ] int { nameID } )
if err = err2 ; err == nil && len ( skuIDs ) > 0 {
_ , err = SetStoreSkuSyncStatus2 ( db , nil , partner . GetSingleStoreVendorIDs ( ) , skuIDs , model . SyncFlagModifiedMask )
}
}
}
if err == nil {
dao . Commit ( db )
_ , err = CurVendorSync . SyncSku ( ctx , db , nameID , - 1 , false , false , userName )
} else {
dao . Rollback ( db )
}
} else {
if num , err = dao . UpdateEntityLogically ( db , skuName , valid , userName , nil ) ; err ! = nil {
dao . Rollback ( db )
return 0 , err
}
if err = OnUpdateThing ( db , int64 ( nameID ) , model . ThingTypeSkuName ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if utils . Interface2Int64WithDefault ( payload [ "isGlobal" ] , 0 ) == 0 && payload [ "places" ] != nil {
if places , ok := payload [ "places" ] . ( [ ] interface { } ) ; ok {
if _ , err = dao . DeleteSkuNamePlace ( db , nameID , nil ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
for _ , placeCode := range places {
placeBind := & model . SkuNamePlaceBind { }
placeBind . PlaceCode = int ( utils . Interface2Int64WithDefault ( placeCode , 0 ) )
if placeBind . PlaceCode > 0 {
dao . WrapAddIDCULEntity ( placeBind , userName )
placeBind . NameID = nameID
err = dao . CreateEntity ( db , placeBind )
} else {
dao . Rollback ( db )
return 0 , errors . New ( "地点代码非法" )
}
}
}
}
skuList , err2 := dao . GetSkus ( db , nil , [ ] int { nameID } , nil , nil )
if err = err2 ; err == nil {
for _ , v := range skuList {
sku := & v . Sku
sku . JdSyncStatus |= model . SyncFlagModifiedMask
sku . LastOperator = userName
sku . UpdatedAt = time . Now ( )
if _ , err = dao . UpdateEntity ( db , sku ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if err = OnUpdateThing ( db , int64 ( v . ID ) , model . ThingTypeSku ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
}
}
skuIDs , err2 := dao . GetSkuIDByNames ( db , [ ] int { nameID } )
if err = err2 ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if len ( skuIDs ) > 0 {
if _ , err = SetStoreSkuSyncStatus2 ( db , nil , partner . GetSingleStoreVendorIDs ( ) , skuIDs , model . SyncFlagModifiedMask ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
}
dao . Commit ( db )
errList := errlist . New ( )
errList . AddErr ( err )
_ , err = CurVendorSync . SyncSku ( ctx , db , nameID , - 1 , false , false , userName )
errList . AddErr ( err )
err = errList . GetErrListAsOne ( )
}
return num , err
}
@@ -793,33 +860,57 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
db := dao . GetDB ( )
dao . Begin ( db )
defer func ( ) {
dao . Rollback ( db )
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
} ( )
if _ , err := dao . DeleteSkuNamePlace ( db , nameID , nil ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if _ , err = DeleteStoreSku ( ctx , db , nameID , 0 ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
numSku , err := dao . DeleteEntityLogically ( db , & model . Sku { } , map [ string ] interface { } {
model . FieldJdSyncStatus : model . SyncFlagDeletedMask ,
model . FieldStatus : model . SkuStatusDeleted ,
} , userName , map [ string ] interface { } {
model . FieldNameID : nameID ,
} )
if err != nil {
skuList , err2 := dao . GetSkus ( db , nil , [ ] int { nameID } , nil , nil )
if err = err2 ; err == nil {
for _ , v := range skuList {
sku := & v . Sku
if _ , err = dao . DeleteEntityLogically ( db , sku , map [ string ] interface { } {
model . FieldJdSyncStatus : model . SyncFlagDeletedMask ,
model . FieldStatus : model . SkuStatusDeleted ,
} , userName , nil ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
if err = OnDeleteThing ( db , int64 ( v . ID ) , model . ThingTypeSku ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
}
}
if err = OnDeleteThing ( db , int64 ( nameID ) , model . ThingTypeSkuName ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
skuName := & model . SkuName { }
skuName . ID = nameID
if num , err = dao . DeleteEntityLogically ( db , skuName , map [ string ] interface { } {
model . FieldJdSyncStatus : model . SyncFlagDeletedMask ,
model . FieldStatus : model . SkuStatusDeleted ,
} , userName , nil ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
dao . Commit ( db )
if numSku > 0 {
if len ( skuList ) > 0 {
_ , err = CurVendorSync . SyncSku ( ctx , db , skuName . ID , - 1 , false , false , userName )
}
return num , err
@@ -840,15 +931,31 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
sku . JdSyncStatus = model . SyncFlagNewMask
sku . JdID = 0
sku . NameID = nameID
if err = dao . CreateEntity ( db , sku ) ; err == nil {
result , err2 := GetSkuNames ( ctx , "" , false , utils . Params2Map ( "skuID" , sku . ID ) , 0 , 0 )
if err = err2 ; err == nil {
if result . TotalCount = = 1 {
outSkuNameExt = result . SkuNames [ 0 ]
_ , err = CurVendorSync . SyncSku ( ctx , db , outSkuNameExt . SkuName . ID , sku . ID , false , false , userName )
} else {
err = ErrEntityNotExist
}
dao . Begin ( db )
defer func ( ) {
if r := recover ( ) ; r ! = nil {
dao . Rollback ( db )
panic ( r )
}
} ( )
if err = dao . CreateEntity ( db , sku ) ; err != nil {
dao . Rollback ( db )
return nil , err
}
if err = OnCreateThing ( db , int64 ( sku . ID ) , model . ThingTypeSku ) ; err != nil {
dao . Rollback ( db )
return nil , err
}
dao . Commit ( db )
result , err2 := GetSkuNames ( ctx , "" , false , utils . Params2Map ( "skuID" , sku . ID ) , 0 , 0 )
if err = err2 ; err == nil {
if result . TotalCount == 1 {
outSkuNameExt = result . SkuNames [ 0 ]
_ , err = CurVendorSync . SyncSku ( ctx , db , outSkuNameExt . SkuName . ID , sku . ID , false , false , userName )
} else {
err = ErrEntityNotExist
}
}
return outSkuNameExt , err
@@ -877,31 +984,43 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
maskValue |= model . SyncFlagSpecMask
}
valid [ model . FieldJdSyncStatus ] = maskValue | sku . JdSyncStatus
if num , err = dao . UpdateEntityLogically ( db , sku , valid , userName , nil ) ; err = = nil {
if num == 1 {
if num , err = dao . ExecuteSQL ( db , `
UPDATE sku_name t1
JOIN sku t2 ON t1.id = t2.name_id
SET t1.spec_quality = t2.spec_quality,
t1.spec_unit = t2.spec_unit
WHERE t1.deleted_at = ? AND t2.id = ? AND t1.unit <> ?
` , utils . DefaultTimeValue , skuID , model . SpecialUnit ) ; err == nil {
if _ , err = SetStoreSkuSyncStatus2 ( db , nil , partner . GetSingleStoreVendorIDs ( ) , [ ] int { skuID } , model . SyncFlagModifiedMask ) ; err == nil {
if maskValue & model . SyncFlagSpecMask != 0 {
err = refreshStoreSkuPrice ( ctx , db , skuID )
}
}
}
} else {
if num , err = dao . UpdateEntityLogically ( db , sku , valid , userName , nil ) ; err ! = nil || num == 0 {
dao . Rollback ( db )
if err = = nil {
err = ErrEntityNotExist
}
return 0 , err
}
if err = = nil {
dao . Commit ( db )
_ , err = CurVendorSync . SyncSku ( ctx , db , - 1 , sku . ID , false , false , userName )
} else {
if num , err = dao . ExecuteSQL ( db , `
UPDATE sku_name t1
JOIN sku t2 ON t1.id = t2.name_id
SET t1.spec_quality = t2.spec_quality,
t1.spec_unit = t2.spec_unit
WHERE t1.deleted_at = ? AND t2.id = ? AND t1.unit <> ?
` , utils . DefaultTimeValue , skuID , model . SpecialUnit ) ; err != nil || num == 0 {
dao . Rollback ( db )
if err == nil {
err = ErrEntityNotExist
}
return 0 , err
}
if err = OnUpdateThing ( db , int64 ( skuID ) , model . ThingTypeSku ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
dao . Commit ( db )
if _ , err = SetStoreSkuSyncStatus2 ( db , nil , partner . GetSingleStoreVendorIDs ( ) , [ ] int { skuID } , model . SyncFlagModifiedMask ) ; err == nil {
if maskValue & model . SyncFlagSpecMask != 0 {
err = refreshStoreSkuPrice ( ctx , db , skuID )
}
}
errList := errlist . New ( )
errList . AddErr ( err )
_ , err = CurVendorSync . SyncSku ( ctx , db , - 1 , sku . ID , false , false , userName )
errList . AddErr ( err )
err = errList . GetErrListAsOne ( )
}
return num , err
}
@@ -940,23 +1059,33 @@ func DeleteSku(ctx *jxcontext.Context, skuID int, userName string) (num int64, e
db := dao . GetDB ( )
dao . Begin ( db )
defer func ( ) {
dao . Rollback ( db )
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
} ( )
if _ , err = DeleteStoreSku ( ctx , db , 0 , skuID ) ; err = = nil {
sku := & model . Sku { }
sku . ID = skuID
if num , err = dao . DeleteEntityLogically ( db , sku , map [ string ] interface { } {
model . FieldStatus : model . SkuStatusDeleted ,
model . FieldJdSyncStatus : model . SyncFlagDeletedMask ,
} , userName , nil ) ; err == nil {
dao . Commit ( db )
if num = = 1 {
_ , err = CurVendorSync . SyncSku ( ctx , db , - 1 , sku . ID , false , false , userName )
} else {
err = ErrEntityNotExist
}
}
if _ , err = DeleteStoreSku ( ctx , db , 0 , skuID ) ; err ! = nil {
dao . Rollback ( db )
return 0 , err
}
if err = OnDeleteThing ( db , int64 ( skuID ) , model . ThingTypeSku ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
sku : = & model . Sku { }
sku . ID = skuID
if num , err = dao . DeleteEntityLogically ( db , sku , map [ string ] interface { } {
model . FieldStatus : model . SkuStatusDeleted ,
model . FieldJdSyncStatus : model . SyncFlagDeletedMask ,
} , userName , nil ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
dao . Commit ( db )
if num == 1 {
_ , err = CurVendorSync . SyncSku ( ctx , db , - 1 , sku . ID , false , false , userName )
}
return num , err
}
@@ -1008,9 +1137,25 @@ func AddSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName str
PlaceCode : placeCode ,
}
dao . WrapAddIDCULEntity ( placeBind , userName )
if err = dao . CreateEntity ( db , placeBind ) ; err == nil {
_ , err = CurVendorSync . SyncSku ( ctx , db , nameID , - 1 , false , false , userName )
dao . Begin ( db )
defer func ( ) {
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
} ( )
if err = dao . CreateEntity ( db , placeBind ) ; err != nil {
dao . Rollback ( db )
return nil , err
}
if err = OnUpdateThing ( db , int64 ( nameID ) , model . ThingTypeSkuName ) ; err != nil {
dao . Rollback ( db )
return nil , err
}
dao . Commit ( db )
_ , err = CurVendorSync . SyncSku ( ctx , db , nameID , - 1 , false , false , userName )
return placeBind , err
}
@@ -1019,13 +1164,28 @@ func DeleteSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName
placeBind := & model . SkuNamePlaceBind { }
placeBind . NameID = nameID
placeBind . PlaceCode = placeCode
if num , err = dao . DeleteEntity ( db , placeBind , model . FieldNameID , model . FieldPlaceCode ) ; err == nil {
if num == 1 {
_ , err = CurVendorSync . SyncSku ( ctx , db , nameID , - 1 , false , false , userName )
} else {
dao . Begin ( db )
defer func ( ) {
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
panic ( r )
}
} ( )
if num , err = dao . DeleteEntity ( db , placeBind , model . FieldNameID , model . FieldPlaceCode ) ; err != nil || num == 0 {
dao . Rollback ( db )
if err == nil {
err = ErrEntityNotExist
}
return 0 , err
}
if err = OnUpdateThing ( db , int64 ( nameID ) , model . ThingTypeSkuName ) ; err != nil {
dao . Rollback ( db )
return 0 , err
}
dao . Commit ( db )
_ , err = CurVendorSync . SyncSku ( ctx , db , nameID , - 1 , false , false , userName )
return num , err
}
@@ -1058,9 +1218,7 @@ func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err e
defer func ( ) {
if r := recover ( ) ; r != nil {
dao . Rollback ( db )
if r != nil {
panic ( r )
}
panic ( r )
}
} ( )
nameIDList := [ ] int { }
@@ -1087,6 +1245,5 @@ func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err e
dao . Rollback ( db )
}
}
return err
}