作者 lyh

gx

... ... @@ -12,8 +12,14 @@ namespace App\Http\Controllers\Bside\Setting;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Setting\TranslateLogic;
use App\Models\Blog\Blog;
use App\Models\CustomModule\CustomModuleCategory;
use App\Models\CustomModule\CustomModuleContent;
use App\Models\News\News;
use App\Models\Product\Product;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
use App\Models\WebSetting\SettingNum;
use App\Models\WebSetting\WebLanguage;
class TranslateController extends BaseController
... ... @@ -91,55 +97,204 @@ class TranslateController extends BaseController
* @time :2024/1/12 14:34
*/
public function getUrl(){
//查看项目是5.0还是6.0
if($this->user['is_upgrade'] == Project::IS_UPGRADE_TRUE){//升级项目
$data = $this->getFiveUrl($this->map);
}else {
$data = $this->getSixUrl($this->map);
}
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :5.0路由
* @name :getFiveUrl
* @author :lyh
* @method :post
* @time :2024/1/17 16:27
*/
public function getFiveUrl($map){
$data = [];
$routeMapModel = new RouteMap();
$list = $routeMapModel->list();
$list = $routeMapModel->list($map);
foreach ($list as $k => $v){
//查看项目是5.0还是6.0
if($this->user['is_upgrade'] == Project::IS_UPGRADE_TRUE){//升级项目
if(!empty($v['path'])){
if($v['path'] == 'blog'){
$v['path'] = $v['path'].'s';
}
$route = $v['path'].'/'.$v['route'];
}else{
switch ($v['source']){
case RouteMap::SOURCE_PAGE:
if($v['route'] == 'index'){
$v['route'] = '';
$data[] = '/';
}else{
$data[] = $v['route'].'/';
}
$route = $v['route'];
}
}else{
if(!empty($v['path'])){
if($v['path'] == 'blog'){
$v['path'] = $v['path'].'s';
}elseif ($v['path'] == RouteMap::PATH_NEWS_CATE){
$routeMapModel->edit(['path'=>''],['id'=>$v['id']]);
$v['path'] = '';
}elseif ($v['path'] == RouteMap::PATH_NEWS_CATE){
$routeMapModel->edit(['path'=>''],['id'=>$v['id']]);
$v['path'] = '';
break;
case RouteMap::SOURCE_PRODUCT_CATE:
//获取当前产品分类关联多少产品
$productModel = new Product();
$count = $productModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageList($data,$count,$v,1,15);
break;
case RouteMap::SOURCE_BLOG:
$data[] = 'blogs/'.$v['route'].'/';
break;
case RouteMap::SOURCE_NEWS:
$data[] = 'news/'.$v['route'].'/';
break;
case RouteMap::SOURCE_BLOG_CATE:
$blogModel = new Blog();
$count = $blogModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageList($data,$count,$v,2,10);
break;
case RouteMap::SOURCE_NEWS_CATE:
$newsModel = new News();
$count = $newsModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageList($data,$count,$v,3,10);
break;
case RouteMap::SOURCE_MODULE:
$customModel = new CustomModuleContent();
$contentInfo = $customModel->read(['id'=>$v['source_id']]);
if(!empty($contentInfo) && !empty($contentInfo['category_id'])){
$categoryIdArr = $contentInfo['category_id'];
$cate_id = (int)array_shift($categoryIdArr);
$routeInfo = $routeMapModel->read(['source'=>RouteMap::SOURCE_MODULE_CATE,'source_id'=>$cate_id]);
$v['path'] = ($routeInfo['route'] ?? '');
}
$route = $v['path'].'/'.$v['route'];
}else{
$data[] = $v['path'].$v['route'].'/';
break;
case RouteMap::SOURCE_MODULE_CATE:
$customModel = new CustomModuleContent();
$count = $customModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageSixList($data,$count,$v,3,10);
break;
default:
$data[] = $v['route'].'/';
break;
}
}
return $this->success($data);
}
/**
* @remark :获取6.0的url
* @name :getSixUrl
* @author :lyh
* @method :post
* @time :2024/1/17 15:04
*/
public function getSixUrl($map){
$data = [];
$routeMapModel = new RouteMap();
$list = $routeMapModel->list($map);
foreach ($list as $k => $v){
switch ($v['source']){
case RouteMap::SOURCE_PAGE:
if($v['route'] == 'index'){
$v['route'] = '';
$data[] = '/';//首页
}else{
$data[] = $v['route'].'/';
}
break;
case RouteMap::SOURCE_PRODUCT_CATE:
//获取当前产品分类关联多少产品
$productModel = new Product();
$count = $productModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageSixList($data,$count,$v,1,15);
break;
case RouteMap::SOURCE_BLOG:
$data[] = 'blogs/'.$v['route'].'/';
break;
case RouteMap::SOURCE_NEWS:
$data[] = 'news/'.$v['route'].'/';
break;
case RouteMap::SOURCE_BLOG_CATE:
$blogModel = new Blog();
$count = $blogModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageSixList($data,$count,$v,2,10);
break;
case RouteMap::SOURCE_NEWS_CATE:
$newsModel = new News();
$count = $newsModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageSixList($data,$count,$v,3,10);
break;
case RouteMap::SOURCE_MODULE:
$customModel = new CustomModuleContent();
$contentInfo = $customModel->read(['id'=>$v['source_id']]);
if(!empty($contentInfo) && !empty($contentInfo['category_id'])){
$categoryIdArr = $contentInfo['category_id'];
$cate_id = (int)array_shift($categoryIdArr);
$routeInfo = $routeMapModel->read(['source'=>RouteMap::SOURCE_MODULE_CATE,'source_id'=>$cate_id]);
$v['path'] = ($routeInfo['route'] ?? '');
}
$route = $v['route'];
}
$data[] = $v['path'].$v['route'].'/';
break;
case RouteMap::SOURCE_MODULE_CATE:
$customModel = new CustomModuleContent();
$count = $customModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageSixList($data,$count,$v,3,10);
break;
default:
$data[] = $v['route'].'/';
break;
}
}
$data[] = $this->user['domain'].$route;
$this->response('success',Code::SUCCESS,$data);
return $this->success($data);
}
/**
* @remark :获取路由表中没有的路由
* @name :getFiveUrl
* @remark :
* @name :pageList
* @author :lyh
* @method :post
* @time :2024/1/17 9:32
* @time :2024/1/17 14:15
*/
public function getFiveUrl($v){
public function pageList(&$data,$count,$v,$type = 1,$pageNum = 15){
$page = 1;
if($count != 0){
//获取默认条数
$settingNumModel = new SettingNum();
$numInfo = $settingNumModel->read(['type'=>$type],['num']);
if(!empty($numInfo)){
$pageNum = $numInfo['num'];
}else{
$pageNum = $pageNum;
}
$page = ceil($count / $pageNum);//向上取整
}
for ($i = 1;$i <= $page;$i++){
if($i == 1){
$data[] = $v['route'];
}else{
$data[] = $v['route'].'/page/'.$i.'/';
}
}
return true;
}
/**
* @remark :
* @name :pageList
* @author :lyh
* @method :post
* @time :2024/1/17 14:15
*/
public function pageSixList(&$data,$count,$v,$type = 1,$pageNum = 15){
$page = 1;
if($count != 0){
//获取默认条数
$settingNumModel = new SettingNum();
$numInfo = $settingNumModel->read(['type'=>$type],['num']);
if(!empty($numInfo)){
$pageNum = $numInfo['num'];
}else{
$pageNum = $pageNum;
}
$page = ceil($count / $pageNum);//向上取整
}
for ($i = 1;$i <= $page;$i++){
if($i == 1){
$data[] = $v['route'].'/';
}else{
$data[] = $v['route'].'/'.$i.'/';
}
}
return true;
}
}
... ...
... ... @@ -34,10 +34,12 @@ class TranslateLogic extends BaseLogic
* @time :2024/1/12 9:43
*/
public function getTranslateList(){
$this->user['domain'] = 'https://demo.globalso.site/';
$url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : '');
$languageInfo = $this->getLanguage($this->param['language_id']);
$info = $this->model->read(['url'=>str_replace_url($this->param['url']),'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
//获取当前URl的所有文本内容
$new_key = $this->getUrlRead($this->param['url']);
$new_key = $this->getUrlRead($url);
if($info === false){
$data = [];
$translate_list = Translate::tran($new_key, $languageInfo['short']);
... ... @@ -73,10 +75,11 @@ class TranslateLogic extends BaseLogic
* @time :2023/11/23 17:29
*/
public function getTranslateImageList(){
$url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : '');
$info = $this->model->read(['url'=>str_replace_url($this->param['url']),'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
$data = [];
if($info === false){
$new_list = $this->getUrlImageRead($this->param['url']);
$new_list = $this->getUrlImageRead($url);
foreach ($new_list as $v){
$data[] = [
$v=>$v,
... ...