Merge remote-tracking branch 'origin/mark' into yonghui

This commit is contained in:
苏尹岚
2019-12-11 18:12:33 +08:00
17 changed files with 325 additions and 323 deletions

View File

@@ -1231,12 +1231,12 @@ func DeleteSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName
return num, err return num, err
} }
func GetVendorSku(ctx *jxcontext.Context, vendorID int, vendorOrgCode, vendorSkuID string) (skuNameInfo *model.SkuNameExt, err error) { // func GetVendorSku(ctx *jxcontext.Context, vendorID int, vendorOrgCode, vendorSkuID string) (skuNameInfo *model.SkuNameExt, err error) {
if handler := CurVendorSync.GetMultiStoreHandler(vendorID); handler != nil { // if handler := CurVendorSync.GetMultiStoreHandler(vendorID); handler != nil {
return handler.ReadSku(ctx, vendorOrgCode, vendorSkuID) // return handler.ReadSku(ctx, vendorOrgCode, vendorSkuID)
} // }
return nil, ErrCanNotFindVendor // return nil, ErrCanNotFindVendor
} // }
func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err error) { func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err error) {
db := dao.GetDB() db := dao.GetDB()

View File

@@ -55,15 +55,17 @@ type StoreExt struct {
FloatLng float64 `json:"lng"` FloatLng float64 `json:"lng"`
FloatLat float64 `json:"lat"` FloatLat float64 `json:"lat"`
ProvinceCode int `json:"provinceCode"` ProvinceCode int `json:"provinceCode"`
ProvinceName string `json:"provinceName"` ProvinceName string `json:"provinceName"`
CityName string `json:"cityName"` CityName string `json:"cityName"`
DistrictName string `json:"districtName"` DistrictName string `json:"districtName"`
StoreMapStr string `json:"-"` StoreMapStr string `json:"-"`
CourierMapStr string `json:"-"` CourierMapStr string `json:"-"`
PayeeBankName string `json:"payeeBankName"` // 开户行名称 PayeeBankName string `json:"payeeBankName"` // 开户行名称
StoreMaps []map[string]interface{} `orm:"-"` // StoreMaps []map[string]interface{} `orm:"-"`
CourierMaps []map[string]interface{} `orm:"-"` // CourierMaps []map[string]interface{} `orm:"-"`
StoreMaps []*model.StoreMap `json:"StoreMaps"`
CourierMaps []*model.StoreCourierMap `json:"CourierMaps"`
OrderCount int `json:"orderCount"` OrderCount int `json:"orderCount"`
} }
@@ -404,10 +406,10 @@ func setStoreMapInfo(ctx *jxcontext.Context, db *dao.DaoDB, storesInfo *StoresIn
v.Licence2Image = "" v.Licence2Image = ""
} }
for _, v2 := range storeMapMap[v.ID] { for _, v2 := range storeMapMap[v.ID] {
v.StoreMaps = append(v.StoreMaps, utils.Struct2FlatMap(v2)) v.StoreMaps = append(v.StoreMaps, v2)
} }
for _, v2 := range storeCourierMap[v.ID] { for _, v2 := range storeCourierMap[v.ID] {
v.CourierMaps = append(v.CourierMaps, utils.Struct2FlatMap(v2)) v.CourierMaps = append(v.CourierMaps, v2)
} }
} }
return nil return nil
@@ -1188,7 +1190,6 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
return 0, err return 0, err
} }
if num > 0 { if num > 0 {
// TODO 重算京西商城价
if vendorID != model.VendorIDJX { if vendorID != model.VendorIDJX {
if valid["pricePercentage"] != nil || valid["pricePercentagePack"] != nil { if valid["pricePercentage"] != nil || valid["pricePercentagePack"] != nil {
storeSkuBind := &model.StoreSkuBind{} storeSkuBind := &model.StoreSkuBind{}

View File

@@ -17,6 +17,7 @@ import (
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api/apimanager"
) )
const ( const (
@@ -96,8 +97,9 @@ var (
diffData DiffDataLock diffData DiffDataLock
depotDiffData DeoptDiffDataLock depotDiffData DeoptDiffDataLock
multiStoreAllSkuInfoMap map[int]map[int]*partner.SkuNameInfo multiStoreAllSkuInfoMap map[int]map[string]map[int]*partner.SkuNameInfo
multiStoreAllSkuInfoList map[int][]*partner.StoreSkuInfo multiStoreAllSkuInfoList map[int]map[string][]*partner.StoreSkuInfo
skuNameInfoList []*partner.SkuNameInfo skuNameInfoList []*partner.SkuNameInfo
filterVendorDepotUnSaleSkuIds []int filterVendorDepotUnSaleSkuIds []int
filterJxDepotUnSaleSkuIds []int filterJxDepotUnSaleSkuIds []int
@@ -166,16 +168,22 @@ func (d *DiffDataLock) InitData() {
} }
func InitMultiStoreData() { func InitMultiStoreData() {
multiStoreAllSkuInfoMap = make(map[int]map[int]*partner.SkuNameInfo) multiStoreAllSkuInfoMap = make(map[int]map[string]map[int]*partner.SkuNameInfo)
multiStoreAllSkuInfoList = make(map[int][]*partner.StoreSkuInfo) multiStoreAllSkuInfoList = make(map[int]map[string][]*partner.StoreSkuInfo)
} }
func GetMultiStoreAllSkuInfoMap(vendorID int) map[int]*partner.SkuNameInfo { func GetMultiStoreAllSkuInfoMap(vendorID int, vendorOrgCode string) (retVal map[int]*partner.SkuNameInfo) {
return multiStoreAllSkuInfoMap[vendorID] if multiStoreAllSkuInfoMap[vendorID] != nil {
retVal = multiStoreAllSkuInfoMap[vendorID][vendorOrgCode]
}
return retVal
} }
func GetMultiStoreAllSkuInfoList(vendorID int) []*partner.StoreSkuInfo { func GetMultiStoreAllSkuInfoList(vendorID int, vendorOrgCode string) (retVal []*partner.StoreSkuInfo) {
return multiStoreAllSkuInfoList[vendorID] if multiStoreAllSkuInfoList[vendorID] != nil {
retVal = multiStoreAllSkuInfoList[vendorID][vendorOrgCode]
}
return retVal
} }
//过滤掉平台下架的 //过滤掉平台下架的
@@ -202,23 +210,26 @@ func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) {
} }
if partner.IsMultiStore(vendorID) { if partner.IsMultiStore(vendorID) {
multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler) multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler)
allSkuNameInfoList, err := multiHandler.GetSkus(ctx, 0, "", "") for _, vendorOrgCode := range apimanager.CurAPIManager.GetAppOrgCodeList(vendorID) {
skuNameInfoList = allSkuNameInfoList allSkuNameInfoList, err := multiHandler.GetSkus(ctx, vendorOrgCode, 0, "")
if err != nil { skuNameInfoList = allSkuNameInfoList
baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err) if err != nil {
} else { baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err)
multiStoreAllSkuInfoList[vendorID] = StoreSkuFullList2BareFilter(allSkuNameInfoList) //map[平台ID[]StoreSkuInfo1,StoreSkuInfo2...] } else {
tempMap := make(map[int]*partner.SkuNameInfo) multiStoreAllSkuInfoList[vendorID][vendorOrgCode] = StoreSkuFullList2BareFilter(allSkuNameInfoList) //map[平台ID[]StoreSkuInfo1,StoreSkuInfo2...]
for _, value := range allSkuNameInfoList { tempMap := make(map[int]*partner.SkuNameInfo)
for _, skuInfo := range value.SkuList { for _, value := range allSkuNameInfoList {
//表示平台商品库未下架的 for _, skuInfo := range value.SkuList {
if skuInfo.Status > model.SkuStatusDontSale { //表示平台商品库未下架的
filterVendorDepotUnSaleSkuIds = append(filterVendorDepotUnSaleSkuIds, skuInfo.SkuID) if skuInfo.Status > model.SkuStatusDontSale {
tempMap[skuInfo.SkuID] = value filterVendorDepotUnSaleSkuIds = append(filterVendorDepotUnSaleSkuIds, skuInfo.SkuID)
tempMap[skuInfo.SkuID] = value
}
} }
} }
multiStoreAllSkuInfoMap[vendorID] = make(map[string]map[int]*partner.SkuNameInfo)
multiStoreAllSkuInfoMap[vendorID][vendorOrgCode] = tempMap //map[平台ID][map[skuID1SkuNameInfo1skuID2SkuNameInfo2]...]
} }
multiStoreAllSkuInfoMap[vendorID] = tempMap //map[平台ID][map[skuID1SkuNameInfo1skuID2SkuNameInfo2]...]
} }
} }
} }
@@ -254,8 +265,8 @@ func GetFilterJxSkuInfoMap2(jxSkuInfoList []*model.SkuAndName) map[int]*model.Sk
return filterVendorSkuInfoMap return filterVendorSkuInfoMap
} }
func GetFilterMultiStoreSkuInfoMap(vendorID int, skuInfoList []*partner.StoreSkuInfo) map[int]*partner.SkuNameInfo { func GetFilterMultiStoreSkuInfoMap(vendorID int, vendorOrgCode string, skuInfoList []*partner.StoreSkuInfo) map[int]*partner.SkuNameInfo {
allSkuInfoMap := GetMultiStoreAllSkuInfoMap(vendorID) allSkuInfoMap := GetMultiStoreAllSkuInfoMap(vendorID, vendorOrgCode)
filterSkuInfoMap := make(map[int]*partner.SkuNameInfo) filterSkuInfoMap := make(map[int]*partner.SkuNameInfo)
for _, value := range skuInfoList { for _, value := range skuInfoList {
if value.Stock > 0 { if value.Stock > 0 {
@@ -276,10 +287,10 @@ func GetFilterStoreList(storeList []*StoreExt, vendorMap, storeIDMap map[int]boo
} }
} }
if storeInfo.StoreMaps != nil { if storeInfo.StoreMaps != nil {
var tempStoreMaps []map[string]interface{} var tempStoreMaps []*model.StoreMap
for _, vendorStoreInfo := range storeInfo.StoreMaps { for _, vendorStoreInfo := range storeInfo.StoreMaps {
vendorID := int(utils.MustInterface2Int64(vendorStoreInfo["vendorID"])) vendorID := vendorStoreInfo.VendorID
isSyncStoreSku := int(utils.MustInterface2Int64(vendorStoreInfo["isSync"])) isSyncStoreSku := int(vendorStoreInfo.IsSync)
if isSyncStoreSku == 0 { if isSyncStoreSku == 0 {
continue continue
} }
@@ -548,7 +559,7 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int,
var filterJxSkuInfoMapSingle map[int]*dao.StoreSkuNameExt var filterJxSkuInfoMapSingle map[int]*dao.StoreSkuNameExt
var filterJxSkuInfoMapMulti map[int]*dao.StoreSkuNameExt var filterJxSkuInfoMapMulti map[int]*dao.StoreSkuNameExt
for _, vendorListValue := range jxStoreInfoListValue.StoreMaps { for _, vendorListValue := range jxStoreInfoListValue.StoreMaps {
vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) vendorID := vendorListValue.VendorID
var flag = false var flag = false
if partner.IsMultiStore(vendorID) { if partner.IsMultiStore(vendorID) {
if flag == false { if flag == false {
@@ -564,18 +575,17 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int,
} }
} }
vendorStoreID := utils.Interface2String(vendorListValue["vendorStoreID"]) vendorStoreID := vendorListValue.VendorStoreID
baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue)
if partner.IsMultiStore(vendorID) { if partner.IsMultiStore(vendorID) {
singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler)
allSkuInfoList := GetMultiStoreAllSkuInfoList(vendorID) allSkuInfoList := GetMultiStoreAllSkuInfoList(vendorID, vendorListValue.VendorOrgCode)
// TODO vendorOrgCode skuBareInfoList, err := singleStoreHandler.GetStoreSkusBareInfo(ctx, vendorListValue.VendorOrgCode, task, storeID, vendorStoreID, allSkuInfoList)
skuBareInfoList, err := singleStoreHandler.GetStoreSkusBareInfo(ctx, "", task, storeID, vendorStoreID, allSkuInfoList)
if err != nil { if err != nil {
baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusBareInfo error:%v", err) baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusBareInfo error:%v", err)
} else if len(skuBareInfoList) > 0 { } else if len(skuBareInfoList) > 0 {
filterSkuInfoMap := GetFilterMultiStoreSkuInfoMap(vendorID, skuBareInfoList) //map[京东商品ID:SkuNameInfo] filterSkuInfoMap := GetFilterMultiStoreSkuInfoMap(vendorID, vendorListValue.VendorOrgCode, skuBareInfoList) //map[京东商品ID:SkuNameInfo]
CompareJxAndVendor(vendorID, storeIDStr, vendorStoreID, storeName, filterJxSkuInfoMapMulti, filterSkuInfoMap) CompareJxAndVendor(vendorID, storeIDStr, vendorStoreID, storeName, filterJxSkuInfoMapMulti, filterSkuInfoMap)
} }
} else { } else {

View File

@@ -103,13 +103,13 @@ func (s *StoreListQueueData) TransferWaitQueueToProcessQueue() {
} }
} }
func AddOrDelExtraStoreOptime(ctx *jxcontext.Context, vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, startOpStoreTime, endOpStoreTime int16, needAddTime bool) bool { func AddOrDelExtraStoreOptime(ctx *jxcontext.Context, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeInfo *model.Store, startOpStoreTime, endOpStoreTime int16, needAddTime bool) bool {
opTimeList := storeInfo.GetOpTimeList() opTimeList := storeInfo.GetOpTimeList()
if needAddTime { if needAddTime {
opTimeList = []int16{startOpStoreTime, endOpStoreTime} opTimeList = []int16{startOpStoreTime, endOpStoreTime}
} }
handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler) handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler)
return handler.UpdateStoreOpTime(ctx, "", storeID, vendorStoreID, opTimeList) == nil // TODO vendorOrgCode应该用传入的值 return handler.UpdateStoreOpTime(ctx, vendorOrgCode, storeID, vendorStoreID, opTimeList) == nil
} }
func GetStockValue(isStart bool) int { func GetStockValue(isStart bool) int {
@@ -142,14 +142,13 @@ func SetSkuStock(isStart bool, storeSkuNameList []*partner.SkuNameInfo) {
} }
} }
func SetSpecialSkuStatus(ctx *jxcontext.Context, storeID, vendorID int, vendorStoreID string, storeSkuNameList []*partner.SkuNameInfo) { func SetSpecialSkuStatus(ctx *jxcontext.Context, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuNameList []*partner.SkuNameInfo) {
singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
for _, skuNameInfo := range storeSkuNameList { for _, skuNameInfo := range storeSkuNameList {
for _, skuInfo := range skuNameInfo.SkuList { for _, skuInfo := range skuNameInfo.SkuList {
if IsSpecialSku(skuNameInfo.Name) || IsSpecialSku(skuInfo.SkuName) { if IsSpecialSku(skuNameInfo.Name) || IsSpecialSku(skuInfo.SkuName) {
storeSkuList := []*partner.StoreSkuInfo{&skuInfo.StoreSkuInfo} storeSkuList := []*partner.StoreSkuInfo{&skuInfo.StoreSkuInfo}
// TODO vendorOrgCode singleStoreHandler.UpdateStoreSkusStatus(ctx, vendorOrgCode, storeID, vendorStoreID, storeSkuList, model.SkuStatusNormal)
singleStoreHandler.UpdateStoreSkusStatus(ctx, "", storeID, vendorStoreID, storeSkuList, model.SkuStatusNormal)
} }
} }
} }
@@ -181,7 +180,7 @@ func GetFilterStoreList(storeList []*cms.StoreExt, vendorMap, storeIDMap map[int
} }
} }
for _, vendorStoreInfo := range storeInfo.StoreMaps { for _, vendorStoreInfo := range storeInfo.StoreMaps {
vendorID := int(utils.MustInterface2Int64(vendorStoreInfo["vendorID"])) vendorID := vendorStoreInfo.VendorID
//filter for vendorID //filter for vendorID
if len(vendorMap) > 0 { if len(vendorMap) > 0 {
if _, ok := vendorMap[vendorID]; !ok { if _, ok := vendorMap[vendorID]; !ok {
@@ -193,7 +192,7 @@ func GetFilterStoreList(storeList []*cms.StoreExt, vendorMap, storeIDMap map[int
} }
temp := *storeInfo temp := *storeInfo
newStoreInfo := &temp newStoreInfo := &temp
newStoreInfo.StoreMaps = []map[string]interface{}{vendorStoreInfo} newStoreInfo.StoreMaps = []*model.StoreMap{vendorStoreInfo}
outStoreList = append(outStoreList, newStoreInfo) outStoreList = append(outStoreList, newStoreInfo)
} }
} }
@@ -224,9 +223,9 @@ func StartOrEndOpStoreEx(ctx *jxcontext.Context, isStart bool, startTime, endTim
storeListValue := batchItemList[0].(*cms.StoreExt) storeListValue := batchItemList[0].(*cms.StoreExt)
storeID := storeListValue.ID storeID := storeListValue.ID
for _, vendorListValue := range storeListValue.StoreMaps { for _, vendorListValue := range storeListValue.StoreMaps {
vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) vendorID := vendorListValue.VendorID
startOpStoreTime := int16(utils.MustInterface2Int64(vendorListValue["fakeOpenStart"])) startOpStoreTime := vendorListValue.FakeOpenStart
endOpStoreTime := int16(utils.MustInterface2Int64(vendorListValue["fakeOpenStop"])) endOpStoreTime := vendorListValue.FakeOpenStop
//startOpStoreTime, endOpStoreTime := GetOpStoreTime(vendorID) //startOpStoreTime, endOpStoreTime := GetOpStoreTime(vendorID)
if startTime != 0 && endTime != 0 { if startTime != 0 && endTime != 0 {
startOpStoreTime = startTime startOpStoreTime = startTime
@@ -236,7 +235,7 @@ func StartOrEndOpStoreEx(ctx *jxcontext.Context, isStart bool, startTime, endTim
if isStart && (startOpStoreTime == 0 || endOpStoreTime == 0) { if isStart && (startOpStoreTime == 0 || endOpStoreTime == 0) {
continue continue
} }
vendorStoreID := utils.Interface2String(vendorListValue["vendorStoreID"]) vendorStoreID := vendorListValue.VendorStoreID
baseapi.SugarLogger.Debugf("StartOrEndOpStore storeID:%d vendorID:%d vendorStoreID:%s", storeID, vendorID, vendorStoreID) baseapi.SugarLogger.Debugf("StartOrEndOpStore storeID:%d vendorID:%d vendorStoreID:%s", storeID, vendorID, vendorStoreID)
singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
storeSkuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil) storeSkuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil)
@@ -244,24 +243,23 @@ func StartOrEndOpStoreEx(ctx *jxcontext.Context, isStart bool, startTime, endTim
baseapi.SugarLogger.Errorf("StartOrEndOpStore GetStoreSkusFullInfo error:%v storeID:%d vendorID:%d vendorStoreID:%s", err, storeID, vendorID, vendorStoreID) baseapi.SugarLogger.Errorf("StartOrEndOpStore GetStoreSkusFullInfo error:%v storeID:%d vendorID:%d vendorStoreID:%s", err, storeID, vendorID, vendorStoreID)
} else { } else {
SetSkuStock(isStart, storeSkuNameList) SetSkuStock(isStart, storeSkuNameList)
SetSpecialSkuStatus(ctx, storeID, vendorID, vendorStoreID, storeSkuNameList) SetSpecialSkuStatus(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, storeSkuNameList)
storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList) storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList)
if vendorID == model.VendorIDMTWM { if vendorID == model.VendorIDMTWM {
storeSkuList = GetFilterStoreSkuList(storeSkuList) storeSkuList = GetFilterStoreSkuList(storeSkuList)
} }
if len(storeSkuList) > 0 { if len(storeSkuList) > 0 {
if !isStart { if !isStart {
AddOrDelExtraStoreOptime(ctx, vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false) AddOrDelExtraStoreOptime(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false)
} }
_, err = putils.FreeBatchStoreSkuInfo("更新门店商品库存", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) { _, err = putils.FreeBatchStoreSkuInfo("更新门店商品库存", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
// TODO vendorOrgCode _, err = singleStoreHandler.UpdateStoreSkusStock(ctx, vendorListValue.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
_, err = singleStoreHandler.UpdateStoreSkusStock(ctx, "", storeID, vendorStoreID, batchedStoreSkuList)
return nil, 0, err return nil, 0, err
}, ctx, task, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true) }, ctx, task, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true)
if isStart { if isStart {
AddOrDelExtraStoreOptime(ctx, vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true) AddOrDelExtraStoreOptime(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true)
} }
} }
} }
@@ -341,8 +339,8 @@ func InitEx() {
if err == nil { if err == nil {
for _, storeInfo := range storeList { for _, storeInfo := range storeList {
for _, vendorStoreInfo := range storeInfo.StoreMaps { for _, vendorStoreInfo := range storeInfo.StoreMaps {
startOpStoreTime := int16(utils.MustInterface2Int64(vendorStoreInfo["fakeOpenStart"])) startOpStoreTime := vendorStoreInfo.FakeOpenStart
endOpStoreTime := int16(utils.MustInterface2Int64(vendorStoreInfo["fakeOpenStop"])) endOpStoreTime := vendorStoreInfo.FakeOpenStop
if startOpStoreTime == 0 || endOpStoreTime == 0 { if startOpStoreTime == 0 || endOpStoreTime == 0 {
continue continue
} }

View File

@@ -263,8 +263,8 @@ func ScoreStoreOpenTime(storeInfo *cms.StoreExt) {
finalScore := 0 finalScore := 0
if isStoreOpen { if isStoreOpen {
for _, storeMap := range storeInfo.StoreMaps { for _, storeMap := range storeInfo.StoreMaps {
isSyncStoreSku := int(utils.MustInterface2Int64(storeMap["isSync"])) isSyncStoreSku := storeMap.IsSync
vendorStoreStatus := int(utils.MustInterface2Int64(storeMap["status"])) vendorStoreStatus := storeMap.Status
isVendorStoreOpen := vendorStoreStatus == model.StoreStatusOpened isVendorStoreOpen := vendorStoreStatus == model.StoreStatusOpened
opTimeList := storeInfo.GetOpTimeList() opTimeList := storeInfo.GetOpTimeList()
if len(opTimeList) > 0 && isStoreOpen && isVendorStoreOpen && isSyncStoreSku != 0 { if len(opTimeList) > 0 && isStoreOpen && isVendorStoreOpen && isSyncStoreSku != 0 {
@@ -428,8 +428,8 @@ func ScoreFullVendor(storeInfo *cms.StoreExt) {
isStoreOpen := storeStatus == model.StoreStatusOpened isStoreOpen := storeStatus == model.StoreStatusOpened
count := 0 count := 0
for _, storeMap := range storeInfo.StoreMaps { for _, storeMap := range storeInfo.StoreMaps {
isSyncStoreSku := int(utils.MustInterface2Int64(storeMap["isSync"])) isSyncStoreSku := storeMap.IsSync
vendorStoreStatus := int(utils.MustInterface2Int64(storeMap["status"])) vendorStoreStatus := storeMap.Status
isVendorStoreOpen := vendorStoreStatus == model.StoreStatusOpened isVendorStoreOpen := vendorStoreStatus == model.StoreStatusOpened
opTimeList := storeInfo.GetOpTimeList() opTimeList := storeInfo.GetOpTimeList()
if len(opTimeList) > 0 && isStoreOpen && isVendorStoreOpen && isSyncStoreSku != 0 { if len(opTimeList) > 0 && isStoreOpen && isVendorStoreOpen && isSyncStoreSku != 0 {
@@ -569,9 +569,9 @@ func GetFilterStoreListEx(storeList []*cms.StoreExt, storeIDMap map[int]int) (ou
continue continue
} }
} }
var tempStoreMaps []map[string]interface{} var tempStoreMaps []*model.StoreMap
for _, vendorStoreInfo := range storeInfo.StoreMaps { for _, vendorStoreInfo := range storeInfo.StoreMaps {
vendorID := int(utils.MustInterface2Int64(vendorStoreInfo["vendorID"])) vendorID := vendorStoreInfo.VendorID
if _, ok := fullVendorList[vendorID]; !ok { if _, ok := fullVendorList[vendorID]; !ok {
continue continue
} }

View File

@@ -116,6 +116,7 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
sql += ` sql += `
LEFT JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ? LEFT JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ?
JOIN sku t4 ON t4.id = t1.sku_id` JOIN sku t4 ON t4.id = t1.sku_id`
sqlParams = append(sqlParams, utils.DefaultTimeValue)
if globals.IsUseThingMap { if globals.IsUseThingMap {
sql += ` sql += `
LEFT JOIN thing_map t4m ON t4m.thing_id = t4.id AND t4m.thing_type = ? AND t4m.vendor_id = t2.vendor_id AND t4m.vendor_org_code = t3.vendor_org_code AND t4m.deleted_at = ?` LEFT JOIN thing_map t4m ON t4m.thing_id = t4.id AND t4m.thing_type = ? AND t4m.vendor_id = t2.vendor_id AND t4m.vendor_org_code = t3.vendor_org_code AND t4m.deleted_at = ?`
@@ -128,7 +129,6 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
WHERE t1.act_id = ? WHERE t1.act_id = ?
` `
sqlParams = append(sqlParams, sqlParams = append(sqlParams,
utils.DefaultTimeValue,
utils.DefaultTimeValue, utils.DefaultTimeValue,
actID, actID,
) )

View File

@@ -44,3 +44,10 @@ func TestUpdateActStatusByTime(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
} }
func TestGetActStoreSkuVendorList(t *testing.T) {
_, _, err := GetActStoreSkuVendorList(GetDB(), 18440, nil, nil, nil, "", 0, 0)
if err != nil {
t.Fatal(err)
}
}

View File

@@ -172,15 +172,14 @@ type IMultipleStoresHandler interface {
UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) // ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error)
CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error)
UpdateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) UpdateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error)
DeleteSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) DeleteSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error)
// RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) // RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error)
// TODO 此接口需要添加vendorOrgCode GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*SkuNameInfo, err error)
GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*SkuNameInfo, err error)
} }
type ISingleStoreHandler interface { type ISingleStoreHandler interface {

View File

@@ -41,7 +41,11 @@ func TestListOrders(t *testing.T) {
} }
func TestGetSelfTakeCode(t *testing.T) { func TestGetSelfTakeCode(t *testing.T) {
selfTakeCode, err := CurPurchaseHandler.GetSelfTakeCode(jxcontext.AdminCtx, "921160248000222") order, err := partner.CurOrderManager.LoadOrder("921160248000222", model.VendorIDJD)
if err != nil {
t.Fatal(err)
}
selfTakeCode, err := CurPurchaseHandler.GetSelfTakeCode(jxcontext.AdminCtx, order)
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())
} }

View File

@@ -9,11 +9,8 @@ import (
"git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/jdapi"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
) )
@@ -180,77 +177,77 @@ func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName stri
}) })
} }
func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { // func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) {
jdSkuID := utils.Str2Int64(vendorSkuID) // jdSkuID := utils.Str2Int64(vendorSkuID)
a := getAPI(vendorOrgCode) // a := getAPI(vendorOrgCode)
skuList, _, err := a.QuerySkuInfos(&jdapi.QuerySkuParam{ // skuList, _, err := a.QuerySkuInfos(&jdapi.QuerySkuParam{
SkuID: jdSkuID, // SkuID: jdSkuID,
}) // })
if err == nil { // if err == nil {
if len(skuList) >= 1 { // if len(skuList) >= 1 {
skuNameExt = &model.SkuNameExt{} // skuNameExt = &model.SkuNameExt{}
if imgList, err2 := a.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{ // if imgList, err2 := a.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{
SkuIDs: []int64{jdSkuID}, // SkuIDs: []int64{jdSkuID},
}); err2 == nil && len(imgList) > 0 { // }); err2 == nil && len(imgList) > 0 {
skuNameExt.Img = imgList[0].SourceImgURL // skuNameExt.Img = imgList[0].SourceImgURL
} // }
sku := skuList[0] // sku := skuList[0]
prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(sku.SkuName) // prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(sku.SkuName)
if name == "" { // if name == "" {
name = sku.SkuName // name = sku.SkuName
unit = "份" // unit = "份"
specUnit = "g" // specUnit = "g"
} // }
skuNameExt.Prefix = prefix // skuNameExt.Prefix = prefix
skuNameExt.Name = name // skuNameExt.Name = name
skuNameExt.Unit = unit // skuNameExt.Unit = unit
skuNameExt.Price = sku.SkuPrice // skuNameExt.Price = sku.SkuPrice
skuNameExt.Skus = []*model.SkuWithVendor{ // skuNameExt.Skus = []*model.SkuWithVendor{
&model.SkuWithVendor{ // &model.SkuWithVendor{
Sku: &model.Sku{ // Sku: &model.Sku{
SpecQuality: specQuality, // SpecQuality: specQuality,
SpecUnit: specUnit, // SpecUnit: specUnit,
Weight: jxutils.FloatWeight2Int(float32(sku.Weight)), // Weight: jxutils.FloatWeight2Int(float32(sku.Weight)),
JdID: sku.SkuID, // JdID: sku.SkuID,
Status: jdStatus2jxStatus(sku.FixedStatus), // Status: jdStatus2jxStatus(sku.FixedStatus),
Comment: comment, // Comment: comment,
}, // },
}, // },
} // }
skuNameExt.Skus[0].ID = int(utils.Str2Int64(sku.OutSkuID)) // skuNameExt.Skus[0].ID = int(utils.Str2Int64(sku.OutSkuID))
db := dao.GetDB() // db := dao.GetDB()
shopCategories := sku.ShopCategories // shopCategories := sku.ShopCategories
if len(shopCategories) > 0 { // if len(shopCategories) > 0 {
skuCat := &model.SkuCategory{} // skuCat := &model.SkuCategory{}
skuCat.JdID = shopCategories[0] // skuCat.JdID = shopCategories[0]
if dao.GetEntity(db, skuCat, "JdID") == nil { // if dao.GetEntity(db, skuCat, "JdID") == nil {
skuNameExt.CategoryID = skuCat.ID // skuNameExt.CategoryID = skuCat.ID
} // }
} // }
sellCities := sku.SellCities // sellCities := sku.SellCities
for _, v := range sellCities { // for _, v := range sellCities {
if v == 0 { // if v == 0 {
skuNameExt.IsGlobal = 1 // skuNameExt.IsGlobal = 1
} // }
} // }
if len(sellCities) == 0 || skuNameExt.IsGlobal == 1 { // if len(sellCities) == 0 || skuNameExt.IsGlobal == 1 {
skuNameExt.IsGlobal = 1 // skuNameExt.IsGlobal = 1
} else { // } else {
var places []*model.Place // var places []*model.Place
if err = dao.GetRows(db, &places, "SELECT * FROM place WHERE jd_code IN ("+dao.GenQuestionMarks(len(sellCities))+") AND level = 2", sellCities); err == nil { // if err = dao.GetRows(db, &places, "SELECT * FROM place WHERE jd_code IN ("+dao.GenQuestionMarks(len(sellCities))+") AND level = 2", sellCities); err == nil {
skuNameExt.Places = make([]int, len(places)) // skuNameExt.Places = make([]int, len(places))
for k, v := range places { // for k, v := range places {
skuNameExt.Places[k] = v.Code // skuNameExt.Places[k] = v.Code
} // }
} // }
} // }
} else { // } else {
err = partner.ErrCanNotFindItem // err = partner.ErrCanNotFindItem
} // }
} // }
return skuNameExt, err // return skuNameExt, err
} // }
func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
@@ -493,127 +490,3 @@ func composeSkuSpec(specQuality float32, specUnit, unit string) string {
} }
return value return value
} }
func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*partner.SkuNameInfo, err error) {
param := &jdapi.QuerySkuParam{
SkuID: utils.Str2Int64WithDefault(vendorSkuID, 0),
SkuName: skuName,
IsFilterDel: jdapi.IsFilterDelTrue,
PageNo: 1,
PageSize: jdapi.MaxSkuIDsCount4QueryListBySkuIds, // 为了同时取图这个值不要大于jdapi.MaxSkuIDsCount4QueryListBySkuIds
}
for {
skuList, _, err2 := getAPI("").QuerySkuInfos(param)
if err = err2; err != nil {
return nil, err
}
if len(skuList) > 0 {
batchSkuNameList := make([]*partner.SkuNameInfo, len(skuList))
for k, v := range skuList {
batchSkuNameList[k] = vendorSku2Jx(v)
}
setSkuNameListPic(batchSkuNameList)
skuNameList = append(skuNameList, batchSkuNameList...)
}
if len(skuList) < param.PageSize {
break
}
param.PageNo++
}
return skuNameList, err
}
func setSkuNameListPic(skuNameList []*partner.SkuNameInfo) []*partner.SkuNameInfo {
jdSkuIDs := make([]int64, len(skuNameList))
for k, v := range skuNameList {
jdSkuIDs[k] = utils.Str2Int64(v.SkuList[0].VendorSkuID)
}
imgMap := make(map[int64]*jdapi.ImgHandleQueryResult)
if imgList, err2 := getAPI("").QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{
SkuIDs: jdSkuIDs,
}); err2 == nil {
for _, v := range imgList {
if v.ImgType == jdapi.ImgTypeMain {
imgResult := imgMap[v.SkuID]
if imgResult == nil || imgResult.IsMain < v.IsMain {
imgMap[v.SkuID] = v
}
}
}
}
// 使用扒页面方式获取商品图片
if false {
var leftJdSkuIDs []int64
for _, v := range jdSkuIDs {
if imgMap[v] == nil {
leftJdSkuIDs = append(leftJdSkuIDs, v)
}
}
task := tasksch.NewParallelTask("jd setSkuNameListPic", nil, jxcontext.AdminCtx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
jdSkuID := batchItemList[0].(int64)
imgList, err := getAPI("").GetSkuPageImageInfo(jdSkuID)
if err == nil && len(imgList) > 0 {
retVal = [][]string{
[]string{utils.Int64ToStr(jdSkuID), imgList[0].Big},
}
}
return retVal, err
}, leftJdSkuIDs)
task.Run()
if resultList, err := task.GetResult(0); err == nil {
for _, v := range resultList {
strList := v.([]string)
imgMap[utils.Str2Int64(strList[0])] = &jdapi.ImgHandleQueryResult{
SourceImgURL: strList[1],
}
}
}
}
// 设置商品图片
for _, v := range skuNameList {
if imgResult := imgMap[utils.Str2Int64(v.SkuList[0].VendorSkuID)]; imgResult != nil {
v.PictureList = []string{imgResult.SourceImgURL}
}
}
return skuNameList
}
func vendorSku2Jx(vendorSku *jdapi.SkuMain) (skuName *partner.SkuNameInfo) {
prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(vendorSku.SkuName)
weight := int(vendorSku.Weight * 1000)
if weight <= 0 {
weight = jxutils.FormatSkuWeight(specQuality, specUnit)
}
skuID := int(utils.Str2Int64WithDefault(vendorSku.OutSkuID, 0))
vendorSkuID := utils.Int64ToStr(vendorSku.SkuID)
skuName = &partner.SkuNameInfo{
NameID: skuID,
VendorNameID: vendorSkuID,
VendorCatIDList: []string{utils.Int64ToStr(vendorSku.CategoryID)},
Prefix: prefix,
Name: name,
Unit: unit,
SkuList: []*partner.SkuInfo{
&partner.SkuInfo{
StoreSkuInfo: partner.StoreSkuInfo{
VendorSkuID: vendorSkuID,
SkuID: skuID,
VendorPrice: int64(vendorSku.SkuPrice),
Status: jdStatus2jxStatus(vendorSku.FixedStatus),
},
SkuName: vendorSku.SkuName,
Comment: comment,
SpecQuality: float64(specQuality),
SpecUnit: specUnit,
Weight: weight,
},
},
}
return skuName
}

