刷新物料店库存,商品上下架

This commit is contained in:
苏尹岚
2020-03-10 13:53:11 +08:00
parent 182b7dad31
commit 171ed76f87
11 changed files with 112 additions and 31 deletions

View File

@@ -888,7 +888,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
}
}
}
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
if err = err2; err == nil {
for _, v := range skuList {
sku := &v.Sku
@@ -959,7 +959,7 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
return 0, err
}
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
if err = err2; err == nil {
for _, v := range skuList {
sku := &v.Sku
@@ -1407,7 +1407,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
payload["exPrefixEnd"] = nil
_, err = UpdateSkuName(ctx, nameID, payload, false)
} else {
skuList, err := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
skuList, err := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
if err == nil && len(skuList) > 0 {
if skuList[0].ExPrefixBegin != nil {
_, err = UpdateSkuName(ctx, nameID, payload, false)
@@ -1440,7 +1440,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
case 1:
if (now.Sub(toTimeP) <= 0 && now.Sub(fromTimeP) >= 0) || (now.Sub(fromTimeP) > 0 && now.Sub(toTimeP) > 0) {
var skuIDs []int
skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil)
skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil, nil)
if err = err2; err == nil {
if len(skuList) > 0 {
for _, v := range skuList {

View File

@@ -192,9 +192,10 @@ type tUpdateSkuSpecTag struct {
}
type MatterStock struct {
SkuID int `json:"skuID"`
Name string `json:"name"`
Stock int `json:"stock"`
SkuID int `json:"skuID"`
SkuNameID int `json:"skuNameID"`
Name string `json:"name"`
Stock int `json:"stock"`
}
const (
@@ -2406,7 +2407,7 @@ func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNam
var skuList []*model.SkuAndName
storeSkuSyncInfo, _ := dao.GetStoreSkusAndSkuName(db, []int{storeID}, nil, []int{v.ID})
for _, storeSkuSync := range storeSkuSyncInfo {
sku, _ := dao.GetSkus(db, []int{storeSkuSync.ID}, nil, nil, nil)
sku, _ := dao.GetSkus(db, []int{storeSkuSync.ID}, nil, nil, nil, nil)
sku[0].Price = int(storeSkuSync.Price)
skuList = append(skuList, sku...)
}
@@ -3019,7 +3020,7 @@ func FocusStoreSkusByExcelBin(ctx *jxcontext.Context, reader io.Reader, isAsync,
for k, _ := range skuMap {
skuIDs = append(skuIDs, k)
}
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil, nil)
storeList, err := dao.GetStoreList(db, nil, nil, nil, nil, "")
if err != nil && len(skuList) == 0 {
return result, err
@@ -3132,7 +3133,7 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBindInf
if err != nil {
return retVal, err
}
skuList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil)
skuList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil)
if err != nil {
return retVal, err
}
@@ -3318,7 +3319,7 @@ func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync
}
var skuBindSkuList []*StoreSkuBindSkuInfo
skuMap := make(map[int]int)
skuList, _ := dao.GetSkus(db, nil, []int{v.NameID}, nil, nil)
skuList, _ := dao.GetSkus(db, nil, []int{v.NameID}, nil, nil, nil)
if len(v.Skus) != len(skuList) {
for _, skus := range v.Skus {
skuMap[skus.SkuID] = 1
@@ -3624,7 +3625,7 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
}
err = dao.GetRows(db, &cats, sql, sqlParams...)
if len(cats) > 0 {
skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil)
skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil, nil)
if err != nil || len(skus) == 0 {
return result, fmt.Errorf("没有找到该京西skuID,京西skuID :[%v]", cats[0].ThingID)
}
@@ -3684,7 +3685,7 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
var (
pricePercentagePack []*model.PricePercentageItem
)
skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil)
skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil, nil)
if len(skus) == 0 {
continue
}
@@ -3837,7 +3838,7 @@ func getSkuNamePrice(db *dao.DaoDB, skuID int, orgPrice int64) (price int64, nam
var (
specQuality float64
)
skuList, _ := dao.GetSkus(db, []int{skuID}, nil, nil, nil)
skuList, _ := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil)
for _, v := range skuList {
if v.Unit == model.SpecialUnit {
if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] {
@@ -3934,7 +3935,74 @@ func ReturnStoreSkuBind(ctx *jxcontext.Context, snapshotAt string, storeIDs, sku
return err
}
func RefreshMatterStock(ctx *jxcontext.Context, skuID int) (matterStock []*MatterStock, err error) {
// api.JdEclpAPI.SearchShopStock(searchShopStockParam)
return matterStock, err
func RefreshMatterStock(ctx *jxcontext.Context, skuID int) (err error) {
var (
db = dao.GetDB()
skuBindInfos []*StoreSkuBindInfo
)
if skuID != 0 {
skus, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil)
if err != nil || len(skus) == 0 {
return err
}
result, err := api.JdEclpAPI.SearchShopStock(skus[0].EclpID)
if err != nil || result == nil {
return err
}
var isSale = 0
if utils.Str2Int64(result.Data[0].StockNum) > 0 {
isSale = 1
} else {
isSale = -1
}
storeSkuList, _ := dao.GetStoresSkusInfo(db, nil, []int{skuID})
for _, vv := range storeSkuList {
var storeSkuBindSkus []*StoreSkuBindSkuInfo
storeSkuBindSku := &StoreSkuBindSkuInfo{
SkuID: vv.SkuID,
IsSale: isSale,
}
storeSkuBindSkus = append(storeSkuBindSkus, storeSkuBindSku)
storeSkuBind := &StoreSkuBindInfo{
StoreID: vv.StoreID,
// NameID: v.SkuNameID,
Skus: storeSkuBindSkus,
}
skuBindInfos = append(skuBindInfos, storeSkuBind)
}
} else {
result, err := api.JdEclpAPI.SearchShopStock("")
if err != nil {
return err
}
for _, v := range result.Data {
skus, err := dao.GetSkus(db, nil, nil, nil, nil, []string{v.GoodsNo})
if err != nil || len(skus) == 0 {
continue
}
var isSale = 0
if utils.Str2Int64(result.Data[0].StockNum) > 0 {
isSale = 1
} else {
isSale = -1
}
storeSkuList, _ := dao.GetStoresSkusInfo(db, nil, []int{skus[0].ID})
for _, vv := range storeSkuList {
var storeSkuBindSkus []*StoreSkuBindSkuInfo
storeSkuBindSku := &StoreSkuBindSkuInfo{
SkuID: vv.SkuID,
IsSale: isSale,
}
storeSkuBindSkus = append(storeSkuBindSkus, storeSkuBindSku)
storeSkuBind := &StoreSkuBindInfo{
StoreID: vv.StoreID,
// NameID: v.SkuNameID,
Skus: storeSkuBindSkus,
}
skuBindInfos = append(skuBindInfos, storeSkuBind)
}
}
}
UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true)
return err
}

View File

@@ -433,7 +433,7 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin
func FilterJxDepotUnSaleSkuID() {
db := dao.GetDB()
filterJxDepotUnSaleSkuIds = filterJxDepotUnSaleSkuIds[0:0]
skuList, _ := dao.GetSkus(db, filterVendorDepotUnSaleSkuIds, []int{}, []int{}, []int{})
skuList, _ := dao.GetSkus(db, filterVendorDepotUnSaleSkuIds, []int{}, []int{}, []int{}, nil)
filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList)
for skuid, jxSkuInfo := range filterJxSkuInfoMap2 {
//过滤掉平台库下架,且京西库下架的商品,为下面比较门店商品用
@@ -456,7 +456,7 @@ func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool
FilterJxDepotUnSaleSkuID()
filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(skuNameInfoList)
skuNameInfoList = skuNameInfoList[0:0]
skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{})
skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{}, nil)
filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList)
for skuid, jxSkuInfo := range filterJxSkuInfoMap2 {
var jxSkuDetailName string

View File

@@ -133,7 +133,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
//输出商品销量统计结果
skuAndNameMapData := make(map[int]*model.SkuAndName)
if len(storeSkuMapData) < len(citySkuIDs) {
skuAndNameList, err := dao.GetSkus(db, citySkuIDs, nil, nil, nil)
skuAndNameList, err := dao.GetSkus(db, citySkuIDs, nil, nil, nil, nil)
if err == nil {
for _, value := range skuAndNameList {
skuAndNameMapData[value.ID] = value
@@ -149,7 +149,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
if storeSkuInfo != nil {
skuName := storeSkuInfo.SkuName
skuInfo := storeSkuInfo.Skus[0]
storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0,skuName.ExPrefix,skuName.ExPrefixBegin,skuName.ExPrefixEnd)
storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0, skuName.ExPrefix, skuName.ExPrefixBegin, skuName.ExPrefixEnd)
storeSkuSales.SkuImage = storeSkuInfo.Img
storeSkuSales.SkuPrice = jxutils.IntPrice2StandardCurrencyString(int64(storeSkuInfo.Skus[0].BindPrice))
} else if skuAndNameInfo != nil {
@@ -159,7 +159,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
storeSkuSales.SkuImage = skuNameList[0].Img
prefix = skuNameList[0].Prefix
}
storeSkuSales.SkuName = jxutils.ComposeSkuName(prefix, skuAndNameInfo.Name, skuAndNameInfo.Comment, skuAndNameInfo.Unit, skuAndNameInfo.SpecQuality, skuAndNameInfo.SpecUnit, 0,skuAndNameInfo.ExPrefix,skuAndNameInfo.ExPrefixBegin,skuAndNameInfo.ExPrefixEnd)
storeSkuSales.SkuName = jxutils.ComposeSkuName(prefix, skuAndNameInfo.Name, skuAndNameInfo.Comment, skuAndNameInfo.Unit, skuAndNameInfo.SpecQuality, skuAndNameInfo.SpecUnit, 0, skuAndNameInfo.ExPrefix, skuAndNameInfo.ExPrefixBegin, skuAndNameInfo.ExPrefixEnd)
storeSkuSales.SkuPrice = "N/A"
} else {
storeSkuSales.SkuName = "N/A"

View File

@@ -312,7 +312,7 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
//如果微盟商品里找得到excel中的商品
if skuMap[spuCode] != nil {
//获取京西库商品
skuList, _ := dao.GetSkus(db, nil, []int{int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode))}, nil, nil)
skuList, _ := dao.GetSkus(db, nil, []int{int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode))}, nil, nil, nil)
if len(skuList) == 0 {
outPutData := DataFailed{
GoodsID: spuCode,

View File

@@ -307,7 +307,7 @@ func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int, skuNameID int, sn
totalCount = GetLastTotalRowCount(db)
}
for _, v := range priceReferSnapshot {
skuList, err2 := GetSkus(db, []int{v.SkuID}, nil, nil, nil)
skuList, err2 := GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
err = err2
if len(skuList) > 0 {
skuAndName := skuList[0]

View File

@@ -76,7 +76,7 @@ func GetCategories(db *DaoDB, parentID, level int, catIDs []int, isExd bool) (ca
return cats, GetRows(db, &cats, sql, params)
}
func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int) (skuList []*model.SkuAndName, err error) {
func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int, eclpIDs []string) (skuList []*model.SkuAndName, err error) {
sql := `
SELECT t1.*, t2.name, t2.unit, t2.prefix, t2.is_spu, t2.ex_prefix, t2.ex_prefix_begin, t2.ex_prefix_end
FROM sku t1
@@ -110,6 +110,10 @@ func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int) (skuList []*mode
sqlWhere += " OR t3p.id IN (" + GenQuestionMarks(len(catIDs)) + ") )"
sqlParams = append(sqlParams, catIDs, catIDs)
}
if len(eclpIDs) > 0 {
sqlWhere += " AND t1.eclp_id IN (" + GenQuestionMarks(len(eclpIDs)) + ") AND t2.status IN (" + GenQuestionMarks(len(statuss)) + ")"
sqlParams = append(sqlParams, eclpIDs)
}
sql += sqlWhere
if err = GetRows(db, &skuList, sql, sqlParams...); err == nil {
return skuList, nil
@@ -137,7 +141,7 @@ func GetSkuNames(db *DaoDB, nameIDs []int) (skuNameList []*model.SkuName, err er
}
func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) {
skuList, err := GetSkus(db, nil, nameIDs, nil, nil)
skuList, err := GetSkus(db, nil, nameIDs, nil, nil, nil)
if err == nil {
for _, sku := range skuList {
skuIDs = append(skuIDs, sku.ID)
@@ -147,7 +151,7 @@ func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) {
}
func GetSkuByCats(db *DaoDB, catIDs []int) (skuList []*model.Sku, err error) {
skuExList, err := GetSkus(db, nil, nil, nil, catIDs)
skuExList, err := GetSkus(db, nil, nil, nil, catIDs, nil)
if err == nil {
for _, v := range skuExList {
skuList = append(skuList, &v.Sku)

View File

@@ -451,7 +451,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
}
}
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil, nil)
if err != nil {
return nil, nil, err
}
@@ -613,7 +613,7 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
return err
}
for _, v := range goods[0].Skus {
skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil)
skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
if err != nil || len(skus) == 0 {
continue
}

View File

@@ -40,7 +40,7 @@ func updateFoodRecipeItemAndStep(ctx *jxcontext.Context, db *dao.DaoDB, recipeID
if len(v.SkuIDs) == 0 {
return fmt.Errorf("SkuIDs必须要有值")
}
skuIDs, err2 := dao.GetSkus(db, v.SkuIDs, nil, nil, nil)
skuIDs, err2 := dao.GetSkus(db, v.SkuIDs, nil, nil, nil, nil)
if err = err2; err != nil {
return err
}

View File

@@ -756,7 +756,7 @@ func (c *StoreSkuController) ReturnStoreSkuBind() {
// @router /RefreshMatterStock [post]
func (c *StoreSkuController) RefreshMatterStock() {
c.callRefreshMatterStock(func(params *tStoreSkuRefreshMatterStockParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.RefreshMatterStock(params.Ctx, 0)
err = cms.RefreshMatterStock(params.Ctx, 0)
return retVal, "", err
})
}

View File

@@ -1953,6 +1953,15 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
beego.ControllerComments{
Method: "RefreshMatterStock",
Router: `/RefreshMatterStock`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
beego.ControllerComments{
Method: "RefreshStoresSkuByVendor",