diff --git a/system/MySQL/20230715.php b/system/MySQL/20230715.php new file mode 100644 index 0000000..16d15f8 --- /dev/null +++ b/system/MySQL/20230715.php @@ -0,0 +1,9 @@ +$file_name,'update_time'=>time(),'status'=>'TRUE','extra'=>'']); +}else{ + msg(-1,'数据库更新失败'); +} diff --git a/system/MySQL/install.sql b/system/MySQL/install.sql index 266829d..de1de6a 100644 --- a/system/MySQL/install.sql +++ b/system/MySQL/install.sql @@ -46,6 +46,7 @@ INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALU INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230420.php', '1681977368', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230518.php', '1684393068', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230522.php', '1684762253', 'TRUE', ''); +INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230715.php', '1684762253', 'TRUE', ''); -- 创建用户表 DROP TABLE IF EXISTS `global_user`; @@ -109,6 +110,7 @@ CREATE TABLE IF NOT EXISTS `user_links` ( `url` text NOT NULL COMMENT '主链接', `url_standby` text NOT NULL COMMENT '备用链接', `weight` int(11) NOT NULL DEFAULT '0' COMMENT '权重', + `keywords` text NOT NULL DEFAULT '' COMMENT '关键字', `description` text NOT NULL DEFAULT '' COMMENT '描述', `icon` text NOT NULL DEFAULT '' COMMENT '图标', `click` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '点击数', diff --git a/system/SQLite/20230715.php b/system/SQLite/20230715.php new file mode 100644 index 0000000..ca90532 --- /dev/null +++ b/system/SQLite/20230715.php @@ -0,0 +1,9 @@ +$file_name,'update_time'=>time(),'status'=>'TRUE','extra'=>'']); +}else{ + msg(-1,'数据库更新失败'); +} diff --git a/system/SQLite/install.sql b/system/SQLite/install.sql index 741e950..01c0659 100644 --- a/system/SQLite/install.sql +++ b/system/SQLite/install.sql @@ -38,6 +38,7 @@ CREATE TABLE IF NOT EXISTS "updatadb_logs" ( INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230417.php', '1681719049', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230420.php', '1681977368', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230522.php', '1684762253', 'TRUE', ''); +INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230715.php', '1684762253', 'TRUE', ''); -- 创建用户表 CREATE TABLE IF NOT EXISTS "global_user" ( @@ -93,6 +94,7 @@ CREATE TABLE IF NOT EXISTS "user_links" ( "url" TEXT(1024) NOT NULL, "url_standby" text NOT NULL DEFAULT "", "weight" integer(11) NOT NULL DEFAULT 0, + "keywords" TEXT(128) NOT NULL DEFAULT "", "description" TEXT(128) NOT NULL DEFAULT "", "icon" text NOT NULL DEFAULT "", "click" integer(10) NOT NULL DEFAULT 0, diff --git a/system/api.php b/system/api.php index 2a8a3ec..0476906 100644 --- a/system/api.php +++ b/system/api.php @@ -378,6 +378,7 @@ function write_link(){ $url = $_POST['url']; $icon = empty($_POST['icon']) ? '' : $_POST['icon']; $description = empty($_POST['description']) ? '' : $_POST['description']; + $keywords = empty($_POST['keywords']) ? '' : $_POST['keywords']; $property = empty($_POST['property']) ? 0 : 1; //检测链接是否合法 check_link($fid,$title,$url,$_POST['url_standby']); @@ -390,7 +391,10 @@ function write_link(){ if($length_limit['l_desc'] > 0 && strlen($description) > $length_limit['l_desc'] ){ msg(-1,'描述长度不能大于'.$length_limit['l_desc'].'个字节'); } - + //关键字长度检测 + if($length_limit['l_key'] > 0 && strlen($keywords) > $length_limit['l_key'] ){ + msg(-1,'关键字长度不能大于'.$length_limit['l_key'].'个字节'); + } //取最大链接ID $lid = get_maxid('link_id'); //图标处理 @@ -416,6 +420,7 @@ function write_link(){ 'title' => htmlspecialchars($title,ENT_QUOTES), 'url' => $url, 'url_standby' => $_POST['url_standby']??'', + 'keywords' => htmlspecialchars($keywords,ENT_QUOTES), 'description' => htmlspecialchars($description,ENT_QUOTES), 'add_time' => time(), 'up_time' => time(), @@ -425,7 +430,20 @@ function write_link(){ 'property' => $property, 'icon' => $icon ]; - + //扩展字段 + if($GLOBALS['global_config']['link_extend'] == 1 && check_purview('link_extend',1)){ + $list = get_db("user_config","v",["k"=>"s_extend_list","uid"=>UID]); + if(!empty($list)){ + $list = unserialize($list); + $extend = []; + foreach($list as $field){ + $name = "_{$field['name']}"; + if(isset($_POST[$name])){ + $data['extend'][$name] = $_POST[$name]; + } + } + } + } //插入数据库 insert_db('user_links',$data); msgA(['code'=>1,'msg'=>'添加成功','id'=>$lid]); @@ -537,6 +555,7 @@ function write_link(){ $title = $_POST['title']; $url = $_POST['url']; $icon = $_POST['icon']; + $keywords = empty($_POST['keywords']) ? '' : $_POST['keywords']; $description = empty($_POST['description']) ? '' : $_POST['description']; $property = empty($_POST['property']) ? 0 : 1; //检测链接是否合法 @@ -546,6 +565,10 @@ function write_link(){ if($length_limit['l_desc'] > 0 && strlen($description) > $length_limit['l_desc'] ){ msg(-1,'描述长度不能大于'.$length_limit['l_desc'].'个字节'); } + //关键字长度检测 + if($length_limit['l_key'] > 0 && strlen($keywords) > $length_limit['l_key'] ){ + msg(-1,'关键字长度不能大于'.$length_limit['l_key'].'个字节'); + } //检查链接是否已存在 if(has_db('user_links',['uid'=>UID ,'lid[!]'=>$lid, "url" => $url])){msg(-1,'链接已存在!');} //检查链接ID是否存在 @@ -557,6 +580,7 @@ function write_link(){ 'title' => htmlspecialchars($title,ENT_QUOTES), 'url' => $url, 'url_standby' => $_POST['url_standby']??'', + 'keywords' => htmlspecialchars($keywords,ENT_QUOTES), 'description' => htmlspecialchars($description,ENT_QUOTES), 'up_time' => time(), 'property' => $property, @@ -576,7 +600,6 @@ function write_link(){ } } } - } //非必须参数,未传递参数时 @@ -598,6 +621,9 @@ function write_link(){ if(!isset($_POST['pwd_id'])){ unset($data['pid']); } + if(!isset($_POST['keywords'])){ + unset($data['keywords']); + } //更新数据 update_db('user_links',$data,['uid'=>UID,'lid'=>intval($_POST['lid']) ]); msgA(['code'=>1,'msg'=>'修改成功','icon' => $icon]); @@ -680,6 +706,116 @@ function write_link(){ if(empty($fid)){msg(-1,'分类ID错误');} //加一个查找分类是否存在 update_db('user_links',['fid'=>$fid],['uid'=>UID ,"lid" => json_decode($_POST['lid']) ],[1,'设置成功']); + //检测是否满足要求 + }elseif($_GET['type'] === 'msg_pull_check'){ + if($global_config['offline']){ + msg(-1,"离线模式不可用"); + } + if(!is_subscribe('bool')){ + msg(-1,"未检测到有效授权,无法使用该功能!"); + } + if(intval($_POST['icon']) > 0){ + if(!check_purview('icon_pull',1)){ + msg(-1,'您所在的用户组,无法使用网站图标获取功能'); + } + $path = DIR ."/data/user/".U."/favicon"; + if(!Check_Path($path)){ + msg(-1,'创建目录失败,请检查目录权限'); + } + $config = unserialize( get_db("global_config", "v", ["k" => "icon_config"])) ?? []; + if($config['o_switch'] == '0'){ + msg(-1,'相关服务处于关闭状态,请联系站长开启'); + } + } + session_start(); + $key = md5(uniqid().Get_Rand_Str(8)); + $_SESSION['msg_pull']["$key"] = true; + msgA(['code'=>1,'msg'=>'success','key'=>$key]); + }elseif($_GET['type'] === 'msg_pull'){ + session_start(); + $key = $_POST['key']; + if(empty($key) || !$_SESSION['msg_pull']["$key"]){ + msg(-1,'key验证失败,请重试!'); + }elseif(empty($_POST['link_id'])){ + msg(-1,'链接ID不能为空'); + } + //读取信息 + $link = get_db('user_links','*',['uid'=>UID ,'lid'=>$_POST['link_id'] ]); + //检查链接 + if(empty($link)){ + msg(-1,'链接ID不存在'); + }elseif(!preg_match("/^(http:\/\/|https:\/\/).*/",$link['url'])){ + msg(-1,'只支持识别http/https协议的链接!'); + }elseif( !filter_var($link['url'], FILTER_VALIDATE_URL) ) { + msg(-1,'URL无效!'); + } + + //是否获取站点信息 + if( ( intval($_POST['title']) + intval($_POST['keywords']) + intval($_POST['description']) ) > 0 ){ + //读取长度限制配置 + $length_limit = unserialize(get_db("global_config","v",["k"=>"length_limit"])); + //获取网站标题 + $c = curl_init(); + curl_setopt($c, CURLOPT_URL, $link['url']); + curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'); + curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($c , CURLOPT_TIMEOUT, 10); + $data = curl_exec($c); + curl_close($c); + require (DIR .'/system/get_page_info.php'); + $info = get_page_info($data); + $new = []; + if(intval($_POST['title']) > 0 && !empty($info['site_title'])){ + $new['title'] = $info['site_title']; + if($length_limit['l_name'] > 0 && strlen($new['title']) > $length_limit['l_name'] ){ + $new['title'] = mb_substr($new['title'], 0, $length_limit['l_name'], 'utf-8'); + } + } + if(intval($_POST['keywords']) > 0 && !empty($info['site_keywords'])){ + $new['keywords'] = (empty($link['keywords']) || $_POST['keywords'] == '2') ? $info['site_keywords'] : $link['keywords']; + if($length_limit['l_key'] > 0 && strlen($new['keywords']) > $length_limit['l_key'] ){ + $new['keywords'] = mb_substr($new['keywords'], 0, $length_limit['l_key'], 'utf-8'); + } + } + if(intval($_POST['description']) > 0 && !empty($info['site_description'])){ + $new['description'] = (empty($link['description']) || $_POST['description'] == '2') ? $info['site_description'] : $link['description']; + if($length_limit['l_desc'] > 0 && strlen($new['description']) > $length_limit['l_desc'] ){ + $new['description'] = mb_substr($new['description'], 0, $length_limit['l_desc'], 'utf-8'); + } + } + if(empty($new)){ + $r['info'] = 'fail'; + }else{ + update_db('user_links',$new,['uid'=>UID ,"lid" => $link['lid'] ]); + $r['info'] = 'success'; + } + } + + //是否获取图标 + if(intval($_POST['icon']) > 0){ + //检查跳过已存在图标的链接 + if($_POST['icon'] == '1' && !empty($link['icon'])){ + $r['icon'] = 'skip'; + } + $api = Get_Index_URL().'?c=icon&url='.base64_encode($link['url']); + $res = ccurl($api,30,true); + $data = get_db('global_icon','*',['url_md5'=>md5($link['url'])]); + if(empty($data)){ + $r['icon'] = 'fail'; + } + $new_path = "./data/user/".U.'/favicon/'.$data['file_name']; + if(copy("./data/icon/{$data['file_name']}",$new_path)){ + update_db('user_links',['icon'=>$new_path],['uid'=>UID ,"lid" => $link['lid'] ]); + $r['icon'] = 'success'; + }else{ + $r['icon'] = 'fail'; + } + } + + msg(1,$r); //图标拉取 }elseif($_GET['type'] === 'icon_pull'){ if($global_config['offline']){ @@ -1006,7 +1142,8 @@ function write_site_setting(){ function write_transit_setting(){ $datas = [ 'visitor_stay_time'=>['int'=>true,'min'=>0,'max'=>60,'msg'=>'访客停留时间范围0-60'], - 'admin_stay_time'=>['int'=>true,'min'=>0,'max'=>60,'msg'=>'管理员停留时间范围0-60'] + 'admin_stay_time'=>['int'=>true,'min'=>0,'max'=>60,'msg'=>'管理员停留时间范围0-60'], + 'default_keywords'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'默认关键字参数错误'] ]; foreach ($datas as $key => $data){ @@ -1581,9 +1718,11 @@ function read_data(){ $day_data = []; array_push($day_data, ['name' => '访问量', 'type' => 'line', 'data' => []]); array_push($day_data, ['name' => '点击量', 'type' => 'line', 'data' => []]); + array_push($day_data, ['name' => 'IP数', 'type' => 'line', 'data' => []]); foreach ($dates as $date) { array_push($day_data[0]['data'], get_db('user_count', 'v', ['uid' => UID, 'k' => $date, 't' => 'index_Ymd']) ?? 0); array_push($day_data[1]['data'], get_db('user_count', 'v', ['uid' => UID, 'k' => $date, 't' => 'click_Ymd']) ?? 0); + array_push($day_data[2]['data'], get_db('user_count', 'v', ['uid' => UID, 'k' => $date, 't' => 'ip_count']) ?? 0); } $data = ['dates'=>$dates,'day_data'=>$day_data]; @@ -1615,6 +1754,7 @@ function other_get_link_info(){ curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'); curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); //允许重定向,解决http跳转到https无法识别 curl_setopt($c , CURLOPT_TIMEOUT, 5); //设置超时时间 $data = curl_exec($c); @@ -1623,6 +1763,7 @@ function other_get_link_info(){ require (DIR .'/system/get_page_info.php'); $info = get_page_info($data); $link['title'] = $info['site_title']; + $link['keywords'] = $info['site_keywords']; $link['description'] = $info['site_description']; msgA(['code'=>1,'data'=>$link]); } diff --git a/system/api_root.php b/system/api_root.php index 9604e6e..341c93d 100644 --- a/system/api_root.php +++ b/system/api_root.php @@ -521,7 +521,7 @@ function write_sys_settings(){ } //长度限制 - foreach (['c_name','c_desc','l_name','l_url','l_desc'] as $name){ + foreach (['c_name','c_desc','l_name','l_url','l_key','l_desc'] as $name){ $length_limit[$name] = is_subscribe('bool') ? intval($_POST[$name]) : 0; } write_global_config("length_limit",$length_limit,'长度限制'); diff --git a/system/click.php b/system/click.php index 352056f..7505d05 100644 --- a/system/click.php +++ b/system/click.php @@ -1,7 +1,8 @@ UID,"k"=>"s_transition_page"])); +//关键字处理 +if(!empty($link['url_standby']) || $site['link_model'] == 'Transition'){ + if(empty($link['keywords'])){ + if($transition_page['default_keywords'] == '0'){ + $link['keywords'] = $link['title']; + }else if($transition_page['default_keywords'] == '1'){ + $link['keywords'] = $site['keywords']; + }else{ + $link['keywords'] = $link['title']; + } + } +} + //如果存在备用链接,则强制载入过渡页 if(!empty($link['url_standby'])) { $link['url_standby'] = unserialize($link['url_standby']); diff --git a/system/get_page_info.php b/system/get_page_info.php index ebde806..8874ad3 100644 --- a/system/get_page_info.php +++ b/system/get_page_info.php @@ -1,5 +1,4 @@ /si', $meta_str, $res); + if(!empty($res)) $meta_array[strtolower($res[3])] = $res[1]; + + preg_match('//si', $meta_str, $res); + if(!empty($res)) $meta_array[strtolower($res[2])] = $res[3]; } - + + //如果正则匹配失败则使用php函数尝试再次匹配 + if(empty($meta_array['keywords']) || empty($meta_array['description'])){ + //将html保存为临时文件 + $key = md5(uniqid().Get_Rand_Str(8)); + $tempFile = DIR ."/data/temp/".md5(uniqid().Get_Rand_Str(8)).".html"; + file_put_contents($tempFile, $output); + $tags = get_meta_tags($tempFile); + unlink($tempFile); //删除临时文件 + if(empty($meta_array['keywords']) && !empty($tags['keywords'])){ + $meta_array['keywords'] = $tags['keywords']; + } + if(empty($meta_array['description']) && !empty($tags['description'])){ + $meta_array['description'] = $tags['description']; + } + } + $page_info['site_keywords'] = $meta_array['keywords']; $page_info['site_description'] = $meta_array['description']; //$page_info['meta_array'] = $meta_array; //暂时不需要全部meta - + # 判断是否存在友链 if(!empty($friend_link) && strstr($output, $friend_link) != "") { $page_info['friend_link_status'] = 1; } - + return $page_info; } \ No newline at end of file diff --git a/system/index.php b/system/index.php index f9925be..a29cda7 100644 --- a/system/index.php +++ b/system/index.php @@ -288,5 +288,6 @@ if(empty($_GET['share']) && !$site['ex_theme']){ //访问统计 write_user_count(date('Ym'),'index_Ym'); write_user_count(date('Ymd'),'index_Ymd'); +count_ip(); //载入模板 require($index_path); \ No newline at end of file diff --git a/system/public.php b/system/public.php index 58833f4..630e45b 100644 --- a/system/public.php +++ b/system/public.php @@ -739,4 +739,22 @@ function send_email($config){ msg(-1,'发送失败'); } } -} \ No newline at end of file +} + +//统计访问ip数 +function count_ip(){ + $ip = Get_IP(); //取访客IP + $k = date('Ymd'); $t = 'ip_list'; + $ip_list = get_db('user_count','v',['uid'=>UID,'k'=>$k,'t'=>$t]); //取列表 + $ip_list = empty($ip_list) ? [] : unserialize($ip_list); //反序列化 + //判断IP是否存在列表中 + if(!in_array($ip, $ip_list)){ + $ip_list[] = $ip; //加入列表 + if(!has_db('user_count',['uid'=>UID,'t'=>$t,'k'=>$k])){ + insert_db("user_count", ['uid'=>UID,"k"=>$k,"v"=>$ip_list,'t'=>$t]); + }else{ + update_db("user_count", ["v"=>$ip_list],['uid'=>UID,'t'=>$t,'k'=>$k]); + } + write_user_count($k,'ip_count');//访问ip数+1 + } +} diff --git a/system/version.txt b/system/version.txt index b2d5e19..da0400a 100644 --- a/system/version.txt +++ b/system/version.txt @@ -1 +1 @@ -v2.0.30-20230713 \ No newline at end of file +v2.0.31-20230720 \ No newline at end of file diff --git a/templates/admin/js/link.js b/templates/admin/js/link.js index ea77075..ee1ef72 100644 --- a/templates/admin/js/link.js +++ b/templates/admin/js/link.js @@ -29,8 +29,8 @@ layui.use(module, function () { if(data.path != '' ){$("#iconurl").val(data.path);} //如果勾选连续添加 if($("#continuity").is(":checked")){ - //$('#reset').click();//完全清空 - form.val('form',{'url':'','title':'','description':'','icon':''}); + form.val('form',{'url':'','title':'','description':'','icon':'','keywords':''}); + $('form input[name^="_"]').val(''); //扩展字段清空 $('#icon_img').attr('src', blank_img);//清除缩略图 layer.msg('添加成功', {icon: 1}); $("#url").focus();//URL获取输入焦点 @@ -233,6 +233,9 @@ function get_link_info() { if(data.data.description != null) { $("#description").val(data.data.description); } + if(data.data.keywords != null) { + $("#keywords").val(data.data.keywords); + } }else{ layer.msg(data.msg, {icon: 5}); } diff --git a/templates/admin/js/link_list.js b/templates/admin/js/link_list.js index fdc4432..5da3ffb 100644 --- a/templates/admin/js/link_list.js +++ b/templates/admin/js/link_list.js @@ -8,8 +8,8 @@ layui.use(['form','table','dropdown','miniTab'], function () { var IDs = []; var api = get_api('read_link_list'); //列表接口 var limit = localStorage.getItem(u + "_limit") || 50; //尝试读取本地记忆数据,没有就默认50 + var link_sort = JSON.parse(localStorage.getItem(u + "_link_sort")) || {field: 'lid', type: null }; var pwds = []; - var field,order; miniTab.listen(); //渲染表格 renderTable1(); @@ -81,21 +81,23 @@ layui.use(['form','table','dropdown','miniTab'], function () { item.hide = local[item.field]; } }); - + //渲染表格函数 var renderTable2 = function () { + where = link_sort.type === null ? {} : {field:link_sort.field,order:link_sort.type.toUpperCase()}; table.render({ elem: '#table' ,height: 'full-110' //自适应高度 ,url: api //数据接口 + ,where: where ,page: true //开启分页 ,limit:limit //默认每页显示行数 ,limits: [20,50,100,300,500] ,even:true //隔行背景色 ,loading:true //加载条 - //,defaultToolbar:false ,toolbar: '#toolbar' ,id:'table' + ,initSort: link_sort ,cols: [cols] ,method: 'post' ,response: {statusCode: 1 } @@ -112,10 +114,9 @@ layui.use(['form','table','dropdown','miniTab'], function () { $("[data-field='add_time']").addClass('layui-hide-xs'); $("[data-field='up_time']").addClass('layui-hide-xs'); $("[data-field='click']").addClass('layui-hide-xs'); - //$(".layui-laypage .layui-laypage-count").css("padding-left","35px"); - $(".layui-laypage .layui-laypage-prev").addClass('layui-hide-xs'); - $(".layui-laypage .layui-laypage-curr").addClass('layui-hide-xs'); - $(".layui-laypage .layui-laypage-next").addClass('layui-hide-xs'); + // $(".layui-laypage .layui-laypage-prev").addClass('layui-hide-xs'); + // $(".layui-laypage .layui-laypage-curr").addClass('layui-hide-xs'); + // $(".layui-laypage .layui-laypage-next").addClass('layui-hide-xs'); $(".layui-laypage .layui-laypage-skip").addClass('layui-hide-xs'); $(".layui-table-tool-self").addClass('layui-hide-xs'); //加载加密分组数据 @@ -140,25 +141,23 @@ layui.use(['form','table','dropdown','miniTab'], function () { }); // 监听表格排序事件 table.on('sort(table)', function(obj) { - field = obj.field; // 排序字段 - order = obj.type == null ? '' : obj.type.toUpperCase(); // 排序方式asc,desc转为大写,null则默认排序 + link_sort = {field:obj.field,type:obj.type}; + localStorage.setItem(u + "_link_sort",JSON.stringify(link_sort)); link_search(); }); }; function link_search(){ - var fid = document.getElementById("fid").value; - var keyword = document.getElementById("link_keyword").value;//获取输入内容 - var property = document.getElementById("property").value; - var status = document.getElementById("status").value; + let data = form.val('form'); + if(link_sort.type != null){ + data.field = link_sort.field; + data.order = link_sort.type.toUpperCase(); + } table.reload('table', { url: api ,method: 'post' - ,request: { - pageName: 'page' //页码的参数名称 - ,limitName: 'limit' //每页数据量的参数名 - } - ,where: {query:keyword,fid:fid,property:property,status:status,field:field,order:order} + ,request: {pageName: 'page',limitName: 'limit'} + ,where: data ,page: {curr: 1} }); } @@ -321,8 +320,44 @@ layui.use(['form','table','dropdown','miniTab'], function () { layer.msg(data.msg); } }); + }else if(event === 'msg_pull'){ + index = layer.open({type: 1,scrollbar: false,shadeClose: true,title: '批量识别链接信息',area : ['100%', '100%'],content: $('.msg_pull')}); } }); + + $('#start_pull').click(function () { + let lits = table.checkStatus('table').data; console.log( lits ); + let config = form.val('msg_pull'); + let number = 0; + let total = lits.length; + let load_id = layer.load(1, {shade:[0.5,'#fff']});//加载层 + let msg_id = layer.msg('正在识别中', {icon: 16,time: 1000*300}); //进度提示 + //检查是否满足条件 + $.post(get_api('write_link','msg_pull_check'),config,function(data,status){ + if(data.code == 1){ + config.key = data.key; + start_pull(number); //开始拉取 + }else{ + layer.alert(data.msg || '未知错误',{icon:5,title:'错误',anim: 2,closeBtn: 0,btn: ['刷新页面']},function () {location.reload();}); + } + }); + function start_pull(number){ + if(number >= total){ + layer.closeAll(); + layer.alert('处理完毕,请刷新页面!' ,{icon:1,title:'提示',anim: 2,shadeClose: false,closeBtn: 0}); + return true; + } + $("#layui-layer"+ msg_id+" .layui-layer-padding").html('[ ' + number + ' / ' + total + ' ] 正在处理中..'); + config.link_id = lits[number].lid; + $.post(get_api('write_link','msg_pull'),config,function(data,status){ + number ++; + start_pull(number); + }); + } + + + return false; + }); table.render({ elem: '#link_extend_list' diff --git a/templates/admin/page/add_link_tpl.php b/templates/admin/page/add_link_tpl.php index d5326a3..a7c7c32 100644 --- a/templates/admin/page/add_link_tpl.php +++ b/templates/admin/page/add_link_tpl.php @@ -41,11 +41,17 @@ - +