View File

@@ -7,6 +7,7 @@ import (
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner"
@@ -199,6 +200,129 @@ func (p *PurchaseHandler) DeleteSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSy
return err return err
} }
func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*partner.SkuNameInfo, err error) {
param := &jdapi.QuerySkuParam{
SkuID: utils.Str2Int64WithDefault(vendorSkuID, 0),
IsFilterDel: jdapi.IsFilterDelTrue,
PageNo: 1,
PageSize: jdapi.MaxSkuIDsCount4QueryListBySkuIds, // 为了同时取图这个值不要大于jdapi.MaxSkuIDsCount4QueryListBySkuIds
}
for {
skuList, _, err2 := getAPI(vendorOrgCode).QuerySkuInfos(param)
if err = err2; err != nil {
return nil, err
}
if len(skuList) > 0 {
batchSkuNameList := make([]*partner.SkuNameInfo, len(skuList))
for k, v := range skuList {
batchSkuNameList[k] = vendorSku2Jx(v)
}
setSkuNameListPic(batchSkuNameList)
skuNameList = append(skuNameList, batchSkuNameList...)
}
if len(skuList) < param.PageSize {
break
}
param.PageNo++
}
return skuNameList, err
}
func setSkuNameListPic(skuNameList []*partner.SkuNameInfo) []*partner.SkuNameInfo {
jdSkuIDs := make([]int64, len(skuNameList))
for k, v := range skuNameList {
jdSkuIDs[k] = utils.Str2Int64(v.SkuList[0].VendorSkuID)
}
imgMap := make(map[int64]*jdapi.ImgHandleQueryResult)
if imgList, err2 := getAPI("").QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{
SkuIDs: jdSkuIDs,
}); err2 == nil {
for _, v := range imgList {
if v.ImgType == jdapi.ImgTypeMain {
imgResult := imgMap[v.SkuID]
if imgResult == nil || imgResult.IsMain < v.IsMain {
imgMap[v.SkuID] = v
}
}
}
}
// 使用扒页面方式获取商品图片
if false {
var leftJdSkuIDs []int64
for _, v := range jdSkuIDs {
if imgMap[v] == nil {
leftJdSkuIDs = append(leftJdSkuIDs, v)
}
}
task := tasksch.NewParallelTask("jd setSkuNameListPic", nil, jxcontext.AdminCtx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
jdSkuID := batchItemList[0].(int64)
imgList, err := getAPI("").GetSkuPageImageInfo(jdSkuID)
if err == nil && len(imgList) > 0 {
retVal = [][]string{
[]string{utils.Int64ToStr(jdSkuID), imgList[0].Big},
}
}
return retVal, err
}, leftJdSkuIDs)
task.Run()
if resultList, err := task.GetResult(0); err == nil {
for _, v := range resultList {
strList := v.([]string)
imgMap[utils.Str2Int64(strList[0])] = &jdapi.ImgHandleQueryResult{
SourceImgURL: strList[1],
}
}
}
}
// 设置商品图片
for _, v := range skuNameList {
if imgResult := imgMap[utils.Str2Int64(v.SkuList[0].VendorSkuID)]; imgResult != nil {
v.PictureList = []string{imgResult.SourceImgURL}
}
}
return skuNameList
}
func vendorSku2Jx(vendorSku *jdapi.SkuMain) (skuName *partner.SkuNameInfo) {
prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(vendorSku.SkuName)
weight := int(vendorSku.Weight * 1000)
if weight <= 0 {
weight = jxutils.FormatSkuWeight(specQuality, specUnit)
}
skuID := int(utils.Str2Int64WithDefault(vendorSku.OutSkuID, 0))
vendorSkuID := utils.Int64ToStr(vendorSku.SkuID)
skuName = &partner.SkuNameInfo{
NameID: skuID,
VendorNameID: vendorSkuID,
VendorCatIDList: []string{utils.Int64ToStr(vendorSku.CategoryID)},
Prefix: prefix,
Name: name,
Unit: unit,
SkuList: []*partner.SkuInfo{
&partner.SkuInfo{
StoreSkuInfo: partner.StoreSkuInfo{
VendorSkuID: vendorSkuID,
SkuID: skuID,
VendorPrice: int64(vendorSku.SkuPrice),
Status: jdStatus2jxStatus(vendorSku.FixedStatus),
},
SkuName: vendorSku.SkuName,
Comment: comment,
SpecQuality: float64(specQuality),
SpecUnit: specUnit,
Weight: weight,
},
},
}
return skuName
}
func jdStatus2jxStatus(jdStatus int) (jxStatus int) { func jdStatus2jxStatus(jdStatus int) (jxStatus int) {
switch jdStatus { switch jdStatus {
case jdapi.SkuFixedStatusOnline: case jdapi.SkuFixedStatusOnline:

View File

@@ -45,17 +45,17 @@ func TestGetAllCategories(t *testing.T) {
t.Log(utils.Format4Output(result, false)) t.Log(utils.Format4Output(result, false))
} }
func TestReadSku(t *testing.T) { // func TestReadSku(t *testing.T) {
skuName, err := CurPurchaseHandler.ReadSku(jxcontext.AdminCtx, "", "2005582952") // skuName, err := CurPurchaseHandler.ReadSku(jxcontext.AdminCtx, "", "2005582952")
t.Log(utils.Format4Output(skuName, false)) // t.Log(utils.Format4Output(skuName, false))
if err != nil { // if err != nil {
t.Fatal(err.Error()) // t.Fatal(err.Error())
} // }
if skuName.Name != "味事达酱香鲜特级酿造酱油" || skuName.Skus[0].SpecUnit != "ml" { // if skuName.Name != "味事达酱香鲜特级酿造酱油" || skuName.Skus[0].SpecUnit != "ml" {
t.Fatal("ReadSku return data wrong") // t.Fatal("ReadSku return data wrong")
t.Log(string(utils.MustMarshal(skuName))) // t.Log(string(utils.MustMarshal(skuName)))
} // }
} // }
func TestGetVendorCategories(t *testing.T) { func TestGetVendorCategories(t *testing.T) {
catList, err := CurPurchaseHandler.GetVendorCategories(jxcontext.AdminCtx) catList, err := CurPurchaseHandler.GetVendorCategories(jxcontext.AdminCtx)
@@ -66,7 +66,7 @@ func TestGetVendorCategories(t *testing.T) {
} }
func TestGetSkus(t *testing.T) { func TestGetSkus(t *testing.T) {
skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "2023747677", "") skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, "", 0, "2023747677")
t.Log(utils.Format4Output(skuNameList, false)) t.Log(utils.Format4Output(skuNameList, false))
t.Log(len(skuNameList)) t.Log(len(skuNameList))
if err != nil { if err != nil {

View File

@@ -19,7 +19,7 @@ func TestGetStoreSkusBareInfo(t *testing.T) {
// for i := 0; i < 30-1; i++ { // for i := 0; i < 30-1; i++ {
// list = append(list, list[0]) // list = append(list, list[0])
// } // }
skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "", "") skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, "", 0, "")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -49,9 +49,9 @@ func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName stri
return err return err
} }
func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { // func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) {
return skuNameExt, err // return skuNameExt, err
} // }
func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
return err return err
@@ -77,6 +77,6 @@ func (p *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCat
return vendorCats, err return vendorCats, err
} }
func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*partner.SkuNameInfo, err error) { func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*partner.SkuNameInfo, err error) {
return skuNameList, err return skuNameList, err
} }

