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

491 行
19 KiB
PHP
可执行文件

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