- 修改商家分类,SKU,SKUNAME时,将门店分类,商品相应的同步标志位正确设置
This commit is contained in:
@@ -93,19 +93,65 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string
|
|||||||
func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||||
cat := &model.SkuCategory{}
|
cat := &model.SkuCategory{}
|
||||||
cat.ID = categoryID
|
cat.ID = categoryID
|
||||||
valid := dao.NormalMakeMapByStructObject(payload, cat, userName)
|
db := dao.GetDB()
|
||||||
|
if err = dao.GetEntity(db, cat); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
valid := dao.StrictMakeMapByStructObject(payload, cat, userName)
|
||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
|
syncStatus := 0
|
||||||
if valid["name"] != nil {
|
if valid["name"] != nil {
|
||||||
valid["name"] = strings.Trim(valid["name"].(string), " ")
|
valid["name"] = strings.Trim(valid["name"].(string), " ")
|
||||||
|
syncStatus = model.SyncFlagModifiedMask
|
||||||
}
|
}
|
||||||
db := dao.GetDB()
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus, syncStatus); err == nil {
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus, model.SyncFlagModifiedMask); err == nil {
|
SetStoreCategorySyncStatus2(db, -1, []int{categoryID}, model.SyncFlagModifiedMask)
|
||||||
|
if valid["jdCategoryID"] != nil || valid["ebaiCategoryID"] != nil || valid["mtwmCategoryID"] != nil {
|
||||||
|
if skuList, err2 := dao.GetSkuByCats(db, []int{categoryID}); err2 == nil && len(skuList) > 0 {
|
||||||
|
var skuIDs []int
|
||||||
|
for _, sku := range skuList {
|
||||||
|
skuIDs = append(skuIDs, sku.ID)
|
||||||
|
}
|
||||||
|
if valid["jdCategoryID"] != nil {
|
||||||
|
dao.SetSkuSyncStatus(db, model.VendorIDJD, skuIDs, model.SyncFlagModifiedMask)
|
||||||
|
}
|
||||||
|
var vendorIDs []int
|
||||||
|
if valid["ebaiCategoryID"] != nil {
|
||||||
|
vendorIDs = append(vendorIDs, model.VendorIDEBAI)
|
||||||
|
}
|
||||||
|
if valid["mtwmCategoryID"] != nil {
|
||||||
|
vendorIDs = append(vendorIDs, model.VendorIDMTWM)
|
||||||
|
}
|
||||||
|
SetStoreSkuSyncStatus2(db, -1, vendorIDs, skuIDs, model.SyncFlagModifiedMask)
|
||||||
|
}
|
||||||
|
}
|
||||||
_, err = CurVendorSync.SyncCategory(ctx, db, categoryID, false, userName)
|
_, err = CurVendorSync.SyncCategory(ctx, db, categoryID, false, userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetStoreCategorySyncStatus2(db *dao.DaoDB, storeID 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 CurVendorSync.SingleStoreVendorIDs {
|
||||||
|
num2, err2 := dao.SetStoreCategorySyncStatus(db, vendorID, storeID, catIDs, syncStatus)
|
||||||
|
if err = err2; err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
num += num2
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
return num, nil
|
||||||
|
}
|
||||||
|
|
||||||
func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int, userName string) (err error) {
|
func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int, userName string) (err error) {
|
||||||
var cats []*model.SkuCategory
|
var cats []*model.SkuCategory
|
||||||
parentCat := &model.SkuCategory{}
|
parentCat := &model.SkuCategory{}
|
||||||
@@ -588,8 +634,14 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
model.FieldNameID: nameID,
|
model.FieldNameID: nameID,
|
||||||
}, model.FieldJdSyncStatus, model.SyncFlagModifiedMask)
|
}, model.FieldJdSyncStatus, model.SyncFlagModifiedMask)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dao.Commit(db)
|
skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID})
|
||||||
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
if err = err2; err == nil && len(skuIDs) > 0 {
|
||||||
|
_, err = SetStoreSkuSyncStatus2(db, -1, CurVendorSync.SingleStoreVendorIDs, skuIDs, model.SyncFlagModifiedMask)
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
dao.Commit(db)
|
||||||
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -597,6 +649,27 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetStoreSkuSyncStatus2(db *dao.DaoDB, storeID int, vendorIDs, skuIDs []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 vendorIDs {
|
||||||
|
num2, err2 := dao.SetStoreSkuSyncStatus(db, vendorID, storeID, skuIDs, syncStatus)
|
||||||
|
if err = err2; err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
num += num2
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
return num, nil
|
||||||
|
}
|
||||||
|
|
||||||
func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int64, err error) {
|
func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int64, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
@@ -691,8 +764,10 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
|||||||
`, utils.DefaultTimeValue, skuID, model.SpecialUnit); err != nil {
|
`, utils.DefaultTimeValue, skuID, model.SpecialUnit); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
if _, err = SetStoreSkuSyncStatus2(db, -1, CurVendorSync.SingleStoreVendorIDs, []int{skuID}, model.SyncFlagModifiedMask); err == nil {
|
||||||
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
|
dao.Commit(db)
|
||||||
|
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
err = ErrEntityNotExist
|
err = ErrEntityNotExist
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package dao
|
package dao
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) {
|
func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) {
|
||||||
@@ -70,3 +73,76 @@ func GetSkuNames(db *DaoDB, nameIDs []int) (skuNameList []*model.SkuName, err er
|
|||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetSkuByNames(db *DaoDB, nameIDs []int) (skuList []*model.Sku, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM sku t1
|
||||||
|
WHERE t1.deleted_at = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
}
|
||||||
|
if len(nameIDs) > 0 {
|
||||||
|
sql += " AND t1.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, nameIDs)
|
||||||
|
}
|
||||||
|
if err = GetRows(db, &skuList, sql, sqlParams...); err == nil {
|
||||||
|
return skuList, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) {
|
||||||
|
skuList, err := GetSkuByNames(db, nameIDs)
|
||||||
|
if err == nil {
|
||||||
|
for _, sku := range skuList {
|
||||||
|
skuIDs = append(skuIDs, sku.ID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return skuIDs, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSkuByCats(db *DaoDB, catIDs []int) (skuList []*model.Sku, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT t1.*
|
||||||
|
FROM sku t1
|
||||||
|
JOIN sku_name t2 ON t2.id = t1.name_id
|
||||||
|
WHERE t1.deleted_at = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
}
|
||||||
|
if len(catIDs) > 0 {
|
||||||
|
sql += " AND t2.category_id IN (" + GenQuestionMarks(len(catIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, catIDs)
|
||||||
|
}
|
||||||
|
err = GetRows(db, &skuList, sql, sqlParams...)
|
||||||
|
globals.SugarLogger.Debugf("GetSkuByCats err:%v", err)
|
||||||
|
return skuList, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetSkuSyncStatus(db *DaoDB, vendorID int, skuIDs []int, syncStatus int) (num int64, err error) {
|
||||||
|
globals.SugarLogger.Debugf("SetSkuSyncStatus, vendorID:%d", vendorID)
|
||||||
|
|
||||||
|
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
||||||
|
sql := fmt.Sprintf(`
|
||||||
|
UPDATE sku t1
|
||||||
|
SET t1.%s_sync_status = IF(t1.deleted_at = ?, t1.%s_sync_status | ?, 0)
|
||||||
|
`, fieldPrefix, fieldPrefix)
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
syncStatus,
|
||||||
|
}
|
||||||
|
if (syncStatus & model.SyncFlagNewMask) != 0 {
|
||||||
|
sql += fmt.Sprintf(`,
|
||||||
|
t1.%s_id = 0
|
||||||
|
`, fieldPrefix)
|
||||||
|
}
|
||||||
|
sql += " WHERE 1 = 1"
|
||||||
|
if len(skuIDs) > 0 {
|
||||||
|
sql += " AND t1.id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
|
}
|
||||||
|
return ExecuteSQL(db, sql, sqlParams...)
|
||||||
|
}
|
||||||
|
|||||||
@@ -224,8 +224,8 @@ func SetStoreSkuSyncStatus(db *DaoDB, vendorID, storeID int, skuIDs []int, syncS
|
|||||||
|
|
||||||
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
||||||
sql := fmt.Sprintf(`
|
sql := fmt.Sprintf(`
|
||||||
UPDATE store_sku_bind
|
UPDATE store_sku_bind t1
|
||||||
SET %s_sync_status = IF(deleted_at = ?, %s_sync_status | ?, 0)
|
SET t1.%s_sync_status = IF(t1.deleted_at = ?, t1.%s_sync_status | ?, 0)
|
||||||
`, fieldPrefix, fieldPrefix)
|
`, fieldPrefix, fieldPrefix)
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
@@ -233,16 +233,16 @@ func SetStoreSkuSyncStatus(db *DaoDB, vendorID, storeID int, skuIDs []int, syncS
|
|||||||
}
|
}
|
||||||
if (syncStatus & model.SyncFlagNewMask) != 0 {
|
if (syncStatus & model.SyncFlagNewMask) != 0 {
|
||||||
sql += fmt.Sprintf(`,
|
sql += fmt.Sprintf(`,
|
||||||
%s_id = 0
|
t1.%s_id = 0
|
||||||
`, fieldPrefix)
|
`, fieldPrefix)
|
||||||
}
|
}
|
||||||
sql += " WHERE 1 = 1"
|
sql += " WHERE 1 = 1"
|
||||||
if storeID > 0 {
|
if storeID > 0 {
|
||||||
sql += " AND store_id = ?"
|
sql += " AND t1.store_id = ?"
|
||||||
sqlParams = append(sqlParams, storeID)
|
sqlParams = append(sqlParams, storeID)
|
||||||
}
|
}
|
||||||
if len(skuIDs) > 0 {
|
if len(skuIDs) > 0 {
|
||||||
sql += " AND sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, skuIDs)
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
}
|
}
|
||||||
return ExecuteSQL(db, sql, sqlParams...)
|
return ExecuteSQL(db, sql, sqlParams...)
|
||||||
@@ -254,13 +254,16 @@ func SetStoreCategorySyncStatus(db *DaoDB, vendorID, storeID int, catIDs []int,
|
|||||||
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
||||||
sql := fmt.Sprintf(`
|
sql := fmt.Sprintf(`
|
||||||
UPDATE store_sku_category_map
|
UPDATE store_sku_category_map
|
||||||
SET %s_sync_status = %s_sync_status | ?
|
SET %s_sync_status = IF(deleted_at = ?, %s_sync_status | ?, 0)
|
||||||
WHERE deleted_at = ? AND store_id = ?
|
|
||||||
`, fieldPrefix, fieldPrefix)
|
`, fieldPrefix, fieldPrefix)
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
syncStatus,
|
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
storeID,
|
syncStatus,
|
||||||
|
}
|
||||||
|
sql += " WHERE 1 = 1"
|
||||||
|
if storeID > 0 {
|
||||||
|
sql += " AND store_id = ?"
|
||||||
|
sqlParams = append(sqlParams, storeID)
|
||||||
}
|
}
|
||||||
if len(catIDs) > 0 {
|
if len(catIDs) > 0 {
|
||||||
sql += " AND category_id IN (" + GenQuestionMarks(len(catIDs)) + ")"
|
sql += " AND category_id IN (" + GenQuestionMarks(len(catIDs)) + ")"
|
||||||
|
|||||||
@@ -58,6 +58,12 @@ func (*StoreSkuCategoryMap) TableUnique() [][]string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*StoreSkuCategoryMap) TableIndex() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"CategoryID", "StoreID", "DeletedAt"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type StoreSkuBind struct {
|
type StoreSkuBind struct {
|
||||||
ModelIDCULD
|
ModelIDCULD
|
||||||
|
|
||||||
@@ -88,6 +94,12 @@ func (*StoreSkuBind) TableUnique() [][]string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*StoreSkuBind) TableIndex() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"SkuID", "StoreID", "DeletedAt"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type StoreOpRequest struct {
|
type StoreOpRequest struct {
|
||||||
ModelIDCULD // DeletedAt用于表示请求操作结束,而并不一定是删除
|
ModelIDCULD // DeletedAt用于表示请求操作结束,而并不一定是删除
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user