Merge remote-tracking branch 'origin/jdshop' into qidongsheng
This commit is contained in:
@@ -1048,7 +1048,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
if user := ctx.GetFullUser(); user != nil {
|
if user := ctx.GetFullUser(); user != nil {
|
||||||
isUserCanDirectChangePrice = user.Type&model.UserTypeOperator != 0
|
isUserCanDirectChangePrice = user.Type&model.UserTypeOperator != 0
|
||||||
}
|
}
|
||||||
|
fmt.Println("test1")
|
||||||
userName := ctx.GetUserName()
|
userName := ctx.GetUserName()
|
||||||
needSyncIDMap := make(map[int]int)
|
needSyncIDMap := make(map[int]int)
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
@@ -1065,6 +1065,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
fmt.Println("test2")
|
||||||
scaleFactor := float64(1)
|
scaleFactor := float64(1)
|
||||||
if isScale {
|
if isScale {
|
||||||
scaleFactor = 100 / float64(jxutils.ConstrainPayPercentage(storeDetail.PayPercentage))
|
scaleFactor = 100 / float64(jxutils.ConstrainPayPercentage(storeDetail.PayPercentage))
|
||||||
@@ -1111,6 +1112,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
sqlParams = append(sqlParams, skuBindInfo.NameID, utils.DefaultTimeValue)
|
sqlParams = append(sqlParams, skuBindInfo.NameID, utils.DefaultTimeValue)
|
||||||
// globals.SugarLogger.Debug(sql)
|
// globals.SugarLogger.Debug(sql)
|
||||||
if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil {
|
if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil {
|
||||||
|
fmt.Println("test3")
|
||||||
if len(allBinds) > 0 {
|
if len(allBinds) > 0 {
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(allBinds, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(allBinds, false))
|
||||||
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
||||||
@@ -4613,12 +4615,12 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto
|
|||||||
if len(storeAudits) > 0 {
|
if len(storeAudits) > 0 {
|
||||||
storeAudits[0].DeletedAt = time.Now()
|
storeAudits[0].DeletedAt = time.Now()
|
||||||
dao.UpdateEntity(db, storeAudits[0], "DeletedAt")
|
dao.UpdateEntity(db, storeAudits[0], "DeletedAt")
|
||||||
if globals.IsProductEnv() {
|
// if globals.IsProductEnv() {
|
||||||
skuAndNames, err := dao.GetSkus(db, nil, []int{skuBindInfo.NameID}, nil, nil, nil)
|
// skuAndNames, err := dao.GetSkus(db, nil, []int{skuBindInfo.NameID}, nil, nil, nil)
|
||||||
if len(skuAndNames) > 0 && err == nil {
|
// if len(skuAndNames) > 0 && err == nil {
|
||||||
weixinmsg.NotifyStoreOpRequestStatus(true, storeID, skuBindInfo.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, skuBindInfo.UnitPrice, "")
|
// weixinmsg.NotifyStoreOpRequestStatus(true, storeID, skuBindInfo.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, skuBindInfo.UnitPrice, "")
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
|
globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
|
||||||
return false, err
|
return false, err
|
||||||
|
|||||||
@@ -1249,7 +1249,7 @@ func SyncSkuExperfixAndWatermark(ctx *jxcontext.Context) (err error) {
|
|||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
)
|
)
|
||||||
skuExinfos, err := dao.GetSkuExinfos(db, nil, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJD}, "", utils.ZeroTimeValue, utils.ZeroTimeValue)
|
skuExinfos, err := dao.GetSkuExinfos(db, nil, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJD, model.VendorIDJDShop}, "", utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
task := tasksch.NewParallelTask("SyncSkuExperfixAndWatermark", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
task := tasksch.NewParallelTask("SyncSkuExperfixAndWatermark", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
skuExinfo := batchItemList[0].(*model.SkuExinfoMap)
|
skuExinfo := batchItemList[0].(*model.SkuExinfoMap)
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ func syncStoreSku() {
|
|||||||
})
|
})
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
|
|
||||||
_, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, partner.GetMultiStoreVendorIDs(), nil, false, nil, []int{27379}, syncFlag, true, true)
|
_, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{0}, nil, false, nil, []int{27379}, syncFlag, true, true)
|
||||||
// _, err = cms.CurVendorSync.FullSyncStoresSkus(jxcontext.AdminCtx, db, partner.GetMultiStoreVendorIDs(), nil, false, []int{27379}, true, true)
|
// _, err = cms.CurVendorSync.FullSyncStoresSkus(jxcontext.AdminCtx, db, partner.GetMultiStoreVendorIDs(), nil, false, []int{27379}, true, true)
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@@ -1610,30 +1610,30 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
|||||||
// continue
|
// continue
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
db := dao.GetDB()
|
// db := dao.GetDB()
|
||||||
type tStore struct {
|
// type tStore struct {
|
||||||
NameID int `orm:"column(name_id)"`
|
// NameID int `orm:"column(name_id)"`
|
||||||
StoreID int `orm:"column(store_id)"`
|
// StoreID int `orm:"column(store_id)"`
|
||||||
}
|
// }
|
||||||
var resultList []*tStore
|
// var resultList []*tStore
|
||||||
stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "")
|
// stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "")
|
||||||
for _, v := range stores {
|
// for _, v := range stores {
|
||||||
var resultList2 []*tStore
|
// var resultList2 []*tStore
|
||||||
sql := `
|
// sql := `
|
||||||
SELECT a.name_id,a.store_id FROM (
|
// SELECT a.name_id,a.store_id FROM (
|
||||||
SELECT DISTINCT a.unit_price,b.name_id,a.store_id from store_sku_bind a,sku b,store c
|
// SELECT DISTINCT a.unit_price,b.name_id,a.store_id from store_sku_bind a,sku b,store c
|
||||||
where a.sku_id = b.id
|
// where a.sku_id = b.id
|
||||||
and c.id = a.store_id and c.deleted_at = '1970-01-01 00:00:00'
|
// and c.id = a.store_id and c.deleted_at = '1970-01-01 00:00:00'
|
||||||
and a.store_id = ?
|
// and a.store_id = ?
|
||||||
and a.deleted_at = '1970-01-01 00:00:00')a
|
// and a.deleted_at = '1970-01-01 00:00:00')a
|
||||||
GROUP BY 1,2
|
// GROUP BY 1,2
|
||||||
HAVING count(a.unit_price) > 1
|
// HAVING count(a.unit_price) > 1
|
||||||
`
|
// `
|
||||||
sqlParams := []interface{}{v.ID}
|
// sqlParams := []interface{}{v.ID}
|
||||||
err = dao.GetRows(db, &resultList2, sql, sqlParams)
|
// err = dao.GetRows(db, &resultList2, sql, sqlParams)
|
||||||
resultList = append(resultList, resultList2...)
|
// resultList = append(resultList, resultList2...)
|
||||||
}
|
// }
|
||||||
fmt.Println("testresultList3", utils.Format4Output(resultList, false))
|
// fmt.Println("testresultList3", utils.Format4Output(resultList, false))
|
||||||
// var skuBindInfos []*cms.StoreSkuBindInfo
|
// var skuBindInfos []*cms.StoreSkuBindInfo
|
||||||
// for _, v := range resultList {
|
// for _, v := range resultList {
|
||||||
// storeSkus, _ := dao.GetStoreSkusByNameIDs(db, []int{v.StoreID}, v.NameID)
|
// storeSkus, _ := dao.GetStoreSkusByNameIDs(db, []int{v.StoreID}, v.NameID)
|
||||||
@@ -1646,6 +1646,65 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
|||||||
// skuBindInfos = append(skuBindInfos, skuBindInfo)
|
// skuBindInfos = append(skuBindInfos, skuBindInfo)
|
||||||
// }
|
// }
|
||||||
// _, err = cms.UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true, false)
|
// _, err = cms.UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true, false)
|
||||||
|
type tTmp struct {
|
||||||
|
SkuID int `json:"skuID"`
|
||||||
|
Reason string `json:"reason"`
|
||||||
|
}
|
||||||
|
var vendorMap = make(map[int]*partner.SkuNameInfo)
|
||||||
|
var localMap = make(map[int]*model.StoreSkuBind)
|
||||||
|
var addList, deleteList []int
|
||||||
|
var updateList []*tTmp
|
||||||
|
vendorStock2JxStatus := func(stock int) (status int) {
|
||||||
|
if stock > 0 {
|
||||||
|
return model.StoreSkuBindStatusNormal
|
||||||
|
} else {
|
||||||
|
return model.StoreSkuBindStatusDontSale
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJDShop).(partner.ISingleStoreStoreSkuHandler)
|
||||||
|
skuNameList, err := handler.GetStoreSkusFullInfo(ctx, nil, 0, "", nil)
|
||||||
|
storeSkuList, err := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, nil)
|
||||||
|
for _, v := range skuNameList {
|
||||||
|
vendorMap[v.SkuList[0].SkuID] = v
|
||||||
|
}
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
if vendorMap[v.SkuID] == nil {
|
||||||
|
if v.Status == model.StoreSkuBindStatusNormal {
|
||||||
|
addList = append(addList, v.SkuID)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if int64(v.JdsPrice) != vendorMap[v.SkuID].SkuList[0].VendorPrice {
|
||||||
|
updateList = append(updateList, &tTmp{
|
||||||
|
SkuID: v.SkuID,
|
||||||
|
Reason: "价格不同",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if v.Status != vendorStock2JxStatus(vendorMap[v.SkuID].SkuList[0].Stock) {
|
||||||
|
updateList = append(updateList, &tTmp{
|
||||||
|
SkuID: v.SkuID,
|
||||||
|
Reason: "库存可售不同",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
skus, _ := dao.GetSkus(dao.GetDB(), []int{v.SkuID}, nil, nil, nil, nil)
|
||||||
|
if skus[0].Comment != "" {
|
||||||
|
if skus[0].Comment != vendorMap[v.SkuID].SkuList[0].Comment {
|
||||||
|
updateList = append(updateList, &tTmp{
|
||||||
|
SkuID: v.SkuID,
|
||||||
|
Reason: "备注与销售属性不同",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
localMap[v.SkuID] = v
|
||||||
|
}
|
||||||
|
for k, _ := range vendorMap {
|
||||||
|
if localMap[k] == nil {
|
||||||
|
deleteList = append(deleteList, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("addList2", addList)
|
||||||
|
fmt.Println("updateList2", utils.Format4Output(updateList, false))
|
||||||
|
fmt.Println("deleteList2", deleteList)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,20 +56,21 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
|||||||
return bill, fmt.Errorf("未查询到该门店! 门店id :[%v]", storeID)
|
return bill, fmt.Errorf("未查询到该门店! 门店id :[%v]", storeID)
|
||||||
}
|
}
|
||||||
vendorWaybillID, err := api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{
|
vendorWaybillID, err := api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{
|
||||||
SalePlat: jdeclpapi.SalePlatSourceDelivery,
|
SalePlat: jdeclpapi.SalePlatSourceDelivery,
|
||||||
CustomerCode: jdeclpapi.CustomerCode,
|
CustomerCode: jdeclpapi.CustomerCode,
|
||||||
OrderID: order.VendorOrderID,
|
OrderID: order.VendorOrderID,
|
||||||
SenderName: order.StoreName,
|
SenderName: order.StoreName,
|
||||||
SenderAddress: stores[0].Address,
|
SenderAddress: stores[0].Address,
|
||||||
SenderTel: stores[0].Tel1,
|
SenderTel: stores[0].Tel1,
|
||||||
ReceiveName: order.ConsigneeName,
|
ReceiveName: order.ConsigneeName,
|
||||||
ReceiveAddress: order.ConsigneeAddress,
|
ReceiveAddress: order.ConsigneeAddress,
|
||||||
ReceiveTel: order.ConsigneeMobile,
|
ReceiveTel: order.ConsigneeMobile,
|
||||||
Weight: order.Weight,
|
Weight: order.Weight,
|
||||||
Vloumn: order.Weight,
|
Vloumn: order.Weight,
|
||||||
PackageCount: 1,
|
PackageCount: 1,
|
||||||
Description: "生鲜",
|
Description: "生鲜",
|
||||||
Aging: 5,
|
Aging: 5,
|
||||||
|
PromiseTimeType: 1, //特惠送
|
||||||
})
|
})
|
||||||
waybill := &model.Waybill{
|
waybill := &model.Waybill{
|
||||||
VendorOrderID: order.VendorOrderID,
|
VendorOrderID: order.VendorOrderID,
|
||||||
|
|||||||
@@ -143,8 +143,14 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v
|
|||||||
}
|
}
|
||||||
updateWareParam.Introduction = desc
|
updateWareParam.Introduction = desc
|
||||||
updateWareParam.MobileDesc = desc
|
updateWareParam.MobileDesc = desc
|
||||||
if v.Img != "" {
|
img := ""
|
||||||
pic1, err2 := uploadImg2(v.Img, name, "1")
|
if v.ImgMix != "" {
|
||||||
|
img = v.ImgMix
|
||||||
|
} else {
|
||||||
|
img = v.Img
|
||||||
|
}
|
||||||
|
if img != "" {
|
||||||
|
pic1, err2 := uploadImg2(img, name, "1")
|
||||||
err = err2
|
err = err2
|
||||||
err = api.JdShopAPI.ImageUpdate(v.JdsWareID, 1, pic1)
|
err = api.JdShopAPI.ImageUpdate(v.JdsWareID, 1, pic1)
|
||||||
if v.Img2 != "" {
|
if v.Img2 != "" {
|
||||||
@@ -228,13 +234,13 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v
|
|||||||
func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (skuNameList []*partner.SkuNameInfo, err error) {
|
func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (skuNameList []*partner.SkuNameInfo, err error) {
|
||||||
var (
|
var (
|
||||||
pageNo = 1
|
pageNo = 1
|
||||||
pageSize = 100
|
pageSize = 20
|
||||||
)
|
)
|
||||||
pageResult, err := api.JdShopAPI.SearchWare4Valid("", pageNo, pageSize)
|
_, totalCount, err := api.JdShopAPI.SearchSkuList(pageNo, pageSize)
|
||||||
for ; pageNo <= pageResult.TotalItem/pageSize+1; pageNo++ {
|
for ; pageNo <= totalCount/pageSize+1; pageNo++ {
|
||||||
result, err := api.JdShopAPI.SearchWare4Valid("", pageNo, pageSize)
|
result, _, err := api.JdShopAPI.SearchSkuList(pageNo, pageSize)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for _, v := range result.Data {
|
for _, v := range result {
|
||||||
if skuName := vendorSku2Jx(v); skuName != nil {
|
if skuName := vendorSku2Jx(v); skuName != nil {
|
||||||
skuNameList = append(skuNameList, skuName)
|
skuNameList = append(skuNameList, skuName)
|
||||||
}
|
}
|
||||||
@@ -403,18 +409,25 @@ func ybSkuStatus2Jx(ybStatus int) (jxSkuStatus int) {
|
|||||||
return jxSkuStatus
|
return jxSkuStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
func vendorSku2Jx(result *jdshopapi.SearchWare4ValidResultData) (skuName *partner.SkuNameInfo) {
|
func vendorSku2Jx(result *jdshopapi.SearchSkuListResult) (skuName *partner.SkuNameInfo) {
|
||||||
if result == nil {
|
if result == nil {
|
||||||
globals.SugarLogger.Warnf("vendorSku2Jx, strange result:%s", utils.Format4Output(result, true))
|
globals.SugarLogger.Warnf("vendorSku2Jx, strange result:%s", utils.Format4Output(result, true))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(result.Title)
|
|
||||||
skuName = &partner.SkuNameInfo{
|
skuName = &partner.SkuNameInfo{
|
||||||
Name: result.Title,
|
VendorNameID: utils.Int64ToStr(result.WareID),
|
||||||
VendorNameID: utils.Int64ToStr(result.WareID),
|
SkuList: []*partner.SkuInfo{
|
||||||
Status: result.WareStatus,
|
&partner.SkuInfo{
|
||||||
VendorCatIDList: []string{utils.Int2Str(result.CategoryID)},
|
StoreSkuInfo: partner.StoreSkuInfo{
|
||||||
NameID: utils.Str2Int(result.OuterID),
|
SkuID: utils.Str2Int(result.OuterID),
|
||||||
|
VendorSkuID: utils.Int64ToStr(result.SkuID),
|
||||||
|
VendorNameID: utils.Int64ToStr(result.WareID),
|
||||||
|
Stock: result.StockNum,
|
||||||
|
VendorPrice: utils.Float64TwoInt64(result.JdPrice * 100),
|
||||||
|
},
|
||||||
|
Comment: result.SaleAttrs[0].AttrValueAlias[0],
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
return skuName
|
return skuName
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user