295 行
9.4 KiB
PHP
可执行文件
295 行
9.4 KiB
PHP
可执行文件
<?php
|
||
|
||
namespace Common\Model;
|
||
|
||
//[1.7.90]
|
||
|
||
/**
|
||
* 商品分类表
|
||
* Class RetailGoodsClassModel
|
||
* @package Common\Model
|
||
*/
|
||
class RetailGoodsClassModel extends BaseModel
|
||
{
|
||
protected $tableName = 'retail_goods_class';
|
||
const ID = 'id';
|
||
const CLASS_NAME = 'class_name'; //varchar(255) DEFAULT NULL COMMENT '零售商品分类名:',
|
||
const ADD_TIME = 'addtime'; //int(11) DEFAULT NULL COMMENT '添加时间',
|
||
const MERCHANT_ID = 'merchantid'; //int(11) DEFAULT NULL COMMENT '商户id',
|
||
const STATUS = 'status'; //int(1) unsigned zerofill DEFAULT '0' COMMENT '状态:0,正常,1,删除。',
|
||
const CODE = 'code'; //int(11) DEFAULT '0' COMMENT '编码;每个门店从1开始生成,可用作排序',
|
||
const PID = 'pid'; //int(11) DEFAULT '0',
|
||
const TYPE = 'type'; //tinyint(1) DEFAULT NULL COMMENT '分类 1:一级分类; 2:二级分类 ; 3:三级分类。',
|
||
const BANNER_ID = 'banner_id'; //int(11) DEFAULT '0',
|
||
|
||
/**
|
||
* 获取商品分类
|
||
* @param int $merchant_id 商户id
|
||
* @return array
|
||
*/
|
||
public function getGoodsClass($merchant_id)
|
||
{
|
||
// 判断商户id
|
||
if (!$merchant_id) {
|
||
return array();
|
||
}
|
||
$field = array($this::ID, $this::CLASS_NAME);
|
||
// 获取一级分类
|
||
$class_data = $this->getSelect(array($this::PID => 0, $this::STATUS => 0, $this::MERCHANT_ID => $merchant_id), $field, $this::ID . ' asc');
|
||
if (!$class_data) {
|
||
return array();
|
||
}
|
||
foreach ($class_data as &$val) {
|
||
// 获取二级分类
|
||
$children1 = $this->getSelect(array($this::PID => $val[$this::ID], $this::STATUS => 0, $this::MERCHANT_ID => $merchant_id), $field, $this::ID . ' asc');
|
||
if ($children1) {
|
||
// 获取三级分类
|
||
foreach ($children1 as &$value) {
|
||
$children2 = $this->getSelect(array($this::PID => $value[$this::ID], $this::STATUS => 0, $this::MERCHANT_ID => $merchant_id), $field, $this::ID . ' asc');
|
||
$value['children'] = $children2 ? $children2 : array();
|
||
}
|
||
}
|
||
$val['children'] = $children1 ? $children1 : array();
|
||
}
|
||
return $class_data;
|
||
}
|
||
|
||
/**
|
||
* 获取商品分类 一级 二级 三级
|
||
* @param $id 分类id
|
||
* @return string
|
||
*/
|
||
public function getClassNamePath($id)
|
||
{
|
||
$data = $this->getFind(array('id' => $id), 'pid,class_name,type');
|
||
if (!$data) {
|
||
return '';
|
||
}
|
||
if ($data['type'] == 1) {
|
||
return $data['class_name'];
|
||
} else {
|
||
$data_1 = $this->getFind(array('id' => $data['pid']), 'pid,class_name,type');
|
||
if ($data['type'] == 2) {
|
||
return $data_1['class_name'] . '/' . $data['class_name'];
|
||
}
|
||
$data_2 = $this->getFind(array('id' => $data_1['pid']), 'class_name,type');
|
||
return $data_2['class_name'] . '/' . $data_1['class_name'] . '/' . $data['class_name'];
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 根据二级分类id获取三级分类ID集合
|
||
* @param $person2 二级分类id
|
||
* @return array
|
||
*/
|
||
public function basisTwoGetClassId($person2)
|
||
{
|
||
if (empty($person2)) {
|
||
return [];
|
||
}
|
||
$list = $this->alias('c2')
|
||
->join('ls_retail_goods_class as c3 on c2.id=c3.pid')
|
||
->where(array('c2.id' => $person2, 'c3.status' => 0))
|
||
->field('c3.id')->select();
|
||
return $list;
|
||
}
|
||
|
||
/**
|
||
* 根据一级分类id获取三级分类ID集合
|
||
* @param $person1 一级分类id
|
||
* @return array
|
||
*/
|
||
public function basisOneGetClassId($person1)
|
||
{
|
||
if (empty($person1)) {
|
||
return [];
|
||
}
|
||
$list = $this->alias('c1')
|
||
->join('ls_retail_goods_class as c2 on c1.id=c2.pid')
|
||
->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT')
|
||
->where(array('c1.id' => $person1, 'c2.status' => 0))
|
||
->field('c2.id,c3.id as c3_id')->select();
|
||
return $list;
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取商户分类所有集合
|
||
* @param $where
|
||
* @param $fields
|
||
* @param string $order
|
||
* @param $page
|
||
* @return mixed
|
||
*/
|
||
public function ClassListAll($where, $fields = '*', $order = 'c1.id asc', $page = '')
|
||
{
|
||
if (!empty($page)) {
|
||
$list = $this->alias('c1')
|
||
->join('ls_retail_goods_class as c2 on c1.pid=c2.id AND c2.status=0', 'LEFT')
|
||
->join('ls_retail_goods_class as c3 on c2.pid=c3.id AND c3.status=0', 'LEFT')
|
||
->field($fields)
|
||
->where($where)
|
||
->order($order)
|
||
->page($page)
|
||
->select();
|
||
} else {
|
||
$list = $this->alias('c1')
|
||
->join('ls_retail_goods_class as c2 on c1.pid=c2.id AND c2.status=0', 'LEFT')
|
||
->join('ls_retail_goods_class as c3 on c2.pid=c3.id AND c3.status=0', 'LEFT')
|
||
->field($fields)
|
||
->where($where)
|
||
->order($order)
|
||
->select();
|
||
}
|
||
return $list;
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取商户分类所有集合条数
|
||
* @param $where
|
||
* @return mixed
|
||
*/
|
||
public function ClassListCount($where)
|
||
{
|
||
$count = $this->alias('c1')
|
||
->join('ls_retail_goods_class as c2 on c1.pid=c2.id AND c2.status=0', 'LEFT')
|
||
->join('ls_retail_goods_class as c3 on c2.pid=c3.id AND c3.status=0', 'LEFT')
|
||
->where($where)
|
||
->count();
|
||
return $count;
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取商户分类所有集合
|
||
* @param $merchant_id
|
||
* @return mixed
|
||
*/
|
||
public function getClassList($merchant_id)
|
||
{
|
||
$list = $this->alias('c1')
|
||
->join('ls_retail_goods_class as c2 on c2.pid=c1.id AND c2.status=0', 'LEFT')
|
||
->join('ls_retail_goods_class as c3 on c3.pid=c2.id AND c3.status=0', 'LEFT')
|
||
->where(array('c1.merchantid' => $merchant_id, 'c1.type' => 1, 'c1.status' => 0))
|
||
->field('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')
|
||
->select();
|
||
return $list;
|
||
}
|
||
|
||
|
||
/**
|
||
* 根据一级分类id获取二级分类指定字段
|
||
* @param $where
|
||
* @param $fields
|
||
* @return mixed
|
||
*/
|
||
public function basisOneGetClassList($where,$fields)
|
||
{
|
||
$fields = $fields ? $fields : 'c2.*';
|
||
$list = $this->alias('c1')
|
||
->join('ls_retail_goods_class as c2 on c1.id=c2.pid and c2.status=0')
|
||
->where($where)
|
||
->field($fields)
|
||
->order('c2.code asc')
|
||
->select();
|
||
return $list;
|
||
}
|
||
|
||
|
||
/**
|
||
* 根据二级分类id获取三级分类指定字段
|
||
* @param $where
|
||
* @param $fields
|
||
* @return mixed
|
||
*/
|
||
public function basisTwoGetClassList($where, $fields)
|
||
{
|
||
$fields = $fields ? $fields : 'c2.*';
|
||
$list = $this->alias('c2')
|
||
->join('ls_retail_goods_class as c3 on c2.id=c3.pid and c3.status=0')
|
||
->where($where)
|
||
->field($fields)
|
||
->order('c3.code asc')
|
||
->select();
|
||
return $list;
|
||
}
|
||
|
||
|
||
/**
|
||
* 根据二级分类id获取三级分类指定字段
|
||
* @param $id
|
||
* @param $fields
|
||
* @return mixed
|
||
*/
|
||
public function basisTwoGetClassListAll($id, $fields)
|
||
{
|
||
$fields = $fields ? $fields : 'c2.*';
|
||
$list = $this->alias('c2')
|
||
->join('ls_retail_goods_class as c3 on c2.id=c3.pid and c3.status=0', 'LEFT')
|
||
->where(array('c2.id' => $id))
|
||
->field($fields)
|
||
->order('c3.code asc')
|
||
->select();
|
||
return $list;
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取指定一级分类下面所有分类
|
||
* @param $id
|
||
* @param $fields
|
||
* @return mixed
|
||
*/
|
||
public function basisOneGetClassListAll($id, $fields)
|
||
{
|
||
$list = $this->alias('c1')
|
||
->join('ls_retail_goods_class as c2 on c2.pid=c1.id AND c2.status=0', 'LEFT')
|
||
->join('ls_retail_goods_class as c3 on c3.pid=c2.id AND c3.status=0', 'LEFT')
|
||
->where(array('c1.id' => $id, 'c1.type' => 1, 'c1.status' => 0))
|
||
->field($fields)
|
||
->select();
|
||
return $list;
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取指定分类id名称
|
||
* @param $id
|
||
* @return mixed
|
||
*/
|
||
public function getClassName($id)
|
||
{
|
||
$name = $this->where(['id' => $id])->getField("class_name");
|
||
return $name;
|
||
}
|
||
|
||
/**
|
||
* 分类关联
|
||
*/
|
||
public function goodsClassLink($where, $field, $order, $page = '', $limit = '')
|
||
{
|
||
$store_id = $where['sclass.store_id'];
|
||
unset($where['sclass.store_id']);
|
||
if ($page && $limit) {
|
||
$list = $this->alias('rclass')
|
||
->join('ls_store_goods_class as sclass on sclass.class_id = rclass.id AND sclass.store_id=' . $store_id, 'LEFT')
|
||
->where($where)
|
||
->field($field)
|
||
->order($order)
|
||
->page($page, $limit)
|
||
->select();
|
||
} else {
|
||
$list = $this->alias('rclass')
|
||
->join('ls_store_goods_class as sclass on sclass.class_id = rclass.id AND sclass.store_id=' . $store_id, 'LEFT')
|
||
->where($where)
|
||
->field($field)
|
||
->order($order)
|
||
->select();
|
||
}
|
||
|
||
return $list;
|
||
}
|
||
}
|