mirror of
https://gitee.com/ShopeX/OMS
synced 2026-04-02 05:55:49 +08:00
128 lines
4.6 KiB
PHP
128 lines
4.6 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
class ome_api_log_to_stock {
|
|
|
|
//新发起的同步请求
|
|
function save($stocks,$shop_id){
|
|
if(!$stocks) {
|
|
return false;
|
|
}
|
|
$oApiStockLog = app::get('ome')->model('api_stock_log');
|
|
$task_name = '同步库存';
|
|
if($shop_id){
|
|
$shop_info = app::get('ome')->model('shop')->dump($shop_id,'name');
|
|
}
|
|
|
|
$bns = array_column($stocks,'bn');
|
|
|
|
$materialList = app::get('material')->model('sales_material')->getlist('sm_id,sales_material_name,sales_material_bn',array('sales_material_bn'=>$bns));
|
|
|
|
$materials = array_column($materialList,null,'sales_material_bn');
|
|
|
|
$stocklog = $oApiStockLog->getlist('log_id,product_id,product_bn',array('shop_id'=>$shop_id,'product_bn'=>$bns));
|
|
|
|
$stockList = array_column($stocklog,null,'product_bn');
|
|
|
|
foreach($stocks as $k=>$v) {
|
|
if($shop_info) {
|
|
$task_name = '同步店铺('.$shop_info['name'].')的库存('.$v['bn'].')';
|
|
}
|
|
$product_info = $materials[$v['bn']];
|
|
|
|
//$data['params'] = json_encode($stocks);
|
|
$data['store'] = $v['quantity'];
|
|
$data['actual_stock'] = $v['actual_stock'];
|
|
$data['status'] = 'running';
|
|
$data['shop_sku_id'] = $v['sku_id'];
|
|
|
|
$tmp_crc32_code = sprintf('%u', crc32($shop_id."-".$v['bn']));
|
|
|
|
$tmp_info = $stockList[$v['bn']];
|
|
if(!$tmp_info){
|
|
$data['createtime'] = time();
|
|
$data['shop_id'] = $shop_id;
|
|
$data['shop_name'] = $shop_info['name'];
|
|
$data['task_name'] = $task_name;
|
|
$data['product_id'] = $product_info['sm_id'];
|
|
$data['product_name'] = $product_info['sales_material_name'];
|
|
$data['product_bn'] = $v['bn'];
|
|
$data['worker'] = 'ome_sync_product.sync_stock';
|
|
$data['crc32_code'] = $tmp_crc32_code;
|
|
$data['num_iid'] = $v['num_iid'];
|
|
|
|
//[仓库级库存回传]现只支持抖音平台按仓回传库存
|
|
$data['branch_bn'] = $v['branch_bn'];
|
|
|
|
//[兼容]得物平台bidding_no出价编号
|
|
if($v['bidding_no']){
|
|
$data['bidding_no'] = $v['bidding_no'];
|
|
}
|
|
|
|
$oApiStockLog->save($data);
|
|
$stocks[$k]['log_id'] = $data['log_id'];
|
|
}else{
|
|
$data['msg'] = '';
|
|
$data['msg_id'] = '';
|
|
$data['memo'] = '';
|
|
// $data['last_modified'] = '';
|
|
$oApiStockLog->update($data,array('log_id'=>$tmp_info['log_id']));
|
|
$stocks[$k]['log_id'] = $tmp_info['log_id'];
|
|
}
|
|
unset($tmp_info);
|
|
unset($data);
|
|
}
|
|
|
|
return $stocks;
|
|
}
|
|
|
|
//同步请求返回的数据
|
|
function save_callback($bn,$status,$shop_id,$msg,$log_detail){
|
|
$oApiStockLog = app::get('ome')->model('api_stock_log');
|
|
|
|
if($status=='success') {
|
|
$msg = '更新成功';
|
|
}
|
|
$data['msg_id'] = $log_detail['msg_id'];
|
|
//$data['memo'] = $log_detail['params'];
|
|
$data['msg'] = $msg;
|
|
$data['status'] = $status;
|
|
$data['last_modified'] = time();
|
|
|
|
//组织要更新的货号,一次性更新
|
|
foreach($bn as $v) {
|
|
$crc32_code[] = sprintf('%u', crc32($shop_id."-".$v['bn']));
|
|
}
|
|
$log_ids = array_column($bn, 'log_id');
|
|
|
|
if($log_ids){
|
|
$filter = array('log_id'=>$log_ids);
|
|
|
|
|
|
$oApiStockLog->update($data,$filter);
|
|
}else{
|
|
$bns = array_column($bn,'bn');
|
|
if($bns){
|
|
$bn = $bns;
|
|
}
|
|
$sql = "UPDATE sdb_ome_api_stock_log SET msg_id='".$data['msg_id']."',msg='".$data['msg']."',`status`='".$data['status']."',last_modified='".$data['last_modified']."' WHERE shop_id='".$shop_id."' AND product_bn in('".implode('\',\'',$bn)."')";
|
|
|
|
$oApiStockLog->db->exec($sql);
|
|
}
|
|
}
|
|
}
|