文件
mashangyoujiu/Application/Common/Model/RetailGoodsClassModel.class.php

295 行
9.4 KiB
PHP
可执行文件

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

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

<?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;
}
}