View File

@@ -175,7 +175,6 @@ dingdingAppKey = "ding7iu9cptairtcls0c"
dingdingSecret = "LWrZAFeqUfuVv7n_tc8vPpCAx6PT4CwManx2XCVhJOqGsx2L5XCDuX1sAN_JtvsI" dingdingSecret = "LWrZAFeqUfuVv7n_tc8vPpCAx6PT4CwManx2XCVhJOqGsx2L5XCDuX1sAN_JtvsI"
dingdingCallbackURL = "http://callback.jxc4.com/dingding/msg" dingdingCallbackURL = "http://callback.jxc4.com/dingding/msg"
useThingMap = true
[jxgy] [jxgy]
httpport = 8088 httpport = 8088
@@ -234,7 +233,6 @@ getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken" getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken"
storeName = "京西果园" storeName = "京西果园"
useThingMap = true
[test] [test]
jdOrgCode = "82029" jdOrgCode = "82029"
@@ -296,8 +294,6 @@ enableEbaiStoreWrite = true
enableMtwmStoreWrite = true enableMtwmStoreWrite = true
enableWscStoreWrite = false enableWscStoreWrite = false
useThingMap = true
[beta] [beta]
enableStoreWrite = false enableStoreWrite = false
enableJdStoreWrite = false enableJdStoreWrite = false
@@ -336,4 +332,3 @@ getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
getWeimobTokenURL = "http://www.jxc4.com/v2/sys/GetWeimobToken" getWeimobTokenURL = "http://www.jxc4.com/v2/sys/GetWeimobToken"
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true" dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
useThingMap = true

