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

975 行
35 KiB
PHP
可执行文件

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

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

<?php
namespace Common\Business;
use Common\Model\RetailGoodsClassModel;
use Common\Model\RetailGoodsModel;
use Common\Model\RetailMgoodsModel;
use Common\Model\SSaleMGoodsModel;
//[1.9.2]
/**
* 商品分类
* Class GoodsClassify
* [
* 根据行业id查询分类id集合 basisIndustryGetClass
* 指定id集合查询最低层分类id的集合 basisIdGetLowerId
* 根据分类id获取最下级列表 basisIdGetList
* 指定分类集合的名称集合 basisIdGetNameList
* 指定分类id与类型下面的所有下级分类id集合 lowerId
* 判断是否存在某分类不存在则添加 existClassAdd
* 新增指定级别的分类 addAppointClass
* 获取各级分类集合 getClassArr
* 获取各分类名称 getName
* 获取分类id作条件 getGoodsClassId
* 获取顶级分类列表 getGoodsClassTopLevel
* 指定分类级别的列表 appointTypeClassList
* 获取用于优惠券指定分类(用于优惠券详情) appointClass
* 获取所有分类(用于优惠券指定分类)的字段转换classListTerm
* 获取所有分类(用于优惠券指定分类)classList
* 获取所有分类 (用于商品导入) goodsClassTurnList
* 新增分类与子分类 createGoodsClass
* ]
* @package Common\Business
*/
class GoodsClassify
{
/**
* 根据行业id查询分类id集合
* @param $param
* [
* industry_id 行业id
* merchant_id
* ]
* @return mixed
*/
public function basisIndustryGetClass($param)
{
if (empty($param['merchant_id']) || empty($param['industry_id'])) {
return callBack(statusCode()['error'], '缺少唯一标识');
}
$where = [
'merchantid' => $param['merchant_id'],
'status' => 0,
[
[
'industry_id' => $param['industry_id'],
],
[
'industry_id'=>0
],
'_logic'=>'or'
]
];
$ClassModel = new RetailGoodsClassModel();
$id_arr = $ClassModel->getFindField($where, 'id', true);
return callBack(statusCode()['success'], '查询成功', $id_arr);
}
/**
* 指定id集合查询最低层分类id的集合
* @param $class_id_str string
* @return mixed
*/
public function basisIdGetLowerId($class_id_str)
{
$arr = [];
$where = [
'id' => ['in', $class_id_str]
];
$GoodsClassModel = new RetailGoodsClassModel();
$list = $GoodsClassModel->getSelect($where, $field = 'id,type', 'id desc');
if (!empty($list)) {
foreach ($list as $val) {
$info = $this->lowerId([
'id' => $val['id'],
'type' => $val['type']
]);
if (!empty($info)) {
$arr = array_merge($arr, $info);
}
}
$arr = array_unique($arr);
}
return $arr;
}
/**
* 根据分类id获取下级列表
* @param $param
* class_id_str string
* @return mixed
*/
public function basisIdGetList($param)
{
$where = [
'id' => ['in', $param['class_id_str']]
];
$ClassModel = new RetailGoodsClassModel();
$list = $ClassModel->getSelect($where, 'id,type,class_name', 'id desc');
$class_list = [];
foreach ($list as $value) {
switch ($value['type']) {
case 1:
$info = $ClassModel->basisOneGetClassListAll($value['id'], "c1.id as c1_id,c1.class_name as c1_class_name,c2.id as c2_id,c2.class_name as c2_class_name,c3.id as c3_id,c3.class_name as c3_class_name");
foreach ($info as $v1) {
$arr = [];
if (!empty($v1['c3_id'])) {
$arr['class_id'] = $v1['c3_id'];
$arr['class_name'] = $v1['c3_class_name'];
} else if (!empty($v1['c2_id'])) {
$arr['class_id'] = $v1['c2_id'];
$arr['class_name'] = $v1['c2_class_name'];
} else {
$arr['class_id'] = $v1['c1_id'];
$arr['class_name'] = $v1['c1_class_name'];
}
$class_list[] = $arr;
}
break;
case 2:
$info = $ClassModel->basisTwoGetClassListAll($value['id'], "c2.id as c2_id,c2.class_name as c2_class_name,c3.id as c3_id,c3.class_name as c3_class_name");
foreach ($info as $v2) {
$arr = [];
if (!empty($val['c3_id'])) {
$arr['class_id'] = $v2['c3_id'];
$arr['class_name'] = $v2['c3_class_name'];
} else {
$arr['class_id'] = $v2['c2_id'];
$arr['class_name'] = $v2['c2_class_name'];
}
$class_list[] = $arr;
}
break;
case 3:
$class_list[] = [
'class_id' => $value['id'],
'class_name' => $value['class_name']
];
break;
}
}
$class_list = array_unique($class_list, SORT_REGULAR);
return callBack(statusCode()['success'], "查询成功", $class_list);
}
/**
* 指定分类id的名称集合
* @param $id_arr 分类id集合
* @return mixed
*/
public function basisIdGetNameList($id_arr)
{
if (empty($id_arr)) {
return [];
}
$where = [
'id' => ['in', $id_arr]
];
try {
$ClassModel = new RetailGoodsClassModel();
$list = $ClassModel->getFindField($where, 'class_name', true);
return $list;
} catch (\Exception $e) {
return [];
}
}
/**
* 指定分类id下面的所有下级分类id集合
* @param $param
* [
* id 分类id
* type 1 一级 2二级 3三级
* ]
* @return mixed
*/
public function lowerId($param)
{
$arr = [];
$ClassModel = new RetailGoodsClassModel();
switch ($param['type']) {
case 3:
$arr[] = $param['id'];
break;
case 2:
$info = $ClassModel->basisTwoGetClassListAll($param['id'], "c2.id as c2_id,c3.id as c3_id");
foreach ($info as $val) {
if (!empty($val['c3_id'])) {
$arr[] = $val['c3_id'];
} else {
$arr[] = $val['c2_id'];
}
}
break;
case 1:
$info = $ClassModel->basisOneGetClassListAll($param['id'], "c1.id as c1_id,c2.id as c2_id,c3.id as c3_id");
foreach ($info as $val) {
if (!empty($val['c3_id'])) {
$arr[] = $val['c3_id'];
} else if (!empty($val['c2_id'])) {
$arr[] = $val['c2_id'];
} else {
$arr[] = $val['c1_id'];
}
}
break;
}
return $arr;
}
/**
* 判断是否存在某分类不存在则添加
* @param $param
* [
* class_arr_1 一级分类集合 (含id)
* class_arr_2 二级分类集合 (含id)
* class_arr_3 三级分类集合 (含id)
* class_name_1 一级分类名称
* class_name_2 二级分类名称
* class_name_3 三级分类名称
* merchant_id
* ]
* @return array
*/
public function existClassAdd($param)
{
$class_arr_1 = $param['class_arr_1'];
$class_arr_2 = $param['class_arr_2'];
$class_arr_3 = $param['class_arr_3'];
$class_name_1 = $param['class_name_1'];
$class_name_2 = $param['class_name_2'];
$class_name_3 = $param['class_name_3'];
$goodsClassModel = new RetailGoodsClassModel();
if (!empty($class_arr_1[$class_name_1])) {
$class_id_1 = $class_arr_1[$class_name_1]['id']; //一级分类id
} else {
$classResult = $this->addAppointClass([
'type' => 1,
'merchant_id' => $param['merchant_id'],
'class_name' => $class_name_1,
]); //创建分类
if ($classResult['status'] != 1) {
return $classResult;
}
$class_id_1 = $classResult['data'];
if (empty($class_name_2)) {
$child = $goodsClassModel->getFind(array('pid' => $class_id_1, 'status' => 0));
if (!empty($child)) {
return callBack(statusCode()['error'], $class_name_2 . "该分类下存在子集分类,不能直接添加商品");
}
}
}
$goods_class_id = $class_id_1;
if (!empty($class_name_2)) {
if (!empty($class_arr_2[$class_id_1 . '_' . $class_name_2])) {
$class_id_2 = $class_arr_2[$class_id_1 . '_' . $class_name_2]['id']; //二级分类id
} else {
$classResult = $this->addAppointClass([
'type' => 2,
'merchant_id' => $param['merchant_id'],
'class_name' => $class_name_2,
'pid' => $class_id_1
]); //创建分类
if ($classResult['status'] != 1) {
return $classResult;
}
$class_id_2 = $classResult['data'];
if (empty($class_name_3)) {
$child = $goodsClassModel->getFind(array('pid' => $class_id_2, 'status' => 0));
if (!empty($child)) {
return callBack(statusCode()['error'], $class_name_2 . "该分类下存在子集分类,不能直接添加商品");
}
}
}
$goods_class_id = $class_id_2;
}
if (!empty($class_name_3)) {
if (!empty($class_arr_3[$class_id_2 . '_' . $class_name_3])) {
$class_id_3 = $class_arr_3[$class_id_2 . '_' . $class_name_3]['id']; //三级分类id
} else {
$classResult = $this->addAppointClass([
'type' => 3,
'merchant_id' => $param['merchant_id'],
'class_name' => $class_name_3,
'pid' => $class_id_2
]); //创建分类
if ($classResult['status'] != 1) {
return $classResult;
}
$class_id_3 = $classResult['data'];
}
$goods_class_id = $class_id_3;
}
return callBack(statusCode()['success'], "操作成功", $goods_class_id);
}
/**
* 新增指定级别的分类
* @param $param
* [
* type 1 一级 2 二级 3三级
* class_name
* merchant_id
* pid 上级分类
* ]
* @return array
*/
public function addAppointClass($param)
{
if (!empty($param['pid'])) {
$storeGoodsModel = new RetailGoodsModel();
$merchantGoodsModel = new RetailMgoodsModel();
$goods = $storeGoodsModel->getFind(array('goods_class_id' => $param['pid'], 'status' => array('in', '0,1')));
if (!empty($goods)) {
return callBack(statusCode()['error'], '该一级分类存在商品,不能添加二级分类');
}
$goods = $merchantGoodsModel->getFind(array('goods_class_id' => $param['pid'], 'status' => array('in', '0,1')));
if (!empty($goods)) {
return callBack(statusCode()['error'], '该一级分类存在商品,不能添加二级分类');
}
}
$ClassModel = new RetailGoodsClassModel();
$id = $ClassModel->getOrderFindField(['merchantid' => $param['merchant_id'],
'type' => $param['type'], 'status' => 0, 'class_name' => trim($param['class_name'], ' '), 'pid' => $param['pid'] ? $param['pid'] : 0],
'id');
if (empty($id)) {
$data = [
'merchantid' => $param['merchant_id'],
'status' => 0,
'addtime' => $_SERVER['REQUEST_TIME'],
'class_name' => $param['class_name'],
'pid' => $param['pid'] ? $param['pid'] : 0,
'type' => $param['type'] ? $param['type'] : 1
];
$code = $ClassModel->getOrderFindField(array('merchantid' => $param['merchant_id'], 'type' => $data['type'], 'pid' => $param['pid'] ? $param['pid'] : 0), 'code', 'code desc');
if ($code) {
if (is_numeric($code)) {
$data['code'] = $code + 1;
} else {
$data['code'] = $code . '1';
}
} else {
$data['code'] = 1;
}
$id = $ClassModel->addOrder($data);
}
return callBack(statusCode()['success'], '获取成功', $id);
}
/**
* 获取各级分类集合
* @param $param
* [
* merchant_id
* ]
* @return array
*/
public function getClassArr($param)
{
try {
$ClassModel = new RetailGoodsClassModel();
$class_arr_1 = $ClassModel->getSelect(['merchantid' => $param['merchant_id'], 'status' => 0, 'type' => 1], "id,class_name", "code asc");
$class_arr_2 = $ClassModel->getSelect(['merchantid' => $param['merchant_id'], 'status' => 0, 'type' => 2], "id,class_name,pid", "code asc");
$class_arr_3 = $ClassModel->getSelect(['merchantid' => $param['merchant_id'], 'status' => 0, 'type' => 3], "id,class_name,pid", "code asc");
return ['class_arr_1' => $class_arr_1, 'class_arr_2' => $class_arr_2, 'class_arr_3' => $class_arr_3];
} catch (\Exception $e) {
$class_arr_1 = [];
$class_arr_2 = [];
$class_arr_3 = [];
return ['class_arr_1' => $class_arr_1, 'class_arr_2' => $class_arr_2, 'class_arr_3' => $class_arr_3];
}
}
/**
* 获取各分类名称
* @param $id 分类id
* @param $arr 分类集合
* @return string
*/
public function getName($id, $arr = [])
{
$ClassModel = new RetailGoodsClassModel();
$info = $ClassModel->field('class_name,pid,type')->where(['id' => $id])->cache(true, 300)->find();
$arr["class_name_" . $info['type']] = $info['class_name'];
if (!empty($info['pid'])) {
return $this->getName($info['pid'], $arr);
}
return $arr;
}
/**
* 获取分类id作条件
* @param $parameter [person1=>一级分类,person2=>二级分类,person3=>三级分类]
* @param $where 条件数组 []
* @param $key 条件字段名
* @return $where
*/
public static function getGoodsClassId($parameter, $where, $key)
{
if (empty($parameter['person1']) && empty($parameter['person2']) && empty($parameter['person3']) || empty($key)) {
return $where;
}
$person1 = $parameter['person1']; //一级分类id
$person2 = $parameter['person2']; //二级分类id
$person3 = $parameter['person3']; //三级分类id
$goodsClassModel = new RetailGoodsClassModel();
$flag = 0;
if (!empty($person3)) {
$where[$key] = $person3;
} else if (!empty($person2)) {
$class = $goodsClassModel->basisTwoGetClassId($person2); //根据二级分类id获取三级分类ID集合
$flag = 1;
} else if (!empty($person1)) {
$class = $goodsClassModel->basisOneGetClassId($person1); //根据一级分类id获取三级分类ID集合
$flag = 1;
}
if (!empty($class)) {
$arr = array();
foreach ($class as &$val) {
if (!in_array($val['id'], $arr)) {
$arr[] = $val['id'];
}
if (!empty($val['c3_id'])) {
if (!in_array($val['c3_id'], $arr)) {
$arr[] = $val['c3_id'];
}
}
}
$str = implode(',', $arr);
$where[$key] = array('in', $str . ',' . ($person2 ? $person2 : $person1));
} else if ($flag == 1) {
$where[$key] = $person2 ? $person2 : $person1;
}
return $where;
}
/**
* 获取顶级分类列表
* @param $merchant_id
* @return array
*/
public function getGoodsClassTopLevel($merchant_id)
{
try {
$classModel = new RetailGoodsClassModel();
$list = $classModel->getSelect(['merchantid' => $merchant_id, 'status' => 0, 'type' => 1], "*", "code asc");
return ['status' => 1, 'message' => '查询成功', 'data' => ['list' => $list]];
} catch (\Exception $e) {
return ['status' => 1, 'message' => '查询成功', 'data' => ['list' => []]];
}
}
/**
* 指定分类级别的列表
* @param $param
* [
* merchant_id
* industry_id 行业id
* id 上级分类的id
* type 1:一级分类; 2:二级分类 ; 3:三级分类
* ]
* @return mixed
*/
public function appointTypeClassList($param)
{
$industry_id = $param['industry_id'];
$ClassModel = new RetailGoodsClassModel();
switch ($param['type']) {
case 1:
//一级分类
$where = [
'merchantid' => $param['merchant_id'],
'status' => 0,
'type' => 1
];
if(!empty($industry_id)){
$where[] = [
[
'industry_id'=>0
],
[
'industry_id'=>$industry_id
],
'_logic'=>'OR'
];
}
$list = $ClassModel->getSelect($where, "id,class_name", "code asc");
break;
case 2:
//二级分类
$where = [
'c1.id' => $param['id'],
];
if(!empty($industry_id)){
$where[] = [
[
'c2.industry_id'=>0
],
[
'c2.industry_id'=>$industry_id
],
'_logic'=>'OR'
];
}
$list = $ClassModel->basisOneGetClassList($where, "c2.id,c2.class_name");
break;
case 3:
//三级分类
$where['c2.id'] = $param['id'];
if(!empty($industry_id)){
$where[] = [
[
'c3.industry_id'=>0
],
[
'c3.industry_id'=>$industry_id
],
'_logic'=>'OR'
];
}
$list = $ClassModel->basisTwoGetClassList($where, "c3.id,c3.class_name");
break;
default:
return callBack(statusCode()['error'], "分类级别错误");
break;
}
return callBack(statusCode()['success'], "查询成功", $list);
}
/**
* 指定分类获取分类信息(用于优惠券指定分类详情)
* @param $param
* [
* merchant_id
* store_id
* class_id_str string
* ]
* @return mixed
*/
public function appointClass($param)
{
$fields = [
'c1.id',
'c2.id as c2_id',
'c3.id as c3_id',
'c1.type',
'c1.class_name as c1_class_name',
'c2.class_name as c2_class_name',
'c3.class_name as c3_class_name'
];
$class_id_arr = explode(',', $param['class_id_str']);
if (empty($class_id_arr)) {
return [];
}
$where['c1.id'] = ['in', $class_id_arr];
try {
$goodsClassModel = new RetailGoodsClassModel();
$list = $goodsClassModel->ClassListAll($where, $fields, 'c1.id desc');
if (!empty($list)) {
$list = $this->classListTurn([
'list' => $list,
'merchant_id' => $param['merchant_id'],
'store_id' => $param['store_id']
]);
}
return $list;
} catch (\Exception $e) {
return [];
}
}
/**
* 获取所有分类(用于优惠券指定分类)
* @param $param
* [
* operator_type 1后台 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* class_name 分类名称
* exists_class_id_arr 已经选中的分类id集合
* page
* limit
* ]
* @return mixed
*/
public function classList($param)
{
$verifyClass = new VerifyParam();
$verifyResult = $verifyClass->identityVerify($param);
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
$fields = [
'c1.id',
'c2.id as c2_id',
'c3.id as c3_id',
'c1.type',
'c1.class_name as c1_class_name',
'c2.class_name as c2_class_name',
'c3.class_name as c3_class_name'
];
$where = [
'c1.merchantid' => $param['merchant_id'],
'c1.status' => 0
];
if (!empty($param['exists_class_id_arr'])) {
$where['c1.id'] = ['not in', $param['exists_class_id_arr']];
}
if (!empty($param['class_name'])) {
$where['c1.class_name'] = ['like', '%' . $param['class_name'] . '%'];
}
$goodsClassModel = new RetailGoodsClassModel();
$list = $goodsClassModel->ClassListAll($where, $fields, 'c1.id desc', $param['page'] . ',' . $param['limit']);
if (!empty($list)) {
$count = $goodsClassModel->ClassListCount($where);
$list = $this->classListTurn([
'list' => $list,
'merchant_id' => $param['merchant_id'],
'store_id' => $param['store_id']
]);
}
return callBack(statusCode()['success'], "查询成功", [
'list' => $list,
'count' => $count ? $count : 0
]);
}
/**
* 获取所有分类(用于优惠券指定分类)的字段转换
* @param $param
* [
* list 列表
* merchant_id
* store_id
* ]
* @return mixed
*/
public function classListTurn($param)
{
$list = $param['list'];
$GoodsModel = new SSaleMGoodsModel();
$map = [
'merchant_id' => $param['merchant_id'],
'store_id' => $param['store_id'],
'status' => ['neq', 2]
];
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
switch ($val['type']) {
case 1:
$val['type_name'] = '一级分类';
$class_name_1 = $val['c1_class_name'];
$val['id_list'] = [$val['id']];
break;
case 2:
$val['type_name'] = '二级分类';
$class_name_1 = $val['c2_class_name'];
$class_name_2 = $val['c1_class_name'];
$val['id_list'] = [$val['c2_id'], $val['id']];
break;
case 3:
$val['type_name'] = '三级分类';
$class_name_3 = $val['c1_class_name'];
$class_name_2 = $val['c2_class_name'];
$class_name_1 = $val['c3_class_name'];
$val['id_list'] = [$val['c3_id'], $val['c2_id'], $val['id']];
break;
}
$class_name = '';
$class_name .= $class_name_1;
if (!empty($class_name_2)) {
$class_name .= '/' . $class_name_2;
}
if (!empty($class_name_3)) {
$class_name .= '/' . $class_name_3;
}
$val['class_name'] = $class_name;
unset($class_name_3);
unset($class_name_2);
unset($class_name_1);
$class_id_arr = $this->lowerId([
'id' => $val['id'],
'type' => $val['type']
]);
if (!empty($class_id_arr)) {
$map['goods_class_id'] = ['in', $class_id_arr];
$num = $GoodsModel->getCount($map);
}
$val['goods_num'] = $num ? $num : 0;
unset($class_id_arr);
}
return $list;
}
/**
*获取所有分类 (用于商品导入)键名转化格式 一级分类/二级分类/三级分类
* @param $parameter
* [
* merchant_id
* ]
* @return array
*/
public function goodsClassTurnList($parameter)
{
$merchant_id = $parameter['merchant_id'];
if (empty($merchant_id)) {
return [];
}
try {
$goodsClassModel = new RetailGoodsClassModel();
$class_arr = $goodsClassModel->getClassList($merchant_id);
} catch (\Exception $e) {
return [];
}
$tempClass = array(); //转化后的数组
if ($class_arr) {
foreach ($class_arr as $v_class) {
$name = $v_class['c1_class_name'];
$class_id = $v_class['c1_id'];
if ($v_class['c2_id']) {
$name .= '/' . $v_class['c2_class_name'];
$class_id = $v_class['c2_id'];
if ($v_class['c3_id']) {
$name .= '/' . $v_class['c3_class_name'];
$class_id = $v_class['c3_id'];
}
}
$v_class['class_id'] = $class_id;
$tempClass[$name] = $v_class;
}
}
return $tempClass;
}
/**
* 新增分类与子分类
* @param $parameter
* [
* name 分类名称
* merchant_id
* ]
* @return mixed
*/
public function createGoodsClass($parameter)
{
try {
$name = $parameter['name'];
$merchant_id = $parameter['merchant_id'];
$goodsClassModel = new RetailGoodsClassModel();
$storeGoodsModel = new RetailGoodsModel();
$merchantGoodsModel = new RetailMgoodsModel();
$arr = explode('/', $name);
$map['class_name'] = $arr[0];
$map['merchantid'] = $merchant_id;
$map['type'] = 1;
$map['status'] = 0;
$class = $goodsClassModel->getFind($map);
$flag = false;
if (!empty($class)) {
$class1_id = $class['id'];
} else {
$code = $goodsClassModel->getOrderFindField(array('merchantid' => $merchant_id, 'type' => 1), 'code', 'code desc');
if ($code) {
if (is_numeric($code)) {
$map['code'] = $code + 1;
} else {
$map['code'] = $code . '1';
}
} else {
$map['code'] = 1;
}
$map['addtime'] = time();
$add = $goodsClassModel->addOrder($map);
if ($add) {
$class1_id = $add;
$flag = true;
} else {
$res['status'] = 0;
$res['msg'] = '服务器出错,添加分类失败,请重试';
return $res;
}
}
unset($map['addtime']);
unset($map['code']);
$flag1 = false;
if ($arr[1]) {
$map['type'] = 2;
$map['class_name'] = $arr[1];
$map['pid'] = $class1_id;
$class2 = $goodsClassModel->getFind($map);
if (!empty($class2)) {
$class2_id = $class2['id'];
} else {
if (!$flag) {
$goods = $storeGoodsModel->getFind(array('goods_class_id' => $class1_id, 'status' => array('in', '0,1')));
if (!empty($goods)) {
$res['status'] = 0;
$res['msg'] = '该一级分类下存在商品,不能添加二级分类';
return $res;
}
$goods = $merchantGoodsModel->getFind(array('goods_class_id' => $class1_id, 'status' => array('in', '0,1')));
if (!empty($goods)) {
$res['status'] = 0;
$res['msg'] = '该一级分类下存在商品,不能添加二级分类';
return $res;
}
}
$code = $goodsClassModel->getOrderFindField(array('merchantid' => $merchant_id, 'pid' => $class1_id, 'type' => 2), 'code', 'code desc');
if ($code) {
if (is_numeric($code)) {
$map['code'] = $code + 1;
} else {
$map['code'] = $code . '1';
}
} else {
$map['code'] = 1;
}
$map['addtime'] = time();
$add = $goodsClassModel->addOrder($map);
if ($add) {
$class2_id = $add;
$flag1 = true;
} else {
$res['status'] = 0;
$res['msg'] = '服务器出错,添加分类失败,请重试';
return $res;
}
}
unset($map['addtime']);
unset($map['code']);
if ($arr[2]) {
$map['type'] = 3;
$map['class_name'] = $arr[2];
$map['pid'] = $class2_id;
$class3 = $goodsClassModel->getFind($map);
if (!empty($class3)) {
$res['status'] = 1;
$res['class_id'] = $class3['id'];
return $res;
} else {
if (!$flag1) {
$goods = $storeGoodsModel->getFind(array('goods_class_id' => $class2_id, 'status' => array('in', '0,1')));
if (!empty($goods)) {
$res['status'] = 0;
$res['msg'] = '该二级分类下存在商品,不能添加三级分类';
return $res;
}
$goods = $merchantGoodsModel->getFind(array('goods_class_id' => $class2_id, 'status' => array('in', '0,1')));
if (!empty($goods)) {
$res['status'] = 0;
$res['msg'] = '该二级分类下存在商品,不能添加三级分类';
return $res;
}
}
$code = $goodsClassModel->getOrderFindField(array('merchantid' => $merchant_id, 'pid' => $class2_id, 'type' => 3), 'code', 'code desc');
if ($code) {
if (is_numeric($code)) {
$map['code'] = $code + 1;
} else {
$map['code'] = $code . '1';
}
} else {
$map['code'] = 1;
}
$map['addtime'] = time();
$add = $goodsClassModel->addOrder($map);
if ($add) {
$res['status'] = 1;
$res['class_id'] = $add;
return $res;
} else {
$res['status'] = 0;
$res['msg'] = '服务器出错,添加分类失败,请重试';
return $res;
}
}
} else {
$res['status'] = 1;
$res['class_id'] = $class2_id;
return $res;
}
} else {
$res['status'] = 1;
$res['class_id'] = $class1_id;
}
return $res;
} catch (\Exception $e) {
$res['status'] = 0;
$res['msg'] = '服务器出错,添加分类失败,请重试';
return $res;
}
}
/**
* 获取商品分类-按数组存放顺序返回一、二、三级分类ID列表
* @param $id 分类ID
* @param array $class_list 已记录的分类ID列表
*/
public function getAppointGoodsClassList($id, &$class_list = [])
{
$ClassModel = new RetailGoodsClassModel();
$class = $ClassModel->getFind(['id' => $id], 'id,pid');
//存在分类则继续获取
if ($class) {
array_unshift($class_list, $class['id']);
if (!empty($class['pid'])) {
//非一级分类
$this->getAppointGoodsClassList($class['pid'], $class_list);
}
}
}
/**
* 根据上级ID获取商品分类列表 并返回该分类是否含有下级
* @param $param
* @return mixed
*/
public function getAbsolutelyGoodsClass($param)
{
$ClassModel = new RetailGoodsClassModel();
$map = array(
'merchantid' => $param['merchant_id'],
'status' => 0,
);
if (!empty($param['pid'])) {
$map['pid'] = $param['pid'];
} else {
$map['type'] = 1;
}
$classList = $ClassModel->getSelect($map, 'id,pid,class_name,type');//获取当前的分类
foreach ($classList as &$val) {
$val['leaf'] = true;
if ($val['type'] != 3) {
$cMap = array(
'pid' => $val['id'],
'merchantid' => $param['merchant_id'],
'status' => 0,
);
$children = $ClassModel->getFind($cMap);
if (!empty($children)) {
$val['leaf'] = false;
}
}
}
return $classList ? $classList : array();
}
}