作者 李宇航

合并分支 'lyh-server' 到 'master'

变更数据



查看合并请求 !3256
... ... @@ -23,6 +23,7 @@ use App\Models\RouteMap\RouteMap;
use App\Models\WebSetting\SettingNum;
use App\Models\WebSetting\Translate;
use App\Models\WebSetting\TranslateKey;
use Illuminate\Support\Facades\Cache;
class TranslateController extends BaseController
{
... ... @@ -351,7 +352,13 @@ class TranslateController extends BaseController
if($v['route'] == 'products'){
$count = $productModel->formatQuery(['status'=>1])->count();
}else{
$count = $productModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%'],'status'=>1])->count();
$catelists = Cache::get('product_category_trans');
if(!$catelists){
$catelists = $productModel->list(['status'=>1],'id',['id','pid']);
Cache::put('product_category_trans',$catelists,3600 * 24);
}
$count = $this->getCategoryWithChildrenCountIterative($catelists,$v['source_id']);
// $count = $productModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%'],'status'=>1])->count();
}
$this->pageSixList($data,$count,$v,1,15);
break;
... ... @@ -474,4 +481,31 @@ class TranslateController extends BaseController
}
return true;
}
/**
* 迭代方式获取分类及所有子分类的总数
* @param array $categories 所有分类数据
* @param int $categoryId 分类ID
* @return int 分类总数
*/
function getCategoryWithChildrenCountIterative($categories, $categoryId) {
$count = 0;
$queue = [$categoryId]; // 待处理的ID队列
while (!empty($queue)) {
$currentId = array_shift($queue);
// 如果是第一个ID,计数自身
if ($currentId == $categoryId) {
$count++;
}
// 查找并计数所有子分类
foreach ($categories as $category) {
if (isset($category['pid']) && $category['pid'] == $currentId) {
$count++;
$queue[] = $category['id']; // 将子分类ID加入队列
}
}
}
return $count;
}
}
... ...