作者 lyh

gx

... ... @@ -9,7 +9,9 @@
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\WebSetting\WebLanguage;
class TranslateController extends BaseController
... ... @@ -21,9 +23,61 @@ class TranslateController extends BaseController
* @method :post
* @time :2024/1/12 9:39
*/
public function lists(){
public function lists(TranslateLogic $logic){
$this->request->validate([
'type'=>'required',
'language_id'=>'required',
'url'=>'required',
],[
'type.required' => 'type不能为空',
'language_id.required' => 'language_id不能为空',
'url.required' => 'url不能为空',
]);
$data = $logic->getTranslateList();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :图片列表
* @name :imageList
* @author :lyh
* @method :post
* @time :2024/1/12 11:18
*/
public function imageList(TranslateLogic $logic){
$this->request->validate([
'type'=>'required',
'language_id'=>'required',
'url'=>'required',
],[
'type.required' => 'type不能为空',
'language_id.required' => 'language_id不能为空',
'url.required' => 'url不能为空',
]);
$data = $logic->getTranslateImageList();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存数据
* @name :save
* @author :lyh
* @method :post
* @time :2024/1/12 11:19
*/
public function save(TranslateLogic $logic){
$this->request->validate([
'type'=>'required',
'language_id'=>'required',
'url'=>'required',
'alias'=>'required',
],[
'type.required' => 'type不能为空',
'language_id.required' => 'language_id不能为空',
'url.required' => 'url不能为空',
'alias.required' => 'url不能为空',
]);
$logic->translateSave();
$this->response('success');
}
}
... ...
... ... @@ -11,9 +11,11 @@ namespace App\Http\Logic\Bside\Setting;
use App\Enums\Common\Code;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\WebSetting\Proofreading;
use App\Models\WebSetting\Translate as TranslateModel;
use App\Models\WebSetting\WebLanguage;
use App\Helper\Translate;
use Illuminate\Support\Facades\DB;
class TranslateLogic extends BaseLogic
{
... ... @@ -62,7 +64,44 @@ class TranslateLogic extends BaseLogic
}
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取图片列表
* @name :imageList
* @author :lyh
* @method :post
* @time :2023/11/23 17:29
*/
public function getTranslateImageList(){
$info = $this->model->read(['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']);
foreach ($new_list as $v){
$data[] = [
$v=>$v,
];
}
return $this->response('success',Code::SUCCESS,$data);
}
$new_list = $this->getUrlImageRead($this->param['url']);
$old_list = [];
$data = json_decode($info['data'],true);
foreach ($data as $k=>$v){
$old_list[] = $v;
$data[] = [
$k=>$v,
];
}
$arr2 = array_values(array_diff($new_list, $old_list));
if(!empty($arr2)){
foreach ($arr2 as $v1){
$data[] = [
$v1=>$v1
];
}
}
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取语种信息
* @name :getLanguage
... ... @@ -117,4 +156,64 @@ class TranslateLogic extends BaseLogic
$data = array_values($data);
return $data;
}
/**
* @remark :获取Url内容
* @name :getUrlRead
* @author :lyh
* @method :post
* @time :2023/11/22 10:02
*/
public function getUrlImageRead($url){
$contextOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
];
$pattern = '/<img.*?src="(.*?)".*?>/i';
$matches = array();
$context = stream_context_create($contextOptions);
$sourceCode = file_get_contents($url, false, $context);
preg_match_all($pattern, $sourceCode, $matches);
$textContentArray = $matches[1];
$data = [];
foreach ($textContentArray as $v){
if(!empty($v)){
$data[] = $v;
}
}
$uniqueArray = array_unique($data);
$data = array_values($uniqueArray);
return $data;
}
/**
* @name :(新增/更新多语言)save
* @author :lyh
* @method :post
* @time :2023/6/12 10:52
*/
public function translateSave(){
try {
$info = $this->model->read(['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
if($info === false){
$param = [
'type'=>1,
'project_id'=>$this->user['project_id'],
'url'=>$this->param['url'],
'language_id'=>$this->param['language_id'],
'alias'=>$this->param['alias'],
];
$param['data'] = json_encode($this->param['data'],true);
$this->model->add($param);
}else{
$data = json_encode($this->param['data'],true);
$this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
}
}catch (\Exception $e){
$this->fail('系统错误请联系管理员');
}
$this->response('success');
}
}
... ...
... ... @@ -176,7 +176,12 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/save', [\App\Http\Controllers\Bside\Setting\ProofreadingController::class, 'save'])->name('web_proofreading_save');
Route::any('/saveImage', [\App\Http\Controllers\Bside\Setting\ProofreadingController::class, 'saveImage'])->name('web_proofreading_saveImage');
});
//新版翻译校队
Route::prefix('translate_check')->group(function () {//languageList
Route::any('/', [\App\Http\Controllers\Bside\Setting\TranslateController::class, 'lists'])->name('translate_check_lists');
Route::any('/imageList', [\App\Http\Controllers\Bside\Setting\TranslateController::class, 'imageList'])->name('translate_checkg_imageList');
Route::any('/save', [\App\Http\Controllers\Bside\Setting\TranslateController::class, 'save'])->name('translate_check_save');
});
//seo设置
Route::prefix('seo')->group(function () {
Route::any('/info', [\App\Http\Controllers\Bside\Setting\WebSettingSeoController::class, 'info'])->name('web_seo_info');
... ...