2976 行
122 KiB
PHP
可执行文件
2976 行
122 KiB
PHP
可执行文件
<?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]);
|
||
}
|
||
}
|