491 行
19 KiB
PHP
可执行文件
491 行
19 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Retail\Business;
|
|
|
|
use Common\Business\Brand;
|
|
use Common\Business\SkuAttribute;
|
|
use Common\Business\WarehousingRecord;
|
|
use Common\Model\GoodsImportModel;
|
|
use Common\Model\RetailGoodsClassModel;
|
|
use Common\Model\RetailGoodsModel;
|
|
use Common\Model\RetailSkuGoodsModel;
|
|
|
|
//[1.8.50]
|
|
|
|
/**
|
|
* 商品类
|
|
* Class Goods
|
|
* [
|
|
* 门店商品导入的商品同步至商品档案 storeGoodsImportBatch
|
|
* 门店商品导入的商品同步至商品档案参数验证 storeGoodsImportBatchVerify
|
|
* 门店商品导入的商品同步至商品档案商品验证 storeImportBatchGoodsVerify
|
|
* 门店商品导入的商品同步至商品档案字段转换 storeGoodsImportBatchConversion
|
|
* 门店商品导入的商品同步至商品档案规格商品验证 storeImportBatchSkuGoodsVerify
|
|
* 门店商品导入的商品同步至商品档案规格添加 storeGoodsSkuImportAdd
|
|
* ]
|
|
* @package Retail\Business
|
|
*/
|
|
class Goods
|
|
{
|
|
/**
|
|
* 门店商品导入的商品同步至商品档案
|
|
* @param $parameter
|
|
* [
|
|
* platform_type 商户平台类型 1默认系统 2微礼平台
|
|
* merchant_id
|
|
* store_id
|
|
* checkgoodsarr 同步的商品导入表id的集合
|
|
* ]
|
|
* @return array
|
|
* [
|
|
* status
|
|
* remark
|
|
* ]
|
|
*/
|
|
public function storeGoodsImportBatch($parameter)
|
|
{
|
|
$platform_type = $parameter['platform_type'];
|
|
$merchant_id = $parameter['merchant_id'];
|
|
$store_id = $parameter['store_id'];
|
|
$checkGoodsArr = $parameter['checkGoodsArr'];
|
|
$verify = $this->storeGoodsImportBatchVerify($parameter); //验证且获取供给仓信息
|
|
if ($verify['status'] != 1) {
|
|
return $verify;
|
|
}
|
|
//第三方平台商品编码验证
|
|
if ($platform_type == 2) {
|
|
$LittleGoodsClass = new \LittleGift\Business\Goods();
|
|
$verifyResult = $LittleGoodsClass->importVerify([
|
|
'merchant_id' => $merchant_id,
|
|
'id_arr' => $checkGoodsArr
|
|
]);
|
|
if ($verifyResult['status'] == 0) {
|
|
$res['status'] = 0;
|
|
$res['remark'] = $verifyResult['message'];
|
|
return $res;
|
|
}
|
|
$third_code_error = $verifyResult['data'] ? $verifyResult['data'] : [];
|
|
}
|
|
$warehouse_id = $verify['data']['warehouseInfo']['id']; //供给仓id
|
|
$remark = '';
|
|
$goodsModel = new RetailGoodsModel();
|
|
$goodsImportModel = new GoodsImportModel();
|
|
$brandClass = new Brand();
|
|
foreach ($checkGoodsArr as &$val) {
|
|
$goods = $goodsImportModel->getFindTrue([
|
|
'merchantid' => $merchant_id,
|
|
'storeid' => $store_id,
|
|
'id' => $val,
|
|
'status' => 0
|
|
], 'id'); //要导入的商品信息
|
|
if (empty($goods)) {
|
|
$remark .= '未找到改商品信息';
|
|
continue;
|
|
}
|
|
if (!empty($goods['goods_brand'])) {
|
|
$result = $brandClass->brandAdd([
|
|
'merchant_id' => $merchant_id,
|
|
'store_id' => $store_id,
|
|
'goods_brand' => $goods['goods_brand']
|
|
]); //商品品牌
|
|
if ($result['status'] == 1) {
|
|
$goods['goods_brand_id'] = $result['data']['brandId'];
|
|
} else {
|
|
$goods['goods_brand_id'] = 0; //品牌id
|
|
}
|
|
}
|
|
$result = $this->storeImportBatchGoodsVerify([
|
|
'merchant_id' => $merchant_id,
|
|
'store_id' => $store_id,
|
|
'goods' => $goods,
|
|
'platform_type' => $platform_type,
|
|
'third_code_error' => $third_code_error
|
|
]); //商品信息验证
|
|
if ($result['status'] != 1) {
|
|
$remark .= $result['remark'];
|
|
continue;
|
|
}
|
|
$goods = $this->storeGoodsImportBatchConversion($goods); //字段转换
|
|
$add = $goods;
|
|
unset($add['sku_json']);
|
|
$add['merchant_id'] = $merchant_id;
|
|
$add['store_id'] = $store_id;
|
|
$goods_id = $goodsModel->addOrder($add); //添加商品档案
|
|
if (empty($goods_id)) {
|
|
$remark .= $goods['goods_name'] . '-档案添加失败,';
|
|
continue; // 商品档案添加失败,跳出循环
|
|
}
|
|
$add['warehouse_id'] = $warehouse_id;
|
|
$add['goods_id'] = $goods_id;
|
|
if ($goods['attribute_state'] == 1) {
|
|
//无规格
|
|
$result = A('Api/Inventory')->addSaleGoods($add, 1);
|
|
if ($result['status'] == 0) {
|
|
$remark .= $goods['goods_name'] . '-库存表录入失败';
|
|
continue;
|
|
}
|
|
} else if ($goods['attribute_state'] == 2 && $goods['sku_json']) {
|
|
//规格
|
|
$result = $this->storeGoodsSkuImportAdd([
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'store_id' => $parameter['store_id'],
|
|
'sku_json' => $goods['sku_json'],
|
|
'content' => $add,
|
|
'platform_type' => $platform_type,
|
|
'third_code_error' => $third_code_error
|
|
]);
|
|
if ($result['status'] == 0) {
|
|
$remark .= $goods['goods_name'] . $result['msg']; // 商品规格添加失败 接着执行
|
|
}
|
|
} else {
|
|
$remark .= $goods['goods_name'] . '商品规格属性有误';
|
|
continue;
|
|
}
|
|
|
|
$save_res = $goodsImportModel->updateOrder([
|
|
'merchantid' => $merchant_id,
|
|
'storeid' => $store_id,
|
|
'id' => $val
|
|
], [
|
|
'status' => 1
|
|
]); //修改商品导入表状态
|
|
if (!$save_res) {
|
|
$remark .= $goods['goods_name'] . '-状态修改失败,';
|
|
}
|
|
}
|
|
if (!empty($remark)) {
|
|
return ['status' => 0, 'remark' => $remark];
|
|
} else {
|
|
return ['status' => 1, 'remark' => $remark];
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 门店商品导入添加至商品档案规格添加
|
|
* @param $parameter
|
|
* [
|
|
* platform_type 商户平台类型 1默认系统 2微礼平台
|
|
* merchant_id
|
|
* store_id
|
|
* content 商品信息
|
|
* sku_json 规格信息 json字符串
|
|
* third_code_error 未通过第三方商品编码验证的商品编码集合
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function storeGoodsSkuImportAdd($parameter)
|
|
{
|
|
$platform_type = $parameter['platform_type'];
|
|
$third_code_error = $parameter['third_code_error'] ? $parameter['third_code_error'] : [];
|
|
$sku_json = json_decode($parameter['sku_json'], true); //规格信息
|
|
$store_id = $parameter['store_id'];
|
|
$merchant_id = $parameter['merchant_id'];
|
|
$content = $parameter['content'];
|
|
$title = $sku_json['sku_name_title'];
|
|
$sku_list = $sku_json['sku_list'];
|
|
$goods_id = $content['goods_id'];
|
|
if (empty($title) || empty($sku_list)) {
|
|
return ['status' => 0, 'msg' => '规格有误'];
|
|
}
|
|
$goodsModel = new RetailGoodsModel();
|
|
$goodsInfo = $goodsModel->getFind([
|
|
'id' => $goods_id
|
|
]);
|
|
if (empty($goodsInfo)) {
|
|
return ['status' => 0, 'msg' => '商品有误'];
|
|
}
|
|
$skuAttributeClass = new SkuAttribute();
|
|
$skuGoodsModel = new RetailSkuGoodsModel();
|
|
$arr = [];
|
|
foreach ($title as &$val) {
|
|
$result = $skuAttributeClass->skuAttributeAdd([
|
|
'merchant_id' => $merchant_id,
|
|
'store_id' => $store_id,
|
|
'name' => $val
|
|
]);
|
|
if ($result['status'] == 1) {
|
|
array_push($arr, $result['data']['skuAttributeId']);
|
|
}
|
|
}
|
|
foreach ($sku_list as &$value) {
|
|
$result = $this->storeImportBatchSkuGoodsVerify([
|
|
'merchant_id' => $merchant_id,
|
|
'store_id' => $store_id,
|
|
'sku_info' => $value,
|
|
'platform_type' => $platform_type,
|
|
'third_code_error' => $third_code_error
|
|
]);
|
|
if ($result['status'] != 1) {
|
|
return $result;
|
|
}
|
|
$sku_id_list = []; //规格名称id拼接
|
|
$sku_name = [];
|
|
//添加规格名称
|
|
foreach ($value['name'] as $ko => &$vo) {
|
|
$sku_name[] = $vo;
|
|
$result = $skuAttributeClass->skuNameAdd([
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'store_id' => $parameter['store_id'],
|
|
'name' => $vo,
|
|
'attributeId' => $arr[$ko]
|
|
]); //规格名称添加
|
|
if ($result['status'] != 1) {
|
|
return $result;
|
|
}
|
|
$sku_id_list[] = $result['data']['skuNameId'];
|
|
}
|
|
unset($value['name']);
|
|
$sku_content = $value;
|
|
$sku_content['store_id'] = $store_id;
|
|
$sku_content['goods_id'] = $goods_id;
|
|
$sku_content['sku_id_list'] = implode(',', $sku_id_list);
|
|
$sku_content['add_time'] = time();
|
|
$sku_content['weight_value'] = $value['sku_weight_value'] ? round($value['sku_weight_value'], 3) : null;
|
|
$sku_content['purchase_price'] = $value['purch_price'];
|
|
$sku_content['sku_num'] = 1;
|
|
unset($value['sku_weight_value']);
|
|
$skuId = $skuGoodsModel->addOrder($sku_content);
|
|
if (empty($skuId)) {
|
|
return ['status' => 0, 'msg' => '新规格添加失败'];
|
|
}
|
|
$warehouse_content = $content;
|
|
$warehouse_content['goods_num'] = $value['goods_num'];
|
|
$warehouse_content['more_num'] = $value['more_num'];
|
|
$warehouse_content['less_num'] = $value['less_num'];
|
|
$warehouse_content['purchase_price'] = $value['purch_price'];
|
|
$warehouse_content['sku_id'] = $skuId;
|
|
$warehouse_content['sku_name'] = implode(',', $sku_name);
|
|
$warehouse_content['sku_id_list'] = $sku_content['sku_id_list'];
|
|
$warehouse_content['sku_goods_number'] = $value['sku_goods_number'];
|
|
$warehouse_content['sku_code'] = $value['sku_code'];
|
|
$warehouse_content['sku_num'] = $value['sku_num'];
|
|
$warehouse_content['third_goods_code'] = $value['third_goods_code'] ? $value['third_goods_code'] : '';
|
|
A('Api/Inventory')->addSaleGoods($warehouse_content, 1);
|
|
unset($sku_content);
|
|
unset($warehouse_content);
|
|
}
|
|
return ['status' => 1, 'msg' => '添加成功'];
|
|
}
|
|
|
|
|
|
/**
|
|
* 门店商品导入的商品同步至商品档案规格商品验证
|
|
* @param $parameter
|
|
* [
|
|
* merchant_id
|
|
* platform_type 商户平台类型 1默认系统 2微礼平台
|
|
* sku_info 规格信息
|
|
* store_id
|
|
* third_code_error 未通过第三方商品编码验证的商品编码集合
|
|
* ]
|
|
* @return array
|
|
*/
|
|
public function storeImportBatchSkuGoodsVerify($parameter)
|
|
{
|
|
$platform_type = $parameter['platform_type'];
|
|
$third_code_error = $parameter['third_code_error'] ? $parameter['third_code_error'] : [];
|
|
$sku_info = $parameter['sku_info'];
|
|
$store_id = $parameter['store_id'];
|
|
$skuGoodsModel = new RetailSkuGoodsModel();
|
|
if ($sku_info['sku_code']) {
|
|
$sku_id = $skuGoodsModel->getFindField([
|
|
'store_id' => $store_id,
|
|
'state' => 0,
|
|
'sku_code' => $sku_info['sku_code']
|
|
], 'id');
|
|
if (!empty($sku_id)) {
|
|
return ['status' => 0, 'msg' => '-规格条码出现重复,'];
|
|
}
|
|
}
|
|
if (empty($sku_info['sku_goods_number'])) {
|
|
return ['status' => 0, 'msg' => '规格货号有误'];
|
|
} else {
|
|
$sku_goods_number = $skuGoodsModel->getFindField([
|
|
'store_id' => $store_id,
|
|
'state' => 0,
|
|
'sku_goods_number' => $sku_info['sku_goods_number']
|
|
], 'id');
|
|
if (!empty($sku_goods_number)) {
|
|
return ['status' => 0, 'msg' => '规格货号出现重复'];
|
|
}
|
|
}
|
|
//第三方平台商品编码
|
|
if ($platform_type == 2) {
|
|
if (empty($sku_info['third_goods_code'])) {
|
|
return ['status' => 0, 'msg' => '-规格第三方商品编码未设置'];
|
|
}
|
|
$LittleGoodsClass = new \LittleGift\Business\Goods();
|
|
$verifyResult = $LittleGoodsClass->verifyQ3Code([
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'third_goods_code' => $sku_info['third_goods_code']
|
|
]);
|
|
if ($verifyResult['status'] != 1) {
|
|
return ['status' => 0, 'msg' => '-规格商品Q3编码'.$verifyResult['message']];
|
|
}
|
|
if (!empty($third_code_error) && in_array($sku_info['third_goods_code'], $third_code_error)) {
|
|
return ['status' => 0, 'msg' => '-规格商品编码在第三方不存在,'];
|
|
}
|
|
}
|
|
return ['status' => 1, 'msg' => '验证成功'];
|
|
}
|
|
|
|
|
|
/**
|
|
* 门店商品导入的商品同步至商品档案字段转换
|
|
* @param $goods
|
|
* @return mixed
|
|
*/
|
|
public function storeGoodsImportBatchConversion($goods)
|
|
{
|
|
$goods['goods_number'] = $goods['good_number'];
|
|
$goods['online_state'] = $goods['issellonline'];
|
|
$goods['attribute_state'] = $goods['attribute'];
|
|
$goods['pricing_method'] = $goods['can_exchange_weigh'];
|
|
$goods['purchase_price'] = $goods['purch_price'];
|
|
$goods['weight_value'] = round($goods['weight_value'], 3);
|
|
$goods['status'] = 0;
|
|
$goods['add_time'] = time();
|
|
unset($goods['good_number']);
|
|
unset($goods['addtime']);
|
|
unset($goods['sell_num']);
|
|
unset($goods['merchantid']);
|
|
unset($goods['storeid']);
|
|
unset($goods['issellonline']);
|
|
unset($goods['goods_class_name']);
|
|
unset($goods['type']);
|
|
unset($goods['attribute']);
|
|
unset($goods['can_exchange_weigh']);
|
|
unset($goods['goods_brand']);
|
|
unset($goods['good_image']);
|
|
return $goods;
|
|
}
|
|
|
|
|
|
/**
|
|
* 门店商品导入的商品同步至商品档案商品验证
|
|
* @param $parameter
|
|
* [
|
|
* platform_type 商户平台类型 1默认系统 2微礼平台
|
|
* merchant_id
|
|
* store_id
|
|
* goods 商品导入表的商品信息
|
|
* third_code_error 未通过第三方平台的商品编码
|
|
* ]
|
|
* @return array
|
|
*/
|
|
public function storeImportBatchGoodsVerify($parameter)
|
|
{
|
|
$goodsModel = new RetailGoodsModel();
|
|
$goodsClassModel = new RetailGoodsClassModel();
|
|
$store_id = $parameter['store_id'];
|
|
$goods = $parameter['goods'];
|
|
$platform_type = $parameter['platform_type'];
|
|
$third_code_error = $parameter['third_code_error'] ? $parameter['third_code_error'] : [];
|
|
//商品货号
|
|
if (!empty($goods['good_number'])) {
|
|
$id = $goodsModel->getFind([
|
|
'goods_number' => $goods['good_number'],
|
|
'store_id' => $store_id,
|
|
'status' => ['neq', 2]
|
|
], 'id');
|
|
if ($id) {
|
|
$remark = $goods['goods_name'] . '-货号在商品档案中已存在,';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
} else {
|
|
$remark = $goods['goods_name'] . '-货号未设置,';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
// 商品条码
|
|
if (!empty($goods['goods_code'])) {
|
|
$id = $goodsModel->getFind([
|
|
'goods_code' => $goods['goods_code'],
|
|
'store_id' => $store_id,
|
|
'status' => ['neq', 2]
|
|
], 'id');
|
|
if ($id) {
|
|
$remark = $goods['goods_name'] . '-条码在商品档案中已存在,';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
}
|
|
//第三方平台商品编码
|
|
if ($platform_type == 2 && $goods['attribute'] == 1) {
|
|
if (empty($goods['third_goods_code'])) {
|
|
$remark = $goods['goods_name'] . '-第三方商品编码未设置';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
$LittleGoodsClass = new \LittleGift\Business\Goods();
|
|
$verifyResult = $LittleGoodsClass->verifyQ3Code([
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'third_goods_code' => $goods['third_goods_code']
|
|
]);
|
|
if ($verifyResult['status'] != 1) {
|
|
$remark = $goods['goods_name'] . 'Q3编码' . $verifyResult['message'];
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
if (!empty($third_code_error) && in_array($goods['third_goods_code'], $third_code_error)) {
|
|
$remark = $goods['goods_name'] . '-第三方商品编码不存在';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
}
|
|
if ($goods['can_exchange_weigh'] == 2 && empty($goods['company'])) {
|
|
$remark = $goods['goods_name'] . '-开启称重,单位必填';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
//商品分类
|
|
$class = $goodsClassModel->getFind([
|
|
'id' => $goods['goods_class_id'],
|
|
'status' => 0
|
|
]);
|
|
if (empty($class)) {
|
|
$remark = $goods['goods_name'] . '-商品分类不存在,';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
if ($goods['attribute'] == 2) {
|
|
$sku_json = json_decode($goods['sku_json'], true);
|
|
if ((empty($sku_json['sku_name_title']) || empty($sku_json['sku_list']))) {
|
|
$remark = $goods['goods_name'] . '-规格信息有误';
|
|
return ['status' => 0, 'remark' => $remark];
|
|
}
|
|
}
|
|
return ['status' => 1, 'remark' => '验证通过'];
|
|
}
|
|
|
|
|
|
/**
|
|
* 门店商品导入的商品同步至商品档案参数验证
|
|
* @param $parameter
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* checkGoodsArr 商品导入表id的集合
|
|
* ]
|
|
* @return array
|
|
* [
|
|
* status
|
|
* remark
|
|
* data=>[
|
|
* warehouseInfo 仓库信息
|
|
* ]
|
|
* ]
|
|
*/
|
|
public function storeGoodsImportBatchVerify($parameter)
|
|
{
|
|
if (empty($parameter['merchant_id']) || empty($parameter['store_id'])) {
|
|
return ['status' => 0, 'remark' => '登录超时'];
|
|
}
|
|
if (!$parameter['checkGoodsArr']) {
|
|
return ['status' => 0, 'remark' => '请选择要删除的商品'];
|
|
}
|
|
$warehouseClass = new WarehousingRecord();
|
|
$warehouseInfo = $warehouseClass->getStoreSaleWarehouse([
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'store_id' => $parameter['store_id']
|
|
]);//查询门店仓库id
|
|
if (empty($warehouseInfo)) {
|
|
return ['status' => 0, 'remark' => '请先创建供给仓'];
|
|
}
|
|
return ['status' => 1, 'remark' => '验证成功', 'data' => ['warehouseInfo' => $warehouseInfo]];
|
|
}
|
|
} |