'供货商', '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); } }