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

1193 行
59 KiB
PHP
可执行文件

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

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

<?php
namespace Common\Business;
use Api\Controller\InventoryController;
use Common\Model\ImageGalleryModel;
use Common\Model\RetailGoodsBannerModel;
use Common\Model\RetailGoodsModel;
use Common\Model\RetailMerchantConfigModel;
use Common\Model\RetailSkuGoodsModel;
use Common\Model\RetailSkuListModel;
use Common\Model\RetailStoreAuthModel;
use Common\Model\RetailStoreModel;
use Common\Model\RetailVipConfigModel;
use Common\Model\SPurchaseGoodsModel;
use Common\Model\SSaleMGoodsModel;
use Common\Model\SWarehousingGoodsModel;
use Common\Validate\CustomValidate;
//[1.8.85]
/**
* 操作商品档案类
* Class OperateGoods
* @package Common\Business
*
* getGoodsDetails 获取商品详情进行编辑
* editStoreGoods 门店新增、编辑商品
* getEditGoodsConfig 获取门店添加商品的一些基本配置及限制
* verifyEditGoods 验证门店指定商品是否可以进行编辑、修改规格、修改预售状态
* batchOperateGoods 批量修改商品的某个字段值
*
*/
class OperateGoods
{
/**
* 门店商品字段名称
* @var array
*/
protected $goods_fields_name = array(
'supplier_id' => '供货商',
'goods_name' => '商品名称',
'goods_number' => '商品货号',
'goods_code' => '商品条码',
'goods_class_id' => '商品分类',
'subheading' => '商品副标题',
'goods_num' => '商品库存',
'purchase_price' => '商品进价',
'retail_price' => '店内零售价',
'online_price' => '商城零售价',
'shop_mem_status' => '商城会员价开启状态',
'shop_mem_price' => '商城会员价',
'plus_price' => 'plus会员价',
'plus_mem_status' => '是否开启plus会员',
'store_mem_status' => '店内会员价开启状态',
'store_mem_price' => '店内会员价',
'integral_mem_status' => '商品送积分状态',
'integral' => '购买商品送的积分',
'company' => '商品单位',
'weight_value' => '商品重量',
'specifications' => '商品规格',
'goods_order' => '商品排序',
'more_num' => '库存超量',
'less_num' => '库存预警',
'fictitious_num' => '虚拟销量',
'split_state' => '是否可以拆分',
'retail_state' => '店内出售状态',
'online_state' => '商城出售状态',
'advance_sale_status' => '商城预售状态',
'delivery_type' => '配送方式',
'delivery_template_id' => '配送模板',
'vip_online_state' => '商城会员折扣',
'vip_retail_state' => '门店会员折扣',
'pricing_method' => '计价方式',
'refund_state' => '是否允许退款',
'exchange_state' => '是否允许换货',
'status' => '商品上下架状态',
'attribute_state' => '多规格状态',
'label_id' => '商品标签',
'guide_royalty_state' => '导购员提成状态',
'guide_royalty_custom_state' => '自定义导购员提成状态',
'guide_royalty_price' => '导购员线下提成固定金额',
'guide_royalty_online_price' => '导购员线上提成固定金额',
'shop_mem_integral' => '商城会员价换购积分',
'plus_mem_integral' => 'PLUS会员价换购积分',
'store_mem_integral' => '店内会员价换购积分',
'goods_brand_id' => '商品品牌',
'goods_yieldly_id' => '商品产地',
'plu_code' => '商品PLU码',
'video_id' => '视频地址',
);
/**
* 获取商品详情进行编辑
* @param $param
* [
* user_type 3商户 4门店
* platform_type 商户平台类型 1默认系统 2微礼平台
* ]
* @return mixed
*/
public function getGoodsDetails($param)
{
$user_type = $param['user_type'];
$platform_type = $param['platform_type'];
$merchant_id = $param['merchant_id'];
$store_id = $param['store_id']; //门店ID
$goods_id = $param['goods_id']; //商品ID
if (!$store_id || !$goods_id) {
return callBack(statusCode()['error'], '缺少必要参数,详情请见data', array(
'store_id' => $store_id,
'goods_id' => $goods_id,
));
}
//1.查询商品信息
$GoodsModel = new RetailGoodsModel();
$map = array(
'id' => $goods_id,
'store_id' => $store_id,
'status' => array('in', '0,1'),
);
$goods = $GoodsModel->getFind($map);
if (!$goods) {
return callBack(statusCode()['error'], '商品不存在');
}
//2.获取封面图
$ImageGalleryModel = new ImageGalleryModel();
if (!empty($goods['goods_img_id'])) {
$goods['goods_img'] = $ImageGalleryModel->getFieldPath(array('id' => $goods['goods_img_id']));
}
if (!empty($goods['video_id'])) {
$goods['goods_video'] = $ImageGalleryModel->getFieldPath(array('id' => $goods['video_id']));
} else {
$goods['goods_video'] = '';
}
//3.处理字段信息
$goods['more_num'] = $goods['more_num'] ? floatval($goods['more_num']) : '';
$goods['less_num'] = $goods['less_num'] ? floatval($goods['less_num']) : '';
$goods['weight_value'] = $goods['weight_value'] ? floatval($goods['weight_value']) : '';
$goods['online_price'] = floatval($goods['online_price']) ? floatval($goods['online_price']) : '';
$goods['retail_price'] = floatval($goods['retail_price']) ? floatval($goods['retail_price']) : '';
$goods['shop_mem_price'] = floatval($goods['shop_mem_price']) ? floatval($goods['shop_mem_price']) : '';
$goods['store_mem_price'] = floatval($goods['store_mem_price']) ? floatval($goods['store_mem_price']) : '';
$goods['plus_price'] = floatval($goods['plus_price']) ? floatval($goods['plus_price']) : '';
$goods['guide_royalty_price'] = floatval($goods['guide_royalty_price']) ? floatval($goods['guide_royalty_price']) : '';
$goods['guide_royalty_online_price'] = floatval($goods['guide_royalty_online_price']) ? floatval($goods['guide_royalty_online_price']) : '';
$goods['goods_code'] = $goods['goods_code'] ? $goods['goods_code'] : '';
//4.处理线上提货信息
$goods['delivery_type'] = $goods['delivery_type'] ? json_decode('[' . join(',', array($goods['delivery_type'])) . ']', true) : array();
$goods['goods_num'] = 0;
//5.获取商品库存
if ($platform_type == 2 && $user_type == 4) {
//Q3库存
$StoreModel = new RetailStoreModel();
$Customer_Codes = $StoreModel->getFindField([
'id' => $store_id,
], 'third_code');
if ($goods['attribute_state'] == 2) {
$SkuGoodsModel = new RetailSkuGoodsModel();
$sku_code_arr[$goods['id']] = $SkuGoodsModel->getFindField([
'goods_id' => $goods['id'],
'state' => 0
], 'third_goods_code', true);
} else {
$code_arr[$goods['id']] = $goods['third_goods_code'];
}
$GoodsClass = new \LittleGift\Business\Goods();
$thirdResult = $GoodsClass->goodsNumQuery([
'merchant_id' => $merchant_id,
'type' => 1,
'code_arr' => $code_arr,
'sku_code_arr' => $sku_code_arr,
'Customer_Codes' => $Customer_Codes
]);
if ($thirdResult['status'] == 1) {
$goods['goods_num'] = floatval($thirdResult['data'][$goods['id']]);
}
} else {
$InventoryApi = new InventoryController();
$goods['goods_num'] = $InventoryApi->goods_num(2, $store_id, $goods_id);
}
//6.处理商品分类
$GoodsClassifyApi = new GoodsClassify();
$class_list = array();
$GoodsClassifyApi->getAppointGoodsClassList($goods['goods_class_id'], $class_list);
//7.获取轮播图
$BannerApi = new Banner();
$banner = $BannerApi->getGoodsBanner($goods_id, true);
return callBack(statusCode()['success'], '获取成功', array(
'goods' => $goods, //商品信息
'bannerList' => $banner, //商品轮播图
'goods_class' => $class_list, //商品选择的分类列表
));
}
/**
* 门店新增、编辑商品
* @param $param
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* ]
* @return mixed
* @throws \think\Exception
*/
public function editStoreGoods($param)
{
$platform_type = $param['platform_type'] ? $param['platform_type'] : 1;
$store_id = $param['store_id']; //门店ID
$merchant_id = $param['merchant_id']; //商户ID
$user_type = $param['user_type']; //用户类型 3商户 4门店 6收银员
$operate_id = $param['operate_id']; //操作用户的ID
if (!$store_id || !$merchant_id || !$operate_id || !$user_type || !in_array($user_type, array(3, 4, 6))) {
return callBack(statusCode()['error'], '缺少必要参数,详情请见data', array(
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'user_type' => $user_type,
'operate_id' => $operate_id,
));
}
//1.验证是否创建供给仓
$WarehousingRecord = new WarehousingRecord();
$warehouse = $WarehousingRecord->getStoreSaleWarehouse([
'merchant_id' => $merchant_id,
'store_id' => $store_id
]);
if (empty($warehouse)) {
return callBack(statusCode()['error'], "请先创建供给仓");
}
$warehouse_id = $warehouse['id'];
//获取门店操作商品的一些基本配置
$config = $this->getEditGoodsConfig([
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'user_type' => $user_type,
]);
$data = $param['goodsInfo'];
foreach ($data as $k => $v) {
if (!is_array($v)) $data[$k] = trim($v, ' ');
}
$item = array(
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'goods_id' => $data['id'],
'attribute_state' => $data['attribute_state'],
'retail_state' => $data['retail_state'],
'online_state' => $data['online_state'],
'advance_sale_status' => $data['advance_sale_status'],
'showpurch_price' => $config['show_purchase_price'],
'edit_price' => $config['edit_price'],
'integral_arrive_cash' => $config['integral_arrive_cash'],
'marketing_methods' => $config['marketing_methods'],
'store_mem_status' => $data['store_mem_status'],
'shop_mem_status' => $data['shop_mem_status'],
'plus_mem_status' => $data['plus_mem_status'],
'source_type' => $user_type == 3 || $user_type == 4 ? 1 : 3,
'operate_id' => $operate_id,
'serial_number_state' => $data['serial_number_state'] ? $data['serial_number_state'] : 0,
'platform_type' => $platform_type
); //验证商品参数的配置
//2.编辑商品时,验证是可进行编辑规格操作
$oldGoods = array();
if (!empty($data['id'])) {
$verifyEditGoods = $this->verifyEditGoods($item);
if ($verifyEditGoods['status'] != 1) {
return $verifyEditGoods;
}
$oldGoods = $verifyEditGoods['data'];
}
//3.接收传输的商品信息
$item['goodsInfo'] = $param['goodsInfo'];
$goods = $this->getPostGoodsData($item);
$goodsVerifyItem = $item;
$goodsVerifyItem['goods'] = $goods;
//4.验证传输的商品基本字段
$verifyGoods = $this->verifyGoodsData($goodsVerifyItem);
if ($verifyGoods['status'] != 1) {
return $verifyGoods;
}
//验证串号开关
if ($goods['serial_number_state'] == 1 && empty($data['id'])) {
if ($goods['goods_num'] > 0) {
return callBack(statusCode()['error'], '开启串码功能后,商品库存需要采购增加');
}
if ($goods['pricing_method'] == 2) {
return callBack(statusCode()['error'], '开启串码功能后,商品不能开启称重');
}
}
$goodsApi = new \Common\Business\Goods(); //商品类
//判断货号是否重复
$verifyNumber = $goodsApi->jumpGoodsNumberOrCode([
'value' => $goods['goods_number'],
'store_id' => $store_id,
'type' => 1,
'goods_id' => $data['id'],
]);
if ($verifyNumber['status'] != 1) {
return $verifyNumber;
}
//判断条码是否重复
if (!empty($goods['goods_code'])) {
$verifyCode = $goodsApi->jumpGoodsNumberOrCode([
'value' => $goods['goods_code'],
'store_id' => $store_id,
'type' => 2,
'goods_id' => $data['id'],
]);
if ($verifyCode['status'] != 1) {
return $verifyCode;
}
}
//第三方平台商品编码验证是否重复
if ($platform_type == 2 && empty($goods['id']) && $goods['attribute_state'] == 1) {
$LittleGoodsClass = new \LittleGift\Business\Goods();
$verifyCode = $LittleGoodsClass->verifyQ3Code([
'third_goods_code' => $goods['third_goods_code'],
'merchant_id' => $merchant_id
]);
if ($verifyCode['status'] != 1) {
return $verifyCode;
}
$verifyCode = $LittleGoodsClass->GoodsVerify([
'merchant_id' => $merchant_id,
'code_arr' => [$goods['third_goods_code']]
]);
if ($verifyCode['status'] == 0) {
return $verifyCode;
}
if (!empty($verifyCode['data']['arr_diff'])) {
return callBack(statusCode()['error'], $goods['third_goods_code'] . 'Q3 ERP平台验证失败');
}
}
//判断规格与称重
if ($goods['pricing_method'] == 2 && $goods['attribute_state'] == 2) {
return callBack(statusCode()['error'], '规格与称重不能同时开启');
}
//转换配送方式字段
$goods['delivery_type'] = implode(',', $goods['delivery_type']);
//5.处理称重商品重量
if ($goods['pricing_method'] == 2) {
$goods['weight_value'] = $goodsApi->getGoodsWeightFromCompany($goods['company']);
}
//6.处理图片云库地址
$goods_image_url = $data['goods_image_url'];
if (!empty($goods_image_url)) {
$obj = array(
'path' => $goods_image_url,
'storage_type' => 5
);
$codeImage = $goodsApi->basisCodeAddImageGallery($obj); //阿里云条码查询的商品图片存入库图片库
if (!empty($codeImage['goods_image'])) {
$goods['goods_img_id'] = $codeImage['goods_image']['id']; //商品封面图
}
}
$skuList = array(); //多规格
if ($goods['attribute_state'] == 2) {
$goods['third_goods_code'] = '';
$item['codeArr'] = $goods['goods_code'] ? [$goods['goods_code']] : [];
$item['numberArr'] = $goods['goods_number'] ? [$goods['goods_number']] : [];
$skuList = $param['goodsInfo']['skuList'];
try {
$item['skuList'] = json_decode($skuList, true);
} catch (\Exception $e) {
return callBack(statusCode()['error'], '规格参数有误', $skuList);
}
$verifySku = $this->verifyGoodsSku($item);
if ($verifySku['status'] != 1) {
return $verifySku;
}
$skuList = $verifySku['data'];
unset($goods['third_goods_code']);
}
$GoodsModel = new RetailGoodsModel();
$PinYinClass = new PinYin();
if (empty($oldGoods)) {
if (!$goods['simple_spelling']) {
$goods['simple_spelling'] = $PinYinClass->strChangePin($goods['goods_name']); //获取商品名称简拼
}
$goods_id = $GoodsModel->addOrder($goods);
} else {
unset($goods['purchase_price']);
unset($goods['third_goods_code']);
if ($goods['goods_name'] != $oldGoods['goods_name']) {
if (!$goods['simple_spelling']) {
$goods['simple_spelling'] = $PinYinClass->strChangePin($goods['goods_name']); //获取商品名称简拼
}
}
$GoodsModel->updateOrder(array('id' => $oldGoods['id']), $goods);
$goods_id = $oldGoods['id'];
}
if (!empty($goods_id)) {
//添加编辑记录
$GoodsClass = new Goods();
$GoodsClass->goodsEditRecord([
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'goods_id' => $goods_id
]);
$SaleWarehouseData = $goods;
$SaleWarehouseData['goods_id'] = $goods_id;
$SaleWarehouseData['warehouse_id'] = $warehouse_id;
$InventoryApi = new InventoryController();
if ($goods['attribute_state'] == 1) {
if (empty($oldGoods) || $goods['attribute_state'] != $oldGoods['attribute_state']) {
$InventoryApi->addSaleGoods($SaleWarehouseData, 1); //商品添加到销售库
} else {
$InventoryApi->addSaleGoods($SaleWarehouseData, 2); //商品销售库修改
}
} else {
$sku_id_str = [];
$SkuGoodsModel = new RetailSkuGoodsModel();
//处理规格
foreach ($skuList as $k => &$v) {
$v['goods_id'] = $goods_id;
$v['goods_img'] = $v['goods_img'] ? $v['goods_img'] : '';
$v['goods_img_id'] = $v['goods_img_id'] ? $v['goods_img_id'] : null;
$SaleWarehouseData['sku_name'] = $v['name'];
$SaleWarehouseData['sku_id_list'] = $v['sku_id_list'];
$SaleWarehouseData['sku_goods_number'] = $v['sku_goods_number'];
$SaleWarehouseData['sku_code'] = $v['sku_code'];
$SaleWarehouseData['sku_num'] = $v['sku_num'];
$SaleWarehouseData['goods_num'] = $v['goods_num'];
$SaleWarehouseData['more_num'] = $v['more_num'];
$SaleWarehouseData['less_num'] = $v['less_num'];
$SaleWarehouseData['purchase_price'] = $v['purchase_price'];
if ($v['id']) {
//编辑规格
unset($v['purchase_price']);
unset($v['third_goods_code']);
$SkuGoodsModel->updateOrder(array('id' => $v['id']), $v);
$SaleWarehouseData['sku_id'] = $v['id'];
$InventoryApi->addSaleGoods($SaleWarehouseData, 2); //商品供给库修改
$sku_id_str[] = $v['id'];
} else {
//新增规格
unset($v['id']);
$add = $SkuGoodsModel->addOrder($v); //添加规格
if ($add) {
$sku_id_str[] = $add;
}
$SaleWarehouseData['sku_id'] = $add;
$SaleWarehouseData['add_time'] = $v['add_time'];
$SaleWarehouseData['third_goods_code'] = $v['third_goods_code'];
$InventoryApi->addSaleGoods($SaleWarehouseData, 1);
unset($SaleWarehouseData['add_time']);
}
}
//修改旧规格(规格重置)、或被删除的规格的状态
if (!empty($sku_id_str)) {
$map = array(
'goods_id' => $goods_id,
'sku_id' => array('not in', $sku_id_str),
);
$SSaleMGoodsModel = new SSaleMGoodsModel();
$SSaleMGoodsModel->updateData($map, array('status' => 2));
$SWarehousingGoodsModel = new SWarehousingGoodsModel();
$SWarehousingGoodsModel->updateData($map, array('surplus_num' => 0));
$map = array(
'goods_id' => $goods_id,
'id' => array('not in', $sku_id_str),
'state' => 0,
);
$SkuGoodsModel->updateOrder($map, array('state' => 1));
}
}
//处理轮播图
$bannerList = $param['goodsInfo']['bannerList'];
$banner_id_str = [];
$BannerModel = new RetailGoodsBannerModel();
if (!empty($bannerList)) {
foreach ($bannerList as $kB => $vB) {
$addBanner = array(
'image_id' => $vB['image_id'],
'image' => $vB['image'],
);
if (empty($vB['id'])) {
$addBanner['storeid'] = $store_id;
$addBanner['goods_id'] = $goods_id;
$addBanner['addtime'] = time();
$add = $BannerModel->addOrder($addBanner); //添加轮播图
$banner_id_str[] = $add;
} else {
$banner_id_str[] = $vB['id'];
}
}
}
$map = array(
'goods_id' => $goods_id,
);
if (!empty($banner_id_str)) {
$map['id'] = array('not in', $banner_id_str);
} else {
$map['id'] = array('not in', '0');
}
$BannerModel->deleteOrder($map); //删除轮播图
}
//操作日志记录
// 防止小助手操作重复添加日志
if ($param['operate_source'] != 1) {
$source = 0; //请求来源: 0后台系统 1小助手
$type = $user_type; //平台:1合伙人端 2代理商端 3商户端 4门店端 6收银员
$request_data = json_encode($data); //请求参数 json数据
if (!empty($oldGoods)) {
$desc = "商品档案-编辑";
} else {
$desc = "商品档案-新增";
}
action_log($source, $type, $request_data, $desc);
}
$res['goods_id'] = $goods_id;
return callBack(statusCode()['success'], '操作成功', $res);
}
/**
* 获取门店添加商品的一些基本配置及限制
* @param $param
* ['user_type'] 操作的用户类型 3商户 4门店
* ['merchant_id'] 商户ID
* ['store_id'] 门店ID
* @return array
*/
public function getEditGoodsConfig($param)
{
//商户积分设置
$RetailMerchantConfigModel = new RetailMerchantConfigModel();
$config = $RetailMerchantConfigModel->getFind(array('merchant_id' => $param['merchant_id']));
//门店类型
$StoreModel = new RetailStoreModel();
$supplier_type = $StoreModel->getFindField(array('id' => $param['store_id']), 'supplier_type');
//门店权限
if ($param['user_type'] == 3) {
//商户操作
$auth = array(
'showpurch_price' => 1,
'edit_price' => 1,
);
} else {
//门店操作
$StoreAuthModel = new RetailStoreAuthModel();
$auth = $StoreAuthModel->getFind(array('storeid' => $param['store_id']));
}
$VipConfigModel = new RetailVipConfigModel();
$goods_integral_state = $VipConfigModel->getFindField(['merchantid' => $param['merchant_id']], 'goods_integral_state');
return array(
'supplier_type' => $supplier_type,
'integral_arrive_cash' => $config['integral_arrive_cash'] ? $config['integral_arrive_cash'] : 0,
'marketing_methods' => $config['marketing_methods'] ? $config['marketing_methods'] : 1,
'show_purchase_price' => $auth['showpurch_price'],
'edit_price' => $auth['edit_price'],
'goods_integral_state' => $goods_integral_state == 1 ? 1 : 2,
);
}
/**
* 验证门店指定商品是否可以进行编辑、修改规格、修改预售状态
* @param $param
* platform_type 商户平台类型 1默认系统 2微礼平台
* ['goods_id']商品ID
* ['store_id']门店ID
* ['attribute_state']规格状态
* ['online_state']商城出售
* ['advance_sale_status']预售状态
* @return mixed
*/
public function verifyEditGoods($param)
{
$goods_id = $param['goods_id'];
$store_id = $param['store_id'];
//1. 验证商品是否存在
$GoodsModel = new RetailGoodsModel();
$oldGoods = $GoodsModel->getFind(array('id' => $goods_id, 'store_id' => $store_id, 'status' => array('neq', 2)));
if (empty($oldGoods)) {
return callBack(statusCode()['error'], '商品不存在');
}
//2.判断商品规格状态是否有变动 有采购记录和入库记录的商品不得对规格进行开启关闭操作
// 注意:只含有初始化库存的商品可进行开启关闭规格操作
if ($oldGoods['attribute_state'] != $param['attribute_state']) {
$SPurchaseGoodsModel = new SPurchaseGoodsModel();
$SWarehousingGoodsModel = new SWarehousingGoodsModel();
$purchase_goods = $SPurchaseGoodsModel->getCount(array('goods_id' => $oldGoods['id'], 'purchase_num' => array('gt', 0)));
$warehouse_goods = $SWarehousingGoodsModel->getCount(array('goods_id' => $oldGoods['id'], 'warehouse_num' => array('gt', 0)));
$error_arr = [];
if ($purchase_goods > 0) {
$error_arr[] = '有' . $purchase_goods . '条采购记录';
}
if ($warehouse_goods > 0) {
$error_arr[] = '有' . $warehouse_goods . '入库记录';
}
if (!empty($error_arr)) {
return callBack(statusCode()['error'], '商品无法修改规格开关属性', $error_arr);
}
//3.删除初始化库存
$SSaleMGoodsModel = new SSaleMGoodsModel();
$success = $SSaleMGoodsModel->deleteData(array('goods_id' => $oldGoods['id']));
if (!$success) {
return callBack(statusCode()['error'], '初始化库存删除失败,请稍后重试');
}
}
//4.判断预售
if ($param['online_state'] == 1 || $oldGoods['online_state'] == 1) {
if ($param['advance_sale_status'] == 1) {
//验证该商品开启预售是否参与促销秒杀拼团活动
$advance_open_verify = $GoodsModel->advance_open_verify(array("store_id" => $store_id, "goods_id" => $goods_id));
if ($advance_open_verify['status'] == 0) {
return callBack(statusCode()['error'], $advance_open_verify['msg']);
}
} else {
// 编辑商品时验证是否可以关闭预售
$advance_close_verify = $GoodsModel->advance_close_verify(array("store_id" => $store_id, "goods_id" => $goods_id));
if ($advance_close_verify['status'] == 0) {
return callBack(statusCode()['error'], $advance_close_verify['msg']);
}
}
}
if ($param['serial_number_state'] != $oldGoods['serial_number_state']) {
return callBack(statusCode()['error'], '串号状态禁止修改');
}
return callBack(statusCode()['success'], '可对商品进行正常编辑操作', $oldGoods);
}
/**
* 批量修改商品的某个字段值(配送方式例外)
* @param $param
* $param['store_id']
* $param['user_type']
* $param['operate_id']
* $param['key']
* $param['value']
* $param['delivery_template_id']
* $param['goodsIds']
* @return mixed
*/
public function batchOperateGoods($param)
{
$store_id = $param['store_id']; //门店ID
$user_type = $param['user_type']; //用户类型 3商户 4门店 6收银员
$operate_id = $param['operate_id']; //操作用户的ID
$goodsIds = $param['goodsIds']; //操作的商品
$key = $param['key']; //操作的字段
$value = $param['value']; //操作字段的值
$delivery_template_id = $param['delivery_template_id']; //发货模板ID
//仅支持修改的字段名列表
$keyArr = array(
'status',
'retail_state',
'online_state',
'vip_retail_state',
'vip_online_state',
'delivery_type',
'goods_class_id',
'guide_royalty_state',
'refund_state',
'exchange_state',
'fictitious_num',
);
if (
!$store_id || !$operate_id || !$user_type
|| !in_array($user_type, array(3, 4, 6))
|| empty($goodsIds) || !isset($value)
|| !$key || !in_array($key, $keyArr)
) {
return callBack(statusCode()['error'], '请求参数有误,详情请见data', array(
'store_id' => $store_id,
'user_type' => $user_type,
'operate_id' => $operate_id,
'key' => $key,
'value' => $value,
'delivery_template_id' => $delivery_template_id,
'goodsIds' => $goodsIds,
));
}
$stateValue = [0, 1];
$deliveryValue = [1, 2, 3];
switch ($key) {
case 'status':
case 'retail_state':
case 'online_state':
case 'vip_retail_state':
case 'vip_online_state':
case 'refund_state':
case 'exchange_state':
if (!in_array($value, $stateValue)) {
return callBack(statusCode()['error'], '参数值有误');
}
break;
case 'delivery_type':
if (count($value) != count(array_intersect($value, $deliveryValue))) {
return callBack(statusCode()['error'], '参数值有误');
}
if (!verifyNumber($delivery_template_id) && in_array('3', $value)) {
return callBack(statusCode()['error'], '发货模板为必选');
}
break;
case 'goods_class_id':
if (!verifyNumber($value)) {
return callBack(statusCode()['error'], '商品分类为必选');
}
break;
case 'fictitious_num':
if (!verifyNumber($value)) {
return callBack(statusCode()['error'], '虚拟销量有误');
}
break;
default:
}
$GoodsModel = new RetailGoodsModel();
//修改的商品的条件
$map = array(
'store_id' => $store_id, //门店ID
'status' => array('neq', '2'), //商品状态不为删除
'id' => array('in', $goodsIds), //修改的商品ID列表
);
//更新的字段信息
$save = array(
$key => is_array($value) ? implode(',', $value) : $value,
);
//若是修改商城配送方式、并且开启了快递发货,则存储发货模板
if ($key == 'delivery_type' && in_array('3', $value)) {
$save['delivery_template_id'] = $delivery_template_id;
}
$update = $GoodsModel->updateOrder($map, $save);
if ($update) {
//更新库存状况表
//目前仅有商品分类、商品上下架状态
if (in_array($key, ['goods_class_id', 'status'])) {
$SSaleGoodsModel = new SSaleMGoodsModel();
$map = [
'store_id' => $param['store_id'],
'goods_id' => array('in', $goodsIds),
];
$SSaleGoodsModel->updateData($map, [$key => $value]);
}
return callBack(statusCode()['success'], '保存成功');
} else {
return callBack(statusCode()['error'], '保存失败,请检查是否修改');
}
}
/**
* 接收商品请求参数
* @param $param
* @return mixed
*/
protected function getPostGoodsData($param)
{
$data = $param['goodsInfo'];
$goods['id'] = $data['id'] ? $data['id'] : null;
$goods['supplier_id'] = $data['supplier_id'] ? $data['supplier_id'] : 0; //供货商
$goods['goods_name'] = $data['goods_name']; //商品名称
$goods['subheading'] = $data['subheading']; //副标题
$goods['goods_class_id'] = $data['goods_class_id']; //商品分类
$goods['goods_num'] = $data['goods_num'] ? $data['goods_num'] : 0; //商品库存
$goods['goods_num'] = $goods['id'] ? strval($goods['goods_num']) : floatval($goods['goods_num']);
if ($param['showpurch_price'] == 1 && empty($data['id'])) {
$goods['purchase_price'] = $data['purchase_price'] ? $data['purchase_price'] : null; //商品进价
}
$goods['retail_price'] = $data['retail_price'] ? $data['retail_price'] : null; //店内零售价
$goods['online_price'] = $data['online_price'] ? $data['online_price'] : null; //商城零售价
$goods['shop_mem_status'] = $data['shop_mem_status']; //商城会员价开启状态
$goods['shop_mem_price'] = $data['shop_mem_price'] ? $data['shop_mem_price'] : null; //商城会员价
$goods['plus_price'] = $data['plus_price'] ? $data['plus_price'] : null; //plus会员价
$goods['plus_mem_status'] = $data['plus_mem_status']; //是否开启plus会员
$goods['store_mem_status'] = $data['store_mem_status']; //店内会员价开启状态
$goods['store_mem_price'] = $data['store_mem_price'] ? $data['store_mem_price'] : null; //店内会员价
$goods['integral_mem_status'] = $data['integral_mem_status']; //商品送积分 1开启 2关闭
$goods['integral'] = $data['integral'] ? $data['integral'] : null; //送积分
$goods['company'] = $data['company'] ? $data['company'] : ''; //单位
$goods['weight_value'] = $data['weight_value'] ? $data['weight_value'] : null; //重量
$goods['specifications'] = $data['specifications']; //规格
$goods['goods_order'] = $data['goods_order'] ? $data['goods_order'] : 1; //商品排序
$goods['more_num'] = $data['more_num'] ? $data['more_num'] : null; //库存超量
$goods['less_num'] = $data['less_num'] ? $data['less_num'] : null; //库存预警
$goods['fictitious_num'] = $data['fictitious_num'] ? $data['fictitious_num'] : 0; //虚拟销量
$goods['split_state'] = $data['split_state']; //是否可以拆分
$goods['retail_state'] = $data['retail_state']; //是否在店内出售
$goods['online_state'] = $data['online_state']; //是否在商城出售
$goods['advance_sale_status'] = $data['advance_sale_status']; //是否在商城预售
$goods['serial_number_state'] = $data['serial_number_state'] ? $data['serial_number_state'] : 0; //串号状态 0关闭 1开启
$goods['delivery_type'] = $data['delivery_type'] ? $data['delivery_type'] : [];
$goods['delivery_template_id'] = $data['delivery_template_id'] ? $data['delivery_template_id'] : null; //配送模板
$goods['vip_online_state'] = $data['vip_online_state']; //商城会员折扣
$goods['vip_retail_state'] = $data['vip_retail_state']; //门店会员折扣
$goods['pricing_method'] = $data['pricing_method']; //是否称重 1:不称重 2:称重
$goods['refund_state'] = $data['refund_state']; //是否允许退款
$goods['exchange_state'] = $data['exchange_state']; //是否允许换货
$goods['status'] = $data['status']; //商品状态 0上架 1下架 2删除
$goods['attribute_state'] = $data['attribute_state']; //是否开启规格
$goods['goods_number'] = $data['goods_number'] ? $data['goods_number'] : ''; //商品货号
$goods['goods_code'] = $data['goods_code'] ? $data['goods_code'] : ''; //商品条码
$goods['simple_spelling'] = $data['simple_spelling'] ? $data['simple_spelling'] : ''; //商品简拼
$goods['label_id'] = $data['label_id'] ? $data['label_id'] : null; //商品标签
$goods['guide_royalty_state'] = $data['guide_royalty_state']; //导购员提成状态 1开启 0关闭
$goods['guide_royalty_custom_state'] = $data['guide_royalty_custom_state']; //是否使用自定义导购员提成 0不使用 1使用
$goods['guide_royalty_price'] = $data['guide_royalty_price'] ? $data['guide_royalty_price'] : null; //导购员线下提成固定金额
$goods['guide_royalty_online_price'] = $data['guide_royalty_online_price'] ? $data['guide_royalty_online_price'] : null; //导购员线上提成固定金额
if ($param['marketing_methods'] == 2 && $param['integral_arrive_cash'] == 1) {
//自定义营销
$goods['shop_mem_integral'] = $data['shop_mem_integral'] ? $data['shop_mem_integral'] : 0;
$goods['plus_mem_integral'] = $data['plus_mem_integral'] ? $data['plus_mem_integral'] : 0;
$goods['store_mem_integral'] = $data['store_mem_integral'] ? $data['store_mem_integral'] : 0;
}
$goods['goods_brand_id'] = $data['goods_brand_id'] ? $data['goods_brand_id'] : null; //商品品牌 //商品品牌id
$goods['goods_yieldly_id'] = $data['goods_yieldly_id'] ? $data['goods_yieldly_id'] : null; //商品产地
$goods['plu_code'] = $data['plu_code'] ? intval($data['plu_code']) : null; //商品PLU码
$goods['goods_img_id'] = $data['goods_img_id'] ? $data['goods_img_id'] : null; //商品封面图
$goods['details'] = htmlspecialchars_decode($data['details']); //商品详情
if (empty($data['id'])) {
$goods['add_time'] = time();
}
$goods['merchant_id'] = $param['merchant_id']; //商户id
$goods['store_id'] = $param['store_id']; //门店id
$goods['video_id'] = $data['video_id'] ? $data['video_id'] : null; //商品视频id
$goods['third_goods_code'] = $data['third_goods_code'] ? $data['third_goods_code'] : ''; //第三方平台的商品编码
return $goods;
}
/**
* 验证请求操作商品的参数是否正确
* @param $param
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* ]
* @return array
*/
protected function verifyGoodsData($param)
{
$goods = $param['goods'];
$verifyParam = array(
'supplier_id' => array('required' => false, 'type' => 'number',),
'goods_name' => array('required' => true, 'type' => 'string',),
'goods_number' => array('required' => true, 'type' => 'string', 'maxLen' => 15),
'goods_code' => array('required' => false, 'type' => 'string', 'maxLen' => 17),
'goods_class_id' => array('required' => true, 'type' => 'number',),
'subheading' => array('required' => false, 'type' => 'string',),
'retail_price' => array('required' => $goods['retail_state'] == 1 ? true : false, 'type' => 'money',),
'online_price' => array('required' => $goods['online_state'] == 1 ? true : false, 'type' => 'money',),
'shop_mem_status' => array('required' => false, 'type' => 'string', 'in' => [1, 2]),
'shop_mem_price' => array('required' => $goods['shop_mem_status'] == 1 ? true : false, 'type' => 'money',),
'plus_mem_status' => array('required' => false, 'type' => 'string', 'in' => [1, 2]),
'plus_price' => array('required' => $goods['plus_mem_status'] == 1 ? true : false, 'type' => 'money',),
'store_mem_status' => array('required' => false, 'type' => 'string', 'in' => [1, 2]),
'store_mem_price' => array('required' => $goods['store_mem_status'] == 1 ? true : false, 'type' => 'money',),
'integral_mem_status' => array('required' => false, 'type' => 'string', 'in' => [1, 2]),
'integral' => array('required' => $goods['integral_mem_status'] == 1 ? true : false, 'type' => 'string',),
'pricing_method' => array('required' => false, 'type' => 'string', 'in' => [1, 2]),
'company' => array('required' => $goods['pricing_method'] == 2 ? true : false, 'type' => 'string', 'in' => $goods['pricing_method'] == 1 ? null : array('kg', 'KG', '斤', '公斤', '市斤', '千克', 'g', 'G', '克'),),
'weight_value' => array('required' => false, 'type' => 'number', 'step' => 3, 'min' => 0.001),
'specifications' => array('required' => false, 'type' => 'string',),
'goods_order' => array('required' => false, 'type' => 'number',),
'more_num' => array('required' => false, 'type' => 'number', 'step' => $goods['pricing_method'] == 1 ? 0 : 3, 'min' => 0),
'less_num' => array('required' => false, 'type' => 'number', 'step' => $goods['pricing_method'] == 1 ? 0 : 3, 'min' => 0),
'fictitious_num' => array('required' => false, 'type' => 'number', 'min' => 0),
'split_state' => array('required' => false, 'in' => [0, 1]),
'retail_state' => array('required' => false, 'in' => [0, 1]),
'online_state' => array('required' => false, 'in' => [0, 1]),
'advance_sale_status' => array('required' => false, 'in' => [0, 1]),
'delivery_type' => array('required' => $goods['online_state'] == 1 ? true : false, 'type' => 'array', 'in' => [1, 2, 3]),
'delivery_template_id' => array('required' => array_search('3', $goods['delivery_type']) !== false ? true : false, 'type' => 'number',),
'vip_online_state' => array('required' => false, 'type' => 'string', 'in' => [0, 1]),
'vip_retail_state' => array('required' => false, 'type' => 'string', 'in' => [0, 1]),
'refund_state' => array('required' => false, 'type' => 'string', 'in' => [0, 1]),
'exchange_state' => array('required' => false, 'type' => 'string', 'in' => [0, 1]),
'status' => array('required' => false, 'type' => 'string', 'in' => [0, 1]),
'attribute_state' => array('required' => false, 'type' => 'string', 'in' => [1, 2]),
'label_id' => array('required' => false, 'type' => 'number',),
'guide_royalty_state' => array('required' => false, 'type' => 'string', 'in' => [0, 1]),
'guide_royalty_custom_state' => array('required' => true, 'type' => 'string', 'in' => [0, 1]),
'guide_royalty_price' => array('required' => $goods['guide_royalty_custom_state'] == 1 ? true : false, 'type' => 'money',),
'guide_royalty_online_price' => array('required' => $goods['guide_royalty_custom_state'] == 1 ? true : false, 'type' => 'money',),
'shop_mem_integral' => array('required' => false, 'type' => 'number',),
'plus_mem_integral' => array('required' => false, 'type' => 'number',),
'store_mem_integral' => array('required' => false, 'type' => 'number',),
'goods_brand_id' => array('required' => false, 'type' => 'number',),
'goods_yieldly_id' => array('required' => false, 'type' => 'number',),
'plu_code' => array('required' => false, 'type' => 'number', 'min' => 1, 'max' => 9999),
);
if (!$goods['id']) {
$verifyParam['goods_num'] = array('required' => false, 'type' => 'number', 'step' => $goods['pricing_method'] == 1 ? 0 : 3, 'min' => 0);
$verifyParam['purchase_price'] = array('required' => $goods['goods_num'] > 0 ? true : false, 'type' => 'money',);
}
//第三方平台商品编码
if ($param['platform_type'] == 2 && empty($goods['id']) && $goods['attribute_state'] == 1) {
$verifyParam['third_goods_code'] = ['required' => true, 'type' => 'string'];
}
$CustomValidate = new CustomValidate($this->goods_fields_name);
$result = $CustomValidate->validate($goods, $verifyParam);
return callBack(statusCode()[$result['error'] ? 'error' : 'success'], $result['message']);
}
/**
* 验证传输的规格是否正确,并返回处理过后可直接添加的数组
* @param $param
* [
* platform_type 商户平台类型 1默认系统 2微礼平台
* ]
* @return mixed
* @throws \think\Exception
*/
protected function verifyGoodsSku($param)
{
$platform_type = $param['platform_type'];
$store_id = $param['store_id'];
$merchant_id = $param['merchant_id'];
$skuList = $param['skuList'];
$codeArr = $param['codeArr'];
$numberArr = $param['numberArr'];
if (empty($skuList) || !is_array($skuList)) {
return callBack(statusCode()['error'], '请设置商品多规格信息');
}
$sku_attr_length = count($skuList[0]['id']);
if ($sku_attr_length > 4) {
return callBack(statusCode()['error'], '最多只能添加四种规格');
}
$all_sku_list_id = []; //存储所有的规格ID,用来判断前端传输的数组是否正确
$skuArrData = []; //存储处理后的规格
$third_code_arr = []; // 第三方平台的商品编码
$SkuGoodsModel = new RetailSkuGoodsModel();
$GoodsModel = new RetailGoodsModel();
if ($platform_type == 2) {
$LittleGoodsClass = new \LittleGift\Business\Goods();
}
foreach ($skuList as $key => $val) {
if (count($val['id']) != $sku_attr_length) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格与之前的规格不匹配');
}
$oldSku = false;
if (!empty($val['old_id'])) {
$skuOldMap = array(
'id' => $val['old_id'], 'goods_id' => $param['goods_id'], 'state' => 0
);
$oldSku = $SkuGoodsModel->getFind($skuOldMap);
if (empty($oldSku)) return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格信息有误');
} else {
//第三方平台商品编码验证
if ($platform_type == 2) {
if (empty($val['third_goods_code']) || mb_strlen($val['third_goods_code'], 'UTF-8') > 255) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格的Q3 ERP平台商品编码必传且不能大于255位');
}
//判断规格货号是否存在历史判断的数组中
if (in_array($val['third_goods_code'], $third_code_arr)) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格Q3 ERP平台商品编码已存在');
}
$verifyResult = $LittleGoodsClass->verifyQ3Code([
'merchant_id' => $merchant_id,
'third_goods_code' => $val['third_goods_code']
]);
if ($verifyResult['status'] != 1) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格' . $verifyResult['message']);
}
$verifyCode = $LittleGoodsClass->GoodsVerify([
'merchant_id' => $merchant_id,
'code_arr' => [$val['third_goods_code']]
]);
if ($verifyCode['status'] == 0) {
return $verifyCode;
}
if (!empty($verifyCode['data']['arr_diff'])) {
return callBack(statusCode()['error'], $val['third_goods_code'] . 'Q3 ERP平台验证失败');
}
$third_code_arr[] = $val['third_goods_code'];
$temp['third_goods_code'] = $val['third_goods_code'];
}
}
if (!$val['sku_goods_number'] || strlen($val['sku_goods_number']) > 17) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格的货号不正确');
}
//判断规格货号是否存在历史判断的数组中
if (in_array($val['sku_goods_number'], $numberArr)) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格货号已存在');
}
if (empty($val['old_id']) || (!empty($val['old_id']) && $oldSku['sku_goods_number'] != $val['sku_goods_number'])) {
//判断规格货号是否存在于该门店的正常规格商品中
$sku_map = array(
'store_id' => $store_id,
'sku_goods_number' => $val['sku_goods_number'],
'state' => 0,
);
$skuInfo = $SkuGoodsModel->getFind($sku_map);
if ($skuInfo) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格货号已存在');
}
}
//把规格货号存起来对下一个规格进行验证
$numberArr[] = $val['sku_goods_number'];
//判断规格货号是否存在于该门店的正常普通商品中
$map = array(
'store_id' => $store_id,
'goods_number' => $val['sku_goods_number'],
'merchant_id' => $merchant_id,
'status' => array('in', '0,1')
);
$goodsInfo = $GoodsModel->getFind($map);
if ($goodsInfo) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格货号已存在');
}
//判断条码
if (!empty($val['sku_code'])) {
if (strlen($val['sku_code']) > 17) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格条码不能大于18位');
}
if (in_array($val['sku_code'], $codeArr)) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格商品条码重复');
}
if (empty($val['old_id']) || (!empty($val['old_id']) && $oldSku['sku_code'] != $val['sku_code'])) {
$map = array(
'store_id' => $store_id,
'sku_code' => $val['sku_code'],
'state' => 0
);
//判断规格条码是否存在于该门店的正常规格商品中
$old = $SkuGoodsModel->getFind($map);
if ($old) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格商品条码已存在');
}
}
$map = array(
'store_id' => $store_id,
'goods_code' => $val['sku_code'],
'status' => array('in', '0,1')
);
$old = $GoodsModel->getFind($map);
if (!empty($old)) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格商品条码已存在');
}
$codeArr[] = $val['sku_code'];
}
if ($val['weight_value'] && !verifyNumber($val['weight_value'], 3, 0.001)) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格重量不正确');
}
if (empty($val['old_id'])) {
if ($val['goods_num'] > 0 && $param['serial_number_state'] == 1) {
return callBack(statusCode()['error'], '开启串号,第' . ($key + 1) . '个规格库存必须采购增加');
}
if ($val['goods_num'] && !verifyNumber($val['goods_num'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格库存不正确');
}
}
//判断进价
if ($platform_type != 2 && ($val['goods_num'] > 0 || $val['purchase_price'])) {
if (!verifyPrice($val['purchase_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格进价不正确');
}
}
//判断基本价格
if (($param['retail_state'] == 1 || $val['retail_price']) && !verifyPrice($val['retail_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格:店内零售价不正确');
}
if (($param['online_state'] == 1 || $val['online_price']) && !verifyPrice($val['online_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格:商城零售价不正确');
}
if (($param['store_mem_status'] == 1 || $val['store_mem_price']) && !verifyPrice($val['store_mem_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格:店内会员价不正确');
}
if (($param['shop_mem_status'] == 1 || $val['shop_mem_price']) && !verifyPrice($val['shop_mem_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格:商城会员价不正确');
}
if (($param['plus_mem_status'] == 1 || $val['plus_price']) && !verifyPrice($val['plus_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格:PLUS会员价不正确');
}
$temp['merchant_id'] = $merchant_id;
$temp['store_id'] = $store_id;
$sku_id_list = [];
$sku_name = [];
for ($i = 0; $i < $sku_attr_length; $i++) {
if (!empty($val['id'][$i])) {
$sku_id_list[] = $val['id'][$i];
$sku_name[] = $val['name'][$i];
} else {
return callBack(statusCode()['error'], '第' . ($key + 1) . '条规格数据的规格信息有误');
}
}
$all_sku_list_id = array_merge($all_sku_list_id, $sku_id_list);
$temp['name'] = implode(',', $sku_name);
$temp['sku_id_list'] = implode(',', $sku_id_list);
if ($param['showpurch_price'] == 1 && empty($val['old_id'])) {
$temp['purchase_price'] = $val['purchase_price'] ? $val['purchase_price'] : null;
}
if (!empty($val['retail_price'])) {
$temp['retail_price'] = $val['retail_price'];
}
if (!empty($val['online_price'])) {
$temp['online_price'] = $val['online_price'];
}
if (!empty($val['plus_price'])) {
$temp['plus_price'] = $val['plus_price']; //plus会员价
}
$temp['goods_num'] = $val['goods_num'] ? $val['goods_num'] : 0;
if (($param['guide_royalty_custom_state'] == 1 || $val['guide_royalty_price']) && !verifyPrice($val['guide_royalty_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格线下导购提成有误');
}
if (($param['guide_royalty_custom_state'] == 1 || $val['guide_royalty_online_price']) && !verifyPrice($val['guide_royalty_online_price'])) {
return callBack(statusCode()['error'], '第' . ($key + 1) . '个规格线上导购提成有误');
}
$temp['weight_value'] = $val['weight_value'] ? $val['weight_value'] : null;
$temp['shop_mem_price'] = $val['shop_mem_price'] ? $val['shop_mem_price'] : null;
$temp['store_mem_price'] = $val['store_mem_price'] ? $val['store_mem_price'] : null;
$temp['add_time'] = time();
$temp['status'] = $val['status'] == 1 ? 1 : 0;
$temp['state'] = 0;
$temp['sku_goods_number'] = $val['sku_goods_number'];
$temp['sku_code'] = $val['sku_code'];
$temp['store_id'] = $store_id;
$temp['goods_img_id'] = $val['goods_img_id'];
$temp['id'] = $val['old_id'];
$temp['sku_num'] = 1;
$temp['more_num'] = $val['more_num'] ? $val['more_num'] : null;
$temp['less_num'] = $val['less_num'] ? $val['less_num'] : null;
$temp['guide_royalty_price'] = $val['guide_royalty_price'] ? $val['guide_royalty_price'] : null;
$temp['guide_royalty_online_price'] = $val['guide_royalty_online_price'] ? $val['guide_royalty_online_price'] : null;
if ($param['marketing_methods'] == 2 && $param['integral_arrive_cash'] == 1) {
//自定义积分营销
$temp['shop_mem_integral'] = $val['shop_mem_integral'] ? $val['shop_mem_integral'] : null; //店内会员价+积分
$temp['store_mem_integral'] = $val['store_mem_integral'] ? $val['store_mem_integral'] : null; //商城会员价+积分
$temp['plus_mem_integral'] = $val['plus_mem_integral'] ? $val['plus_mem_integral'] : null; //PLUS会员价+积分
}
$temp['plu_code'] = $val['plu_code'] ? $val['plu_code'] : null;
$skuArrData[] = $temp;
unset($temp);
}
//第三方编码验证
if ($platform_type == 2 && !empty($third_code_arr)) {
$LittleGoodsClass = new \LittleGift\Business\Goods();
$verifyCode = $LittleGoodsClass->GoodsVerify([
'merchant_id' => $merchant_id,
'code_arr' => $third_code_arr
]);
if ($verifyCode['status'] == 0) {
return $verifyCode;
}
if (!empty($verifyCode['data']['arr_diff'])) {
return callBack(statusCode()['error'], $verifyCode['data']['arr_diff'][0], 'Q3 ERP平台商品编码验证失败');
}
}
//去重
$all_sku_list_id = array_unique($all_sku_list_id);
//获取属性数量进行判断,是否与规格值属性一致
$SkuListModel = new RetailSkuListModel();
$attr_count = $SkuListModel->getAttrCount($merchant_id, $all_sku_list_id);
if ($attr_count != $sku_attr_length) {
return callBack(statusCode()['error'], '您添加的规格信息有误');
}
return callBack(statusCode()['success'], '规格验证通过', $skuArrData);
}
}