- check sale city in updateStoresSkusWithoutSync(use checkStoresSkusSaleCity)

This commit is contained in:
gazebo
2018-11-29 10:30:32 +08:00
parent 9e276a01c9
commit a2a85b091b

View File

@@ -1,6 +1,7 @@
package cms
import (
"errors"
"fmt"
"strconv"
"time"
@@ -260,8 +261,51 @@ func UpdateStoresSkus(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*St
return num, err
}
func checkStoresSkusSaleCity(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (err error) {
sql := `
SELECT t1.id store_id, t2.id name_id, t2.name
FROM store t1
JOIN sku_name t2 ON t2.is_global = 0
LEFT JOIN sku_name_place_bind t3 ON t2.id = t3.name_id AND t1.city_code = t3.place_code
WHERE t3.id IS NULL
`
sql += " AND t1.id IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")"
nameIDs := make([]int, 0)
for _, v := range skuBindInfos {
if v.IsFocus == 1 {
nameIDs = append(nameIDs, v.NameID)
} else {
for _, v2 := range v.Skus {
if v2.IsSale == 1 {
nameIDs = append(nameIDs, v.NameID)
break
}
}
}
}
sql += " AND t2.id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
var invalidList []*struct {
StoreID int `orm:"column(store_id)"`
NameID int `orm:"column(name_id)"`
Name string
}
if err = dao.GetRows(db, &invalidList, sql, storeIDs, nameIDs); err == nil {
if len(invalidList) > 0 {
errMsg := ""
for _, v := range invalidList {
errMsg += fmt.Sprintf("门店:%dName:%d(%s)销售区域错误!\n", v.StoreID, v.NameID, v.Name)
}
err = errors.New(errMsg)
}
}
return err
}
func updateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (needSyncSkus []int, err error) {
db := dao.GetDB()
if err = checkStoresSkusSaleCity(ctx, db, storeIDs, skuBindInfos); err != nil {
return nil, err
}
userName := ctx.GetUserName()
needSyncIDMap := make(map[int]int)
dao.Begin(db)