View File

@@ -291,21 +291,21 @@ func (c *SkuController) DeleteSkuNamePlace() {
}) })
} }
// @Title 远程查询厂商SKU信息 // // @Title 远程查询厂商SKU信息
// @Description 远程查询厂商SKU信息这个是实时调用API远程查询不推荐使用 // // @Description 远程查询厂商SKU信息这个是实时调用API远程查询不推荐使用
// @Param token header string true "认证token" // // @Param token header string true "认证token"
// @Param vendorSkuID query string true "sku ID" // // @Param vendorSkuID query string true "sku ID"
// @Param vendorID query int true "门店所属的厂商ID" // // @Param vendorID query int true "门店所属的厂商ID"
// @Param vendorOrgCode query string false "厂商内组织代码" // // @Param vendorOrgCode query string false "厂商内组织代码"
// @Success 200 {object} controllers.CallResult // // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult
// @router /GetVendorSku [get] // // @router /GetVendorSku [get]
func (c *SkuController) GetVendorSku() { // func (c *SkuController) GetVendorSku() {
c.callGetVendorSku(func(params *tSkuGetVendorSkuParams) (retVal interface{}, errCode string, err error) { // c.callGetVendorSku(func(params *tSkuGetVendorSkuParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetVendorSku(params.Ctx, params.VendorID, params.VendorOrgCode, params.VendorSkuID) // retVal, err = cms.GetVendorSku(params.Ctx, params.VendorID, params.VendorOrgCode, params.VendorSkuID)
return retVal, "", err // return retVal, "", err
}) // })
} // }
// @Title 同步商家SKU // @Title 同步商家SKU
// @Description 同步商家SKU // @Description 同步商家SKU

View File

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