Files
li 1b24994e74 feat: 后端全量更新 - 含所有本次需求
- Contract.php: 返回合约账户余额(balance_contract)
- My.php: 地址管理增加BTC/ETH
- AppContract.php: 一键平仓(closeall)
- AppProxy.php: 代理专属注册链接 + 分级权限(L1/L2)
- site.php: 手续费减半(0.018→0.009)
- agent_permission_setup.sql: 代理权限SQL
- crypto_news_crawler.py: 新闻自动采集脚本
2026-03-30 20:16:32 +08:00

317 lines
9.4 KiB
PHP
Executable File

<?php
namespace app\api\controller;
use app\common\controller\Api;
use think\Db;
use think\Config;
/**
* 批量翻译接口
*/
class Fanyi extends Api
{
// 无需登录的接口,*表示全部
protected $noNeedLogin = ['*'];
// 无需鉴权的接口,*表示全部
protected $noNeedRight = ['*'];
public function test()
{
// 自动检测 auto 中文 zh 英语 en
// 粤语 yue 文言文 wyw 日语 jp
// 韩语 kor 法语 fra 西班牙语 spa
// 泰语 th 阿拉伯语 ara 俄语 ru
// 葡萄牙语 pt 德语 de 意大利语 it
// 希腊语 el 荷兰语 nl 波兰语 pl
// 保加利亚语 bul 爱沙尼亚语 est 丹麦语 dan
// 芬兰语 fin 捷克语 cs 罗马尼亚语 rom
// 斯洛文尼亚语 slo 瑞典语 swe 匈牙利语 hu
// 繁体中文 cht 越南语 vie 柬埔寨 hkm
$from = "auto";
$to = "pt";//de//it//jp//kor//may
$array = [
'请输入正确的地址' => '請輸入正確的地址',
'请输入正确的数量' => '請輸入正確的數量',
'请输入交易密码' => '請輸入交易密碼',
'请输入验证码' => '請輸入驗證碼',
'请选择提币的种类' => '請選擇提幣的種類',
'手机验证码不正确' => '手機驗證碼不正確',
'交易密码错误' => '交易密碼錯誤',
'操作频繁' => '操作頻繁',
'提币限额为' => '提幣限額為',
'余额不足' => '餘額不足',
'提交成功' => '提交成功',
'系统繁忙' => '系統繁忙',
'请输入备注' => '請輸入備註',
'抱歉,改地址信息不存在' => '抱歉,改地址資訊不存在',
'请选择正确的地址' => '請選擇正確的地址',
'请输入转入地址' => '請輸入轉入地址',
'请输入转入数量' => '請輸入轉入數量',
'请输入交易编号' => '請輸入交易編號',
'交易编号无效' => '交易編號無效',
'提交成功,请等待审核' => '提交成功,請等待稽核',
'请输入正确的互转用户' => '請輸入正確的互轉用戶',
'账户不存在' => '帳戶不存在',
'互转通道已关闭' => '互轉通道已關閉',
'互转限额为' => '互轉限額為',
'请完成实名' => '請完成實名',
'不可同类型划转' => '不可同類型劃轉',
'请输入有效数量' => '請輸入有效數量',
'改币种不支持划转' => '改幣種不支持劃轉',
'请选择正确划转类型' => '請選擇正確劃轉類型',
'划转成功' => '劃轉成功',
'类型错误' => '類型錯誤',
];
//var_dump($array);exit;
$num = 0;
foreach ($array as $key => $value) {
$key_arr[$key] = $num;
$num++;
}
$str = implode("\r\n", $array);
$res = $this->translate($str,$from,$to);
if(isset($res['trans_result'])){
$resl = $res['trans_result'];
}else{
$this->error("执行错误",$res);
}
foreach ($resl as $key => $value) {
// $new_arr[] = ucfirst($value['dst']);
$new_arr[] = $value['dst'];
}
// var_dump($new_arr);exit;
foreach ($key_arr as $key => $value) {
$key_arr[$key] = $new_arr[$value];
}
var_export($key_arr);exit;
$this->success("ok",$key_arr);
}
public function test2()
{
ignore_user_abort();
set_time_limit(0);
$from = "zh";
$to = "ara";
$array = [
"loadMore" => '
text3:"我的投资记录",
text4:"单笔限额",
text5:"周期",
text6:"天",
text7:"日收益率",
text8:"立即投资",
text9:"可用余额",
text10:"起投金额",
text11:"最大投资",
text12:"发布周期",
text13:"日利率",
text14:"投资金额",
text15:"请输入投资金额",
text16:"交易密码",
text17:"请输入交易密码",
text18:"项目规则",
text19:"项目名称",
text20:"还款方式",
text21:"日结利息,到期返本",
text22:"总利率",
text23:"收益说明",
text24:"投资记录",
text25:"产品名称",
text26:"投资状态",
text27:"已结束",
text28:"释放中",
text29:"投资时间",
text30:"查看详情",
text31:"投资详情",
text32:"累计收益",
text33:"累计收益天数",
text34:"数量",
text35:"时间"',
];
//
foreach ($array as $key => $value) {
$test1 = explode(",", $value);
$array[$key] = $test1;
}
// var_dump($array);exit;
foreach ($array as $key => $value) {
$new_value = [];
foreach ($value as $ke => $va) {
$va = str_replace(array("\r\n", "\r", "\n"," "," "), "", $va);
$keys = explode(":", $va);
// var_dump($keys);
$new_value[$keys[0]] = $keys[1];
}
$array[$key] = $new_value;
}
// var_dump($array);exit;
foreach ($array as $key => $value) {
$num = 0;
$key_arr = [];
foreach ($value as $ke => $va) {
$key_arr[$ke] = $num;
$num++;
}
// var_dump($value);exit;
$str = implode("\r\n", $value);
$str = str_replace("'","", $str);
// var_dump($str);exit;
$res = $this->translate($str,$from,$to);
// var_dump($res);exit;
if(isset($res['trans_result'])){
$resl = $res['trans_result'];
}else{
$this->error("执行错误",$res);
}
$new_arr = [];
foreach ($resl as $ke => $va) {
$new_arr[] = $va['dst'];
}
// if($key=="index"){
// var_dump($key_arr);exit;
// }
// var_dump($new_arr);exit;
foreach ($key_arr as $ke => $va) {
// if(!isset($new_arr[$va])){
// var_dump($key_arr);
// var_dump($new_arr);exit;
// }
$key_arr[$ke] = $new_arr[$va];
}
// var_dump($key_arr);exit;
$str = "";
foreach ($key_arr as $ke => $va) {
$va = str_replace(array("'", "\""), "", $va);
$va = ucfirst($va);
$str .= $ke.":'".$va."',\r\n";
}
// var_dump($str);exit;
$array[$key] = $str;
sleep(1);
}
print_r($array);exit;
$this->success("ok",$key_arr);
}
//翻译入口
public function translate($query, $from, $to)
{
$url = "http://api.fanyi.baidu.com/api/trans/vip/translate";
$appid = "20180212000122437";
$sec_key = "e6vQUYjgnYeroJZemtRv";
$args = array(
'q' => $query,
'appid' => $appid,
'salt' => rand(10000,99999),
'from' => $from,
'to' => $to,
);
$args['sign'] = $this->buildSign($query, $appid, $args['salt'], $sec_key);
$ret = $this->call($url, $args);
$ret = json_decode($ret, true);
return $ret;
}
//加密
public function buildSign($query, $appID, $salt, $secKey)
{/*{{{*/
$str = $appID . $query . $salt . $secKey;
$ret = md5($str);
return $ret;
}/*}}}*/
//发起网络请求
public function call($url, $args=null, $method="post", $testflag = 0, $timeout = 10, $headers=array())
{/*{{{*/
$ret = false;
$i = 0;
while($ret === false)
{
if($i > 1)
break;
if($i > 0)
{
sleep(1);
}
$ret = $this->callOnce($url, $args, $method, false, $timeout, $headers);
$i++;
}
return $ret;
}/*}}}*/
public function callOnce($url, $args=null, $method="post", $withCookie = false, $timeout = 10, $headers=array())
{/*{{{*/
$ch = curl_init();
if($method == "post")
{
$data = $this->convert($args);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_POST, 1);
}
else
{
$data = $this->convert($args);
if($data)
{
if(stripos($url, "?") > 0)
{
$url .= "&$data";
}
else
{
$url .= "?$data";
}
}
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(!empty($headers))
{
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
if($withCookie)
{
curl_setopt($ch, CURLOPT_COOKIEJAR, $_COOKIE);
}
$r = curl_exec($ch);
curl_close($ch);
return $r;
}/*}}}*/
public function convert(&$args)
{/*{{{*/
$data = '';
if (is_array($args))
{
foreach ($args as $key=>$val)
{
if (is_array($val))
{
foreach ($val as $k=>$v)
{
$data .= $key.'['.$k.']='.rawurlencode($v).'&';
}
}
else
{
$data .="$key=".rawurlencode($val)."&";
}
}
return trim($data, "&");
}
return $args;
}
}