作者 lyh

gx

@@ -9,7 +9,9 @@ @@ -9,7 +9,9 @@
9 9
10 namespace App\Http\Controllers\Bside\Setting; 10 namespace App\Http\Controllers\Bside\Setting;
11 11
  12 +use App\Enums\Common\Code;
12 use App\Http\Controllers\Bside\BaseController; 13 use App\Http\Controllers\Bside\BaseController;
  14 +use App\Http\Logic\Bside\Setting\TranslateLogic;
13 use App\Models\WebSetting\WebLanguage; 15 use App\Models\WebSetting\WebLanguage;
14 16
15 class TranslateController extends BaseController 17 class TranslateController extends BaseController
@@ -21,9 +23,61 @@ class TranslateController extends BaseController @@ -21,9 +23,61 @@ class TranslateController extends BaseController
21 * @method :post 23 * @method :post
22 * @time :2024/1/12 9:39 24 * @time :2024/1/12 9:39
23 */ 25 */
24 - public function lists(){  
25 - 26 + public function lists(TranslateLogic $logic){
  27 + $this->request->validate([
  28 + 'type'=>'required',
  29 + 'language_id'=>'required',
  30 + 'url'=>'required',
  31 + ],[
  32 + 'type.required' => 'type不能为空',
  33 + 'language_id.required' => 'language_id不能为空',
  34 + 'url.required' => 'url不能为空',
  35 + ]);
  36 + $data = $logic->getTranslateList();
  37 + $this->response('success',Code::SUCCESS,$data);
26 } 38 }
27 39
  40 + /**
  41 + * @remark :图片列表
  42 + * @name :imageList
  43 + * @author :lyh
  44 + * @method :post
  45 + * @time :2024/1/12 11:18
  46 + */
  47 + public function imageList(TranslateLogic $logic){
  48 + $this->request->validate([
  49 + 'type'=>'required',
  50 + 'language_id'=>'required',
  51 + 'url'=>'required',
  52 + ],[
  53 + 'type.required' => 'type不能为空',
  54 + 'language_id.required' => 'language_id不能为空',
  55 + 'url.required' => 'url不能为空',
  56 + ]);
  57 + $data = $logic->getTranslateImageList();
  58 + $this->response('success',Code::SUCCESS,$data);
  59 + }
28 60
  61 + /**
  62 + * @remark :保存数据
  63 + * @name :save
  64 + * @author :lyh
  65 + * @method :post
  66 + * @time :2024/1/12 11:19
  67 + */
  68 + public function save(TranslateLogic $logic){
  69 + $this->request->validate([
  70 + 'type'=>'required',
  71 + 'language_id'=>'required',
  72 + 'url'=>'required',
  73 + 'alias'=>'required',
  74 + ],[
  75 + 'type.required' => 'type不能为空',
  76 + 'language_id.required' => 'language_id不能为空',
  77 + 'url.required' => 'url不能为空',
  78 + 'alias.required' => 'url不能为空',
  79 + ]);
  80 + $logic->translateSave();
  81 + $this->response('success');
  82 + }
29 } 83 }
@@ -11,9 +11,11 @@ namespace App\Http\Logic\Bside\Setting; @@ -11,9 +11,11 @@ namespace App\Http\Logic\Bside\Setting;
11 11
12 use App\Enums\Common\Code; 12 use App\Enums\Common\Code;
13 use App\Http\Logic\Bside\BaseLogic; 13 use App\Http\Logic\Bside\BaseLogic;
  14 +use App\Models\WebSetting\Proofreading;
14 use App\Models\WebSetting\Translate as TranslateModel; 15 use App\Models\WebSetting\Translate as TranslateModel;
15 use App\Models\WebSetting\WebLanguage; 16 use App\Models\WebSetting\WebLanguage;
16 use App\Helper\Translate; 17 use App\Helper\Translate;
  18 +use Illuminate\Support\Facades\DB;
17 19
18 class TranslateLogic extends BaseLogic 20 class TranslateLogic extends BaseLogic
19 { 21 {
@@ -62,7 +64,44 @@ class TranslateLogic extends BaseLogic @@ -62,7 +64,44 @@ class TranslateLogic extends BaseLogic
62 } 64 }
63 $this->response('success',Code::SUCCESS,$data); 65 $this->response('success',Code::SUCCESS,$data);
64 } 66 }
65 - 67 + /**
  68 + * @remark :获取图片列表
  69 + * @name :imageList
  70 + * @author :lyh
  71 + * @method :post
  72 + * @time :2023/11/23 17:29
  73 + */
  74 + public function getTranslateImageList(){
  75 + $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
  76 + $data = [];
  77 + if($info === false){
  78 + $new_list = $this->getUrlImageRead($this->param['url']);
  79 + foreach ($new_list as $v){
  80 + $data[] = [
  81 + $v=>$v,
  82 + ];
  83 + }
  84 + return $this->response('success',Code::SUCCESS,$data);
  85 + }
  86 + $new_list = $this->getUrlImageRead($this->param['url']);
  87 + $old_list = [];
  88 + $data = json_decode($info['data'],true);
  89 + foreach ($data as $k=>$v){
  90 + $old_list[] = $v;
  91 + $data[] = [
  92 + $k=>$v,
  93 + ];
  94 + }
  95 + $arr2 = array_values(array_diff($new_list, $old_list));
  96 + if(!empty($arr2)){
  97 + foreach ($arr2 as $v1){
  98 + $data[] = [
  99 + $v1=>$v1
  100 + ];
  101 + }
  102 + }
  103 + $this->response('success',Code::SUCCESS,$data);
  104 + }
66 /** 105 /**
67 * @remark :获取语种信息 106 * @remark :获取语种信息
68 * @name :getLanguage 107 * @name :getLanguage
@@ -117,4 +156,64 @@ class TranslateLogic extends BaseLogic @@ -117,4 +156,64 @@ class TranslateLogic extends BaseLogic
117 $data = array_values($data); 156 $data = array_values($data);
118 return $data; 157 return $data;
119 } 158 }
  159 +
  160 + /**
  161 + * @remark :获取Url内容
  162 + * @name :getUrlRead
  163 + * @author :lyh
  164 + * @method :post
  165 + * @time :2023/11/22 10:02
  166 + */
  167 + public function getUrlImageRead($url){
  168 + $contextOptions = [
  169 + 'ssl' => [
  170 + 'verify_peer' => false,
  171 + 'verify_peer_name' => false,
  172 + ],
  173 + ];
  174 + $pattern = '/<img.*?src="(.*?)".*?>/i';
  175 + $matches = array();
  176 + $context = stream_context_create($contextOptions);
  177 + $sourceCode = file_get_contents($url, false, $context);
  178 + preg_match_all($pattern, $sourceCode, $matches);
  179 + $textContentArray = $matches[1];
  180 + $data = [];
  181 + foreach ($textContentArray as $v){
  182 + if(!empty($v)){
  183 + $data[] = $v;
  184 + }
  185 + }
  186 + $uniqueArray = array_unique($data);
  187 + $data = array_values($uniqueArray);
  188 + return $data;
  189 + }
  190 +
  191 + /**
  192 + * @name :(新增/更新多语言)save
  193 + * @author :lyh
  194 + * @method :post
  195 + * @time :2023/6/12 10:52
  196 + */
  197 + public function translateSave(){
  198 + try {
  199 + $info = $this->model->read(['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
  200 + if($info === false){
  201 + $param = [
  202 + 'type'=>1,
  203 + 'project_id'=>$this->user['project_id'],
  204 + 'url'=>$this->param['url'],
  205 + 'language_id'=>$this->param['language_id'],
  206 + 'alias'=>$this->param['alias'],
  207 + ];
  208 + $param['data'] = json_encode($this->param['data'],true);
  209 + $this->model->add($param);
  210 + }else{
  211 + $data = json_encode($this->param['data'],true);
  212 + $this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
  213 + }
  214 + }catch (\Exception $e){
  215 + $this->fail('系统错误请联系管理员');
  216 + }
  217 + $this->response('success');
  218 + }
120 } 219 }
@@ -176,7 +176,12 @@ Route::middleware(['bloginauth'])->group(function () { @@ -176,7 +176,12 @@ Route::middleware(['bloginauth'])->group(function () {
176 Route::any('/save', [\App\Http\Controllers\Bside\Setting\ProofreadingController::class, 'save'])->name('web_proofreading_save'); 176 Route::any('/save', [\App\Http\Controllers\Bside\Setting\ProofreadingController::class, 'save'])->name('web_proofreading_save');
177 Route::any('/saveImage', [\App\Http\Controllers\Bside\Setting\ProofreadingController::class, 'saveImage'])->name('web_proofreading_saveImage'); 177 Route::any('/saveImage', [\App\Http\Controllers\Bside\Setting\ProofreadingController::class, 'saveImage'])->name('web_proofreading_saveImage');
178 }); 178 });
179 - 179 + //新版翻译校队
  180 + Route::prefix('translate_check')->group(function () {//languageList
  181 + Route::any('/', [\App\Http\Controllers\Bside\Setting\TranslateController::class, 'lists'])->name('translate_check_lists');
  182 + Route::any('/imageList', [\App\Http\Controllers\Bside\Setting\TranslateController::class, 'imageList'])->name('translate_checkg_imageList');
  183 + Route::any('/save', [\App\Http\Controllers\Bside\Setting\TranslateController::class, 'save'])->name('translate_check_save');
  184 + });
180 //seo设置 185 //seo设置
181 Route::prefix('seo')->group(function () { 186 Route::prefix('seo')->group(function () {
182 Route::any('/info', [\App\Http\Controllers\Bside\Setting\WebSettingSeoController::class, 'info'])->name('web_seo_info'); 187 Route::any('/info', [\App\Http\Controllers\Bside\Setting\WebSettingSeoController::class, 'info'])->name('web_seo_info');