You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.5 KiB
109 lines
3.5 KiB
<?php
|
|
|
|
namespace app\mall\model;
|
|
|
|
use think\model\concern\SoftDelete;
|
|
|
|
class MallCategory extends Base
|
|
{
|
|
use SoftDelete;
|
|
|
|
/**
|
|
* 获取商城分类
|
|
* @date 2021-03-01
|
|
*/
|
|
public function getCategory()
|
|
{
|
|
$where = [
|
|
['uid', '=', $this->mid]
|
|
];
|
|
|
|
$array = $this->where($where)
|
|
->field('id,pid,name,cover_img,advert_img,advert_img_link')->order('sort desc')->select()
|
|
->toArray();
|
|
return listToTree($array);
|
|
}
|
|
|
|
/*
|
|
* 获取列表信息
|
|
*/
|
|
|
|
public function getListAll($where)
|
|
{
|
|
//获取一级权限
|
|
$data = $this->where($where)->where(array('pid' => 0))->order('sort desc,id asc')->select();
|
|
$redata = array();
|
|
if (!empty($data)) {
|
|
$idData = array();
|
|
foreach ($data as $value) {
|
|
$idData[] = $value['id'];
|
|
}
|
|
//获取二级权限
|
|
$list = $this->where(array('pid' => $idData))->order('sort desc,id asc')->select();
|
|
foreach ($data as $value) {
|
|
$temp = array();
|
|
$temp['id'] = $value['id'];
|
|
$temp['pid'] = $value['pid'];
|
|
$temp['name'] = $value['name'];
|
|
$temp['cover_img'] = $value['cover_img'];
|
|
$temp['advert_img'] = $value['advert_img'];
|
|
$temp['sort'] = $value['sort'];
|
|
$temp['create_time'] = $value['create_time'];
|
|
$temp['level'] = 0;
|
|
$temp['list'] = [];
|
|
//写入下一级信息
|
|
foreach ($list as $val) {
|
|
if ($val['pid'] == $value['id']) {
|
|
$val['level'] = 1;
|
|
$temp['list'][] = $val;
|
|
}
|
|
}
|
|
$redata[] = $temp;
|
|
}
|
|
return $redata;
|
|
}
|
|
}
|
|
|
|
public function getInfiniteNameData($where, $order = '', $limit_level = 0, $name = 'name', $relation_id = 'pid', $keyword = 'level', $now_level = 0, $return_data = [])
|
|
{
|
|
if (!empty($limit_level)) {
|
|
if ($limit_level <= $now_level) {
|
|
return $return_data;
|
|
}
|
|
}
|
|
if ($now_level == 0) {
|
|
$is_key = array_search($relation_id, array_column($where, 0));
|
|
if ($is_key) {
|
|
$where[$is_key] = [$relation_id, '<=', 0];
|
|
} else {
|
|
$where[] = [$relation_id, '<=', 0];
|
|
}
|
|
|
|
}
|
|
if (empty($order)) {
|
|
$order = $this->getPk() . ' desc';
|
|
}
|
|
$array = $this->where($where)->order($order)->select()->toArray();
|
|
if (empty($array)) {
|
|
return $return_data;
|
|
}
|
|
|
|
foreach ($array as $key => $value) {
|
|
if ($now_level != 0) {
|
|
$value[$name] = $this->where($this->getPk(), $value[$relation_id])->value($name) . '-' . $value[$name];
|
|
}
|
|
$is_key = array_search($relation_id, array_column($where, 0));
|
|
if ($is_key) {
|
|
$where[$is_key] = [$relation_id, '=', $value[$this->getPk()]];
|
|
} else {
|
|
$where[] = [$relation_id, '=', $value[$this->getPk()]];
|
|
}
|
|
//$where[$relation_id] = $value[$this->getPk()];
|
|
$value[$keyword] = $now_level;
|
|
$return_data[] = $value;
|
|
$return_data = $this->getInfiniteNameData($where, $order, $limit_level, $name, $relation_id, $keyword, $now_level + 1, $return_data);
|
|
}
|
|
return $return_data;
|
|
}
|
|
|
|
} |