diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 5771dbc27..b90ca4230 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -30,6 +30,7 @@ import ( "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/baseapi/platformapi/dingdingapi" + "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" @@ -4131,7 +4132,7 @@ func CreateSkusAndFocusFromYb(ctx *jxcontext.Context, isAsync, isContinueWhenErr Upc: &productInfo.UpcCode, Status: model.SkuStatusNormal, CategoryID: 175, - IsGlobal: model.NO, + IsGlobal: model.YES, Unit: productInfo.Unit, }, Skus: []*model.SkuWithVendor{ @@ -4139,7 +4140,7 @@ func CreateSkusAndFocusFromYb(ctx *jxcontext.Context, isAsync, isContinueWhenErr Sku: &model.Sku{}, }, }, - Places: []int{510100}, //默认成都 + // Places: []int{510100}, //默认成都 } if len(v.SkuList) > 0 { skuNameExt.Price = int(v.SkuList[0].VendorPrice) @@ -4196,3 +4197,77 @@ func buildStoreSkuBindInfosAndFocus(ctx *jxcontext.Context, db *dao.DaoDB, store err = dao.CreateEntity(db, skuBind) return err } + +func CreateSkusAndFocusFromWx(ctx *jxcontext.Context, productInfo *jdapi.ProductInfo, price, storeID int) (err error) { + var ( + db = dao.GetDB() + skuBindInfos []*StoreSkuBindInfo + ) + if productInfo == nil { + return fmt.Errorf("未查询到相关商品!") + } + if price == 0 { + return fmt.Errorf("请输入商品价格!") + } + skuNames, err := dao.GetSkuNames(db, nil, nil, productInfo.Name) + if err != nil { + return err + } + if len(skuNames) > 1 { + return fmt.Errorf("此商品名在京西库中查询出了大于1个商品,[%v]", productInfo.Name) + } + //表示查到了,需要把upc更新上去,没查到就要新建 + if len(skuNames) == 1 && (productInfo.SpecQuality == skuNames[0].SpecQuality && productInfo.SpecUnit == skuNames[0].SpecUnit) { + skuNames[0].Upc = &productInfo.UpcCode + dao.UpdateEntity(db, skuNames[0], "Upc") + skuBindInfo := &StoreSkuBindInfo{ + StoreID: storeID, + NameID: skuNames[0].ID, + UnitPrice: price, + IsFocus: 1, + IsSale: 1, + } + skuBindInfos = append(skuBindInfos, skuBindInfo) + UpdateStoresSkusByBind(ctx, nil, skuBindInfos, false, true) + } else { + skuNameExt := &model.SkuNameExt{ + SkuName: model.SkuName{ + Name: productInfo.Name, + Upc: &productInfo.UpcCode, + Status: model.SkuStatusNormal, + CategoryID: 175, + IsGlobal: model.YES, + Unit: productInfo.Unit, + }, + Skus: []*model.SkuWithVendor{ + &model.SkuWithVendor{ + Sku: &model.Sku{}, + }, + }, + // Places: []int{510100}, //默认成都 + } + skuNameExt.Price = price + skuNameExt.Skus[0].SpecQuality = productInfo.SpecQuality + skuNameExt.Skus[0].SpecUnit = productInfo.SpecUnit + skuNameExt.Skus[0].Weight = int(utils.Str2Int64(utils.Float64ToStr(float64(productInfo.Weight)))) + skuNameExt.Skus[0].Status = model.SkuStatusNormal + + if len(productInfo.ImgList) > 0 { + skuNameExt.Img = productInfo.ImgList[0] + } + outSkuNameExt, err := AddSkuName(ctx, skuNameExt, ctx.GetUserName()) + if err != nil { + return err + } + skuBindInfo := &StoreSkuBindInfo{ + StoreID: storeID, + NameID: outSkuNameExt.ID, + UnitPrice: price, + IsFocus: 1, + IsSale: 1, + } + skuBindInfos = append(skuBindInfos, skuBindInfo) + UpdateStoresSkusByBind(ctx, nil, skuBindInfos, false, true) + } + return err +} diff --git a/business/partner/purchase/yb/store_sku.go b/business/partner/purchase/yb/store_sku.go index 2bba35ed6..167167402 100644 --- a/business/partner/purchase/yb/store_sku.go +++ b/business/partner/purchase/yb/store_sku.go @@ -36,8 +36,9 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDYB], "创建商品") } else { storeSku.VendorSkuID = utils.Int64ToStr(result.UID) + // uploadYbImage(vendorStoreID, storeSku.YbBarCode, storeSku.Img) if !flag { - updateYbSkuPluCode(vendorStoreID, storeSku.YbBarCode) + updateYbSku(vendorStoreID, storeSku.YbBarCode) } } } @@ -447,7 +448,7 @@ func convertVendorCatList(remoteCats []*yinbaoapi.LoadCategorysWithOptionResult) return cats } -func updateYbSkuPluCode(vendorStoreID, ybBarCode string) (err error) { +func updateYbSku(vendorStoreID, ybBarCode string) (err error) { for { err = api.YinBaoAPI.SaveProduct(vendorStoreID, ybBarCode) if err == nil { @@ -458,7 +459,7 @@ func updateYbSkuPluCode(vendorStoreID, ybBarCode string) (err error) { if err != nil { break } - err = updateYbSkuPluCode(vendorStoreID, ybBarCode) + err = updateYbSku(vendorStoreID, ybBarCode) } else { break } @@ -482,3 +483,11 @@ func checkYbSku(storeSku *dao.StoreSkuSyncInfo) (flag bool, err error) { } return flag, err } + +// func uploadYbImage(vendorStoreID, ybBarCode, img string) (err error) { +// ybSkuID, err := api.YinBaoAPI.LoadProductsByPage(vendorStoreID, ybBarCode) +// resBinary, _, err := jxutils.DownloadFileByURL(img) + +// api.YinBaoAPI.UploadProductImage(vendorStoreID, ybSkuID, file) +// return err +// } diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index f85b7ba49..c5558a912 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -4,6 +4,8 @@ import ( "math" "time" + "git.rosy.net.cn/baseapi/platformapi/jdapi" + "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -775,3 +777,23 @@ func (c *StoreSkuController) CreateSkusAndFocusFromYb() { return retVal, "", err }) } + +// @Title 从微信上扫码标品到京西创建或关注 +// @Description 从微信上扫码标品到京西创建或关注 +// @Param token header string true "认证token" +// @Param payload formData string true "json数据,ProductInfo对象" +// @Param storeID formData int true "门店ID" +// @Param price formData int true "商品价格" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /CreateSkusAndFocusFromWx [post] +func (c *StoreSkuController) CreateSkusAndFocusFromWx() { + var productInfo *jdapi.ProductInfo + c.callCreateSkusAndFocusFromWx(func(params *tStoreSkuCreateSkusAndFocusFromWxParams) (retVal interface{}, errCode string, err error) { + if err = jxutils.Strings2Objs(params.Payload, &productInfo); err != nil { + return retVal, "", err + } + err = cms.CreateSkusAndFocusFromWx(params.Ctx, productInfo, params.Price, params.StoreID) + return retVal, "", err + }) +}