合并分支 'lyh-server' 到 'master'
变更数据 查看合并请求 !3256
正在显示
1 个修改的文件
包含
35 行增加
和
1 行删除
| @@ -23,6 +23,7 @@ use App\Models\RouteMap\RouteMap; | @@ -23,6 +23,7 @@ use App\Models\RouteMap\RouteMap; | ||
| 23 | use App\Models\WebSetting\SettingNum; | 23 | use App\Models\WebSetting\SettingNum; |
| 24 | use App\Models\WebSetting\Translate; | 24 | use App\Models\WebSetting\Translate; |
| 25 | use App\Models\WebSetting\TranslateKey; | 25 | use App\Models\WebSetting\TranslateKey; |
| 26 | +use Illuminate\Support\Facades\Cache; | ||
| 26 | 27 | ||
| 27 | class TranslateController extends BaseController | 28 | class TranslateController extends BaseController |
| 28 | { | 29 | { |
| @@ -351,7 +352,13 @@ class TranslateController extends BaseController | @@ -351,7 +352,13 @@ class TranslateController extends BaseController | ||
| 351 | if($v['route'] == 'products'){ | 352 | if($v['route'] == 'products'){ |
| 352 | $count = $productModel->formatQuery(['status'=>1])->count(); | 353 | $count = $productModel->formatQuery(['status'=>1])->count(); |
| 353 | }else{ | 354 | }else{ |
| 354 | - $count = $productModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%'],'status'=>1])->count(); | 355 | + $catelists = Cache::get('product_category_trans'); |
| 356 | + if(!$catelists){ | ||
| 357 | + $catelists = $productModel->list(['status'=>1],'id',['id','pid']); | ||
| 358 | + Cache::put('product_category_trans',$catelists,3600 * 24); | ||
| 359 | + } | ||
| 360 | + $count = $this->getCategoryWithChildrenCountIterative($catelists,$v['source_id']); | ||
| 361 | +// $count = $productModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%'],'status'=>1])->count(); | ||
| 355 | } | 362 | } |
| 356 | $this->pageSixList($data,$count,$v,1,15); | 363 | $this->pageSixList($data,$count,$v,1,15); |
| 357 | break; | 364 | break; |
| @@ -474,4 +481,31 @@ class TranslateController extends BaseController | @@ -474,4 +481,31 @@ class TranslateController extends BaseController | ||
| 474 | } | 481 | } |
| 475 | return true; | 482 | return true; |
| 476 | } | 483 | } |
| 484 | + | ||
| 485 | + /** | ||
| 486 | + * 迭代方式获取分类及所有子分类的总数 | ||
| 487 | + * @param array $categories 所有分类数据 | ||
| 488 | + * @param int $categoryId 分类ID | ||
| 489 | + * @return int 分类总数 | ||
| 490 | + */ | ||
| 491 | + function getCategoryWithChildrenCountIterative($categories, $categoryId) { | ||
| 492 | + $count = 0; | ||
| 493 | + $queue = [$categoryId]; // 待处理的ID队列 | ||
| 494 | + while (!empty($queue)) { | ||
| 495 | + $currentId = array_shift($queue); | ||
| 496 | + // 如果是第一个ID,计数自身 | ||
| 497 | + if ($currentId == $categoryId) { | ||
| 498 | + $count++; | ||
| 499 | + } | ||
| 500 | + // 查找并计数所有子分类 | ||
| 501 | + foreach ($categories as $category) { | ||
| 502 | + if (isset($category['pid']) && $category['pid'] == $currentId) { | ||
| 503 | + $count++; | ||
| 504 | + $queue[] = $category['id']; // 将子分类ID加入队列 | ||
| 505 | + } | ||
| 506 | + } | ||
| 507 | + } | ||
| 508 | + | ||
| 509 | + return $count; | ||
| 510 | + } | ||
| 477 | } | 511 | } |
-
请 注册 或 登录 后发表评论