Merge remote-tracking branch 'origin/jdshop' into qidongsheng

This commit is contained in:
平凡梦
2020-07-09 09:27:54 +08:00
6 changed files with 136 additions and 61 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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:

View File

@@ -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
} }

View File

@@ -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,

View File

@@ -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
} }