文件
mashangyoujiu/Application/Common/Business/Goods.class.php

2976 行
122 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Common\Business;
use Common\Model\GoodsEditRecordModel;
use Common\Model\GoodsImportModel;
use Common\Model\ImageGalleryModel;
use Common\Model\RetailGoodsBrandModel;
use Common\Model\RetailGoodsClassModel;
use Common\Model\RetailGoodsModel;
use Common\Model\RetailMgoodsModel;
use Common\Model\RetailSkuGoodsModel;
use Common\Model\RetailSkuListModel;
use Common\Model\RetailStoreModel;
use Common\Model\GoodsCodeModel;
use Common\Model\SaleMGoodsModel;
use Common\Model\SkuGoodsViewModel;
use Common\Model\SkuMGoodsModel;
use Common\Model\SSaleMGoodsModel;
use Common\Model\SWarehousingGoodsModel;
//[1.9.18]
/**
* 商品类
* Class Goods
* @package Common\Business
* [
* 导出=>[
* 商品导出 exportGoods
* 商品字段转换 exportTrans
* 规格字段转换信息 exportSkuTrans
* 导出的查询条件 exportTerm
* 导出查询的规格字段 querySkuGoodsFields
* 导出查询的商品字段 queryGoodsFields
* 导出头部 exportGoodsTitle
* ]
* 门店商品信息更新记录 goodsEditRecord
* 批量修改简拼 batchSimpleSpelling
* 生成或修改简拼验证 SimpleSpellingVerify
* 一键生成简拼 generateSimpleSpelling
* 门店根据商品id集合获取商品名称集合 GoodsNameList
* 商户的商品列表(不是单品列表) getMerchantGoodsList
* 商户的商品列表(不是单品列表)的where查询条件 getMerchantGoodsListTerm
* 门店商品列表(不是单品列表) getStoreGoodsList
* 门店商品列表(不是单品列表)的where查询条件 getStoreGoodsListTerm
* 商品导入的商品列表 getImportGoodsList
* 商户商品导入的商品列表的where条件 getMerchantImportGoodsListTerm
* 门店商品导入的商品列表的where条件 getStoreImportGoodsListTerm
* 删除商品导入表的商品 importGoodsOut
* 添加到导入商品表 ImportGoodsAdd
* 上传导入商品文件以及存入导入表 goodsImportOperation
* 导入商品表格头部 ImportGoodsTitle
* 导入商品验证且区分 ImportGoodsHandle
* 导入商品公共验证 ImportGoodsVerify
* 无规格商品验证 ImportPlainGoodsVerify
* 无规格商品处理 ImportPlainGoodsArr
* 规格商品验证 ImportGoodsSkuVerify
* 规格商品处理 ImportGoodsSkuArr
* 将条码查询出的商品图片存入图片库 basisCodeAddImageGallery
* 获取商户与门店条码查询方式 basisUserIdGetCode
* 根据商品条码从云库查询商品信息 basisCodeGetGoodsInfo
* 获取本地商品库信息 getLocal
* 添加本地商品云库 addLocal
* 阿里云根据商品条码查询商品信息 aLiYunGoodsInfo
* 判断货号或者条码在门店是否可以使用 jumpGoodsNumberOrCode
* 判断货号或者条码在商户是否可以使用 jumpMerGoodsNumberOrCode
* 按规格|非规格筛选么你单商品列表 comStoreGoods
* ]
*/
class Goods
{
/**
* 商品导出
* @param $param
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* operator_type 操作端 1后台
* user_type 3 商户 4门店
* merchant_id
* store_id
* directory_name 导出路径
* searchText 搜索内容
* keyword_type 1货号 2条码 3名称
* pricing_method 1非称重 2称重
* condition_name 排序规则关键词
* person1 一级分类
* person2 二级分类
* person3 三级分类
* online_state 商城出售
* attribute_state 1无规格商品 2规格商品
* advance_sale_status 销售模式 0现货销售 1预售模式
* status 上架状态 0上架 1下架
* page 页码
* limit 每页条数
* ]
* @return mixed
* @throws \PHPExcel_Reader_Exception
* @throws \PHPExcel_Writer_Exception
*/
public function exportGoods($param)
{
$platform_type = $param['platform_type'] ? $param['platform_type'] : 1;
$param['limit'] = 300;
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param);
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
unset($verifyResult);
if (!in_array($param['attribute_state'], ['1', '2'])) {
return callBack(statusCode()['error'], "请选择规格属性");
}
$where = $this->exportTerm($param);
$fields = $this->queryGoodsFields($param['user_type'], $param['attribute_state']);
switch ($param['user_type']) {
case 3:
//商户
$GoodsModel = new RetailMgoodsModel();
switch ($param['attribute_state']) {
case 1:
$goodsList = $GoodsModel->GoodsSaleList($where, $fields, 'g.id asc', $param['page'], $param['limit']);
break;
case 2:
$goodsList = $GoodsModel->getSelect($where, $fields, 'id asc', $param['page'] . ',' . $param['limit']);
break;
}
break;
case 4:
//门店
$GoodsModel = new RetailGoodsModel();
switch ($param['attribute_state']) {
case 1:
$goodsList = $GoodsModel->getOnlineGoods($where, $fields, 'g.id asc', $param['page'] . ',' . $param['limit']);
break;
case 2:
$goodsList = $GoodsModel->getSelect($where, $fields, 'id asc', $param['page'] . ',' . $param['limit']);
break;
}
break;
}
unset($where);
unset($fields);
$goods_arr = [];
if (!empty($goodsList)) {
$goods_arr = $this->exportTrans([
'merchant_id' => $param['merchant_id'],
'user_type' => $param['user_type'],
'attribute_state' => $param['attribute_state'],
'goodsList' => $goodsList,
'store_id' => $param['store_id'] ? $param['store_id'] : 0,
'platform_type' => $platform_type
]);
}
$header_arr = $this->exportGoodsTitle($param['attribute_state'], $platform_type); //头部字段
if ($param['page'] == 1) {
switch ($param['attribute_state']) {
case 1:
$filename = "非规格商品档案导出";
$str = [
'导入说明(勿动)',
'1.当开启了店内出售,店内零售价为必填',
'2.当开启了商城出售,商城零售价为必填',
'3.当开启了店内会员价,店内会员价为必填',
'4.当开启了商城会员价,商城会员价为必填',
'5.所有价格最多设置两位小数',
'6.商品条码长度 1~17位、英文字母、数字或-_ 组合',
'7.商品货号长度 1-17位、英文字母、数字或-_ 组合',
'8.开启商品称重时,商品库存、超量值、预警值小数点后最多只能有3位;不开启时只能为正整数',
'9.称重商品开启时必须输入单位',
'10.单位取值范围:KG,kg,G,g,千克,克,斤,市斤',
'11.商品设置库存后则商品进价为必填',
'12.每个商品的货号和商品条码都不能重复',
'导入列表',
];
break;
case 2:
$filename = "规格商品档案导出";
$str = [
'导入说明(勿动)',
'1.当开启了店内出售,店内零售价为必填(规格的店内零售价也必填)',
'2.当开启了商城出售,商城零售价为必填(规格的商城零售价也必填)',
'3.当开启了店内会员价,店内会员价为必填(规格的店内会员价也必填)',
'4.当开启了商城会员价,商城会员价为必填(规格的商城会员价也必填)',
'5.所有价格最多设置两位小数',
'6.商品条码长度 1~17位、英文字母、数字或-_ 组合',
'7.商品货号长度 1-17位、英文字母、数字或-_ 组合',
'8.开启商品称重时,商品库存、超量值、预警值小数点后最多只能有3位;不开启时只能为正整数',
'9.多规格商品无法进行称重设置',
'10.单位取值范围:KG,kg,G,g,千克,克,斤,市斤',
'11.商品设置库存后则商品进价为必填',
'12.多规格商品的规格货号为必填项且货号与条码不能重复',
'导入列表',
];
break;
}
}
if (empty($param['directory_name'])) {
switch ($param['user_type']) {
case 3:
$directory_name = "./Uploads/MerGoodsExcel/{$param['merchant_id']}/";
break;
case 4:
$directory_name = "./Uploads/storeGoodsExcel/{$param['store_id']}/";
break;
}
} else {
$directory_name = $param['directory_name'];
}
$parameter = [
'expTitle' => $filename,
'expCellName' => $header_arr,
'expTableData' => $goods_arr,
'common' => $str,
'directory_name' => $directory_name,
'page' => $param['page']
];
$ExportClass = new Export();
$result = $ExportClass->generateXLS($parameter);
$res = array(
'type' => 1,
'directory_name' => $result['directory_name'],
);
if (count($goodsList) < $param['limit']) {
$res['type'] = 2;
}
return callBack(statusCode()['success'], "查询成功", $res);
}
/**
* 商品字段转换
* @param $param
* [
* merchant_id
* user_type 3商户 4门店
* attribute_state 1无规格 2规格
* goodsList
* store_id
* platform_type 商户平台类型 1默认系统 2微礼平台
* ]
* @return mixed
*/
public function exportTrans($param)
{
$user_type = $param['user_type'];
$attribute_state = $param['attribute_state'];
$GoodsClassify = new GoodsClassify();
$SkuAttributeClass = new SkuAttribute();
$BrandModel = new RetailGoodsBrandModel();
$goodsList = $param['goodsList'];
$store_id = $param['store_id'];
$platform_type = $param['platform_type'];
if ($attribute_state == 2) {
switch ($user_type) {
case 3:
$SkuModel = new SkuMGoodsModel();
break;
case 4:
$SkuModel = new RetailSkuGoodsModel();
break;
}
$SkuListModel = new RetailSkuListModel();
$sku_list_name_arr = $SkuListModel->getSelect([
'state' => 0,
'merchant_id' => $param['merchant_id']
], 'name,id');
if (!empty($sku_list_name_arr)) {
$sku_list_name_arr = array_column($sku_list_name_arr, null, 'id');
}
$sku_where['k.state'] = 0; //规格查询条件
$sku_fields = $this->querySkuGoodsFields($param['user_type']); //规格查询字段
}
$goods_arr = [];
if ($platform_type == 2 && $user_type == 4) {
//Q3库存
$code_arr = [];
}
foreach ($goodsList as $key => &$val) {
if (!empty($val['goods_brand_id'])) {
$val['goods_brand'] = $BrandModel->getFindField(['id' => $val['goods_brand_id']], 'name');
}
$class_arr = $GoodsClassify->getName($val['goods_class_id'], []);
$val['class_name_1'] = $class_arr['class_name_1'];
$val['class_name_2'] = $class_arr['class_name_2'];
$val['class_name_3'] = $class_arr['class_name_3'];
if ($platform_type == 2) {
if ($user_type == 4 && $attribute_state == 1) {
$code_arr[$val['id']] = $val['third_goods_code'];
$val['goods_num'] = 0;
} else {
$val['goods_num'] = '---';
}
} else {
if ($attribute_state == 2) {
$val['goods_num'] = A('Api/Inventory')->goods_num(2, $store_id, $val['id']);
} else {
$val['goods_num'] = floatval($val['goods_num']);
}
}
if (isset($val['purchase_price'])) floatval($val['purchase_price']);
if (isset($val['retail_price'])) floatval($val['retail_price']);
if (isset($val['online_price'])) floatval($val['online_price']);
if (isset($val['store_mem_price'])) floatval($val['store_mem_price']);
if (isset($val['shop_mem_price'])) floatval($val['shop_mem_price']);
if (isset($val['more_num'])) floatval($val['more_num']);
if (isset($val['less_num'])) floatval($val['less_num']);
if (isset($val['weight_value'])) floatval($val['weight_value']);
if ($val['retail_state'] == 1) {
$val['retail_state_name'] = '是';
} else {
$val['retail_state_name'] = '否';
}
if ($val['online_state'] == 1) {
$val['online_state_name'] = '是';
} else {
$val['online_state_name'] = '否';
}
if ($val['store_mem_status'] == 1) {
$val['store_mem_status_name'] = '是';
} else {
$val['store_mem_status_name'] = '否';
}
if ($val['shop_mem_status'] == 1) {
$val['shop_mem_status_name'] = '是';
} else {
$val['shop_mem_status_name'] = '否';
}
if ($attribute_state == 1) {
if ($val['pricing_method'] == 2) {
$val['pricing_method_name'] = '是';
} else {
$val['pricing_method_name'] = '否';
}
}
if ($val['vip_online_state'] == 1) {
$val['vip_online_state_name'] = '是';
} else {
$val['vip_online_state_name'] = '否';
}
if ($val['vip_retail_state'] == 1) {
$val['vip_retail_state_name'] = '是';
} else {
$val['vip_retail_state_name'] = '否';
}
if ($attribute_state == 2) {
//规格处理
$attrName = $SkuAttributeClass->basisGoodsIdGetName([
'user_type' => $param['user_type'],
'goods_id' => $val['id']
]);
for ($i = 0; $i < count($attrName); $i++) {
$val["sku_" . ($i + 1)] = $attrName[$i];
}
unset($attrName);
if ($user_type == 3) {
$sku_where['k.mgoods_id'] = $val['id'];
} else if ($user_type == 4) {
$sku_where['k.goods_id'] = $val['id'];
}
$sku_info = $SkuModel->getSkuGoodsList($sku_where, $sku_fields, 'k.id asc');
if (!empty($sku_info)) {
foreach ($sku_info as $skuKey => $skuVal) {
$sku_id_list = explode(',', $skuVal['sku_id_list']);
$sku_name_count = count($sku_id_list);
for ($i = 0; $i < $sku_name_count; $i++) {
$sku_arr["sku_val_" . ($i + 1)] = $sku_list_name_arr[$sku_id_list[$i]]['name'];
}
if ($platform_type == 2) {
//Q3库存
if ($user_type == 4) {
$code_arr[$val['id'] . '_' . $skuVal['id']] = $skuVal['third_goods_code'];
} else {
$sku_arr['sku_goods_num'] = '---';
}
} else {
$sku_arr['sku_goods_num'] = $skuVal['goods_num'];
}
if (isset($skuVal['more_num'])) $sku_arr['sku_more_num'] = $skuVal['more_num'];
if (isset($skuVal['less_num'])) $sku_arr['sku_less_num'] = $skuVal['less_num'];
if (isset($skuVal['purchase_price'])) $sku_arr['sku_purchase_price'] = $skuVal['purchase_price'];
if (isset($skuVal['retail_price'])) $sku_arr['sku_retail_price'] = $skuVal['retail_price'];
if (isset($skuVal['online_price'])) $sku_arr['sku_online_price'] = $skuVal['online_price'];
if (isset($skuVal['store_mem_price'])) $sku_arr['sku_store_mem_price'] = $skuVal['store_mem_price'];
if (isset($skuVal['shop_mem_price'])) $sku_arr['sku_shop_mem_price'] = $skuVal['shop_mem_price'];
if (isset($skuVal['weight_value'])) $sku_arr['sku_weight_value'] = $skuVal['weight_value'];
if (isset($skuVal['third_goods_code'])) $sku_arr['third_goods_code'] = $skuVal['third_goods_code'];
$sku_arr['sku_goods_number'] = $skuVal['sku_goods_number'];
$sku_arr['sku_code'] = $skuVal['sku_code'];
$sku_arr['sku_id'] = $skuVal['id'];
$sku_arr['id'] = $val['id'];
if ($skuKey == 0) {
$new_val = array_merge($val, $sku_arr);
$goods_arr[] = $new_val;
unset($new_val);
} else {
$goods_arr[] = $sku_arr;
}
unset($sku_arr);
}
}
} else {
$goods_arr[] = $val;
}
}
unset($class_arr);
if ($platform_type == 2 && !empty($code_arr) && $user_type == 4) {
$StoreModel = new RetailStoreModel();
$Customer_Codes = $StoreModel->getFindField([
'id' => $param['store_id']
], 'third_code');
$GoodsClass = new \LittleGift\Business\Goods();
$thirdResult = $GoodsClass->goodsNumQuery([
'merchant_id' => $param['merchant_id'],
'type' => 2,
'code_arr' => $code_arr,
'Customer_Codes' => $Customer_Codes
]);
if ($thirdResult['status'] == 1) {
$stock = $thirdResult['data'];
$custom_key = '';
foreach ($goods_arr as $key => &$val) {
if ($attribute_state == 2) {
$val['sku_goods_num'] = $stock[$val['id'] . '_' . $val['sku_id']];
if (!empty($val['class_name_1'])) {
$custom_key = $key;
$goods_arr[$custom_key]['goods_num'] += $val['sku_goods_num'];
} else {
$goods_arr[$custom_key]['goods_num'] += $val['sku_goods_num'];
}
} else {
$val['goods_num'] = $stock[$val['id']] ? $stock[$val['id']] : 0;
}
}
}
}
return $goods_arr;
}
/**
* 规格字段转换信息
* @param $skuVal
* @param $user_type
* @param $store_id
* @return mixed
*/
public function exportSkuTrans($skuVal, $user_type, $store_id)
{
}
/**
* 导出的查询条件
* @param $param
* [
* operator_type 操作端 1后台
* user_type 3 商户 4门店
* merchant_id
* store_id
* searchText 搜索内容
* keyword_type 1货号 2条码 3名称
* pricing_method 1非称重 2称重
* person1 一级分类
* person2 二级分类
* person3 三级分类
* online_state 商城出售 是否在商城中出售:0,不在1在商城出售
* attribute_state 1无规格商品 2规格商品
* advance_sale_status 销售模式 0现货销售 1预售模式
* status 上架状态 0上架 1下架
* page 页码
* limit 每页条数
* ]
* @return mixed
*/
public function exportTerm($param)
{
$class_param = [
'person1' => $param['person1'],
'person2' => $param['person2'],
'person3' => $param['person3'],
];
switch ($param['attribute_state']) {
case 1:
$GoodsClassify = new GoodsClassify();
$where = $GoodsClassify->getGoodsClassId($class_param, [], 'g.goods_class_id');
$where['g.status'] = ['neq', 2];
switch ($param['user_type']) {
case 3:
//商户
$where['g.merchantid'] = $param['merchant_id'];
$where['g.attribute'] = $param['attribute_state'];
if (!empty($param['pricing_method'])) {
$where['g.can_exchange_weigh'] = $param['pricing_method'];
}
if (in_array($param['online_state'], ['0', '1'])) {
$where['g.issellonline'] = $param['online_state'];
}
break;
case 4:
//门店
$where['g.merchant_id'] = $param['merchant_id'];
$where['g.attribute_state'] = $param['attribute_state'];
$where['g.store_id'] = $param['store_id'];
if (!empty($param['pricing_method'])) {
$where['g.pricing_method'] = $param['pricing_method'];
}
if (in_array($param['online_state'], ['0', '1'])) {
$where['g.online_state'] = $param['online_state'];
}
if (in_array($param['advance_sale_status'], ['0', '1'])) {
$where['g.advance_sale_status'] = $param['advance_sale_status'];
}
break;
}
if (in_array($param['status'], ['0', '1'])) {
$where['g.status'] = $param['status'];
}
if (!empty($param['searchText'])) {
switch ($param['keyword_type']) {
case 1:
//货号
if ($param['user_type'] == 3) {
$where['g.good_number'] = $param['searchText'];
} else if ($param['user_type'] == 4) {
$where['g.goods_number'] = $param['searchText'];
}
break;
case 2:
//条码
$where['g.goods_code'] = $param['searchText'];
break;
case 3:
//名称
$where['g.goods_name'] = array('like', '%' . $param['searchText'] . '%');
break;
}
}
break;
case 2:
$GoodsClassify = new GoodsClassify();
$where = $GoodsClassify->getGoodsClassId($class_param, [], 'goods_class_id');
$where['status'] = ['neq', 2];
switch ($param['user_type']) {
case 3:
//商户
$where['merchantid'] = $param['merchant_id'];
$where['attribute'] = $param['attribute_state'];
if (!empty($param['pricing_method'])) {
$where['can_exchange_weigh'] = $param['pricing_method'];
}
if (in_array($param['online_state'], ['0', '1'])) {
$where['issellonline'] = $param['online_state'];
}
break;
case 4:
//门店
$where['merchant_id'] = $param['merchant_id'];
$where['attribute_state'] = $param['attribute_state'];
$where['store_id'] = $param['store_id'];
if (!empty($param['pricing_method'])) {
$where['pricing_method'] = $param['pricing_method'];
}
if (in_array($param['online_state'], ['0', '1'])) {
$where['online_state'] = $param['online_state'];
}
if (in_array($param['advance_sale_status'], ['0', '1'])) {
$where['advance_sale_status'] = $param['advance_sale_status'];
}
break;
}
if (in_array($param['status'], ['0', '1'])) {
$where['status'] = $param['status'];
}
if (!empty($param['searchText'])) {
switch ($param['keyword_type']) {
case 1:
//货号
if ($param['user_type'] == 3) {
$where['good_number'] = $param['searchText'];
} else if ($param['user_type'] == 4) {
$where['goods_number'] = $param['searchText'];
}
break;
case 2:
//条码
$where['goods_code'] = $param['searchText'];
break;
case 3:
//名称
$where['goods_name'] = array('like', '%' . $param['searchText'] . '%');
break;
}
}
break;
}
return $where;
}
/**
* 导出查询的规格字段
* @param $user_type 3商户 4门店
* @return array
*/
public function querySkuGoodsFields($user_type)
{
$arr = [
'k.id',
'k.sku_id_list',
'k.sku_goods_number',
'k.sku_code',
'k.more_num',
'k.less_num',
'k.retail_price',
'k.online_price',
'k.store_mem_price',
'k.shop_mem_price',
'k.weight_value',
'k.third_goods_code',
's.goods_num',
's.sku_id_list',
];
switch ($user_type) {
case 3:
//商户
$arr[] = 'k.purch_price as purchase_price';
$arr[] = 'k.mgoods_id as goods_id';
break;
case 4:
//门店
$arr[] = 'k.goods_id';
break;
}
return $arr;
}
/**
* 导出查询的商品字段
* @param $user_type 3商户 4门店
* @param $attribute_state 1无规格 2规格
* @return array
*/
public function queryGoodsFields($user_type, $attribute_state)
{
switch ($attribute_state) {
case 1:
$arr = [
'g.id',
'g.goods_name',
'g.subheading',
'g.goods_class_id',
'g.goods_brand_id',
'g.goods_code',
'g.retail_price',
'g.online_price',
'g.store_mem_price',
'g.shop_mem_price',
'g.retail_state',
'g.store_mem_status',
'g.shop_mem_status',
'g.vip_online_state',
'g.vip_retail_state',
'g.more_num',
'g.less_num',
'g.company',
'g.weight_value',
'g.specifications',
'g.third_goods_code',
];
switch ($user_type) {
case 3:
$arr[] = 'g.good_number as goods_number';
$arr[] = 'g.purch_price as purchase_price';
$arr[] = 'g.issellonline as online_state';
$arr[] = 'g.can_exchange_weigh as pricing_method';
$arr[] = 'g.attribute as attribute_state';
break;
case 4:
$arr[] = 'g.goods_number';
$arr[] = 'g.purchase_price';
$arr[] = 'g.online_state';
$arr[] = 'g.pricing_method';
$arr[] = 'g.attribute_state';
break;
}
$arr[] = 's.goods_num';
break;
case 2:
$arr = [
'id',
'goods_name',
'subheading',
'goods_class_id',
'goods_brand_id',
'goods_code',
'retail_price',
'online_price',
'store_mem_price',
'shop_mem_price',
'retail_state',
'store_mem_status',
'shop_mem_status',
'vip_online_state',
'vip_retail_state',
'more_num',
'less_num',
'company',
'weight_value',
'specifications',
'third_goods_code',
];
switch ($user_type) {
case 3:
$arr[] = 'good_number as goods_number';
$arr[] = 'purch_price as purchase_price';
$arr[] = 'issellonline as online_state';
$arr[] = 'can_exchange_weigh as pricing_method';
$arr[] = 'attribute as attribute_state';
break;
case 4:
$arr[] = 'goods_number';
$arr[] = 'purchase_price';
$arr[] = 'online_state';
$arr[] = 'pricing_method';
$arr[] = 'attribute_state';
break;
}
break;
}
return $arr;
}
/**
* 导出头部
* @param $user_type 3商户 4门店
* @param $attribute_state 1无规格 2规格
* @param $platform_type 商户平台类型 1默认系统 2微礼平台
* @return array
*/
public function exportGoodsTitle($attribute_state, $platform_type)
{
switch ($attribute_state) {
case 1:
$headArr = array(
['goods_name', '商品名称(必填)'],
['subheading', '副标题'],
['goods_brand', '品牌名称'],
['goods_code', '条码'],
['goods_number', '货号(必填)'],
['class_name_1', '第一级分类(必填)'],
['class_name_2', '第二级分类'],
['class_name_3', '第三级分类'],
['goods_num', '商品总库存'],
['purchase_price', '进货价'],
['retail_price', '店内零售价(开启店内出售后必填)'],
['online_price', '商城零售价(开启商城出售后必填)'],
['store_mem_price', '店内会员价(开启店内会员价必填)'],
['shop_mem_price', '商城会员价(开启商城会员价必填)'],
['pricing_method_name' => '是否称重'],
['retail_state_name', '是否开启店内出售'],
['online_state_name', '是否开启商城出售'],
['store_mem_status_name', '是否开启店内会员价'],
['shop_mem_status_name', '是否开启商城会员价'],
['vip_online_state_name', '是否开启线上折扣'],
['vip_retail_state_name', '是否开启线下折扣'],
['more_num', '库存上限(超量值)'],
['less_num', '库存下限(预警值)'],
['company', '单位'],
['weight_value', '重量(Kg)'],
['specifications', '规格'],
);
//第三方平台
if ($platform_type == 2) {
$headArr[] = ['third_goods_code', 'Q3 ERP平台商品编码'];
}
break;
case 2:
$headArr = array(
['goods_name', '商品名称(必填)'],
['subheading', '副标题'],
['goods_brand', '品牌名称'],
['goods_code', '条码'],
['goods_number', '货号(必填)'],
['class_name_1', '第一级分类(必填)'],
['class_name_2', '第二级分类'],
['class_name_3', '第三级分类'],
['goods_num', '商品总库存'],
['purchase_price', '进货价'],
['retail_price', '店内零售价(开启店内出售后必填)'],
['online_price', '商城零售价(开启商城出售后必填)'],
['store_mem_price', '店内会员价(开启店内会员价必填)'],
['shop_mem_price', '商城会员价(开启商城会员价必填)'],
['retail_state_name', '是否开启店内出售'],
['online_state_name', '是否开启商城出售'],
['store_mem_status_name', '是否开启店内会员价'],
['shop_mem_status_name', '是否开启商城会员价'],
['vip_online_state_name', '是否开启线上折扣'],
['vip_retail_state_name', '是否开启线下折扣'],
['more_num', '库存上限(超量值)'],
['less_num', '库存下限(预警值)'],
['company', '单位'],
['weight_value', '重量(Kg)'],
['specifications', '规格'],
['sku_1', '规格1'],
['sku_val_1', '规格值1'],
['sku_2', '规格2'],
['sku_val_2', '规格值2'],
['sku_3', '规格3'],
['sku_val_3', '规格值3'],
['sku_4', '规格4'],
['sku_val_4', '规格值4'],
['sku_goods_number', '规格货号(必填)'],
['sku_code', '规格条码'],
['sku_goods_num', '规格库存'],
['sku_more_num', '规格上限'],
['sku_less_num', '规格下限'],
['sku_purchase_price', '规格进价'],
['sku_retail_price', '规格店内零售价(必填)'],
['sku_online_price', '规格商城售价(必填)'],
['sku_store_mem_price', '规格店内会员价(必填)'],
['sku_shop_mem_price', '规格商城会员价(必填)'],
['sku_weight_value', '规格重量(Kg)']
);
//第三方平台
if ($platform_type == 2) {
$headArr[] = ['third_goods_code', 'Q3 ERP平台商品编码'];
}
break;
}
return $headArr;
}
/**
* 门店商品信息更新记录
* @param $param
* [
* store_id
* merchant_id
* goods_id int|array
* ]
* @return mixed
*/
public function goodsEditRecord($param)
{
if (empty($param['merchant_id']) || empty($param['store_id']) || empty($param['goods_id'])) {
return callBack(statusCode()['error'], "缺少参数");
}
try {
$goods_id = $param['goods_id'];
$GoodsPriceRecordModel = new GoodsEditRecordModel();
if (is_array($goods_id)) {
$result = $GoodsPriceRecordModel->addAll($goods_id);
} else {
$data = [
'goods_id' => $goods_id,
'store_id' => $param['store_id'],
'merchant_id' => $param['merchant_id'],
'add_time' => $_SERVER['REQUEST_TIME']
];
$result = $GoodsPriceRecordModel->addOrder($data);
}
if ($result) {
return callBack(statusCode()['success'], "记录成功");
} else {
return callBack(statusCode()['error'], "记录失败");
}
} catch (\Exception $e) {
return callBack(statusCode()['error'], "记录失败");
}
}
/**
* 批量修改简拼
* @param $param
* [
* type 1商户 2门店
* merchant_id
* store_id
* goodsSelection 选中的商品
* ]
* @return mixed
*/
public function batchSimpleSpelling($param)
{
$result = $this->SimpleSpellingVerify($param);
if ($result['status'] != 1) {
return $result;
}
try {
switch ($param['type']) {
case 1:
$GoodsModel = new RetailMgoodsModel();
break;
case 2:
//门店
$GoodsModel = new RetailGoodsModel();
break;
}
foreach ($param['goodsSelection'] as &$val) {
$result = $GoodsModel->updateOrder(['id' => $val['goods_id']], [
'simple_spelling' => $val['simple_spelling']
]);
}
return callBack(statusCode()['success'], "操作成功");
} catch (\Exception $e) {
return callBack(statusCode()['error'], "操作失败");
}
}
/**
* 一键生成简拼
* @param $param
* [
* type 1商户 2门店
* store_id
* merchant_id
* ]
* @return mixed
*/
public
function generateSimpleSpelling($param)
{
$result = $this->SimpleSpellingVerify($param);
if ($result['status'] != 1) {
return $result;
}
try {
switch ($param['type']) {
case 1:
$goodsModel = new RetailMgoodsModel();
$where = [
'merchant_id' => $param['merchant_id'],
'status' => ['neq', 2]
];
break;
case 2:
//门店
$goodsModel = new RetailGoodsModel();
$where = [
'status' => ['neq', 2],
'store_id' => $param['store_id'],
];
break;
}
$where['_string'] = "simple_spelling IS NULL or simple_spelling = ''";
$page = $param['page'] ? $param['page'] . ',3000' : '';
$goods_info = $goodsModel->getSelect($where, 'id,goods_name', 'id desc', $page);
if (!empty($goods_info)) {
$PinYinClass = new PinYin();
foreach ($goods_info as &$val) {
$str = '';
$str = $PinYinClass->strChangePin($val['goods_name']);
if (!empty($str)) {
$goodsModel->updateOrder(['id' => $val['id']], ['simple_spelling' => $str]);
}
}
}
if (count($goods_info) < 3000) {
$state = 2;
} else {
$state = 1;
}
return callBack(statusCode()['success'], '生成成功', ['state' => $state]);
} catch (\Exception $e) {
return callBack(statusCode()['error'], "生成失败,请重试");
}
}
/**
* 生成或修改简拼验证
* @return mixed
*/
public function SimpleSpellingVerify($param)
{
if (empty($param['type']) || empty($param['merchant_id']) || ($param['type'] == 2 && empty($param['store_id']))) {
return callBack(statusCode()['error'], "缺少身份参数");
}
return callBack(statusCode()['success'], '验证成功');
}
/**
* 根据商品id集合获取商品名称集合
* @param $param
* @return mixed
*/
public function GoodsNameList($param)
{
$GoodsModel = new RetailGoodsModel();
$list = $GoodsModel->getFindField([
'id' => ['in', $param['goods_id_gather']]
], "goods_name", true);
return callBack(statusCode()['success'], "查询成功", ['list' => $list]);
}
/**
* 商户的商品列表(不是单品列表)
* @param $param
* [
* searchText 名称货号条码
* person1 一级分类
* person2 二级分类
* person3 三级分类
* merchant_id
* page
* limit
* ]
* @return mixed
*/
public function getMerchantGoodsList($param)
{
if (empty($param['merchant_id'])) {
return callBack(statusCode()['error'], "缺少身份必要参数");
}
$where = $this->getMerchantGoodsListTerm($param);
$page = $param['page'];
$limit = $param['limit'];
$fields = [
'id',
'goods_name',
'good_number',
'goods_code',
'simple_spelling'
];
$GoodsModel = new RetailMgoodsModel();
$goods = $GoodsModel->getSelect($where, $fields, 'id desc', $page . ',' . $limit);
if (!empty($goods)) {
$count = $GoodsModel->getCount($where);
foreach ($goods as $key => &$val) {
$val['index'] = $key + 1;
$val['goods_id'] = $val['id'];
$val['goods_number'] = $val['good_number'];
}
}
return callBack(statusCode()['success'], "查询成功", ['list' => $goods, 'count' => $count ? $count : 0]);
}
/**
* 商户的商品列表(不是单品列表)的查询条件
* @param $param
* [
* searchText 名称货号条码
* person1 一级分类
* person2 二级分类
* person3 三级分类
* merchant_id
* ]
* @return mixed
*/
public function getMerchantGoodsListTerm($param)
{
$where = [];
$GoodsClassify = new GoodsClassify();
$where = $GoodsClassify->getGoodsClassId($param, $where, "goods_class_id");
if (!empty($param['searchText'])) {
$where['good_number|goods_code|goods_name'] = array('like', '%' . $param['searchText'] . '%');
}
$where['merchantid'] = $param['merchant_id'];
$where['status'] = ['neq', 2];
return $where;
}
/**
* 门店商品列表(不是单品列表)
* @param $param
* [
* store_id
* notInIds 已经选中的商品id
* searchText 名称货号条码
* person1 分类
* person2
* person3
* page
* limit
* ]
* @return mixed
*/
public function getStoreGoodsList($param)
{
if (empty($param['store_id'])) {
return callBack(statusCode()['error'], "缺少门店ID");
}
$where = $this->getStoreGoodsListTerm($param);
$page = $param['page'] ? $param['page'] : '';
$limit = $param['limit'] ? $param['limit'] : '';
if (!empty($page) && !empty($limit)) {
$page = $page . ',' . $limit;
}
$fields = 'id as goods_id,goods_name,goods_number,goods_code,store_id,simple_spelling';
$goodsModel = new RetailGoodsModel();
$list = $goodsModel->getSelect($where, $fields, 'id desc', $page);
if (!empty($list)) {
$count = $goodsModel->getCount($where);
$storeModel = new RetailStoreModel();
$store_name = $storeModel->getFindField(['id' => $param['store_id']], "storetag");
foreach ($list as &$val) {
$val['store_name'] = $store_name;
}
}
return callBack(statusCode()['success'], "查询成功", ['list' => $list, 'count' => $count ? $count : 0]);
}
/**
* 门店商品列表(不是单品列表)的where查询条件
* @param $param
* [
* store_id
* notInIds 已经选中的商品
* searchText 名称货号条码
* person1 分类
* person2
* person3
* ]
* @return mixed
*/
public function getStoreGoodsListTerm($param)
{
$goodsClass = new GoodsClassify();
$where = $goodsClass->getGoodsClassId($param, [], "goods_class_id");
if (!empty($param['searchText'])) {
$where['goods_name|goods_number|goods_code'] = ['like', "%{$param['searchText']}%"];
}
if (!empty($param['notInIds'])) {
$where['id'] = ['not in', $param['notInIds']];
}
$where['store_id'] = $param['store_id'];
$where['status'] = ['in', '0,1'];
return $where;
}
/**
* 商品导入的商品列表
* @param $parameter
* [
* merchant_id
* store_id
* user_type 1商户 2门店
* status 状态:0,正常,1,已导入,2,删除,3,货号重复,4,商品条码重复
* searchText 商品名称/货号/条码
* page
* limit
* ]
* @return array
* [
* status
* message
* data=>[
* list 列表
* ]
* ]
*/
public function getImportGoodsList($parameter)
{
switch ($parameter['user_type']) {
case 1:
//商户
$where = $this->getMerchantImportGoodsListTerm($parameter); //获取查询条件
break;
case 2:
//门店
$where = $this->getStoreImportGoodsListTerm($parameter); //获取查询条件
break;
}
if (empty($where)) {
return ['status' => 0, 'message' => '参数缺失'];
}
try {
$goodsImportModel = new GoodsImportModel();
$list = $goodsImportModel->getSelect($where, "*", 'id desc', $parameter['page'] . ',' . $parameter['limit']);
if ($list) {
$count = $goodsImportModel->getCount($where);
foreach ($list as $k => &$v) {
$v['index'] = $k + 1;
$v['retail_state_name'] = $v['retail_state'] == 1 ? '开启' : '关闭';
$v['issellonline_name'] = $v['issellonline'] == 1 ? '开启' : '关闭';
$v['vip_retail_state'] = $v['vip_retail_state'] == 0 ? '关闭' : '开启';
$v['vip_online_state'] = $v['vip_online_state'] == 0 ? '关闭' : '开启';
$v['shop_mem_status'] = $v['shop_mem_status'] == 1 ? '开启' : '关闭';
$v['store_mem_status'] = $v['store_mem_status'] == 1 ? '开启' : '关闭';
$v['serial_number_state'] = $v['serial_number_state'] == 1 ? '开启' : '关闭';
$v['can_exchange_weigh'] = $v['can_exchange_weigh'] == 2 ? '开启' : '关闭';
$v['goods_num'] = round($v['goods_num'], 3);
$v['more_num'] = round($v['more_num'], 3);
$v['less_num'] = round($v['less_num'], 3);
if ($v['attribute'] == 2) {
$v['sku_json'] = json_decode($v['sku_json'], true);
if ($v['sku_json']['sku_list']) {
$arr = $v['sku_json']['sku_list'];
foreach ($arr as $val) {
$val['name'] = explode(',', $val['name']);
$val['store_mem_price'] = $val['store_mem_price'] ? $val['store_mem_price'] : 0;
}
}
} else {
$v['sku_json'] = array();
}
$v['attribute_name'] = $v['attribute'] == 2 ? '开启' : '关闭';
if ($v['can_exchange_weigh'] == 1) {
$v['goods_num'] = round($v['goods_num']);
}
switch ($v['status']) {
case 0:
$v['status_name'] = '未导入';
break;
case 1:
$v['status_name'] = '已导入';
break;
case 2:
$v['status_name'] = '已删除';
break;
case 3:
$v['status_name'] = '货号重复';
break;
case 4:
$v['status_name'] = '条码重复';
break;
}
}
}
return ['status' => 1, 'message' => '查询成功', 'data' => ['list' => $list, 'count' => $count ? $count : 0]];
} catch (\Exception $e) {
return ['status' => 1, 'message' => '查询成功', 'data' => ['list' => [], 'count' => 0]];
}
}
/**
* 商户商品导入的商品列表的where条件
* @param $parameter
* [
* merchant_id
* status 状态:0,正常,1,已导入,2,删除,3,货号重复,4,商品条码重复。
* searchText 商品名称货号条码
*
* ]
* @return array
*/
public function getMerchantImportGoodsListTerm($parameter)
{
if (empty($parameter['merchant_id'])) {
return [];
}
$where = array(
'merchantid' => $parameter['merchant_id'],
'type' => 1,
);
if (in_array($parameter['status'], ['0', '1', '3', '4'])) {
$where['status'] = $parameter['status'];
} else {
$where['status'] = array('neq', 2);
}
if (!empty($parameter['searchText'])) {
$where['goods_name|good_number|goods_code'] = ['like', '%' . $parameter['searchText'] . '%'];
}
return $where;
}
/**
* 门店商品导入的商品列表的where条件
* @param $parameter
* [
* merchant_id
* store_id
* status 状态:0,正常,1,已导入,2,删除,3,货号重复,4,商品条码重复。
*
* ]
* @return array
*/
public function getStoreImportGoodsListTerm($parameter)
{
if (empty($parameter['store_id']) || empty($parameter['merchant_id'])) {
return [];
}
$where = array(
'merchantid' => $parameter['merchant_id'],
'storeid' => $parameter['store_id'],
'type' => 2,
);
if ($parameter['status'] != -1) {
$where['status'] = $parameter['status'];
} else {
$where['status'] = array('neq', 2);
}
if (!empty($parameter['searchText'])) {
$where['goods_name|good_number|goods_code'] = ['like', '%' . $parameter['searchText'] . '%'];
}
return $where;
}
/**
* 删除商品导入表的商品
* @param $parameter
* [
* user_type 1商户后台 2门店后台
* merchant_id
* store_id
* idArr 删除的id集合
* ]
* @return bool
*/
public function importGoodsOut($parameter)
{
$goodsImportModel = new GoodsImportModel();
$user_type = $parameter['user_type'];
$idArr = $parameter['idArr'];
switch ($user_type) {
case 1:
//商户后台
$where = [
'merchantid' => $parameter['merchant_id']
];
break;
case 2:
//门店后台
$where = [
'merchantid' => $parameter['merchant_id'],
'storeid' => $parameter['store_id']
];
break;
}
foreach ($idArr as $k => $v) {
$where['id'] = $v;
$goodsImportModel->updateOrder($where, ['status' => 2]);
}
return true;
}
/**
* 上传导入商品文件以及存入导入表
* @param $parameter
*[
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* attribute_state 1无规格商品导入 2规格商品导入
* platform_type 商户平台类型 1默认系统 2微礼平台
*]
* @return array
* [
* status 0有误信息
* message
* ]
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
*/
public function goodsImportOperation($parameter)
{
header('Content-Type: text/html; charset=utf-8'); //网页编码
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($parameter); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
if (!in_array($parameter['attribute_state'], ['1', '2'])) {
return callBack(statusCode()['error'], "导入类型有误");
}
$uploadFileClass = new UploadFile();
$uploadResult = $uploadFileClass->uploadFile([]); //上传文件
if ($uploadResult['status'] != 1) {
$uploadResult['message'] = $uploadResult['msg'];
return $uploadResult;
}
$downFileClass = new DownFile();
$file = $downFileClass->readFile_v1("." . $uploadResult['path']); //读取文件
if ($file['status'] != 1) {
return $file;
}
$goodsClass = new GoodsClassify();
$ClassResult = $goodsClass->getClassArr([
'merchant_id' => $parameter['merchant_id']
]); //分类集合
$parameter['class_arr_1'] = $ClassResult['class_arr_1'];
$parameter['class_arr_2'] = $ClassResult['class_arr_2'];
$parameter['class_arr_3'] = $ClassResult['class_arr_3'];
switch ($parameter['attribute_state']) {
case 1:
//非规格
$headArr = $this->ImportGoodsTitle($parameter['platform_type']); //自定义数组头部字段与字段名
break;
case 2:
//规格
$headArr = $this->ImportSkuGoodsTitle($parameter['platform_type']); //自定义数组头部字段与字段名
break;
}
array_flip($headArr); //将数组键名键值替换位置
$file_count = count($file['data']);
$faultArr = []; //失败信息
$num = 0; //添加成功次数
for ($f = 0; $f < $file_count; $f++) {
$goodsArr = $file['data'][$f];
$goodsArr = json_decode(json_encode($goodsArr), true);
if ($f == 0) {
for ($i = 0; $i < 14; $i++) {
unset($goodsArr[$i]); //删除无用信息
}
$goodsArr = array_merge($goodsArr);
}
$titleArr = $goodsArr[0];
$keyArr = array();
foreach ($titleArr as $k => $v) {
foreach ($headArr as $k2 => $v2) {
if ($v == $v2) {
$keyArr[$k2] = $k;
}
}
}
$parameter['goodsArr'] = $goodsArr;
$parameter['keyArr'] = $keyArr;
$result = $this->ImportGoodsHandle($parameter); //验证以及获取验证通过商品集合与失败的商品集合
$faultArr = array_merge($faultArr, $result['faultArr']); //失败的商品信息
if (!empty($result['addGoodsArr'])) {
//存商品导入表
$num += count($result['addGoodsArr']);
$result = $this->ImportGoodsAdd(['num' => $num, 'addGoodsArr' => $result['addGoodsArr']]);
$faultArr[] = $result['faultArr'];
}
$newGoodsArr = array();
foreach ($faultArr as $key => $val2) {
$e = false;
foreach ($val2 as $k2 => $v2) {
$val2[$k2] = trim($v2, ' ');
if ($val2[$k2]) {
$e = true;
}
}
if ($e) {
$newGoodsArr[] = $val2;
}
}
$faultArr = $newGoodsArr;
}
if (count($faultArr) > 0) {
// 生成错误表格,并返回路径。
switch ($parameter['platform_type']) {
case 1:
switch ($parameter['user_type']) {
case 3:
//商户
switch ($parameter['attribute_state']) {
case 1:
$path2 = './Uploads/Temp/Mgoodsinport' . $parameter['merchant_id'] . '.txt';
break;
case 2:
$path2 = './Uploads/Temp/MSkugoodsinport' . $parameter['merchant_id'] . '.txt';
break;
}
break;
case 4:
//门店
switch ($parameter['attribute_state']) {
case 1:
$path2 = './Uploads/Temp/StoreGoodsImport' . $parameter['merchant_id'] . $parameter['store_id'] . '.txt';
break;
case 2:
//规格
$path2 = './Uploads/Temp/StoreSkuGoodsImport' . $parameter['merchant_id'] . $parameter['store_id'] . '.txt';
break;
}
break;
}
break;
case 2:
switch ($parameter['user_type']) {
case 3:
//商户
switch ($parameter['attribute_state']) {
case 1:
$path2 = './Uploads/Temp/ThirdMgoodsinport' . $parameter['merchant_id'] . '.txt';
break;
case 2:
$path2 = './Uploads/Temp/ThirdMSkugoodsinport' . $parameter['merchant_id'] . '.txt';
break;
}
break;
case 4:
//门店
switch ($parameter['attribute_state']) {
case 1:
$path2 = './Uploads/Temp/ThirdStoreGoodsImport' . $parameter['merchant_id'] . $parameter['store_id'] . '.txt';
break;
case 2:
//规格
$path2 = './Uploads/Temp/ThirdStoreSkuGoodsImport' . $parameter['merchant_id'] . $parameter['store_id'] . '.txt';
break;
}
break;
}
break;
}
file_put_contents($path2, json_encode($faultArr));
$res['status'] = 2;
$res['path'] = $path2;
$res['message'] = '导入成功' . $num . '项,但有' . count($faultArr) . '项数据不正确';
} else {
$res['status'] = 1;
$res['message'] = '全部导入成功,共' . $num . '项';
}
return $res;
}
/**
*添加到导入商品表
* @param $parameter
* [
* num 成功次数
* addGoodsArr 添加的商品信息
* ]
* @return array
* [
* faultArr 失败的商品信息
* num 成功次数
* ]
*/
public function ImportGoodsAdd($parameter)
{
$goodsImportModel = new GoodsImportModel();
$addGoodsArr = $parameter['addGoodsArr']; //添加的商品信息
$faultArr = []; //失败信息
$new_arr = [];
$add_num = 1;
foreach ($addGoodsArr as $key => &$valueAdd) {
if (!empty($valueAdd['sku_json']) && $valueAdd['attribute'] == 2) {
$arr = $valueAdd['sku_json']['sku_list'];
$goods_num = 0;
foreach ($arr as $val1) {
$goods_num += $val1['goods_num'] ? $val1['goods_num'] : 0;
}
$goods_num = round($goods_num, 3);
$valueAdd['goods_num'] = $goods_num;
$valueAdd['sku_json'] = json_encode($valueAdd['sku_json']);
}
$new_arr[] = $valueAdd;
if (($key / 500) == $add_num) {
$goodsImportModel->addAll($new_arr);
$new_arr = [];
$add_num++;
}
}
if (!empty($new_arr)) {
$goodsImportModel->addAll($new_arr);
}
return ['faultArr' => $faultArr];
}
/**
* 导入商品验证且区分
* @param $parameter
*[
* platform_type 商户平台类型 1默认系统 2微礼平台
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* attribute_state 1无规格商品导入 2规格商品导入
* goodsArr 表格的商品信息
* keyArr 转换后的商品信息
* class_arr_1 一级分类
* class_arr_2 二级分类
* class_arr_3 三级分类
* ]
* @return array
* [
* faultArr 失败的商品信息
* addGoodsArr 添加的商品信息
* ]
*/
public function ImportGoodsHandle($parameter)
{
$platform_type = $parameter['platform_type'];
$goodsArr = $parameter['goodsArr']; //表格的商品信息
$keyArr = $parameter['keyArr']; //转换后的商品信息
$attribute_state = $parameter['attribute_state'];
$addGoodsArr = []; //验证成功的商品信息
$faultArr = []; //验证失败的商品信息
foreach ($goodsArr as $key => &$val) {
if ($key == 0) {
continue;
}
$val_str = implode('', $val);
if (empty($val_str)) {
continue;
}
$value = [];
foreach ($keyArr as $k => $_val) {
$value[$k] = $val[$_val] != '' && $val[$_val] != null ? trim($val[$_val]) : '';
}
$tempValue = implode($value, '');
if ($tempValue == '') {
continue;
}
switch ($attribute_state) {
case 1:
//无规格导入
$result = $this->ImportPlainGoodsVerify([
'value' => $value,
'val' => $val,
'merchant_id' => $parameter['merchant_id'],
'store_id' => $parameter['store_id'],
'class_arr_1' => $parameter['class_arr_1'],
'class_arr_2' => $parameter['class_arr_2'],
'class_arr_3' => $parameter['class_arr_3'],
'user_type' => $parameter['user_type'],
'attribute_state' => $attribute_state,
'platform_type' => $platform_type
]); //无规格商品验证
if (!empty($result['faultArr']) && isset($result['faultArr'])) {
$faultArr[] = $result['faultArr'];
continue;
} else {
$result = $this->ImportPlainGoodsArr([
'merchant_id' => $parameter['merchant_id'],
'store_id' => $parameter['store_id'],
'user_type' => $parameter['user_type'],
'goods_class_id' => $result['data'],
'attribute_state' => $attribute_state,
'value' => $value,
'addGoodsArr' => $addGoodsArr,
'platform_type' => $platform_type
]); //无规格商品信息处理
$addGoodsArr = $result['addGoodsArr'];
}
break;
case 2:
//规格商品导入
if (empty($value['good_number']) && !empty($value['sku_goods_number']) && !empty($value['sku_val_1'])) {
$result = $this->ImportGoodsSkuVerify([
'addGoodsArr' => $addGoodsArr,
'user_type' => $parameter['user_type'],
'merchant_id' => $parameter['merchant_id'],
'store_id' => $parameter['store_id'],
'value' => $value,
'val' => $val,
'goods_type' => 2,
'platform_type' => $platform_type
]); //规格信息验证
if (!empty($result['faultArr'])) {
$faultArr[] = $result['faultArr'];
continue;
} else {
$result = $this->ImportGoodsSkuArr([
'addGoodsArr' => $addGoodsArr,
'value' => $value,
'platform_type' => $platform_type
]); //规格信息处理
$addGoodsArr = $result['addGoodsArr'];
}
} else {
//商品验证
$result = $this->ImportPlainGoodsVerify([
'value' => $value,
'val' => $val,
'merchant_id' => $parameter['merchant_id'],
'store_id' => $parameter['store_id'] ? $parameter['store_id'] : 0,
'class_arr_1' => $parameter['class_arr_1'],
'class_arr_2' => $parameter['class_arr_2'],
'class_arr_3' => $parameter['class_arr_3'],
'user_type' => $parameter['user_type'],
'attribute_state' => $attribute_state,
'platform_type' => $platform_type
]); //无规格商品验证
if (!empty($result['faultArr']) && isset($result['faultArr'])) {
$faultArr[] = $result['faultArr'];
continue;
} else {
$result = $this->ImportPlainGoodsArr([
'merchant_id' => $parameter['merchant_id'],
'store_id' => $parameter['store_id'],
'user_type' => $parameter['user_type'],
'goods_class_id' => $result['data'],
'attribute_state' => $attribute_state,
'value' => $value,
'addGoodsArr' => $addGoodsArr,
'platform_type' => $platform_type
]); //无规格商品信息处理
$addGoodsArr = $result['addGoodsArr'];
}
}
break;
}
}
return ['addGoodsArr' => $addGoodsArr, 'faultArr' => $faultArr];
}
/**
* 无规格商品验证
* @param $parameter
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* merchant_id
* store_id
* user_type 3商户 4门店
* value
* val
* class_arr_1 一级分类
* class_arr_2 二级分类
* class_arr_3 三级分类
* attribute_state 1无规格 2规格
* ]
* @return array
* [
* faultArr 失败信息
* addGoodsArr 验证通过的商品信息
* ]
*/
public function ImportPlainGoodsVerify($parameter)
{
$platform_type = $parameter['platform_type'];
$merchant_id = $parameter['merchant_id'];
$user_type = $parameter['user_type'];
$value = $parameter['value'];
$val = $parameter['val'];
$attribute_state = $parameter['attribute_state'];
$class_arr_1 = array_column($parameter['class_arr_1'], NULL, 'class_name'); //一级分类
$class_arr_2_old = $parameter['class_arr_2'];
$class_arr_2 = [];
foreach ($class_arr_2_old as $key => $v) {
$class_arr_2[$v['pid'] . '_' . $v['class_name']] = $v;
}
$class_arr_3_old = $parameter['class_arr_3'];
$class_arr_3 = [];
foreach ($class_arr_3_old as $key => $v) {
$class_arr_3[$v['pid'] . '_' . $v['class_name']] = $v;
}
$goodsImportModel = new GoodsImportModel();
if (empty($value['good_number']) || strlen($value['good_number']) > 17) {
$val['reson'] = '货号不能大于17位';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (!empty($value['goods_code']) && strlen($value['goods_code']) > 17) {
$val['reson'] = '条码不能大于17位';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
//第三方平台
if ($platform_type == 2) {
if (empty($value['third_goods_code']) || mb_strlen($value['third_goods_code'], 'UTF-8') > 255) {
$val['reson'] = 'Q3 ERP平台编码必填且不能大于255位';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
}
$where = [
'merchantid' => $merchant_id,
'status' => 0,
];
switch ($user_type) {
case 3:
//商户
$where['type'] = 1;
break;
case 4:
//门店
$where['storeid'] = $parameter['store_id'];
$where['type'] = 2;
break;
}
if (!empty($value['goods_code']) && trim($value['goods_code'], ' ')) {
$where['goods_code'] = $value['goods_code'];
$goods = $goodsImportModel->where($where)->find();
} else {
$goods = false;
}
if (!$goods) {
unset($where['goods_code']);
$where['good_number'] = $value['good_number'];
if (!empty($value['good_number']) && trim($value['good_number'], ' ')) {
$goods = $goodsImportModel->where($where)->find();
} else {
$goods = false;
}
}
//第三方平台
if ($platform_type == 2) {
unset($where['good_number']);
unset($where['goods_code']);
$where['third_goods_code'] = $value['third_goods_code'];
$goods = $goodsImportModel->where($where)->find();
if (empty($goods)) {
$goods = false;
}
}
unset($where);
if ($goods) {
$val['reson'] = '导入数据档案中已有该商品'; // 未找到正常的
$faultArr = $val;
return ['faultArr' => $faultArr];
}
$class_name_1 = trim($value['class_name_1'], ' ');
$class_name_2 = trim($value['class_name_2'], ' ');
$class_name_3 = trim($value['class_name_3'], ' ');
if (empty($class_name_1)) {
$val['reson'] = '请填写商品一级分类';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (!empty($class_name_3) && empty($class_name_2)) {
$val['reson'] = '请填写商品二级分类';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
$GoodsClassify = new GoodsClassify();
$classVerifyResult = $GoodsClassify->existClassAdd([
'class_arr_1' => $class_arr_1,
'class_arr_2' => $class_arr_2,
'class_arr_3' => $class_arr_3,
'class_name_1' => $class_name_1,
'class_name_2' => $class_name_2,
'class_name_3' => $class_name_3,
'merchant_id' => $parameter['merchant_id']
]); //分类添加
if ($classVerifyResult['status'] != 1) {
$val['reson'] = $classVerifyResult['message'];
$faultArr = $val;
return ['faultArr' => $faultArr];
}
$goods_class_id = $classVerifyResult['data'];
$retail_state = $value['retail_state'] == '是' ? 1 : 0;
$issellonline = $value['issellonline'] == '是' ? 1 : 0;
$shop_mem_status = $value['shop_mem_status'] == '是' ? 1 : 2;
$store_mem_status = $value['store_mem_status'] == '是' ? 1 : 2;
if (empty($value['goods_name'])) {
$val['reson'] = '未填写商品名称';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($retail_state == 1 && (!$value['retail_price'] || !is_numeric($value['retail_price']) || $value['retail_price'] < 0.01 || $value['retail_price'] != round($value['retail_price'], 2))) {
$val['reson'] = '商品店内零售价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($issellonline == 1 && (!$value['online_price'] || !is_numeric($value['online_price']) || $value['online_price'] < 0.01 || $value['online_price'] != round($value['online_price'], 2))) {
$val['reson'] = '商品商城价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($shop_mem_status == 1 && (!$value['shop_mem_price'] || !is_numeric($value['shop_mem_price']) || $value['shop_mem_price'] < 0.01 || $value['shop_mem_price'] != round($value['shop_mem_price'], 2))) {
$val['reson'] = '商品商城会员价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($store_mem_status == 1 && (!$value['store_mem_price'] || !is_numeric($value['store_mem_price']) || $value['store_mem_price'] < 0.01 || $value['store_mem_price'] != round($value['store_mem_price'], 2))) {
$val['reson'] = '商品店内会员价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (!empty($value['weight_value']) && ((round($value['weight_value'], 3) != $value['weight_value']) || $value['weight_value'] < 0.001)) {
$val['reson'] = '重量有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
$serial_number_state = $value['serial_number_state'] == '是' ? 1 : 0;
switch ($attribute_state) {
case 1:
//无规格
$can_exchange_weigh = $value['can_exchange_weigh'] == '是' ? 2 : 1;
if ($serial_number_state == 1 && $can_exchange_weigh == 2) {
$val['reson'] = '串号与称重不能同时开启';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($serial_number_state == 1 && $value['goods_num'] > 0) {
$val['reson'] = '开启串号库存必须通过采购新增';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($value['goods_num'] > 0 && ($value['purch_price'] == 0 || !$value['purch_price'] || !is_numeric($value['purch_price']) || $value['purch_price'] < 0 || $value['purch_price'] != round($value['purch_price'], 2))) {
$val['reson'] = '商品进价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($can_exchange_weigh == 1 && ((int)$value['less_num'] != $value['less_num'] || (int)$value['more_num'] != $value['more_num'] || (int)$value['goods_num'] != $value['goods_num'])) {
$val['reson'] = '该商品数量信息有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
} else if ($can_exchange_weigh == 2 && (round($value['less_num'], 3) != $value['less_num'] || round($value['more_num'], 3) != $value['more_num'] || round($value['goods_num'], 3) != $value['goods_num'])) {
$val['reson'] = '该商品数量信息有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
$company_verify = ['kg', 'KG', '斤', '公斤', '市斤', '千克', 'g', 'G', '克'];
if ($can_exchange_weigh == 2 && (empty($value['company']) || !in_array($value['company'], $company_verify))) {
$val['reson'] = '开启称重后单位必须按要求填写,请查看导入模板单位规则';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
break;
case 2:
//规格
if (!empty($value['purch_price']) && (!$value['purch_price'] || !is_numeric($value['purch_price']) || $value['purch_price'] < 0 || $value['purch_price'] != round($value['purch_price'], 2))) {
$val['reson'] = '商品进价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (((int)$value['less_num'] != $value['less_num'] || (int)$value['more_num'] != $value['more_num'])) {
$val['reson'] = '该商品数量信息有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (empty($value['sku_1']) || empty($value['sku_val_1']) || (!empty($value['sku_2']) && empty($value['sku_val_2'])) || (!empty($value['sku_3']) && empty($value['sku_val_3'])) || (!empty($value['sku_4']) && empty($value['sku_val_4']))) {
//开启规格
$val['reson'] = '未填写规格信息';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ((!empty($value['sku_3']) && empty($value['sku_2'])) || (!empty($value['sku_4']) && empty($value['sku_3']))) {
$val['reson'] = '规格属性顺序有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($serial_number_state == 1 && $value['goods_num'] > 0) {
$val['reson'] = '开启串号库存必须通过采购新增';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
$SkuVerifyResult = $this->ImportGoodsSkuVerify([
'value' => $parameter['value'],
'val' => $parameter['val'],
'retail_state' => $retail_state,
'issellonline' => $issellonline,
'shop_mem_status' => $shop_mem_status,
'store_mem_status' => $store_mem_status,
'goods_type' => 1,
'serial_number_state' => $serial_number_state,
'platform_type' => $platform_type
]);
if ($SkuVerifyResult['status'] != 1) {
return ['faultArr' => $SkuVerifyResult['faultArr']];
}
break;
}
return callBack(statusCode()['success'], "验证成功", $goods_class_id);
}
/**
* 规格信息验证
* @param $param
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* value
* val
* retail_state 店内出售 1开启 0关闭
* issellonline 商城出售 1开启 0关闭
* shop_mem_status 商城会员 1 开启 2关闭
* store_mem_status 店内会员 1 开启 2关闭
* serial_number_state 商品串码状态 0关闭 1开启
* merchant_id
* store_id
* user_type 3商户 4门店
* goods_type 1 商品信息 2规格信息
* addGoodsArr 验证通过的商品信息
* ]
* @return mixed
*/
public function ImportGoodsSkuVerify($param)
{
$value = $param['value'];
$val = $param['val'];
$goods_type = $param['goods_type'];
$merchant_id = $param['merchant_id'];
$store_id = $param['store_id'];
$user_type = $param['user_type'];
switch ($goods_type) {
case 1:
//商品信息
$retail_state = $param['retail_state'];
$issellonline = $param['issellonline'];
$shop_mem_status = $param['shop_mem_status'];
$store_mem_status = $param['store_mem_status'];
$serial_number_state = $param['serial_number_state'] ? $param['serial_number_state'] : 0;
break;
case 2:
//规格信息
$addGoodsArr = $param['addGoodsArr'];
$goodsInfo = $addGoodsArr[count($addGoodsArr) - 1];
$retail_state = $goodsInfo['retail_state'];
$issellonline = $goodsInfo['issellonline'];
$shop_mem_status = $goodsInfo['shop_mem_status'];
$store_mem_status = $goodsInfo['store_mem_status'];
$serial_number_state = $goodsInfo['serial_number_state'];
$sku_json = $addGoodsArr[count($addGoodsArr) - 1]['sku_json'];
$sku_count = count($sku_json['sku_name_title']);
$sku_arr = [];
if (!empty($value['sku_val_1'])) $sku_arr[] = $value['sku_val_1'];
if (!empty($value['sku_val_2'])) $sku_arr[] = $value['sku_val_2'];
if (!empty($value['sku_val_3'])) $sku_arr[] = $value['sku_val_3'];
if (!empty($value['sku_val_4'])) $sku_arr[] = $value['sku_val_4'];
if (count($sku_arr) != $sku_count) {
$val['reson'] = '规格有误,商品信息有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($sku_count >= 1) {
if (empty($value['sku_val_1'])) {
$val['reson'] = '规格有误,商品信息有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
}
if ($sku_count >= 2) {
if (empty($value['sku_val_2'])) {
$val['reson'] = '规格有误,商品信息有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
}
if ($sku_count >= 3) {
if (empty($value['sku_val_3'])) {
$val['reson'] = '规格有误,商品信息有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
}
break;
}
$goodsImportModel = new GoodsImportModel();
if (empty($value['sku_goods_number']) || strlen($value['sku_goods_number']) > 17) {
$val['reson'] = '请输入正确规格货号';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
//第三方平台
if ($param['platform_type'] == 2) {
if (empty($value['third_goods_code']) || mb_strlen($value['third_goods_code'], 'UTF-8') > 255) {
$val['reson'] = '请输入正确Q3 ERP平台商品编码且不能大于255位';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
}
$where = [
'merchantid' => $merchant_id,
'status' => 0,
'good_number' => $value['sku_goods_number']
];
switch ($user_type) {
case 3:
//商户
$where['type'] = 1;
break;
case 4:
//门店
$where['storeid'] = $store_id;
$where['type'] = 2;
break;
}
$oldNumber = $goodsImportModel->where($where)->find();
if (!empty($oldNumber)) {
$val['reson'] = '该规格货号已存在';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (!empty($value['sku_code'])) {
if (strlen($value['sku_code']) > 17) {
$val['reson'] = '条码不能大于17位';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
unset($where['good_number']);
$where['goods_code'] = $value['sku_code'];
$oldCode = $goodsImportModel->where($where)->find();
if (!empty($oldCode)) {
$val['reson'] = '该规格条码已存在';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
}
//第三方平台
if ($param['platform_type'] == 2) {
unset($where['good_number']);
unset($where['goods_code']);
$where['third_goods_code'] = $value['third_goods_code'];
$oldCode = $goodsImportModel->where($where)->find();
if (!empty($oldCode)) {
$val['reson'] = '该规格Q3 ERP平台商品遍码已存在';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
}
unset($where);
if ($value['sku_goods_num'] > 0 && ($value['sku_purch_price'] == 0 || !$value['sku_purch_price'] || $value['sku_purch_price'] < 0 || $value['sku_purch_price'] != round($value['sku_purch_price'], 2) || $value['sku_purch_price'] < 0.01)) {
$val['reson'] = '该规格进价填写有误' . $value['sku_purch_price'];
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($retail_state == 1 && (!$value['sku_retail_price'] || !is_numeric($value['sku_retail_price']) || $value['sku_retail_price'] < 0.01 || $value['sku_retail_price'] != round($value['sku_retail_price'], 2))) {
$val['reson'] = '该规格店内零售价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($store_mem_status == 1 && (!$value['sku_store_mem_price'] || !is_numeric($value['sku_store_mem_price']) || $value['sku_store_mem_price'] < 0.01 || $value['sku_store_mem_price'] != round($value['sku_store_mem_price'], 2))) {
$val['reson'] = '该规格店内会员价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($issellonline == 1 && (!$value['sku_online_price'] || !is_numeric($value['sku_online_price']) || $value['sku_online_price'] < 0.01 || $value['sku_online_price'] != round($value['sku_online_price'], 2))) {
$val['reson'] = '该规格商城价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($shop_mem_status == 1 && (!$value['sku_shop_mem_price'] || !is_numeric($value['sku_shop_mem_price']) || $value['sku_shop_mem_price'] < 0.01 || $value['sku_shop_mem_price'] != round($value['sku_shop_mem_price'], 2))) {
$val['reson'] = '该规格商城会员价填写有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if ($serial_number_state == 1 && $value['sku_goods_num'] > 0) {
$val['reson'] = '开启串号,规格库存必须通过进销存增加';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (((int)$value['sku_goods_num'] != $value['sku_goods_num'])) {
$val['reson'] = '规格库存有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
if (!empty($value['sku_weight_value']) && (round($value['sku_weight_value'], 3) != $value['sku_weight_value'] || $value['sku_weight_value'] < 0.001)) {
$val['reson'] = '规格重量有误';
$faultArr = $val;
return ['faultArr' => $faultArr];
}
return callBack(statusCode()['success'], '验证成功');
}
/**
* 商品信息处理
* @param $parameter
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* user_type 3商户 4门店
* merchant_id
* store_id
* attribute_state 1无规格 2规格
* goods_class_id 分类id
* addGoodsArr 验证成功的商品
* value 商品信息
* ]
* @return array
* [
* addGoodsArr 添加的商品信息
* ]
*/
public function ImportPlainGoodsArr($parameter)
{
$user_type = $parameter['user_type'];
$merchant_id = $parameter['merchant_id'];
$store_id = $parameter['store_id'];
$value = $parameter['value'];
$goods_class_id = $parameter['goods_class_id'];
$addGoodsArr = $parameter['addGoodsArr']; //成功的商品信息
$attribute_state = $parameter['attribute_state'];
$goods_class_name = $value['class_name_1'];
if (!empty($value['class_name_2'])) {
$goods_class_name .= '/' . $value['class_name_2'];
if (!empty($value['class_name_3'])) {
$goods_class_name .= '/' . $value['class_name_3'];
}
}
$data = [
'goods_class_id' => $goods_class_id,
'less_num' => $value['less_num'] ? $value['less_num'] : null,
'more_num' => $value['more_num'] ? $value['more_num'] : null,
'goods_num' => $value['goods_num'] ? $value['goods_num'] : 0,
'attribute' => $attribute_state,
'retail_state' => $value['retail_state'] == '是' ? 1 : 0,
'issellonline' => $value['issellonline'] == '是' ? 1 : 0,
'shop_mem_status' => $value['shop_mem_status'] == '是' ? 1 : 2,
'store_mem_status' => $value['store_mem_status'] == '是' ? 1 : 2,
'merchantid' => $merchant_id,
'goods_code' => $value['goods_code'],
'specifications' => $value['specifications'],
'company' => $value['company'],
'addtime' => $_SERVER['REQUEST_TIME'],
'vip_retail_state' => $value['vip_retail_state'] == '是' ? 1 : 0,
'vip_online_state' => $value['vip_online_state'] == '是' ? 1 : 0,
'purch_price' => $value['purch_price'] ? $value['purch_price'] : null,
'retail_price' => $value['retail_price'] ? $value['retail_price'] : null,
'online_price' => $value['online_price'] ? $value['online_price'] : null,
'good_number' => $value['good_number'],
'shop_mem_price' => $value['shop_mem_price'] ? $value['shop_mem_price'] : null,
'store_mem_price' => $value['store_mem_price'] ? $value['store_mem_price'] : null,
'goods_class_name' => $goods_class_name,
'goods_name' => $value['goods_name'],
'subheading' => $value['subheading'],
'status' => 0,
'goods_brand' => $value['goods_brand'],
'weight_value' => $value['weight_value'] ? $value['weight_value'] : null,
'serial_number_state' => $value['serial_number_state'] == '是' ? 1 : 0
];
switch ($attribute_state) {
case 1:
$data['can_exchange_weigh'] = $value['can_exchange_weigh'] == '是' ? 2 : 1;
//第三方平台
if ($parameter['platform_type'] == 2) {
$data['third_goods_code'] = $value['third_goods_code'];
}
break;
case 2:
$data['can_exchange_weigh'] = 1;
//开启规格
$temp = [];
$temp['sku_name_title'][] = $value['sku_1'];
$name[] = $value['sku_val_1'];
if (!empty($value['sku_2'])) {
$temp['sku_name_title'][] = $value['sku_2'];
$name[] = $value['sku_val_2'];
if (!empty($value['sku_3'])) {
$temp['sku_name_title'][] = $value['sku_3'];
$name[] = $value['sku_val_3'];
if (!empty($value['sku_4'])) {
$temp['sku_name_title'][] = $value['sku_4'];
$name[] = $value['sku_val_4'];
}
}
}
$temp['sku_list'][] = [
'name' => $name,
'purch_price' => $value['sku_purch_price'] ? $value['sku_purch_price'] : null,
'retail_price' => $value['sku_retail_price'] ? $value['sku_retail_price'] : null,
'online_price' => $value['sku_online_price'] ? $value['sku_online_price'] : null,
'shop_mem_price' => $value['sku_shop_mem_price'] ? $value['sku_shop_mem_price'] : null,
'store_mem_price' => $value['sku_store_mem_price'] ? $value['sku_store_mem_price'] : null,
'sku_num' => 1,
'goods_num' => $value['sku_goods_num'] ? $value['sku_goods_num'] : 0,
'sku_code' => $value['sku_code'],
'sku_goods_number' => $value['sku_goods_number'],
'more_num' => $value['sku_more_num'],
'less_num' => $value['sku_less_num'],
'sku_weight_value' => $value['sku_weight_value'],
'third_goods_code' => $parameter['platform_type'] == 2 ? $value['third_goods_code'] : ''
];
$data['sku_json'] = $temp;
$data['goods_num'] = 0;
break;
}
if ($user_type == 4) {
//门店
$data['storeid'] = $store_id;
$data['type'] = 2;
}
$addGoodsArr[] = $data;
unset($data);
unset($value);
unset($name);
unset($temp);
return ['addGoodsArr' => $addGoodsArr];
}
/**
* 规格信息处理
* @param $parameter
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* addGoodsArr 成功的商品列表
* value 商品信息
* ]
* @return array
*/
public function ImportGoodsSkuArr($parameter)
{
$addGoodsArr = $parameter['addGoodsArr'];
$value = $parameter['value'];
$name[] = $value['sku_val_1'];
if (!empty($value['sku_val_2'])) $name[] = $value['sku_val_2'];
if (!empty($value['sku_val_3'])) $name[] = $value['sku_val_3'];
if (!empty($value['sku_val_4'])) $name[] = $value['sku_val_4'];
$data = [
'name' => $name,
'purch_price' => $value['sku_purch_price'] ? $value['sku_purch_price'] : null,
'retail_price' => $value['sku_retail_price'] ? $value['sku_retail_price'] : null,
'online_price' => $value['sku_online_price'] ? $value['sku_online_price'] : null,
'shop_mem_price' => $value['sku_shop_mem_price'] ? $value['sku_shop_mem_price'] : null,
'store_mem_price' => $value['sku_store_mem_price'] ? $value['sku_store_mem_price'] : null,
'sku_num' => 1,
'goods_num' => $value['sku_goods_num'] ? $value['sku_goods_num'] : 0,
'sku_code' => $value['sku_code'],
'sku_goods_number' => $value['sku_goods_number'],
'more_num' => $value['sku_more_num'],
'less_num' => $value['sku_less_num'],
'sku_weight_value' => $value['sku_weight_value'],
];
//第三方平台
if ($parameter['platform_type'] == 2) {
$data['third_goods_code'] = $value['third_goods_code'];
}
$addGoodsArr[count($addGoodsArr) - 1]['sku_json']['sku_list'][] = $data;
unset($name);
unset($data);
unset($value);
return ['addGoodsArr' => $addGoodsArr];
}
/**
* 导入商品表格头部
* @param $platform_type 商户平台类型 1默认系统 2微礼平台
* @return array
*/
public function ImportGoodsTitle($platform_type)
{
$headArr = [
'goods_name' => '商品名称(必填)',
'subheading' => '副标题',
'goods_brand' => '品牌名称',
'goods_code' => '条码',
'good_number' => '货号(必填)',
'class_name_1' => '第一级分类(必填)',
'class_name_2' => '第二级分类',
'class_name_3' => '第三级分类',
'goods_num' => '商品总库存',
'purch_price' => '进货价',
'retail_price' => '店内零售价(开启店内出售后必填)',
'online_price' => '商城零售价(开启商城出售后必填)',
'store_mem_price' => '店内会员价(开启店内会员价必填)',
'shop_mem_price' => '商城会员价(开启商城会员价必填)',
'retail_state' => '是否开启店内出售',
'issellonline' => '是否开启商城出售',
'store_mem_status' => '是否开启店内会员价',
'shop_mem_status' => '是否开启商城会员价',
'can_exchange_weigh' => '是否称重',
'vip_online_state' => '是否开启线上折扣',
'vip_retail_state' => '是否开启线下折扣',
'serial_number_state' => '是否开启串号',
'more_num' => '库存上限(超量值)',
'less_num' => '库存下限(预警值)',
'company' => '单位',
'weight_value' => '重量(Kg)',
'specifications' => '规格',
];
switch ($platform_type) {
case 2:
$headArr['third_goods_code'] = 'Q3 ERP平台商品编码';
break;
}
return $headArr;
}
/**
* 导入商品的规格商品头部
* @param $platform_type $platform_type 商户平台类型 1默认系统 2微礼平台
* @return array
*/
public function ImportSkuGoodsTitle($platform_type)
{
$headArr = [
'goods_name' => '商品名称(必填)',
'subheading' => '副标题',
'goods_brand' => '品牌名称',
'goods_code' => '条码',
'good_number' => '货号(必填)',
'class_name_1' => '第一级分类(必填)',
'class_name_2' => '第二级分类',
'class_name_3' => '第三级分类',
'goods_num' => '商品总库存',
'purch_price' => '进货价',
'retail_price' => '店内零售价(开启店内出售后必填)',
'online_price' => '商城零售价(开启商城出售后必填)',
'store_mem_price' => '店内会员价(开启店内会员价必填)',
'shop_mem_price' => '商城会员价(开启商城会员价必填)',
'retail_state' => '是否开启店内出售',
'issellonline' => '是否开启商城出售',
'store_mem_status' => '是否开启店内会员价',
'shop_mem_status' => '是否开启商城会员价',
'vip_online_state' => '是否开启线上折扣',
'vip_retail_state' => '是否开启线下折扣',
'serial_number_state' => '是否开启串号',
'more_num' => '库存上限(超量值)',
'less_num' => '库存下限(预警值)',
'company' => '单位',
'weight_value' => '重量(Kg)',
'specifications' => '规格',
'sku_1' => '规格1',
'sku_val_1' => '规格值1',
'sku_2' => '规格2',
'sku_val_2' => '规格值2',
'sku_3' => '规格3',
'sku_val_3' => '规格值3',
'sku_4' => '规格4',
'sku_val_4' => '规格值4',
'sku_goods_number' => '规格货号(必填)',
'sku_code' => '规格条码',
'sku_goods_num' => '规格库存',
'sku_more_num' => '规格上限',
'sku_less_num' => '规格下限',
'sku_purch_price' => '规格进价',
'sku_retail_price' => '规格店内零售价(必填)',
'sku_online_price' => '规格商城售价(必填)',
'sku_store_mem_price' => '规格店内会员价(必填)',
'sku_shop_mem_price' => '规格商城会员价(必填)',
'sku_weight_value' => '规格重量(Kg)'
];
switch ($platform_type) {
case 2:
$headArr['third_goods_code'] = 'Q3 ERP平台商品编码';
break;
}
return $headArr;
}
/**
* 根据商品单位获取重量-针对称重商品
* @param string $company 单位
* @return float|int|string
*/
public function getGoodsWeightFromCompany($company = '')
{
switch ($company) {
case 'g':
case 'G':
case '克':
$weight_value = 0.001;
break;
case '斤':
case '市斤':
$weight_value = 0.5;
break;
default:
$weight_value = 1;
break;
}
return $weight_value;
}
/**
* 将条码查询出的商品图片存入图片库
* @param $parameter
* [
* path 图片链接
* ]
* @return array
* [
* status
* message
* goods_image=>[
* id 图片库id
* path 图片路径
* ]
* ]
*/
public function basisCodeAddImageGallery($parameter)
{
$imageGalleryModel = new ImageGalleryModel();
$imageInfo = $imageGalleryModel->getFind(array('path' => $parameter['path']));
if (!empty($imageInfo)) {
return ['status' => 1, 'message' => '查询成功', 'goods_image' => ['id' => $imageInfo['id'], 'path' => $imageInfo['path']]];
} else {
$data = array(
'path' => $parameter['path'],
'add_time' => time(),
'storage_type' => 0,
'source_type' => 0,
'user_type' => 0,
'from_type_id' => 52,
'from_name' => '商品云库图片',
);
$image_id = $imageGalleryModel->add($data);
if (!$image_id) {
return ['status' => 0, 'message' => '存入图片库失败'];
}
return ['status' => 1, 'message' => '添加成功', 'goods_image' => ['id' => $image_id, 'path' => $parameter['path']]];
}
}
/**
* 条码查询方式
* @param $partner_id 合伙人id
* @return array|mixed
*/
public function basisUserIdGetCode($partner_id)
{
if (empty($partner_id)) {
return [];
}
$partner_info = M('retail_admin')->field("app_status,app_code")->where(['id' => $partner_id])->find();
return $partner_info;
}
/**
* 根据商品条码从云库查询商品信息
* @param $code
* @param $partner_id 合伙人id
* @return array|mixed
*/
public function basisCodeGetGoodsInfo($code, $partner_id)
{
if (empty($code)) {
return ['status' => 0, 'message' => '请输入商品条码'];
}
$code = trim($code);
$info = $this->getLocal($code); //本地云库
if (empty($info)) {
$partner_info = $this->basisUserIdGetCode($partner_id); //合伙人信息
if ($partner_info['app_status'] == 1 && !empty($partner_info['app_code'])) {
$result = $this->aLiYunGoodsInfo($code, $partner_info['app_code']); //阿里云云库
if (!empty($result)) {
$result = json_decode($result, true);
if ($result['status'] == '200') {
$goods_info = $result['result'];
$info = array(
'code' => $code,
'name' => $goods_info['goodsName'],
'specification' => $goods_info['spec'],
'unit' => '',
'origin' => $goods_info['ycg'],
'trademark' => $goods_info['trademark'],
'image' => $goods_info['img'],
);
$info['id'] = $this->addLocal($info); //添加本地商品库
} else {
return ['status' => 0, 'message' => '未找到该商品'];
}
} else {
return ['status' => 0, 'message' => '未找到该商品'];
}
} else {
return ['status' => 0, 'message' => '未找到该商品'];
}
}
if ($info['image'] && empty($info['image_id'])) {
$codeImage = $this->basisCodeAddImageGallery([
'path' => $info['image'],
'storage_type' => 5
]); //商品图片存入库图片库
if (!empty($codeImage['goods_image'])) {
$info['image_id'] = $codeImage['goods_image']['id']; //商品封面图
$GoodsCodeModel = new GoodsCodeModel();
$GoodsCodeModel->updateOrder(['id' => $info['id']], ['image_id' => $info['image_id']]);
}
}
return ['status' => 1, 'message' => '查询成功', 'data' => ['goods' => $info]];
}
/**
* 获取本地商品库信息
* @param $code 条码
* @return mixed
*/
public function getLocal($code)
{
if (empty($code)) {
return [];
}
$GoodsCodeModel = new GoodsCodeModel();
$info = $GoodsCodeModel->getFind(array('code' => $code), 'id,name,specification,unit,origin,trademark,image,image_id');
return $info;
}
/**
* 添加本地商品云库
* @param $parameter
* @return bool|mixed
*/
protected function addLocal($parameter)
{
if (empty($parameter)) {
return false;
}
$data = [
'code' => $parameter['code'],
'name' => $parameter['name'],
'specification' => $parameter['specification'],
'origin' => $parameter['origin'],
'trademark' => $parameter['trademark'],
'image' => $parameter['img']
];
$GoodsCodeModel = new GoodsCodeModel();
$id = $GoodsCodeModel->addOrder($parameter);
return $id;
}
/**
* 阿里云根据商品条码查询商品信息
* @param $goods_code 条码
* @param $appcode appcode
* @return bool|string
*/
public function aLiYunGoodsInfo($goods_code, $appcode)
{
$host = 'https://codequery.market.alicloudapi.com';
$path = '/querybarcode';
$method = "GET";
$Authorization = "Authorization:APPCODE";
$querys = "code=";
$headers = array(
$Authorization . ' ' . $appcode
);
$querys = $querys . $goods_code;
$bodys = "";
$url = $host . $path . "?" . $querys;
$result = $this->curl_get($method, $url, $headers, $host);
return $result;
}
/**
* 发送请求(向阿里云)
* @param $method
* @param $url
* @param $headers
* @param $host
* @return bool|string
*/
protected function curl_get($method, $url, $headers, $host)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
//curl_setopt($curl, CURLOPT_HEADER, true); //如不输出json, 请打开这行代码,打印调试头部状态码。
//状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误
if (1 == strpos("$" . $host, "https://")) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
$out_put = curl_exec($curl);
return $out_put;
}
/**
* 判断货号或者条码在门店是否可以使用
* @param $param
* $param['type'](必传) 检测类型 1货号 2条码 3第三方平台商品编码
* $param['store_id'](必传) 门店ID
* $param['value'](必传) 需要检测的值
* $param['goods_id'] 商品ID (与商品规格ID只能二选一传输)
* $param['goods_sku_id'] 商品规格ID (与商品ID只能二选一传输)
* @return mixed
*/
public function jumpGoodsNumberOrCode($param)
{
if (!isset($param['type']) || !isset($param['value']) || !isset($param['store_id'])) {
return callBack(statusCode()['error'], '缺少必要参数');
}
if (isset($param['goods_id']) && isset($param['goods_sku_id'])) {
return callBack(statusCode()['error'], '只能检测一种数据');
}
switch ($param['type']) {
case 1:
$goods_key = 'goods_number';
$sku_key = 'sku_goods_number';
$name = '货号';
break;
case 2:
$goods_key = 'goods_code';
$sku_key = 'sku_code';
$name = '条码';
break;
case 3:
$goods_key = 'third_goods_code';
$sku_key = 'third_goods_code';
$name = 'Q3 ERP平台商品编码';
break;
}
$map = array(
'store_id' => $param['store_id'],
$goods_key => $param['value'],
'status' => ['in', [0, 1]],
);
if (isset($param['goods_id']) && !empty($param['goods_id'])) {
$map['id'] = array('neq', $param['goods_id']);
}
$GoodsModel = new RetailGoodsModel();
$count = $GoodsModel->getCount($map);
if ($count > 0) {
return callBack(statusCode()['error'], '已有商品使用该' . $name);
}
$sMap = array(
'store_id' => $param['store_id'],
$sku_key => $param['value'],
'state' => 0,
);
if (isset($param['goods_sku_id']) && !empty($param['goods_sku_id'])) {
$sMap['id'] = array('neq', $param['goods_sku_id']);
}
$SkuGoodsModel = new RetailSkuGoodsModel();
$sku_count = $SkuGoodsModel->getCount($sMap);
if ($sku_count > 0) {
return callBack(statusCode()['error'], '已有规格使用该' . $name);
}
return callBack(statusCode()['success'], '该' . $name . '可使用');
}
/**
* 判断货号或者条码在商户是否可以使用
* @param $param
* $param['type'](必传) 检测类型 1货号 2条码 3第三方平台Q3商品编码
* $param['merchant_id'](必传) 商户ID
* $param['value'](必传) 需要检测的值
* $param['goods_id'] 商品ID (与商品规格ID只能二选一传输)
* $param['goods_sku_id'] 商品规格ID (与商品ID只能二选一传输)
* @return mixed
*/
public function jumpMerGoodsNumberOrCode($param)
{
if (!isset($param['type']) || !isset($param['value']) || !isset($param['merchant_id'])) {
return callBack(statusCode()['error'], '缺少必要参数');
}
if (isset($param['goods_id']) && isset($param['goods_sku_id'])) {
return callBack(statusCode()['error'], '只能检测一种数据');
}
switch ($param['type']) {
case 1:
$goods_key = 'good_number';
$sku_key = 'sku_goods_number';
$name = '货号';
break;
case 2:
$goods_key = 'goods_code';
$sku_key = 'sku_code';
$name = '条码';
break;
}
//商户与全部
$map = array(
'merchantid' => $param['merchant_id'],
$goods_key => $param['value'],
'status' => ['in', [0, 1]],
);
if (isset($param['goods_id']) && !empty($param['goods_id'])) {
$map['id'] = array('neq', $param['goods_id']);
}
$GoodsModel = new RetailMgoodsModel();
$count = $GoodsModel->getCount($map);
if ($count > 0) {
return callBack(statusCode()['error'], '已有商品使用该' . $name);
}
$sMap = array(
'merchantid' => $param['merchant_id'],
$sku_key => $param['value'],
'state' => 0,
);
if (isset($param['goods_sku_id']) && !empty($param['goods_sku_id'])) {
$sMap['id'] = array('neq', $param['goods_sku_id']);
}
$SkuGoodsModel = new SkuMGoodsModel();
$sku_count = $SkuGoodsModel->getCount($sMap);
if ($sku_count > 0) {
return callBack(statusCode()['error'], '已有规格使用该' . $name);
}
return callBack(statusCode()['success'], '该' . $name . '可使用');
}
/**
* 获取门店商品列表信息、按照规格、非规格筛选
* @param $param
* $param['store_id'](必传) 门店ID
* $param['attribute_state'](必传) 1非规格 2多规格
* $param['pricing_method'] 1不称重 2称重
* $param['keyword'] 搜索关键词,主要对名称模糊搜索,货号和条码全等搜索
* $param['person1'] 一级分类
* $param['person2'] 二级分类
* $param['person3'] 三级分类
* $param['page'] 页码
* $param['limit'] 每页数量 最大值 1000
* $param['unwanted_id'] 不需要的、要剔除的ID
* $serial_number_state 0不包含串号商品 1包含串号商品
* @return mixed
*/
public function comStoreGoods($param)
{
$serial_number_state = $param['serial_number_state'] ? $param['serial_number_state'] : 0;
$attribute_state = $param['attribute_state'] ? $param['attribute_state'] : 1;
$keyword = $param['keyword']; //搜索关键词
$page = $param['page'];
$limit = $param['limit'];
$store_id = $param['store_id'];
if (!$attribute_state || !$page || !$limit) {
return callBack(statusCode()['error'], '缺少必要参数,详情请见data', array(
'store_id' => $store_id,
'attribute_state' => $attribute_state,
'page' => $page,
'limit' => $limit,
));
}
if (!in_array($attribute_state, ['1', '2'])) {
return callBack(statusCode()['error'], '请传入正确的规格类型');
}
if (!verifyNumber($limit, 0, 1, 1000)) {
return callBack(statusCode()['error'], '请传入正确的每页数量');
}
$map = array(
'store_id' => $store_id,
'status' => 0, //正常商品
);
$map['attribute_state'] = $attribute_state;
if ($serial_number_state != 1) {
$map['serial_number_state'] = 0;
}
if ($attribute_state == 1) {
$GoodsModel = new RetailGoodsModel();
//称重
if (!empty($param['pricing_method'])) {
$map['pricing_method'] = $param['pricing_method'];
}
} else {
$GoodsModel = new SkuGoodsViewModel();
$map['attribute_state'] = 2; //开启的规格商品
$map['state'] = 0;
}
//按名称、货号、条码搜索
if (!empty($keyword)) {
$map[] = array(
'goods_name' => array('like', "%" . $keyword . "%"),
'goods_number|goods_code' => $keyword,
'_logic' => 'OR',
);
}
//剔除已选商品
if (!empty($param['used_id'])) {
if ($attribute_state == 1) {
$map['id'] = array('not in', $param['used_id']);
} else {
$map['sku_goods.id'] = array('not in', $param['used_id']);
}
}
$GoodsClassify = new GoodsClassify();
$map = $GoodsClassify->getGoodsClassId($param, $map, "goods_class_id");
//设定获取的字段
if ($attribute_state == 1) {
$field = array(
'id',
'goods_class_id',
'goods_img_id',
'goods_name',
'goods_code',
'plu_code',
'goods_class_id',
'retail_price',
'online_price',
'store_mem_status',
'shop_mem_status',
'plus_mem_status',
'store_mem_price',
'shop_mem_price',
'plus_price',
'goods_yieldly_id',
'goods_brand_id',
'company',
'specifications',
'goods_number',
'pricing_method',
);
} else {
$field = array(
'id',
'goods_class_id',
'goods_img_id',
'sku_id',
'sku_plu_code',
'goods_name',
'store_mem_status',
'shop_mem_status',
'plus_mem_status',
'sku_retail_price',
'sku_store_mem_price',
'sku_shop_mem_price',
'sku_online_price',
'sku_plus_price',
'sku_goods_number',
'sku_code',
'sku_id_list',
'goods_yieldly_id',
'goods_brand_id',
'company',
'pricing_method',
);
}
$goodsList = $GoodsModel->getSelect($map, $field, 'id desc', "{$page},{$limit}");
$goodsList = $goodsList ? $goodsList : array();
$count = !empty($goodsList) ? ($GoodsModel->getCount($map)) : 0;
$SkuAttribute = new SkuAttribute();
$Brand = new Brand();
$Yieldly = new Yieldly();
$sku_name = array(); //临时存储规格名称列表
$brand_name = array(); //临时存品牌名称列表
$yieldly_name = array(); //临时存储产地名称列表
$WarehouseGoodsModel = new SWarehousingGoodsModel(); //入库记录
$GoodsClassModel = new RetailGoodsClassModel();
$ImageModel = new ImageGalleryModel();
foreach ($goodsList as $key => &$value) {
$value['index'] = $key + 1;
$dateMap = [
'goods_id' => $value['id'],
];
if ($attribute_state == 2) {
$value['plu_code'] = $value['sku_plu_code'];
$sku_id_list = explode(',', $value['sku_id_list']);
$name = [];
foreach ($sku_id_list as $v) {
$name[] = $SkuAttribute->getSkuListName($v, $sku_name);
}
$value['specifications'] = implode(';', $name);
$value['retail_price'] = $value['sku_retail_price'];
$value['store_mem_price'] = $value['sku_store_mem_price'];
$value['shop_mem_price'] = $value['sku_shop_mem_price'];
$value['online_price'] = $value['sku_online_price'];
$value['plus_price'] = $value['sku_plus_price'];
$value['goods_number'] = $value['sku_goods_number'];
$value['goods_code'] = $value['sku_code'];
$value['goods_sku_id'] = $value['sku_id'];
unset($value['sku_retail_price']);
unset($value['sku_store_mem_price']);
unset($value['sku_online_price']);
unset($value['sku_plus_price']);
unset($value['sku_goods_number']);
unset($value['sku_code']);
unset($value['sku_id']);
$dateMap['sku_id'] = $value['sku_id'];
}
//生产日期、保质期
$date = $WarehouseGoodsModel->basisOrderFind($dateMap, 'quality_guarantee_period,build_date', 'id asc');
$value['build_date'] = $date ? $date['build_date'] : '';
$value['quality_guarantee_period'] = $date ? $date['quality_guarantee_period'] : '';
$value['goods_img'] = $value['goods_img_id'] ? $ImageModel->getFieldPath(['id' => $value['goods_img_id']]) : '';
$value['goods_class_name'] = $GoodsClassModel->getClassName($value['goods_class_id']);
if ($value['store_mem_status'] != 1) $value['store_mem_price'] = '';
if ($value['shop_mem_status'] != 1) $value['shop_mem_price'] = '';
if ($value['plus_mem_status'] != 1) $value['plus_price'] = '';
$value['goods_brand'] = $Brand->getBrandName($value['goods_brand_id'], $brand_name);
$value['goods_yieldly'] = $Yieldly->getYieldlyName($value['goods_yieldly_id'], $yieldly_name);
unset($value['goods_brand_id']);
unset($value['goods_yieldly_id']);
}
unset($sku_name);
unset($brand_name);
unset($yieldly_name);
$message = $goodsList ? '获取成功' : '暂无数据';
return callBack(statusCode()['success'], $message, ['list' => $goodsList, 'count' => $count]);
}
}