|
...
|
...
|
@@ -20,6 +20,7 @@ use App\Models\Project\Project; |
|
|
|
use App\Models\RouteMap\RouteMap;
|
|
|
|
use App\Models\WebSetting\SettingNum;
|
|
|
|
use App\Models\WebSetting\Translate;
|
|
|
|
use App\Models\WebSetting\TranslateKey;
|
|
|
|
|
|
|
|
class TranslateController extends BaseController
|
|
|
|
{
|
|
...
|
...
|
@@ -57,15 +58,92 @@ class TranslateController extends BaseController |
|
|
|
],[
|
|
|
|
'language_id.required' => 'language_id不能为空',
|
|
|
|
]);
|
|
|
|
//上线后放开
|
|
|
|
// $is_trans_proof = $this->project['deploy_build']['is_trans_proof'] ?? 0;
|
|
|
|
// if($is_trans_proof == 0){
|
|
|
|
// $this->response('未开启导出功能。请联系管理员开启。',Code::SYSTEM_ERROR);
|
|
|
|
// }
|
|
|
|
$res_data = [];
|
|
|
|
$res_data['language_id'] = $this->param['language_id'];
|
|
|
|
$this->map['type'] = 1;
|
|
|
|
$data = $translate->formatQuery($this->map)->with('translate_data')->get()->toArray();
|
|
|
|
foreach ($data as $k=>$v){
|
|
|
|
$v['data'] = json_decode($v['translate_data']['data'],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
$data[$k] = $v;
|
|
|
|
if(empty($data)){
|
|
|
|
$keyModel = new TranslateKey();
|
|
|
|
$keyList = $keyModel->list([],'id',['*'],'asc');
|
|
|
|
if(empty($keyList)){
|
|
|
|
$this->response('导出数据为空',Code::SYSTEM_ERROR);
|
|
|
|
}
|
|
|
|
$res_data = $this->resEmptyData($keyList);
|
|
|
|
$this->response('success',Code::SUCCESS,$res_data);
|
|
|
|
}
|
|
|
|
$this->response('success',Code::SUCCESS,$data);
|
|
|
|
$res_data = $this->resData($data);
|
|
|
|
$this->response('success',Code::SUCCESS,$res_data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :都不为处理数据
|
|
|
|
* @name :resData
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/11/22 17:50
|
|
|
|
*/
|
|
|
|
public function resData($data){
|
|
|
|
$result_id_data = [];
|
|
|
|
$keyModel = new TranslateKey();
|
|
|
|
foreach ($data as $values){
|
|
|
|
$resData['route'] = $values['url'];
|
|
|
|
$resData['page'] = $values['page'];
|
|
|
|
$resData['data'] = [];
|
|
|
|
$keyInfo = $keyModel->read(['route'=>$values['route'],'page'=>$values['page']],['id','proof_key']);
|
|
|
|
if($keyInfo !== false){
|
|
|
|
$result_id_data[] = $keyInfo['id'];
|
|
|
|
$translate_data = json_decode($values['translate_data']['data'],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
$translate_data_keys = array_keys($translate_data);
|
|
|
|
$proof_key_data = json_decode($keyInfo['proof_key'],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
foreach ($proof_key_data as $value){
|
|
|
|
if(!in_array($value,$translate_data_keys)){
|
|
|
|
$translate_data[$value] = '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$resData['data'] = $translate_data;
|
|
|
|
$res_data[] = $resData;
|
|
|
|
}
|
|
|
|
$keyList = $keyModel->list(['id'=>['not in',$result_id_data]],'id',['id','proof_key','url','page']);
|
|
|
|
if(!empty($keyList)){
|
|
|
|
foreach ($keyList as $val){
|
|
|
|
$resData['route'] = $val['url'];
|
|
|
|
$resData['page'] = $val['page'];
|
|
|
|
$proof_key_data = json_decode($val['proof_key'],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
foreach ($proof_key_data as $value){
|
|
|
|
$resData[$value] = '';
|
|
|
|
}
|
|
|
|
$res_data[] = $resData;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $res_data;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :data值为空 按原key返回
|
|
|
|
* @name :resEmptyKeyList
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/11/22 17:45
|
|
|
|
*/
|
|
|
|
public function resEmptyData($keyList){
|
|
|
|
$res_data = [];
|
|
|
|
foreach ($keyList as $values){
|
|
|
|
$key_data = json_decode($values['proof_key'],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
$resData['route'] = $values['url'];
|
|
|
|
$resData['page'] = $values['page'];
|
|
|
|
foreach ($key_data as $key_val){
|
|
|
|
$resData['data'][] = [$key_val => ''];
|
|
|
|
}
|
|
|
|
$res_data[] = $resData;
|
|
|
|
}
|
|
|
|
return $res_data;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :图片列表
|
...
|
...
|
|