新增小程序扫码建商品

This commit is contained in:
苏尹岚
2020-04-01 15:43:35 +08:00
parent 25e4afd974
commit b33031abc9
3 changed files with 111 additions and 5 deletions

View File

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

View File

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

View File

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