coupon-admin/app/repository/DictionaryRepository.php

103 lines
2.6 KiB
PHP

<?php
namespace app\repository;
use app\model\BusinessCircle;
use app\model\Category;
use app\model\Model;
use app\service\Repository;
use think\Collection;
/**
* 数据字典域 相关
*
* Class DictionaryRepository
* @package app\repository
* @method self getInstance(Model $model = null) static
*/
class DictionaryRepository extends Repository
{
/**
* 上下级按children进行递归分组
* @param $items
* @param int $pid
* @param string $pidField 上下级关联字段
* @param string $primaryField 关联关系字段
* @return array
*/
public function recursionChildrenList($items, int $pid=0, string $pidField = 'pid', string $primaryField='id'): array
{
$list = [];
foreach ($items as $ki => $item) {
if ($item[$pidField] == $pid) {
unset($items[$ki]);
$item['children'] = $this->recursionChildrenList($items, $item[$primaryField], $pidField, $primaryField);
$list[] = $item;
}
}
return $list;
}
/**
* 获取所有的商圈数据
*/
public function getAllBusinessCircleList(array $fields=[])
{
try {
return BusinessCircle::field($fields)
->order(['sort'=>'desc', 'id'=>'asc'])
->select();
} catch (\Exception $e) {
return new Collection();
}
}
/**
* 获取商圈详情
*
* @param int $id
* @param array $fields
* @param callable|null $call
* @return array|\think\Model|null
*/
public function findBusinessCircleById(int $id, array $fields = [], callable $call = null)
{
try {
return BusinessCircle::findById($id, $fields, $call);
} catch (\Exception $e) {
return null;
}
}
/**
* 获取商家分类数据
*/
public function getBusinessTypeList(array $where=[], array $fields = [], callable $call=null, array $order = [])
{
try {
$res = Category::findList($where, $fields, 1, 0, $call, $order);
return $res['list'];
} catch (\Exception $e) {
return new Collection();
}
}
/**
* 获取商家分类详情
* @param int $id
* @param array $fields
* @param callable|null $call
* @return array|\think\Model|null
*/
public function findBusinessTypeById(int $id, array $fields = [], callable $call = null)
{
try {
return Category::findById($id, $fields, $call);
} catch (\Exception $e) {
return null;
}
}
}