...
 
Commits (2)
    https://gitcode.net/phpchina/shopxo/-/commit/4279ae4b91542e6ddad32fa8c102af477d75a5b2 语言文字错误修复 2023-04-27T21:06:06+08:00 gongfuxiang fuxiang.gong@qq.com https://gitcode.net/phpchina/shopxo/-/commit/c348d32266126ed025c68454b6cca84dbe9ab369 语言读取支持插件自动识别,用户登录信息读取优化,插件管理支持新标签 2023-04-27T21:06:47+08:00 gongfuxiang fuxiang.gong@qq.com
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'Zahlungsmethode', 'base_nav_title' => 'Zahlungsmethode',
'nav_store_payment_name' => 'Weitere Theme-Downloads', 'nav_store_payment_name' => 'Weitere Zahlungsmethode Downloads',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '"Der Klassenname muss mit dem Dateinamen übereinstimmen (remove.php). Wenn Alipay.php verwendet wird, wird Alipay verwendet."', 'name' => '"Der Klassenname muss mit dem Dateinamen übereinstimmen (remove.php). Wenn Alipay.php verwendet wird, wird Alipay verwendet."',
......
...@@ -856,7 +856,7 @@ return [ ...@@ -856,7 +856,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'PaymentMethod', 'base_nav_title' => 'PaymentMethod',
'nav_store_payment_name' => 'More topic downloads', 'nav_store_payment_name' => 'More PaymentMethod downloads',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '1. The class name must be consistent with the file name (remove. php). If Alipay.php, Alipay is used' 'name' => '1. The class name must be consistent with the file name (remove. php). If Alipay.php, Alipay is used'
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'Mode de paiement', 'base_nav_title' => 'Mode de paiement',
'nav_store_payment_name' => 'Plus de thèmes à télécharger', 'nav_store_payment_name' => 'Plus de paiement télécharger',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => 'Le nom de la classe doit correspondre au nom du fichier (supprimer.Php), comme alipay.php prend AliPay', 'name' => 'Le nom de la classe doit correspondre au nom du fichier (supprimer.Php), comme alipay.php prend AliPay',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'Metodo di pagamento', 'base_nav_title' => 'Metodo di pagamento',
'nav_store_payment_name' => 'Altri download dei temi', 'nav_store_payment_name' => 'Altri download pagamento',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '"Il nome della classe deve essere coerente con il nome del file (remove. php). Se Alipay.php è usato, Alipay è usato."', 'name' => '"Il nome della classe deve essere coerente con il nome del file (remove. php). Se Alipay.php è usato, Alipay è usato."',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => '支払い方法', 'base_nav_title' => '支払い方法',
'nav_store_payment_name' => 'その他のトピックのダウンロード', 'nav_store_payment_name' => 'その他の支払い方法のダウンロード',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '1.クラス名はファイル名に一致している必要があります(.phpを除く)、Alipay.phpの場合はAlipay', 'name' => '1.クラス名はファイル名に一致している必要があります(.phpを除く)、Alipay.phpの場合はAlipay',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => '지불 방식', 'base_nav_title' => '지불 방식',
'nav_store_payment_name' => '추가 테마 다운로드', 'nav_store_payment_name' => '추가 결제 방법 다운로드',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '1. 클래스 이름은 파일 이름과 일치해야 합니다 (.php 제거). Alipay.php의 경우 Alipay', 'name' => '1. 클래스 이름은 파일 이름과 일치해야 합니다 (.php 제거). Alipay.php의 경우 Alipay',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'Betalingsmethode', 'base_nav_title' => 'Betalingsmethode',
'nav_store_payment_name' => 'Meer thema downloads', 'nav_store_payment_name' => 'Meer Betalingsmethode downloads',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '"De klassenaam moet consistent zijn met de bestandsnaam (remove.php). Als Alipay.php wordt gebruikt, wordt Alipay gebruikt."', 'name' => '"De klassenaam moet consistent zijn met de bestandsnaam (remove.php). Als Alipay.php wordt gebruikt, wordt Alipay gebruikt."',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'форма платежа', 'base_nav_title' => 'форма платежа',
'nav_store_payment_name' => 'Загрузить больше тем', 'nav_store_payment_name' => 'Скачать больше способов оплаты ',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => 'Имя класса должно соответствовать имени файла (удалить.php), если Alipay.php берет Alipay', 'name' => 'Имя класса должно соответствовать имени файла (удалить.php), если Alipay.php берет Alipay',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'Método de pago', 'base_nav_title' => 'Método de pago',
'nav_store_payment_name' => 'Descarga de más temas', 'nav_store_payment_name' => 'Descarga de más métodos de pago',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '1. el nombre de la clase debe ser consistente con el nombre del archivo (eliminar. php), como alipay.php, Alipay', 'name' => '1. el nombre de la clase debe ser consistente con el nombre del archivo (eliminar. php), como alipay.php, Alipay',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'Betalningsmetod', 'base_nav_title' => 'Betalningsmetod',
'nav_store_payment_name' => 'Fler temahämtningar', 'nav_store_payment_name' => 'Ladda ner fler betalningsmetoder',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '"Klassnamnet måste överensstämma med filnamnet (remove. php). Om Alipay.php används används Alipay."', 'name' => '"Klassnamnet måste överensstämma med filnamnet (remove. php). Om Alipay.php används används Alipay."',
......
...@@ -843,7 +843,7 @@ return [ ...@@ -843,7 +843,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'วิธีการชำระเงิน', 'base_nav_title' => 'วิธีการชำระเงิน',
'nav_store_payment_name' => 'หัวข้อเพิ่มเติม ดาวน์โหลด', 'nav_store_payment_name' => 'วิธีการชำระเงินเพิ่มเติม ดาวน์โหลด',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '1. ชื่อคลาสต้องสอดคล้องกับชื่อไฟล์ (ถอด .php) เช่น Alipay.php ใช้ Alipay', 'name' => '1. ชื่อคลาสต้องสอดคล้องกับชื่อไฟล์ (ถอด .php) เช่น Alipay.php ใช้ Alipay',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => 'Phương thức thanh toán', 'base_nav_title' => 'Phương thức thanh toán',
'nav_store_payment_name' => 'Thêm chủ đề Download', 'nav_store_payment_name' => 'Thêm phương thức thanh toán Tải về',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => 'Tên lớp phải phù hợp với tên tệp (loại bỏ.php), chẳng hạn như Alipay.php hoặc Alipay.php', 'name' => 'Tên lớp phải phù hợp với tên tệp (loại bỏ.php), chẳng hạn như Alipay.php hoặc Alipay.php',
......
...@@ -841,7 +841,7 @@ return [ ...@@ -841,7 +841,7 @@ return [
// 支付方式 // 支付方式
'payment' => [ 'payment' => [
'base_nav_title' => '支付方式', 'base_nav_title' => '支付方式',
'nav_store_payment_name' => '更多主题下载', 'nav_store_payment_name' => '更多支付方式下载',
'upload_top_list_tips' => [ 'upload_top_list_tips' => [
[ [
'name' => '1. 类名必须于文件名一致(去除 .php ),如 Alipay.php 则取 Alipay', 'name' => '1. 类名必须于文件名一致(去除 .php ),如 Alipay.php 则取 Alipay',
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
<a href="{{:MyUrl('admin/pluginsadmin/download', array('id'=>$v['plugins']))}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-download" title="{{:MyLang('download_title')}}"></a> <a href="{{:MyUrl('admin/pluginsadmin/download', array('id'=>$v['plugins']))}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-download" title="{{:MyLang('download_title')}}"></a>
{{/if}} {{/if}}
<a href="javascript:;" data-set-url="{{:PluginsAdminUrl($v['plugins'], 'admin', 'index')}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-gear plugins-set-event" title="{{:MyLang('setup_title')}}"></a> <a href="javascript:;" data-set-url="{{:PluginsAdminUrl($v['plugins'], 'admin', 'index')}}" data-name="{{$v.name}}" data-key="{{$v.plugins}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-gear plugins-set-event" title="{{:MyLang('setup_title')}}"></a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-circle-o submit-ajax" data-url="{{:MyUrl('admin/pluginsadmin/uninstall')}}" data-id="{{$v.plugins}}" data-view="reload" data-msg="{{:MyLang('pluginsadmin.uninstall_confirm_tips')}}" title="{{:MyLang('uninstall_title')}}"></button> <button class="am-btn am-btn-default am-btn-xs am-radius am-icon-circle-o submit-ajax" data-url="{{:MyUrl('admin/pluginsadmin/uninstall')}}" data-id="{{$v.plugins}}" data-view="reload" data-msg="{{:MyLang('pluginsadmin.uninstall_confirm_tips')}}" title="{{:MyLang('uninstall_title')}}"></button>
......
...@@ -639,5 +639,111 @@ class Devtest extends Common ...@@ -639,5 +639,111 @@ class Devtest extends Common
} }
return $result; return $result;
} }
// 地区导入
public function Region()
{
die('禁止访问');
// $save_file = ROOT.'region_text.text';
// excel读取
// // 获取导入数据
// $file = ROOT.'KEN_ALL_ROME.xlsx';
// $ret = (new \base\Excel())->Import($file);
// if($ret['code'] != 0)
// {
// die($ret['msg']);
// }
// if(empty($ret['data']) || empty($ret['data']['title']) || empty($ret['data']['data']))
// {
// die('导入数据为空');
// }
// // 数据组合
// $data = [];
// foreach(array_chunk($ret['data']['data'], 1000) as $v)
// {
// foreach($v as $vs)
// {
// if(!array_key_exists($vs[1], $data))
// {
// $data[$vs[1]] = [
// 'name' =>$vs[1],
// 'code' => '',
// 'item' => [],
// ];
// }
// $temp = str_replace([' ', ' '], '', $vs[2]);
// if(!array_key_exists($temp, $data[$vs[1]]['item']))
// {
// $data[$vs[1]]['item'][$temp] = [
// 'name' => $temp,
// 'code' => '',
// 'item' => [],
// ];
// }
// $temp2 = explode('(', $vs[3]);
// if(!array_key_exists($temp2[0], $data[$vs[1]]['item'][$temp]['item']))
// {
// $data[$vs[1]]['item'][$temp]['item'][$temp2[0]] = [
// 'name' => $temp2[0],
// 'code' => $vs[0],
// ];
// }
// }
// }
// file_put_contents($save_file, json_encode($data, JSON_UNESCAPED_UNICODE));
// echo 'ok';
// echo '<pre>';
// print_r($data);
// 导入
// $data = json_decode(file_get_contents($save_file), true);
// // echo '<pre>';
// // print_r($data);
// foreach(array_chunk($data, 50) as $v)
// {
// foreach($v as $v1)
// {
// $insert = [
// 'name' => $v1['name'],
// 'code' => empty($v1['code']) ? '' : $v1['code'],
// 'level' => 1,
// 'add_time' => time(),
// ];
// $id1 = Db::name('Region')->insertGetId($insert);
// if($id1 > 0 && !empty($v1['item']))
// {
// foreach($v1['item'] as $v2)
// {
// $insert = [
// 'pid' => $id1,
// 'name' => $v2['name'],
// 'code' => empty($v2['code']) ? '' : $v2['code'],
// 'level' => 2,
// 'add_time' => time(),
// ];
// $id2 = Db::name('Region')->insertGetId($insert);
// if($id2 > 0 && !empty($v2['item']))
// {
// $all = [];
// foreach($v2['item'] as $v3)
// {
// $all[] = [
// 'pid' => $id2,
// 'name' => $v3['name'],
// 'code' => empty($v3['code']) ? '' : $v3['code'],
// 'level' => 3,
// 'add_time' => time(),
// ];
// }
// Db::name('Region')->insertAll($all);
// }
// }
// }
// }
// }
// echo 'ok';
}
} }
?> ?>
\ No newline at end of file
...@@ -195,14 +195,40 @@ function MyLang($key, $vars = [], $lang = '', $plugins = '') ...@@ -195,14 +195,40 @@ function MyLang($key, $vars = [], $lang = '', $plugins = '')
APP_PATH.$request_module.DS.'lang'.DS.$current_lang.'.php', APP_PATH.$request_module.DS.'lang'.DS.$current_lang.'.php',
APP_PATH.'lang'.DS.$current_lang.'.php', APP_PATH.'lang'.DS.$current_lang.'.php',
]; ];
// 是否插件语言
if(!empty($plugins) || RequestController() == 'plugins') // 是否插件语言、未指定则处理
if(empty($plugins))
{
$pluginsname = MyInput('pluginsname');
if(empty($pluginsname) && RequestController() != 'plugins')
{
// 获取最新一条回溯跟踪
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1);
if(!empty($backtrace) && !empty($backtrace[0]) && !empty($backtrace[0]['file']))
{
$str = 'app/plugins/';
$loc = stripos($backtrace[0]['file'], $str);
if($loc !== false)
{
$temp = explode($str, $backtrace[0]['file']);
if(count($temp) > 1)
{
$pluginsname = explode('/', $temp[1])[0];
}
}
}
}
} else {
$pluginsname = $plugins;
}
if(!empty($pluginsname))
{ {
$pluginsname = empty($plugins) ? MyInput('pluginsname') : $plugins;
$plugins_dir = APP_PATH.'plugins'.DS.$pluginsname.DS.'lang'.DS; $plugins_dir = APP_PATH.'plugins'.DS.$pluginsname.DS.'lang'.DS;
array_unshift($arr_file, $plugins_dir.$current_lang.'.php'); array_unshift($arr_file, $plugins_dir.$current_lang.'.php');
array_unshift($arr_file, $plugins_dir.$request_module.DS.$current_lang.'.php'); array_unshift($arr_file, $plugins_dir.$request_module.DS.$current_lang.'.php');
} }
// 循环获取语言时间
foreach($arr_file as $file) foreach($arr_file as $file)
{ {
$md5_key = md5($file); $md5_key = md5($file);
...@@ -248,13 +274,13 @@ function MyLang($key, $vars = [], $lang = '', $plugins = '') ...@@ -248,13 +274,13 @@ function MyLang($key, $vars = [], $lang = '', $plugins = '')
} }
// 未找到对应语言 // 未找到对应语言
if($value == '' || $key == $value) if($value == '')
{ {
// 非默认语言则读取默认语言 // 非默认语言则读取默认语言
$default_lang = MyConfig('lang.default_lang'); $default_lang = MyConfig('lang.default_lang');
if($default_lang != $lang) if($default_lang != $lang)
{ {
$value = MyLang($key, $vars, $default_lang); $value = MyLang($key, $vars, $default_lang, $pluginsname);
} }
} }
...@@ -2937,7 +2963,7 @@ function ParamsChecked($data, $params) ...@@ -2937,7 +2963,7 @@ function ParamsChecked($data, $params)
return MyLang('common_function.check_config_error_tips'); return MyLang('common_function.check_config_error_tips');
} }
foreach ($params as $v) foreach($params as $v)
{ {
if(empty($v['key_name']) || empty($v['error_msg'])) if(empty($v['key_name']) || empty($v['error_msg']))
{ {
......
...@@ -67,7 +67,7 @@ class AppMiniUserService ...@@ -67,7 +67,7 @@ class AppMiniUserService
if($ret['code'] == 0) if($ret['code'] == 0)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'alipay_openid', $ret['data']['user_id']); $user = UserService::AppUserInfoHandle(['where_field'=>'alipay_openid', 'where_value'=>$ret['data']['user_id']]);
if(empty($user)) if(empty($user))
{ {
$ret = DataReturn(MyLang('common_service.appminiuser.auth_login_success_tips'), 0, ['is_user_exist'=>0, 'openid'=>$ret['data']['user_id']]); $ret = DataReturn(MyLang('common_service.appminiuser.auth_login_success_tips'), 0, ['is_user_exist'=>0, 'openid'=>$ret['data']['user_id']]);
...@@ -116,7 +116,7 @@ class AppMiniUserService ...@@ -116,7 +116,7 @@ class AppMiniUserService
if($ret === true) if($ret === true)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'alipay_openid', $params['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'alipay_openid', 'where_value'=>$params['openid']]);
if(empty($user)) if(empty($user))
{ {
// 字段名称不一样参数处理 // 字段名称不一样参数处理
...@@ -162,11 +162,11 @@ class AppMiniUserService ...@@ -162,11 +162,11 @@ class AppMiniUserService
$unionid = empty($ret['data']['unionid']) ? '' : $ret['data']['unionid']; $unionid = empty($ret['data']['unionid']) ? '' : $ret['data']['unionid'];
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'weixin_openid', $ret['data']['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'weixin_openid', 'where_value'=>$ret['data']['openid']]);
if(empty($user) && !empty($unionid)) if(empty($user) && !empty($unionid))
{ {
// 根据unionid获取数据 // 根据unionid获取数据
$user = UserService::AppUserInfoHandle(null, 'weixin_unionid', $unionid); $user = UserService::AppUserInfoHandle(['where_field'=>'weixin_unionid', 'where_value'=>$unionid]);
} }
if(empty($user)) if(empty($user))
{ {
...@@ -200,7 +200,7 @@ class AppMiniUserService ...@@ -200,7 +200,7 @@ class AppMiniUserService
// 是否重新获取用户信息 // 是否重新获取用户信息
if($status) if($status)
{ {
$user = UserService::AppUserInfoHandle($user['id']); $user = UserService::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$user['id']]);
} }
} }
...@@ -247,7 +247,7 @@ class AppMiniUserService ...@@ -247,7 +247,7 @@ class AppMiniUserService
if($ret === true) if($ret === true)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'weixin_openid', $params['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'weixin_openid', 'where_value'=>$params['openid']]);
if(empty($user)) if(empty($user))
{ {
// 字段名称不一样参数处理 // 字段名称不一样参数处理
...@@ -295,7 +295,7 @@ class AppMiniUserService ...@@ -295,7 +295,7 @@ class AppMiniUserService
if($ret['code'] == 0) if($ret['code'] == 0)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'baidu_openid', $ret['data']['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'baidu_openid', 'where_value'=>$ret['data']['openid']]);
if(!empty($user)) if(!empty($user))
{ {
// 用户状态 // 用户状态
...@@ -341,7 +341,7 @@ class AppMiniUserService ...@@ -341,7 +341,7 @@ class AppMiniUserService
if($ret === true) if($ret === true)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'baidu_openid', $params['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'baidu_openid', 'where_value'=>$params['openid']]);
if(empty($user)) if(empty($user))
{ {
$auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true); $auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true);
...@@ -418,11 +418,11 @@ class AppMiniUserService ...@@ -418,11 +418,11 @@ class AppMiniUserService
$unionid = empty($ret['data']['unionid']) ? '' : $ret['data']['unionid']; $unionid = empty($ret['data']['unionid']) ? '' : $ret['data']['unionid'];
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'toutiao_openid', $ret['data']['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'toutiao_openid', 'where_value'=>$ret['data']['openid']]);
if(empty($user) && !empty($unionid)) if(empty($user) && !empty($unionid))
{ {
// 根据unionid获取数据 // 根据unionid获取数据
$user = UserService::AppUserInfoHandle(null, 'toutiao_unionid', $unionid); $user = UserService::AppUserInfoHandle(['where_field'=>'toutiao_unionid', 'where_value'=>$unionid]);
} }
if(empty($user)) if(empty($user))
{ {
...@@ -447,7 +447,7 @@ class AppMiniUserService ...@@ -447,7 +447,7 @@ class AppMiniUserService
// 是否重新获取用户信息 // 是否重新获取用户信息
if($status) if($status)
{ {
$user = UserService::AppUserInfoHandle($user['id']); $user = UserService::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$user['id']]);
} }
} }
...@@ -494,7 +494,7 @@ class AppMiniUserService ...@@ -494,7 +494,7 @@ class AppMiniUserService
if($ret === true) if($ret === true)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'toutiao_openid', $params['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'toutiao_openid', 'where_value'=>$params['openid']]);
if(empty($user)) if(empty($user))
{ {
$auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true); $auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true);
...@@ -538,7 +538,7 @@ class AppMiniUserService ...@@ -538,7 +538,7 @@ class AppMiniUserService
if($ret['code'] == 0) if($ret['code'] == 0)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'kuaishou_openid', $ret['data']['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'kuaishou_openid', 'where_value'=>$ret['data']['openid']]);
if(empty($user)) if(empty($user))
{ {
$ret = DataReturn(MyLang('common_service.appminiuser.auth_login_success_tips'), 0, ['is_user_exist'=>0, 'openid'=>$ret['data']['openid']]); $ret = DataReturn(MyLang('common_service.appminiuser.auth_login_success_tips'), 0, ['is_user_exist'=>0, 'openid'=>$ret['data']['openid']]);
...@@ -584,7 +584,7 @@ class AppMiniUserService ...@@ -584,7 +584,7 @@ class AppMiniUserService
if($ret === true) if($ret === true)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'kuaishou_openid', $params['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'kuaishou_openid', 'where_value'=>$params['openid']]);
if(empty($user)) if(empty($user))
{ {
$auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true); $auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true);
...@@ -630,11 +630,11 @@ class AppMiniUserService ...@@ -630,11 +630,11 @@ class AppMiniUserService
$unionid = empty($ret['data']['unionid']) ? '' : $ret['data']['unionid']; $unionid = empty($ret['data']['unionid']) ? '' : $ret['data']['unionid'];
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'qq_openid', $ret['data']['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'qq_openid', 'where_value'=>$ret['data']['openid']]);
if(empty($user) && !empty($unionid)) if(empty($user) && !empty($unionid))
{ {
// 根据unionid获取数据 // 根据unionid获取数据
$user = UserService::AppUserInfoHandle(null, 'qq_unionid', $unionid); $user = UserService::AppUserInfoHandle(['where_field'=>'qq_unionid', 'where_value'=>$unionid]);
} }
if(empty($user)) if(empty($user))
{ {
...@@ -659,7 +659,7 @@ class AppMiniUserService ...@@ -659,7 +659,7 @@ class AppMiniUserService
// 是否重新获取用户信息 // 是否重新获取用户信息
if($status) if($status)
{ {
$user = UserService::AppUserInfoHandle($user['id']); $user = UserService::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$user['id']]);
} }
} }
...@@ -709,7 +709,7 @@ class AppMiniUserService ...@@ -709,7 +709,7 @@ class AppMiniUserService
if($ret === true) if($ret === true)
{ {
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'qq_openid', $params['openid']); $user = UserService::AppUserInfoHandle(['where_field'=>'qq_openid', 'where_value'=>$params['openid']]);
if(empty($user)) if(empty($user))
{ {
$auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true); $auth_data = is_array($params['auth_data']) ? $params['auth_data'] : json_decode(htmlspecialchars_decode($params['auth_data']), true);
......
...@@ -150,7 +150,7 @@ class PayLogService ...@@ -150,7 +150,7 @@ class PayLogService
'status' => 1, 'status' => 1,
'pay_time' => time(), 'pay_time' => time(),
]; ];
if(Db::name('PayLog')->where(['id'=>intval($params['log_id']), 'status'=>0])->update($data)) if(Db::name('PayLog')->where(['id'=>intval($params['log_id']), 'status'=>0])->update($data) !== false)
{ {
return DataReturn(MyLang('update_success'), 0); return DataReturn(MyLang('update_success'), 0);
} }
......
...@@ -339,7 +339,7 @@ class SystemBaseService ...@@ -339,7 +339,7 @@ class SystemBaseService
} }
/** /**
* 商品优记录 * 商品优记录
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
......
...@@ -235,32 +235,38 @@ class UserService ...@@ -235,32 +235,38 @@ class UserService
{ {
// 静态数据避免重复读取 // 静态数据避免重复读取
static $user_login_info = null; static $user_login_info = null;
if($user_login_info === null) if($user_login_info === null && $is_cache)
{ {
$user_login_info = self::CacheLoginUserInfo(); $user_login_info = self::CacheLoginUserInfo();
} }
// 非退出操作则重新设置用户信息
if(!empty($user_login_info) && RequestAction() != 'logout') // 缓存为空则重新读取
if(empty($user_login_info))
{ {
// 是否缓存读取 if(APPLICATION == 'web')
if($is_cache)
{ {
// 重新更新用户session或cookie缓存 // web用户session
self::UserLoginRecord($user_login_info['id']); $user_login_info = MySession(self::$user_login_key);
// 重新存储用户缓存
if(!empty($user_login_info['token']))
{
MyCache(SystemService::CacheKey('shopxo.cache_user_info').$user_login_info['token'], $user_login_info);
}
} else { } else {
if(APPLICATION == 'web') $params = input();
if(!empty($params['token']))
{ {
self::UserLoginRecord($user_login_info['id']); $user_login_info = self::UserTokenData($params['token']);
} else {
$user_login_info = self::UserTokenData($user_login_info['token']);
} }
} }
} }
// 非退出操作则重新设置用户信息
if(!empty($user_login_info) && RequestAction() != 'logout' && MyInput('pluginsaction') != 'logout')
{
// 重新更新用户session或cookie缓存
self::UserLoginRecord($user_login_info['id']);
// 重新存储用户缓存
if(!empty($user_login_info['token']))
{
MyCache(SystemService::CacheKey('shopxo.cache_user_info').$user_login_info['token'], $user_login_info);
}
}
return $user_login_info; return $user_login_info;
} }
...@@ -283,7 +289,7 @@ class UserService ...@@ -283,7 +289,7 @@ class UserService
} }
// 数据库校验 // 数据库校验
return self::AppUserInfoHandle(null, 'token', $token); return self::AppUserInfoHandle(['where_field'=>'token', 'where_value'=>$token, 'is_refresh_token'=>0]);
} }
/** /**
...@@ -1323,7 +1329,7 @@ class UserService ...@@ -1323,7 +1329,7 @@ class UserService
// 成功返回 // 成功返回
if(APPLICATION == 'app') if(APPLICATION == 'app')
{ {
$result = self::AppUserInfoHandle(0, null, null, $user); $result = self::AppUserInfoHandle(['user'=>$user]);
} else { } else {
// 登录记录 // 登录记录
if(!self::UserLoginRecord(0, $user)) if(!self::UserLoginRecord(0, $user))
...@@ -1489,7 +1495,7 @@ class UserService ...@@ -1489,7 +1495,7 @@ class UserService
// 成功返回 // 成功返回
if(APPLICATION == 'app') if(APPLICATION == 'app')
{ {
$result = self::AppUserInfoHandle($user_ret['data']['user_id']); $result = self::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$user_ret['data']['user_id']]);
} else { } else {
$result = $user_ret['data']; $result = $user_ret['data'];
} }
...@@ -2217,7 +2223,7 @@ class UserService ...@@ -2217,7 +2223,7 @@ class UserService
]; ];
if(Db::name('User')->where(['id'=>$user['id']])->update($upd_data)) if(Db::name('User')->where(['id'=>$user['id']])->update($upd_data))
{ {
return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle($user['id'])); return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$user['id']]));
} }
} else { } else {
if($user['id'] != $temp['id']) if($user['id'] != $temp['id'])
...@@ -2277,7 +2283,7 @@ class UserService ...@@ -2277,7 +2283,7 @@ class UserService
} }
} }
} }
return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle($unionid_user_base['id'])); return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$unionid_user_base['id']]));
} }
} }
...@@ -2309,7 +2315,7 @@ class UserService ...@@ -2309,7 +2315,7 @@ class UserService
} }
if(self::UserPlatformInsert($user_platform_insert, $params)) if(self::UserPlatformInsert($user_platform_insert, $params))
{ {
return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle($user['id'])); return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$user['id']]));
} }
} else { } else {
$is_insert_user = true; $is_insert_user = true;
...@@ -2334,11 +2340,11 @@ class UserService ...@@ -2334,11 +2340,11 @@ class UserService
{ {
return DataReturn(MyLang('common_service.user.user_not_audit_tips'), -110); return DataReturn(MyLang('common_service.user.user_not_audit_tips'), -110);
} }
return DataReturn(MyLang('auth_success'), 0, self::AppUserInfoHandle($ret['data']['user_id'])); return DataReturn(MyLang('auth_success'), 0, self::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$ret['data']['user_id']]));
} }
return $ret; return $ret;
} }
return DataReturn(MyLang('auth_success'), 0, self::AppUserInfoHandle(null, null, null, $data)); return DataReturn(MyLang('auth_success'), 0, self::AppUserInfoHandle(['user'=>$data]));
} }
/** /**
...@@ -2421,38 +2427,38 @@ class UserService ...@@ -2421,38 +2427,38 @@ class UserService
* @version 1.0.0 * @version 1.0.0
* @date 2018-11-06 * @date 2018-11-06
* @desc description * @desc description
* @param [int] $user_id [指定用户id] * @param [array] $params [输入参数]
* @param [string] $where_field [字段名称]
* @param [string] $where_value [字段值]
* @param [array] $user [用户信息]
*/ */
public static function AppUserInfoHandle($user_id = null, $where_field = null, $where_value = null, $user = []) public static function AppUserInfoHandle($params = [])
{ {
// 获取用户信息 // 获取用户信息
if(!empty($user_id)) if(!empty($params['user_id']))
{ {
$user = self::UserHandle(self::UserInfo('id', $user_id)); $params['user'] = self::UserHandle(self::UserInfo('id', $params['user_id']));
} elseif(!empty($where_field) && !empty($where_value) && empty($user)) } elseif(!empty($params['where_field']) && !empty($params['where_value']) && empty($params['user']))
{ {
$user = self::UserHandle(self::UserInfo($where_field, $where_value)); $params['user'] = self::UserHandle(self::UserInfo($params['where_field'], $params['where_value']));
} }
if(!empty($user)) if(!empty($params['user']))
{ {
// 是否强制绑定手机号码 // 是否强制绑定手机号码
$user['is_mandatory_bind_mobile'] = intval(MyC('common_user_is_mandatory_bind_mobile')); $params['user']['is_mandatory_bind_mobile'] = intval(MyC('common_user_is_mandatory_bind_mobile'));
// 基础处理 // 基础处理
if(!empty($user['id'])) if(!empty($params['user']['id']))
{ {
// 会员码生成处理 // 会员码生成处理
if(empty($user['number_code'])) if(empty($params['user']['number_code']))
{ {
$user['number_code'] = self::UserNumberCodeCreatedHandle($user['id']); $params['user']['number_code'] = self::UserNumberCodeCreatedHandle($params['user']['id']);
} }
// 重新生成token更新到数据库并缓存 // 重新生成token更新到数据库并缓存
$user = self::UserTokenUpdate($user['id'], $user); if(!isset($params['is_refresh_token']) || $params['is_refresh_token'] == 1)
{
$params['user'] = self::UserTokenUpdate($params['user']['id'], $params['user']);
}
} }
// 用户信息钩子 // 用户信息钩子
...@@ -2460,13 +2466,12 @@ class UserService ...@@ -2460,13 +2466,12 @@ class UserService
MyEventTrigger($hook_name, [ MyEventTrigger($hook_name, [
'hook_name' => $hook_name, 'hook_name' => $hook_name,
'is_backend' => true, 'is_backend' => true,
'user_id' => $user_id, 'user_id' => $params['user']['id'],
'where_field' => $where_field, 'user' => &$params['user'],
'where_value' => $where_value, 'params' => $params,
'user' => &$user,
]); ]);
} }
return $user; return $params['user'];
} }
/** /**
...@@ -2917,7 +2922,7 @@ class UserService ...@@ -2917,7 +2922,7 @@ class UserService
{ {
// 清除验证码 // 清除验证码
$obj->Remove(); $obj->Remove();
return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle($user_id)); return DataReturn(MyLang('bind_success'), 0, self::AppUserInfoHandle(['where_field'=>'user_id', 'where_value'=>$user_id]));
} }
return DataReturn(MyLang('bind_fail'), -100); return DataReturn(MyLang('bind_fail'), -100);
} }
......
...@@ -55,7 +55,7 @@ class WalletPay ...@@ -55,7 +55,7 @@ class WalletPay
// 基础信息 // 基础信息
$base = [ $base = [
'name' => '钱包支付', // 插件名称 'name' => '钱包支付', // 插件名称
'version' => '0.0.3', // 插件版本 'version' => '0.0.4', // 插件版本
'apply_version' => '不限', // 适用系统版本描述 'apply_version' => '不限', // 适用系统版本描述
'desc' => '钱包余额支付', // 插件描述(支持html) 'desc' => '钱包余额支付', // 插件描述(支持html)
'author' => 'Devil', // 开发者 'author' => 'Devil', // 开发者
...@@ -122,7 +122,7 @@ class WalletPay ...@@ -122,7 +122,7 @@ class WalletPay
} }
// 处理支付 // 处理支付
$ret = WalletService::UserWalletMoneyUpdate($params['user']['id'], $params['total_price'], 0, 'normal_money', 3, '钱包余额支付[订单'.$params['order_no'].']'); $ret = WalletService::UserWalletMoneyUpdate($params['user']['id'], $params['total_price'], 0, 'normal_money', 3, '钱包余额支付[订单'.$params['order_no'].']', ['is_consistent'=>1]);
if($ret['code'] == 0) if($ret['code'] == 0)
{ {
// 支付方式 // 支付方式
...@@ -160,7 +160,7 @@ class WalletPay ...@@ -160,7 +160,7 @@ class WalletPay
'order' => $order_list, 'order' => $order_list,
'payment' => $payment[0], 'payment' => $payment[0],
'pay_log_data' => $pay_log_data, 'pay_log_data' => $pay_log_data,
'pay' => [ 'pay' => [
'trade_no' => '钱包支付', 'trade_no' => '钱包支付',
'subject' => $pay_log_data['subject'], 'subject' => $pay_log_data['subject'],
'buyer_user' => (empty($params['user']) || empty($params['user']['user_name_view'])) ? '' : $params['user']['user_name_view'], 'buyer_user' => (empty($params['user']) || empty($params['user']['user_name_view'])) ? '' : $params['user']['user_name_view'],
......
...@@ -182,6 +182,94 @@ function StoreAccountsPopupOpen() ...@@ -182,6 +182,94 @@ function StoreAccountsPopupOpen()
}); });
} }
/**
* 管理顶部菜单添加处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-04-24
* @desc description
* @param {[string]} url [url地址]
* @param {[string]} name [展示名称]
* @param {[string]} key [唯一key值]
* @param {[string]} type [类型 nav 或 menu]
* @param {[boolean]} is_reload [重新加载]
*/
function AdminTopNavIframeAddHandle(url, name, key, type = 'nav', is_reload = false)
{
if((url || null) != null)
{
if($('#ifcontent').length > 0)
{
// 先隐藏所有的iframe
// 页面未打开则添加iframe并打开
if($('#ifcontent .iframe-item-key-'+key).length == 0)
{
var html = `<div class="window-layer am-radius am-nbfc iframe-item-key-`+key+`" data-key="`+key+`">
<div class="window-layer-tab-bar">
<span>`+name+`</span>
<div class="am-fr">
<span class="refresh am-icon-refresh"></span>
<span class="recovery am-icon-eject"></span>
<span class="close am-icon-close"></span>
</div>
</div>
<iframe src="`+url+`" width="100%" height="100%"></iframe>
<div class="window-layer-seat"></div>
<div class="window-layer-resize-bar">
<div data-type="left" class="window-layer-resize-item-left"></div>
<div data-type="right" class="window-layer-resize-item-right"></div>
<div data-type="top" class="window-layer-resize-item-top"></div>
<div data-type="bottom" class="window-layer-resize-item-bottom"></div>
<div data-type="left-top" class="window-layer-resize-item-left-top"></div>
<div data-type="right-top" class="window-layer-resize-item-right-top"></div>
<div data-type="left-bottom" class="window-layer-resize-item-left-bottom"></div>
<div data-type="right-bottom" class="window-layer-resize-item-right-bottom"></div>
</div>
</div>`;
$('#ifcontent').append(html);
} else {
if(is_reload)
{
var $obj = $('#ifcontent .iframe-item-key-'+key+' iframe');
$obj.attr('src', $obj.attr('src'));
}
}
// 添加快捷导航
if($('.header-menu-open-pages-list ul li.nav-item-key-'+key).length == 0)
{
var html = `<li data-url="`+url+`" data-key="`+key+`" class="nav-item-key-`+key+`">
<span>`+name+`</span>
<a href="javascript:;" class="am-icon-close"></a>
</li>`;
$('.header-menu-open-pages-list ul').append(html);
}
// 模拟点击当前元素
$('.header-menu-open-pages-list ul li.nav-item-key-'+key).trigger('click');
// 顶部菜单事件,关闭弹层
if(type == 'nav')
{
if($(document).width() < 641)
{
$('.header-nav-submit').trigger('click');
} else {
$(this).parents('.admin-header-list').trigger('click');
}
}
// 关闭左侧弹层
if(type == 'menu')
{
$('#admin-offcanvas').offCanvas('close');
}
} else {
window.location.href = url;
}
}
}
$(function() $(function()
{ {
// 插件更新操作事件 // 插件更新操作事件
......
...@@ -62,69 +62,8 @@ $(function() ...@@ -62,69 +62,8 @@ $(function()
var url = $(this).data('url') || null; var url = $(this).data('url') || null;
var type = $(this).data('type'); var type = $(this).data('type');
var key = $(this).data('key'); var key = $(this).data('key');
if(url != null) var name = $(this).data('node-name') || $(this).find('.nav-name').text();
{ AdminTopNavIframeAddHandle(url, name, key, type);
// 名称
var name = $(this).data('node-name') || $(this).find('.nav-name').text();
// 先隐藏所有的iframe
// 页面未打开则添加iframe并打开
if($('#ifcontent .iframe-item-key-'+key).length == 0)
{
var html = `<div class="window-layer am-radius am-nbfc iframe-item-key-`+key+`" data-key="`+key+`">
<div class="window-layer-tab-bar">
<span>`+name+`</span>
<div class="am-fr">
<span class="refresh am-icon-refresh"></span>
<span class="recovery am-icon-eject"></span>
<span class="close am-icon-close"></span>
</div>
</div>
<iframe src="`+url+`" width="100%" height="100%"></iframe>
<div class="window-layer-seat"></div>
<div class="window-layer-resize-bar">
<div data-type="left" class="window-layer-resize-item-left"></div>
<div data-type="right" class="window-layer-resize-item-right"></div>
<div data-type="top" class="window-layer-resize-item-top"></div>
<div data-type="bottom" class="window-layer-resize-item-bottom"></div>
<div data-type="left-top" class="window-layer-resize-item-left-top"></div>
<div data-type="right-top" class="window-layer-resize-item-right-top"></div>
<div data-type="left-bottom" class="window-layer-resize-item-left-bottom"></div>
<div data-type="right-bottom" class="window-layer-resize-item-right-bottom"></div>
</div>
</div>`;
$('#ifcontent').append(html);
}
// 添加快捷导航
if($('.header-menu-open-pages-list ul li.nav-item-key-'+key).length == 0)
{
var html = `<li data-url="`+url+`" data-key="`+key+`" class="nav-item-key-`+key+`">
<span>`+name+`</span>
<a href="javascript:;" class="am-icon-close"></a>
</li>`;
$('.header-menu-open-pages-list ul').append(html);
}
// 模拟点击当前元素
$('.header-menu-open-pages-list ul li.nav-item-key-'+key).trigger('click');
// 顶部菜单事件,关闭弹层
if(type == 'nav')
{
if($(document).width() < 641)
{
$('.header-nav-submit').trigger('click');
} else {
$(this).parents('.admin-header-list').trigger('click');
}
}
// 关闭左侧弹层
if(type == 'menu')
{
$('#admin-offcanvas').offCanvas('close');
}
}
}); });
// 菜单选择 // 菜单选择
......
...@@ -53,7 +53,7 @@ $(function() ...@@ -53,7 +53,7 @@ $(function()
{ {
Prompt(window['lang_not_enable_tips'] || '请先点击勾勾启用'); Prompt(window['lang_not_enable_tips'] || '请先点击勾勾启用');
} else { } else {
window.location.href = $(this).data('set-url'); window.parent.AdminTopNavIframeAddHandle($(this).data('set-url'), $(this).data('name'), $(this).data('key'), 'nnav', true);
} }
}); });
......