Files
OMS/app/inventorydepth/lib/service/shop/weimobr.php
chenping 61783b7d01 1. 【新增】售后单售后原因类型支持搜索
2. 【新增】手工创建订单折扣可输入正数

3. 【优化】盘点申请单确认

4. 【修复】采购退货单模拟出库失败问题

5. 【新增】订单金额客户实付与结算金额

6. 【优化】仓库发货统计报表物料名称显示

7. 【优化】自有仓储虚拟发货逻辑

8. 【修复】基础物料分类管理问题
2026-04-01 11:59:17 +08:00

171 lines
6.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 微盟2.0Lib方法类
*
* @author wangbiao@shopex.cn
* @version 2025.07.01
*/
class inventorydepth_service_shop_weimobr extends inventorydepth_service_shop_common
{
// 微盟商品接口weimob_shop/goods/getList一次最多支持拉取20条记录;
public $customLimit = 20;
/**
* 下载全部商品(包括普通现货、专供现货)
* 官方接口名weimob_shop/goods/getList
* 官方接口URLhttps://doc.weimobcloud.com/detail?menuId=19&childMenuId=1&tag=2396&id=2776&isold=2
*
* @param array $filter
* @param string $shop_id
* @param int $offset
* @param int $limit
* @param string $limit
* @return array
*/
public function downloadList($filter, $shop_id, $offset=0, $limit=30, &$error_msg=null)
{
$shopService = kernel::single('inventorydepth_rpc_request_shop_items');
// 开始执行
$result = $shopService->items_all_get($filter, $shop_id, $offset, $limit);
if($result === false){
$error_msg = $shopService->get_err_msg();
return false;
}
// check
if(!isset($result['totalCount']) || !isset($result['pageList'])){
$error_msg = '响应数据无效:没有总数和列表数据';
return false;
}
// 响应数据为空
if(empty($result['pageList'])){
$this->totalResults = 0;
return array();
}
// 平台商品总数
$this->totalResults = $result['totalCount'];
//格式化
$data = array();
foreach ($result['pageList'] as $skuKey => $goodsInfo)
{
// 店铺库存
$shop_store = isset($goodsInfo['goodsStock']['goodsStockNum']) ? $goodsInfo['goodsStock']['goodsStockNum'] : 0;
// 商品最小销售价
$minSalePrice = 0;
if(isset($goodsInfo['goodsPrice']['minSalePrice']) && $goodsInfo['goodsPrice']['minSalePrice']){
$minSalePrice = $goodsInfo['goodsPrice']['minSalePrice'];
}
// 商品最大销售价
$maxSalePrice = 0;
if(isset($goodsInfo['goodsPrice']['maxSalePrice']) && $goodsInfo['goodsPrice']['maxSalePrice']){
$maxSalePrice = $goodsInfo['goodsPrice']['maxSalePrice'];
}
// 商品是否上架
$approve_status = 'onsale';
if(isset($goodsInfo['isOnline']) && !$goodsInfo['isOnline']){
$approve_status = 'instock';
}
//spu
$data[] = array(
'iid' => $goodsInfo['goodsId'], //店铺商品ID
'outer_id' => ($goodsInfo['outerGoodsCode'] ? $goodsInfo['outerGoodsCode'] : $goodsInfo['goodsId']), //外部商品编码,是商户自有 ERP 系统的商品编码.
'title' => $goodsInfo['title'], //商品名称
'approve_status' => $approve_status, //商品是否上架
'price' => $minSalePrice,
'num' => $shop_store, //店铺库存
'simple' => 'false',
//'skus' => $skuList, // 微盟平台没有SKU列表
);
}
// 单独按iid拉取商品详细信息及SKU列表
//@todo微盟平台商品API接口没有SKU列表数据,需要单独请求SKU接口拉取数据;
if($data){
foreach ($data as $key => $itemInfo)
{
$itemDetailInfo = $this->downloadByIId($itemInfo['iid'], $shop_id, $error_msg);
if(empty($itemDetailInfo)){
$data[$key]['skus'] = [];
continue;
}
$data[$key]['skus'] = $itemDetailInfo['skus'];
}
}
return $data;
}
/**
* 通过IID下载 单个SKU
* 官方接口名weimob_shop/goods/sku/search
* 官方接口URLhttps://doc.weimobcloud.com/detail?menuId=19&childMenuId=1&tag=2396&id=4153&isold=2
*
* @param $iid
* @param $shop_id
* @param $error_msg
* @return array|false|void
*/
public function downloadByIId($iid, $shop_id, &$error_msg=null)
{
$shopService = kernel::single('inventorydepth_rpc_request_shop_items');
// store.item.get
$goodsInfo = $shopService->item_get($iid, $shop_id);
if ($goodsInfo === false) {
$error_msg = $shopService->get_err_msg();
return false;
}
// check
if(empty($goodsInfo['skuList'])){
$error_msg = $iid . '商品详情不存在!';
return false;
}
// 商品是否上架
$approve_status = 'onsale';
if(isset($goodsInfo['isOnline']) && !$goodsInfo['isOnline']){
$approve_status = 'instock';
}
// SKU列表
$skus = [];
foreach ($goodsInfo['skuList'] as $skuKey => $skuInfo)
{
$skus[] = array(
'sku_id' => $skuInfo['skuId'], //SKU ID
'outer_id' => $skuInfo['outerSkuCode'], //店铺货号
'barcode' => $skuInfo['skuBarCode'], //条形码
'price' => $skuInfo['salePrice'], //销售价,精确到 2 位小数
'quantity' => $skuInfo['skuStockNum'], //SKU店铺库存数量
//'costPrice' => $skuInfo['costPrice'], //成本价,精确到 2 位小数
//'marketPrice' => $skuInfo['marketPrice'], //市场价,精确到 2 位小数
//'properties' => $skuInfo['goodsPropertyList'], //商品属性
);
}
// 商品详细信息
$itemInfo = array(
'iid' => $goodsInfo['goodsId'], //店铺商品ID
'outer_id' => ($goodsInfo['outerGoodsCode'] ? $goodsInfo['outerGoodsCode'] : $goodsInfo['goodsId']), //外部商品编码,是商户自有 ERP 系统的商品编码.
'title' => $goodsInfo['title'], //商品名称
'approve_status' => $approve_status, //商品是否上架
'simple' => 'false',
//'price' => 0,
//'num' => 0,
'skus' => ['sku'=>$skus],
);
return $itemInfo;
}
}