Commit 4fb14eac by 杨树贤
parents ef0347f6 9f88f381
...@@ -22,6 +22,7 @@ type LySku struct { ...@@ -22,6 +22,7 @@ type LySku struct {
Mpq int64 `json:"mpq"` Mpq int64 `json:"mpq"`
Multiple int64 `json:"multiple"` Multiple int64 `json:"multiple"`
Stock int64 `json:"stock"` Stock int64 `json:"stock"`
StockJd int64 `json:"stock_jd"` //京东可售库存
HkDeliveryTime string `json:"hk_delivery_time"` HkDeliveryTime string `json:"hk_delivery_time"`
CnDeliveryTime string `json:"cn_delivery_time"` CnDeliveryTime string `json:"cn_delivery_time"`
LadderPriceResult interface{} `json:"ladder_price"` LadderPriceResult interface{} `json:"ladder_price"`
......
...@@ -313,7 +313,7 @@ func (ls *LyService) LyGoodsDetail(ctx context.Context, params RequestParams, go ...@@ -313,7 +313,7 @@ func (ls *LyService) LyGoodsDetail(ctx context.Context, params RequestParams, go
sku.LadderPriceResult = []int{} sku.LadderPriceResult = []int{}
} }
sku.Stock = ls.GetStock(sku) sku.Stock, sku.StockJd = ls.GetStock(sku)
//判断是否可以购买 //判断是否可以购买
sku.IsBuy = ls.GetIsBuy(sku) sku.IsBuy = ls.GetIsBuy(sku)
......
...@@ -2,6 +2,7 @@ package service ...@@ -2,6 +2,7 @@ package service
import ( import (
"encoding/json" "encoding/json"
"github.com/gogf/gf/util/gconv"
"go_sku_server/model" "go_sku_server/model"
c "go_sku_server/pkg/common" c "go_sku_server/pkg/common"
"go_sku_server/pkg/gredis" "go_sku_server/pkg/gredis"
...@@ -259,26 +260,32 @@ func (ls *LyService) GetIsBuy(sku model.LySku) (isBuy int) { ...@@ -259,26 +260,32 @@ func (ls *LyService) GetIsBuy(sku model.LySku) (isBuy int) {
} }
// 获取库存 // 获取库存
func (ls *LyService) GetStock(sku model.LySku) (stock int64) { func (ls *LyService) GetStock(sku model.LySku) (stock_all, jd_stock int64) {
//过期修改库存为0 //过期修改库存为0
if sku.IsExpire == 1 && sku.SupplierId != 17 { if sku.IsExpire == 1 && sku.SupplierId != 17 {
sku.Stock = 0 sku.Stock = 0
} }
stock_all_t := sku.Stock
jd_stock_t := int64(0)
//这里还有一个逻辑 //这里还有一个逻辑
//如果是寄售的数据(source=12),获取的库存还要减去锁库的库存 //如果是寄售的数据(source=12),获取的库存还要减去锁库的库存
if sku.Source == 12 || php2go.InArray(sku.Canal, []string{"L0018319", "L0013521", "L0018562", "L0017764", "L0003270", "L0012413", "L0013521"}) { if sku.Source == 12 || php2go.InArray(sku.Canal, []string{"L0018319", "L0013521", "L0018562", "L0017764", "L0003270", "L0012413", "L0013521"}) {
//获取锁库库存 //获取锁库库存
redisCon := gredis.Conn("spu") redisCon := gredis.Conn("spu")
defer redisCon.Close() defer redisCon.Close()
stockStr, _ := redis.String(redisCon.Do("HGET", "sku_lock_stock", sku.GoodsId)) stockStr, _ := redis.String(redisCon.Do("HGET", "sku_lock_stock", sku.GoodsId))
lockStock, _ := strconv.ParseInt(stockStr, 10, 64) lockStock, _ := strconv.ParseInt(stockStr, 10, 64)
if sku.Stock < lockStock { if sku.Stock < lockStock {
return 0 stock_all_t = 0
} else { } else {
return sku.Stock - lockStock stock_all_t = sku.Stock - lockStock
} }
//获取京东库存
jdStockShiwuStr, _ := redis.String(redisCon.Do("HGET", "sku_jd_stock", sku.GoodsId)) // 京东单个sku实物总数量
jdStockLockStr, _ := redis.String(redisCon.Do("HGET", "sku_lock_stock_jd", sku.GoodsId)) //京东锁库数量
jd_stock_t = gconv.Int64(jdStockShiwuStr) - gconv.Int64(jdStockLockStr)
} }
return sku.Stock return stock_all_t, jd_stock_t
} }
// 合并spu的信息 // 合并spu的信息
......
package service package service
import ( import (
"go_sku_server/model" "go_sku_server/model"
"go_sku_server/pkg/gredis" "go_sku_server/pkg/gredis"
"go_sku_server/pkg/logger" "go_sku_server/pkg/logger"
"go_sku_server/pkg/mongo" "go_sku_server/pkg/mongo"
"go_sku_server/pkg/vars" "go_sku_server/pkg/vars"
"time" "time"
"github.com/gogf/gf/util/gconv" "github.com/gogf/gf/util/gconv"
"github.com/gomodule/redigo/redis" "github.com/gomodule/redigo/redis"
"github.com/syyongx/php2go" "github.com/syyongx/php2go"
"gopkg.in/mgo.v2" "gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
// 在途库存服务 // 在途库存服务
type StockInfoService struct { type StockInfoService struct {
} }
// 这个是老的在途库存,基本上就是Digikey用的 // 这个是老的在途库存,基本上就是Digikey用的
func (ss *LyService) getStockInfo(supplierId, oldGoodsId int64) interface{} { func (ss *LyService) getStockInfo(supplierId, oldGoodsId int64) interface{} {
if !php2go.InArray(supplierId, vars.StockInfoSupplierIds) { if !php2go.InArray(supplierId, vars.StockInfoSupplierIds) {
return nil return nil
} }
var stockInfo model.StockInfo var stockInfo model.StockInfo
//去mongodb获取在途库存信息 //去mongodb获取在途库存信息
mongodb := mongo.Conn("default") mongodb := mongo.Conn("default")
defer func() { defer func() {
mongodb.Close() mongodb.Close()
}() }()
//还要判断去哪个集合取值 //还要判断去哪个集合取值
collectionName := vars.StockInfoSupplierMap[supplierId] collectionName := vars.StockInfoSupplierMap[supplierId]
type Goods struct { type Goods struct {
StockInfo model.StockInfo `bson:"stock_info"` StockInfo model.StockInfo `bson:"stock_info"`
} }
var goods Goods var goods Goods
err := mongodb.DB("ichunt").C(collectionName).Find(bson.M{"goods_id": int(oldGoodsId)}).One(&goods) err := mongodb.DB("ichunt").C(collectionName).Find(bson.M{"goods_id": int(oldGoodsId)}).One(&goods)
if err != nil && err != mgo.ErrNotFound { if err != nil && err != mgo.ErrNotFound {
logger.Select("sku_query").Error(err.Error()) logger.Select("sku_query").Error(err.Error())
} }
stockInfo = goods.StockInfo stockInfo = goods.StockInfo
if stockInfo.PeriodTime > 0 { if stockInfo.PeriodTime > 0 {
stockInfo.PeriodTimeFormat = time.Unix(int64(stockInfo.PeriodTime), 0).Format("2006-01-02") stockInfo.PeriodTimeFormat = time.Unix(int64(stockInfo.PeriodTime), 0).Format("2006-01-02")
} }
if stockInfo.Stock != 0 || stockInfo.PeriodTime != 0 { if stockInfo.Stock != 0 || stockInfo.PeriodTime != 0 {
return stockInfo return stockInfo
} }
return nil return nil
} }
// 获取新的在途库存 // 获取新的在途库存
func (ss *LyService) getOnwayStock(goodsId string) int { func (ss *LyService) getOnwayStock(goodsId string) int {
redisConn := gredis.Conn("search_r") redisConn := gredis.Conn("spu")
defer func() { defer func() {
redisConn.Close() redisConn.Close()
}() }()
onWayStockStr, _ := redis.String(redisConn.Do("HGET", "sku_onway_stock", goodsId)) onWayStockStr, _ := redis.String(redisConn.Do("HGET", "sku_onway_stock", goodsId))
if onWayStockStr == "" { if onWayStockStr == "" {
return 0 return 0
} }
return gconv.Int(onWayStockStr) return gconv.Int(onWayStockStr)
} }
// 获取新的在途库存 // 获取新的在途库存
func (ss *LyService) getLimitStock(goodsId string) (has bool, stock int) { func (ss *LyService) getLimitStock(goodsId string) (has bool, stock int) {
redisConn := gredis.Conn("search_r") redisConn := gredis.Conn("search_r")
defer func() { defer func() {
redisConn.Close() redisConn.Close()
}() }()
limitStockStr, _ := redis.String(redisConn.Do("HGET", "limit_stock", goodsId)) limitStockStr, _ := redis.String(redisConn.Do("HGET", "limit_stock", goodsId))
if limitStockStr == "" { if limitStockStr == "" {
return false, 0 return false, 0
} }
return true, gconv.Int(limitStockStr) return true, gconv.Int(limitStockStr)
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment