作者 张关杰

Merge branch 'develop' of http://47.244.231.31:8099/zhl/globalso-v6 into bate

@@ -11,6 +11,7 @@ use App\Models\Inquiry\InquiryFormData; @@ -11,6 +11,7 @@ use App\Models\Inquiry\InquiryFormData;
11 use App\Models\Nav\BNav; 11 use App\Models\Nav\BNav;
12 use App\Models\Nav\BNavGroup; 12 use App\Models\Nav\BNavGroup;
13 use App\Models\Project\Project; 13 use App\Models\Project\Project;
  14 +use App\Models\WebSetting\Translate as TranslateModel;
14 use App\Services\ProjectServer; 15 use App\Services\ProjectServer;
15 use Illuminate\Console\Command; 16 use Illuminate\Console\Command;
16 use Illuminate\Database\Eloquent\Model; 17 use Illuminate\Database\Eloquent\Model;
@@ -54,6 +55,24 @@ class Test extends Command @@ -54,6 +55,24 @@ class Test extends Command
54 */ 55 */
55 public function handle() 56 public function handle()
56 { 57 {
  58 + ProjectServer::useProject(3);
  59 + $data = [
  60 + 'c' => 'c',
  61 + 'b' => 'a',
  62 + 'a' => 'b',
  63 + 'e' => 'e',
  64 + ];
  65 + $param = [
  66 + 'type'=>1,
  67 + 'project_id'=>3,
  68 + 'url'=>'/',
  69 + 'language_id'=>2,
  70 + 'alias'=>'zh',
  71 + ];
  72 + $param['data'] = json_encode($data,true);
  73 + TranslateModel::insert($param);
  74 + dd('end');
  75 + $this->model->add($param);
57 ProjectServer::useProject(1); 76 ProjectServer::useProject(1);
58 $group =BNavGroup::where(['id' => 1])->first(); 77 $group =BNavGroup::where(['id' => 1])->first();
59 $sort_list = json_decode($group->sort_list, true); 78 $sort_list = json_decode($group->sort_list, true);
@@ -116,7 +116,7 @@ class CustomModuleLogic extends BaseLogic @@ -116,7 +116,7 @@ class CustomModuleLogic extends BaseLogic
116 public function checkIsName($name,$id = 0){ 116 public function checkIsName($name,$id = 0){
117 $param['name'] = $name; 117 $param['name'] = $name;
118 if(!empty($id)){ 118 if(!empty($id)){
119 - $param['id'] = ['id'=>['!=',$id]]; 119 + $param['id'] = ['!=',$id];
120 } 120 }
121 $info = (new CustomModule())->read($param); 121 $info = (new CustomModule())->read($param);
122 if($info !== false){ 122 if($info !== false){
@@ -31,11 +31,11 @@ class TranslateLogic extends BaseLogic @@ -31,11 +31,11 @@ class TranslateLogic extends BaseLogic
31 * @time :2024/1/12 9:43 31 * @time :2024/1/12 9:43
32 */ 32 */
33 public function getTranslateList(){ 33 public function getTranslateList(){
  34 + $data = [];
34 if($this->param['url'] == 'All'){ 35 if($this->param['url'] == 'All'){
35 $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]); 36 $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
36 - $data = [];  
37 if(!empty($info) && !empty($info['data'])){ 37 if(!empty($info) && !empty($info['data'])){
38 - $translateInfo = json_decode($info['data'],true); 38 + $translateInfo = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
39 foreach ($translateInfo as $k => $v){ 39 foreach ($translateInfo as $k => $v){
40 $data[] = [$k=>$v]; 40 $data[] = [$k=>$v];
41 } 41 }
@@ -44,11 +44,10 @@ class TranslateLogic extends BaseLogic @@ -44,11 +44,10 @@ class TranslateLogic extends BaseLogic
44 } 44 }
45 $url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : ''); 45 $url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : '');
46 $languageInfo = $this->getLanguage($this->param['language_id']); 46 $languageInfo = $this->getLanguage($this->param['language_id']);
47 - $info = $this->model->read(['url'=>str_replace_url($this->param['url']),'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]); 47 + $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
48 //获取当前URl的所有文本内容 48 //获取当前URl的所有文本内容
49 $new_key = $this->getUrlRead($url); 49 $new_key = $this->getUrlRead($url);
50 if($info === false){ 50 if($info === false){
51 - $data = [];  
52 $translate_list = Translate::tran($new_key, $languageInfo['short']); 51 $translate_list = Translate::tran($new_key, $languageInfo['short']);
53 foreach ($new_key as $k=>$v){ 52 foreach ($new_key as $k=>$v){
54 $data[] = [ 53 $data[] = [
@@ -58,20 +57,27 @@ class TranslateLogic extends BaseLogic @@ -58,20 +57,27 @@ class TranslateLogic extends BaseLogic
58 return $this->success($data); 57 return $this->success($data);
59 } 58 }
60 $old_key = [];//key值组成数据 59 $old_key = [];//key值组成数据
61 - $data = json_decode($info['data'],true);  
62 - foreach ($data as $k => $v){ 60 + $data_read = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
  61 + foreach ($data_read as $k => $v){
63 $old_key[] = $k; 62 $old_key[] = $k;
  63 + $data[] = [$k => $v];
64 } 64 }
65 $arr2 = array_values(array_diff($new_key, $old_key)); 65 $arr2 = array_values(array_diff($new_key, $old_key));
66 if(!empty($arr2)){ 66 if(!empty($arr2)){
67 $translate_list = Translate::tran($arr2, $languageInfo['short']); 67 $translate_list = Translate::tran($arr2, $languageInfo['short']);
68 - foreach ($arr2 as $k1=>$v1){ 68 + if(count($arr2) == 1){
69 $data[] = [ 69 $data[] = [
70 - trim($v1)=>$translate_list[$k1] 70 + $arr2[0]=>$translate_list
71 ]; 71 ];
  72 + }else{
  73 + foreach ($arr2 as $k => $v){
  74 + $data[] = [
  75 + trim($v)=>$translate_list[$k]
  76 + ];
  77 + }
72 } 78 }
73 } 79 }
74 - $this->success($data); 80 + return $this->success($data);
75 } 81 }
76 82
77 /** 83 /**
@@ -86,7 +92,7 @@ class TranslateLogic extends BaseLogic @@ -86,7 +92,7 @@ class TranslateLogic extends BaseLogic
86 $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]); 92 $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
87 $data = []; 93 $data = [];
88 if(!empty($info) && !empty($info['data'])){ 94 if(!empty($info) && !empty($info['data'])){
89 - $translateInfo = json_decode($info['data'],true); 95 + $translateInfo = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
90 foreach ($translateInfo as $k => $v){ 96 foreach ($translateInfo as $k => $v){
91 $data[] = [$k=>$v]; 97 $data[] = [$k=>$v];
92 } 98 }
@@ -105,11 +111,11 @@ class TranslateLogic extends BaseLogic @@ -105,11 +111,11 @@ class TranslateLogic extends BaseLogic
105 } 111 }
106 return $this->success($data); 112 return $this->success($data);
107 } 113 }
108 - $new_list = $this->getUrlImageRead($this->param['url']); 114 + $new_list = $this->getUrlImageRead($url);
109 $old_list = []; 115 $old_list = [];
110 - $data = json_decode($info['data'],true);  
111 - foreach ($data as $k=>$v){  
112 - $old_list[] = $v; 116 + $data_read = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
  117 + foreach ($data_read as $k=>$v){
  118 + $old_list[] = $k;
113 $data[] = [ 119 $data[] = [
114 $k=>$v, 120 $k=>$v,
115 ]; 121 ];
@@ -157,6 +163,9 @@ class TranslateLogic extends BaseLogic @@ -157,6 +163,9 @@ class TranslateLogic extends BaseLogic
157 ]; 163 ];
158 $context = stream_context_create($contextOptions); 164 $context = stream_context_create($contextOptions);
159 $sourceCode = file_get_contents($url, false, $context); 165 $sourceCode = file_get_contents($url, false, $context);
  166 + if(!$sourceCode){
  167 + $this->fail('当前url不存在');
  168 + }
160 // 过滤掉具有 "change-language-cont" 类的元素 169 // 过滤掉具有 "change-language-cont" 类的元素
161 $pattern = '/<div\b[^>]*\sclass=[\'"]([^\'"]*change-language-cont[^\'"]*)[\'"][^>]*>(.*?)<\/div>/is'; 170 $pattern = '/<div\b[^>]*\sclass=[\'"]([^\'"]*change-language-cont[^\'"]*)[\'"][^>]*>(.*?)<\/div>/is';
162 $sourceCode = preg_replace($pattern, '', $sourceCode); 171 $sourceCode = preg_replace($pattern, '', $sourceCode);
@@ -172,19 +181,25 @@ class TranslateLogic extends BaseLogic @@ -172,19 +181,25 @@ class TranslateLogic extends BaseLogic
172 $textContentArray = array_filter($matches[1], function($item) { 181 $textContentArray = array_filter($matches[1], function($item) {
173 return !empty(trim($item)); 182 return !empty(trim($item));
174 }); 183 });
  184 + // 过滤掉包含逗号加换行的内容
  185 + $textContentArray = array_filter($textContentArray, function($item) {
  186 + return strpos($item, ',') === false && strpos($item, PHP_EOL) === false;
  187 + });
175 $contentData = []; 188 $contentData = [];
176 foreach ($textContentArray as $v){ 189 foreach ($textContentArray as $v){
177 $content = trim($v); 190 $content = trim($v);
178 $trimmedString = preg_replace('/\s+/', ' ', $content); 191 $trimmedString = preg_replace('/\s+/', ' ', $content);
179 $contentData[] = $trimmedString; 192 $contentData[] = $trimmedString;
180 } 193 }
181 - $contentData = array_values($contentData);  
182 - $pattern = '/<meta\s+[^>]*name=[\'"](keywords|description)[\'"][^>]*content=[\'"]([^\'"]+)[\'"]/i'; // 匹配 name 为 "keywords" 或 "description" 的 meta 标签的正则表达式 194 + $contentData = array_values($textContentArray);
  195 + $pattern = '/<meta\s+[^>]*name=[\'"](keywords|description)[\'"][^>]*content=[\'"]([^\'"]+)[\'"]>/i'; // 匹配 name 为 "keywords" 或 "description" 的 meta 标签的正则表达式
183 $matches = array(); 196 $matches = array();
184 preg_match_all($pattern, $strippedContent, $matches); 197 preg_match_all($pattern, $strippedContent, $matches);
185 $metaData = array(); 198 $metaData = array();
186 foreach ($matches[2] as $index => $content) { 199 foreach ($matches[2] as $index => $content) {
187 - $metaData[] = $content; 200 + if(!empty(trim($content))){
  201 + $metaData[] = $content;
  202 + }
188 } 203 }
189 $data = array_merge($metaData, $contentData); 204 $data = array_merge($metaData, $contentData);
190 return $data; 205 return $data;
@@ -239,10 +254,10 @@ class TranslateLogic extends BaseLogic @@ -239,10 +254,10 @@ class TranslateLogic extends BaseLogic
239 'language_id'=>$this->param['language_id'], 254 'language_id'=>$this->param['language_id'],
240 'alias'=>$this->param['alias'], 255 'alias'=>$this->param['alias'],
241 ]; 256 ];
242 - $param['data'] = json_encode($this->param['data'],true); 257 + $param['data'] = json_encode($this->param['data'],JSON_UNESCAPED_UNICODE);
243 $this->model->add($param); 258 $this->model->add($param);
244 }else{ 259 }else{
245 - $data = json_encode($this->param['data'],true); 260 + $data = json_encode($this->param['data'],JSON_UNESCAPED_UNICODE);
246 $this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]); 261 $this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
247 } 262 }
248 // }catch (\Exception $e){ 263 // }catch (\Exception $e){