From fa735609ed755438462711dfcee1d878cb78c604 Mon Sep 17 00:00:00 2001 From: "ZLW-PC\\Administrator" <374861669@qq.com> Date: Fri, 29 Dec 2017 16:17:07 +0800 Subject: [PATCH] adminorder --- app/Common/WechatAuth.php | 16 +- .../Controllers/Admin/BonusController.php | 8 +- .../Controllers/Admin/OrderController.php | 186 ++++++++++++++ app/Http/Controllers/Api/OrderController.php | 1 - app/Http/Controllers/Home/IndexController.php | 12 +- app/Http/Model/Goods.php | 3 +- app/Http/Model/Order.php | 41 +++- lqycms.sql | 226 ++++++++++++------ public/css/admin.css | 2 +- public/images/weixin/erweima.png | Bin 0 -> 23178 bytes public/images/weixin/wxguide.png | Bin 0 -> 24260 bytes resources/views/admin/bonus/add.blade.php | 39 ++- resources/views/admin/bonus/edit.blade.php | 37 ++- resources/views/admin/bonus/index.blade.php | 30 ++- resources/views/admin/order/detail.blade.php | 79 +++++- resources/views/admin/order/index.blade.php | 38 ++- .../views/home/index/brandList.blade.php | 27 +++ .../views/weixin/common/wxshare.blade.php | 2 +- .../views/weixin/order/orderList.blade.php | 33 ++- .../分享到朋友圈箭头提示.blade.php | 15 ++ routes/web.php | 3 + 21 files changed, 639 insertions(+), 159 deletions(-) create mode 100644 public/images/weixin/erweima.png create mode 100644 public/images/weixin/wxguide.png create mode 100644 resources/views/home/index/brandList.blade.php create mode 100644 resources/views/weixin/常用代码/分享到朋友圈箭头提示.blade.php diff --git a/app/Common/WechatAuth.php b/app/Common/WechatAuth.php index af192ea..cc37d45 100644 --- a/app/Common/WechatAuth.php +++ b/app/Common/WechatAuth.php @@ -66,8 +66,22 @@ class WechatAuth return json_decode($info_data, true); } + /** + * 获取用户基本信息(包括UnionID机制) + * + * @param string $access_token + * @param string $open_id + */ + public function get_user_unionid($access_token = '', $open_id = '') + { + $info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={$access_token}&openid={$open_id}&lang=zh_CN"; + $info_data = $this->http($info_url); + + return json_decode($info_data, true); + } + // cURL函数简单封装 - function http($url, $data = null) + public function http($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); diff --git a/app/Http/Controllers/Admin/BonusController.php b/app/Http/Controllers/Admin/BonusController.php index 9095a24..9bf695e 100644 --- a/app/Http/Controllers/Admin/BonusController.php +++ b/app/Http/Controllers/Admin/BonusController.php @@ -15,13 +15,13 @@ class BonusController extends CommonController public function index() { - $data['posts'] = parent::pageList('bonus', '', [['status', 'asc'], ['listorder', 'asc']]); + $data['posts'] = parent::pageList('bonus', '', [['status', 'asc']]); if($data['posts']) { foreach($data['posts'] as $k=>$v) { - $data['posts'][$k]->status_text = Bonus::getStatusText(array('status'=>$v->status)); + } } @@ -35,6 +35,8 @@ class BonusController extends CommonController if(isset($_POST['editorValue'])){unset($_POST['editorValue']);} unset($_POST["_token"]); + if($_POST["start_time"]>=$_POST["end_time"]){error_jump('参数错误');} + if(DB::table('bonus')->insert(array_filter($_POST))) { success_jump('添加成功!', route('admin_bonus')); @@ -57,6 +59,8 @@ class BonusController extends CommonController if(isset($_POST['editorValue'])){unset($_POST['editorValue']);} unset($_POST["_token"]); + if($_POST["start_time"]>=$_POST["end_time"]){error_jump('参数错误');} + if(DB::table('bonus')->where('id', $id)->update($_POST)) { success_jump('修改成功!', route('admin_bonus')); diff --git a/app/Http/Controllers/Admin/OrderController.php b/app/Http/Controllers/Admin/OrderController.php index 496abb7..2da4b8c 100644 --- a/app/Http/Controllers/Admin/OrderController.php +++ b/app/Http/Controllers/Admin/OrderController.php @@ -7,6 +7,8 @@ use App\Http\Model\OrderGoods; use App\Http\Model\User; use App\Http\Model\Region; use DB; +use App\Common\ReturnData; +use Illuminate\Http\Request; class OrderController extends CommonController { @@ -117,6 +119,8 @@ class OrderController extends CommonController $data['post']['goodslist'] = $order_goods; } //echo '
';print_r($data['post']);exit;
+        $data['kuaidi'] = DB::table('kuaidi')->where(['status'=>0])->orderBy('listorder', 'asc')->get();
+        
         return view('admin.order.detail', $data);
     }
     
@@ -184,4 +188,186 @@ class OrderController extends CommonController
 			error_jump("删除失败!请重新提交");
 		}
     }
+    
+    //发货修改物流信息
+    public function changeShipping(Request $request)
+    {
+		if(isset($_POST["id"]) && !empty($_POST["id"])){$id = $_POST["id"];}else{return ReturnData::create(ReturnData::PARAMS_ERROR);}
+		
+        $data['shipping_id'] = $request->input('shipping_id', '');
+        $data['shipping_sn'] = $request->input('shipping_sn', '');
+        
+        if($data['shipping_id'] == ''){return ReturnData::create(ReturnData::PARAMS_ERROR);}
+        
+        if($data['shipping_id'] == 0)
+        {
+            $data['shipping_name'] = '无须物流';
+            unset($data['shipping_sn']);
+        }
+        else
+        {
+            if($data['shipping_sn'] == ''){return ReturnData::create(ReturnData::PARAMS_ERROR);}
+            
+            $data['shipping_name'] = DB::table('kuaidi')->where('id', $data['shipping_id'])->value('name');
+        }
+        
+        if(DB::table('order')->where(['id'=>$id,'shipping_status'=>0])->update($data) === false)
+        {
+            return ReturnData::create(ReturnData::SYSTEM_FAIL);
+        }
+        
+		return ReturnData::create(ReturnData::SUCCESS);
+    }
+    
+    //修改订单状态
+    public function changeStatus(Request $request)
+    {
+		if(isset($_POST["id"]) && !empty($_POST["id"])){$id = $_POST["id"];}else{return ReturnData::create(ReturnData::PARAMS_ERROR);}
+		$status = $request->input('status', '');
+        if($status==''){return ReturnData::create(ReturnData::PARAMS_ERROR);}
+        
+		//2设为已付款,3发货,4设为已收货,7设为无效,8同意退款
+        if($status==2)
+        {
+            $data['pay_status'] = 1;
+            
+            //...
+        }
+        elseif($status==3)
+        {
+            $data['shipping_status'] = 1;
+        }
+        elseif($status==4)
+        {
+            $data['order_status'] = 3;
+            $data['shipping_status'] = 2;
+            
+            //...
+        }
+        elseif($status==7)
+        {
+            $data['order_status'] = 2;
+            
+            //返库存
+            if(!Order::returnStock($id)){return ReturnData::create(ReturnData::SYSTEM_FAIL);}
+        }
+        elseif($status==8)
+        {
+            $data['refund_status'] = 2;
+            
+            $order = DB::table('order')->where('id', $id)->first();
+            if($order->pay_money>0)
+            {
+                //返余额
+                //增加用户余额
+                DB::table('user')->where(array('id'=>$order->user_id))->increment('money', $order->pay_money);
+                //添加用户余额记录
+                DB::table('user_money')->insert(array('user_id'=>$order->user_id,'type'=>0,'money'=>$order->pay_money,'des'=>'退货-返余额','user_money'=>DB::table('user')->where(array('id'=>$order->user_id))->value('money'),'add_time'=>time()));
+            }
+            
+            //返库存
+            if(!Order::returnStock($id)){return ReturnData::create(ReturnData::SYSTEM_FAIL);}
+        }
+        
+        if(DB::table('order')->where('id', $id)->update($data) === false)
+        {
+            return ReturnData::create(ReturnData::SYSTEM_FAIL);
+        }
+        
+        return ReturnData::create(ReturnData::SUCCESS);
+    }
+    
+    //导出订单Excel
+    public function outputExcel(Request $request)
+    {
+        $res = '';
+		$where = function ($query) use ($res) {
+			if(isset($_REQUEST["keyword"]))
+			{
+				$query->where('order_sn', 'like', '%'.$_REQUEST['keyword'].'%')->orWhere("name", "like", '%'.$_REQUEST['keyword'].'%')->orWhere("mobile", "like", '%'.$_REQUEST['keyword'].'%');
+			}
+            
+            if(isset($_REQUEST["min_addtime"]) && isset($_REQUEST["max_addtime"]) && !empty($_REQUEST["min_addtime"]) && !empty($_REQUEST["max_addtime"]))
+			{
+				$query->where('add_time', '>=', $_REQUEST['min_addtime'])->where('add_time', '<=', $_REQUEST["max_addtime"]);
+			}
+            
+            if(isset($_REQUEST["mobile"]))
+			{
+				$query->where('mobile', 'like', '%'.$_REQUEST['mobile'].'%');
+			}
+			
+            if(isset($_REQUEST["order_sn"]))
+			{
+				$query->where('order_sn', 'like', '%'.$_REQUEST['order_sn'].'%');
+			}
+			
+            if(isset($_REQUEST["name"]))
+			{
+				$query->where("name", "like", '%'.$_REQUEST['name'].'%');
+			}
+            
+            //0或者不传表示全部,1待付款,2待发货,3待收货,4待评价(确认收货,交易成功),5退款/售后
+			if(isset($_REQUEST["status"]))
+			{
+                if($_REQUEST["status"] == 1)
+                {
+                    $query->where(array('order_status'=>0,'pay_status'=>0));
+                }
+                elseif($_REQUEST["status"] == 2)
+                {
+                    $query->where(array('order_status'=>0,'shipping_status'=>0,'pay_status'=>1));
+                }
+                elseif($_REQUEST["status"] == 3)
+                {
+                    $query->where(array('order_status'=>0,'refund_status'=>0,'shipping_status'=>1));
+                }
+                elseif($_REQUEST["status"] == 4)
+                {
+                    $query->where(array('order_status'=>3,'refund_status'=>0));
+                }
+                elseif($_REQUEST["status"] == 5)
+                {
+                    $query->where(array('order_status'=>3,'refund_status'=>1));
+                }
+			}
+			
+			$query->where('is_delete', 0); //未删除
+        };
+        
+        $cellData = [];
+        array_push($cellData,['ID','订单号','时间','状态','商品总价','应付金额','支付金额','收货人','地址','电话','订单来源']);
+        $order_list = DB::table('order')->where($where)->orderBy('id', 'desc')->get();
+        if($order_list)
+        {
+            foreach($order_list as $k=>$v)
+            {
+                $order_status_arr = Order::getOrderStatusText(object_to_array($v, 1));
+                $order_list[$k]->order_status_text = $order_status_arr?$order_status_arr['text']:'';
+                $order_list[$k]->order_status_num = $order_status_arr?$order_status_arr['num']:'';
+                
+                $order_list[$k]->province_name = Region::getRegionName($v->province);
+                $order_list[$k]->city_name = Region::getRegionName($v->city);
+                $order_list[$k]->district_name = Region::getRegionName($v->district);
+                $order_list[$k]->place_type_text = Order::getPlaceTypeText(['place_type'=>$v->place_type]);
+                
+                array_push($cellData,[$v->id,$v->order_sn,date('Y-m-d H:i:s',$v->add_time),$order_list[$k]->order_status_text,$v->goods_amount,$v->order_amount,$v->pay_money,$v->name,$order_list[$k]->province_name.$order_list[$k]->city_name.$order_list[$k]->district_name.' '.$v->address,$v->mobile,$order_list[$k]->place_type_text]);
+            }
+        }
+        
+        //导出EXCEL
+		\Excel::create('订单列表',function($excel) use ($cellData){
+            // Set the title
+            $excel->setTitle('order list');
+            // Chain the setters
+            $excel->setCreator('FLi')->setCompany('FanCheng');
+            // Call them separately
+            $excel->setDescription('A demonstration to change the file properties');
+            
+			//第一个工作簿,Sheet1是工作簿的名称
+			$excel->sheet('Sheet1', function($sheet) use ($cellData){
+				$sheet->rows($cellData);
+			});
+		})->download('xls');
+    }
 }
\ No newline at end of file
diff --git a/app/Http/Controllers/Api/OrderController.php b/app/Http/Controllers/Api/OrderController.php
index 065519f..1c6a62a 100644
--- a/app/Http/Controllers/Api/OrderController.php
+++ b/app/Http/Controllers/Api/OrderController.php
@@ -174,7 +174,6 @@ class OrderController extends CommonController
             //判断订单是否存在或本人
             $where['order_status'] = 3;
             $where['refund_status'] = 0;
-            $where['shipping_status'] = 2;
             $order = Order::where($where)->first();
             if(!$order){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'订单不存在');}
             
diff --git a/app/Http/Controllers/Home/IndexController.php b/app/Http/Controllers/Home/IndexController.php
index ef481e4..a4980d8 100644
--- a/app/Http/Controllers/Home/IndexController.php
+++ b/app/Http/Controllers/Home/IndexController.php
@@ -33,7 +33,7 @@ class IndexController extends CommonController
         
         //推荐
         if($request->input('tuijian', '') != ''){$where['tuijian'] = $request->input('tuijian');}
-        if($request->input('brand_id', '') != ''){$where['brand_id'] = $request->input('brand_id');}
+        if($request->input('brand_id', '') != ''){$where['brand_id'] = $request->input('brand_id');DB::table('goods_brand')->where(array('id'=>$where['brand_id']))->increment('click', 1);}
         
         $pagenow = $page;
         $post = '';
@@ -90,9 +90,19 @@ class IndexController extends CommonController
         }
         
         $data['tj_list'] = object_to_array(DB::table('goods')->where(['tuijian'=>1,'status'=>0])->get());
+        
+        DB::table('goods')->where(array('id'=>$id))->increment('click', 1);
         return view('home.index.goods', $data);
     }
     
+    //商品列表页
+    public function brandList(Request $request)
+	{
+        $data['brand_list'] = object_to_array(DB::table('goods_brand')->where(['status'=>0])->take(30)->orderBy('listorder','asc')->get());
+        
+        return view('home.index.brandList', $data);
+    }
+    
     //网址组装
     public function listpageurl($http_host,$query_string,$page=0)
 	{
diff --git a/app/Http/Model/Goods.php b/app/Http/Model/Goods.php
index 1a5fdbe..626d155 100644
--- a/app/Http/Model/Goods.php
+++ b/app/Http/Model/Goods.php
@@ -272,9 +272,10 @@ class Goods extends BaseModel
     //增加或减少商品库存
     public static function changeGoodsStock(array $param)
     {
+        //$param['type']=1减库存
         extract($param);
         
-        if(isset($type))
+        if(isset($type) && $type==1)
         {
             //增加库存
             DB::table('goods')->where(array('id'=>$goods_id))->increment('goods_number', $goods_number);
diff --git a/app/Http/Model/Order.php b/app/Http/Model/Order.php
index 0c2a135..00d75de 100644
--- a/app/Http/Model/Order.php
+++ b/app/Http/Model/Order.php
@@ -24,6 +24,8 @@ class Order extends BaseModel
         $limit  = isset($limit) ? $limit : 10;
         $offset = isset($offset) ? $offset : 0;
         
+        $model = new self();
+        
         if(isset($user_id)){$where['user_id'] = $user_id;}
         $where['is_delete'] = 0;
         
@@ -56,10 +58,10 @@ class Order extends BaseModel
         elseif($status == 5)
         {
             $where['order_status'] = 3;
-            $where['refund_status'] = 1;
+            $model = $model->where('refund_status','<>',0);
         }
         
-        $model = self::where($where);
+        $model = $model->where($where);
         
         $res['count'] = $model->count();
         $res['list'] = array();
@@ -203,7 +205,7 @@ class Order extends BaseModel
                 );
                 array_push($order_goods_list,$temp_order_goods);
                 
-                //订单商品直行减库存操作
+                //订单商品直接减库存操作
 				Goods::changeGoodsStock(array('goods_id'=>$v['goods_id'],'goods_number'=>$v['goods_number']));
             }
             $result = DB::table('order_goods')->insert($order_goods_list);
@@ -269,7 +271,7 @@ class Order extends BaseModel
         }
         elseif($where['order_status'] == 3 && $where['refund_status'] == 1)
         {
-            $res = array('text'=>'售后','num'=>5);
+            $res = array('text'=>'售后中','num'=>5);
         }
         elseif($where['order_status'] == 1)
         {
@@ -279,6 +281,10 @@ class Order extends BaseModel
         {
             $res = array('text'=>'无效','num'=>7);
         }
+        elseif($where['order_status'] == 3 && $where['refund_status'] == 2)
+        {
+            $res = array('text'=>'退款成功','num'=>8);
+        }
         
         return $res;
     }
@@ -326,4 +332,31 @@ class Order extends BaseModel
         
         return $res;
     }
+    
+    //根据订单id返库存
+    public static function returnStock($order_id)
+    {
+        $order_goods = OrderGoods::where(array('order_id'=>$order_id))->get();
+        if(!$order_goods){return false;}
+        
+        foreach($order_goods as $k=>$v)
+        {
+            //订单商品直接返库存
+            Goods::changeGoodsStock(array('goods_id'=>$v['goods_id'],'goods_number'=>$v['goods_number'],'type'=>1));
+        }
+        
+        return true;
+    }
+    
+    //订单超时,设为无效
+    public static function orderSetInvalid($order_id)
+    {
+        $order = self::where(array('id'=>$order_id,'order_status'=>0,'pay_status'=>0))->update(['order_status'=>2]);
+        if(!$order){return false;}
+        
+        //返库存
+        self::returnStock($order_id);
+        
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/lqycms.sql b/lqycms.sql
index e2304df..048225c 100644
--- a/lqycms.sql
+++ b/lqycms.sql
@@ -84,13 +84,13 @@ CREATE TABLE `fl_access` (
 
 /*Data for the table `fl_access` */
 
-insert  into `fl_access`(`role_id`,`menu_id`) values (3,1),(3,11),(3,12),(3,13),(3,14),(3,15),(3,16),(3,17),(3,18),(3,19),(3,20),(3,21),(3,22),(3,23),(3,24),(3,25),(3,32),(3,33),(3,34),(3,35),(3,36),(3,37),(3,6),(3,78),(3,83),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1,10),(1,11),(1,12),(1,13),(1,14),(1,15),(1,16),(1,17),(1,18),(1,19),(1,20),(1,21),(1,22),(1,23),(1,24),(1,25),(1,26),(1,27),(1,28),(1,29),(1,30),(1,31),(1,32),(1,33),(1,34),(1,35),(1,36),(1,37),(1,38),(1,39),(1,40),(1,41),(1,42),(1,43),(1,44),(1,45),(1,46),(1,47),(1,48),(1,49),(1,50),(1,51),(1,52),(1,53),(1,54),(1,55),(1,56),(1,57),(1,58),(1,59),(1,60),(1,61),(1,62),(1,63),(1,64),(1,65),(1,66),(1,67),(1,68),(1,69),(1,70),(1,71),(1,72),(1,73),(1,74),(1,75),(1,76),(1,77),(1,78),(1,79),(1,80),(1,81),(1,82),(1,83),(1,84),(1,85),(1,86),(1,87),(1,88),(1,89),(1,90),(1,91),(1,92),(1,93),(1,94),(1,95),(1,96),(1,97),(1,98),(1,99),(1,100),(1,101),(1,102),(1,103),(1,104),(2,1),(2,11),(2,12),(2,13),(2,14),(2,15),(2,16),(2,17),(2,18),(2,19),(2,20),(2,21),(2,22),(2,23),(2,24),(2,25),(2,32),(2,33),(2,34),(2,35),(2,36),(2,37),(2,5),(2,7),(2,8),(2,9),(2,10),(2,104),(1,105),(1,106);
+insert  into `fl_access`(`role_id`,`menu_id`) values (3,1),(3,11),(3,12),(3,13),(3,14),(3,15),(3,16),(3,17),(3,18),(3,19),(3,20),(3,21),(3,22),(3,23),(3,24),(3,25),(3,32),(3,33),(3,34),(3,35),(3,36),(3,37),(3,6),(3,78),(3,83),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1,10),(1,11),(1,12),(1,13),(1,14),(1,15),(1,16),(1,17),(1,18),(1,19),(1,20),(1,21),(1,22),(1,23),(1,24),(1,25),(1,26),(1,27),(1,28),(1,29),(1,30),(1,31),(1,32),(1,33),(1,34),(1,35),(1,36),(1,37),(1,38),(1,39),(1,40),(1,41),(1,42),(1,43),(1,44),(1,45),(1,46),(1,47),(1,48),(1,49),(1,50),(1,51),(1,52),(1,53),(1,54),(1,55),(1,56),(1,57),(1,58),(1,59),(1,60),(1,61),(1,62),(1,63),(1,64),(1,65),(1,66),(1,67),(1,68),(1,69),(1,70),(1,71),(1,72),(1,73),(1,74),(1,75),(1,76),(1,77),(1,78),(1,79),(1,80),(1,81),(1,82),(1,83),(1,84),(1,85),(1,86),(1,87),(1,88),(1,89),(1,90),(1,91),(1,92),(1,93),(1,94),(1,95),(1,96),(1,97),(1,98),(1,99),(1,100),(1,101),(1,102),(1,103),(1,104),(1,105),(1,106),(1,107),(1,108),(1,109),(1,110),(1,111),(1,112),(1,113),(1,114),(1,115),(1,116),(1,117),(2,2),(2,38),(2,39),(2,40),(2,41),(2,42),(2,50),(2,43),(2,44),(2,45),(2,46),(2,47),(2,48),(2,49),(2,51),(2,107),(2,108),(2,109),(2,110),(2,111),(2,112),(2,5),(2,7),(2,8),(2,9),(2,10),(2,104),(1,118),(1,119),(1,120),(1,121),(1,122),(1,123),(1,124),(1,125),(1,126),(1,127),(1,128),(1,129);
 
-/*Table structure for table `fl_admin_user` */
+/*Table structure for table `fl_admin` */
 
-DROP TABLE IF EXISTS `fl_admin_user`;
+DROP TABLE IF EXISTS `fl_admin`;
 
-CREATE TABLE `fl_admin_user` (
+CREATE TABLE `fl_admin` (
   `id` int(10) NOT NULL AUTO_INCREMENT,
   `username` char(30) DEFAULT '' COMMENT 'admin888',
   `email` char(30) DEFAULT '' COMMENT '邮箱',
@@ -104,15 +104,15 @@ CREATE TABLE `fl_admin_user` (
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
 
-/*Data for the table `fl_admin_user` */
+/*Data for the table `fl_admin` */
 
-insert  into `fl_admin_user`(`id`,`username`,`email`,`logintime`,`pwd`,`role_id`,`status`,`mobile`,`avatar`,`create_at`) values (1,'admin888','admin@qq.com',1510369873,'21232f297a57a5a743894a0e4a801fc3',1,0,'','','2012-12-12 00:00:00'),(2,'abc2','abc@qq.com',1497285296,'e10adc3949ba59abbe56e057f20f883e',2,0,'','','2017-06-07 15:10:18'),(3,'xyz','xyz@qq.com',0,'d16fb36f0911f878998c136191af705e',1,0,'','','2017-07-26 00:06:01');
+insert  into `fl_admin`(`id`,`username`,`email`,`logintime`,`pwd`,`role_id`,`status`,`mobile`,`avatar`,`create_at`) values (1,'admin888','admin@qq.com',1513248532,'21232f297a57a5a743894a0e4a801fc3',1,0,'','','2012-12-12 00:00:00'),(2,'abc','abc@qq.com',1497285296,'e10adc3949ba59abbe56e057f20f883e',2,0,'','','2017-06-07 15:10:18'),(3,'xyz','xyz@qq.com',0,'e10adc3949ba59abbe56e057f20f883e',1,0,'','','2017-07-26 00:06:01');
 
-/*Table structure for table `fl_admin_user_role` */
+/*Table structure for table `fl_admin_role` */
 
-DROP TABLE IF EXISTS `fl_admin_user_role`;
+DROP TABLE IF EXISTS `fl_admin_role`;
 
-CREATE TABLE `fl_admin_user_role` (
+CREATE TABLE `fl_admin_role` (
   `id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
   `name` varchar(30) NOT NULL COMMENT '角色名',
   `des` varchar(150) NOT NULL DEFAULT '' COMMENT '描述',
@@ -123,9 +123,9 @@ CREATE TABLE `fl_admin_user_role` (
   UNIQUE KEY `rolename` (`name`)
 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='角色表';
 
-/*Data for the table `fl_admin_user_role` */
+/*Data for the table `fl_admin_role` */
 
-insert  into `fl_admin_user_role`(`id`,`name`,`des`,`status`,`pid`,`listorder`) values (1,'超级管理员','拥有网站最高管理员权限!',0,0,0),(2,'普通角色','',0,0,0);
+insert  into `fl_admin_role`(`id`,`name`,`des`,`status`,`pid`,`listorder`) values (1,'超级管理员','拥有网站最高管理员权限!',0,0,0),(2,'普通角色','',0,0,0);
 
 /*Table structure for table `fl_appsign` */
 
@@ -204,7 +204,7 @@ CREATE TABLE `fl_article` (
 
 /*Data for the table `fl_article` */
 
-insert  into `fl_article`(`id`,`typeid`,`tuijian`,`click`,`title`,`body`,`writer`,`source`,`litpic`,`pubdate`,`addtime`,`keywords`,`seotitle`,`description`,`ischeck`,`typeid2`,`user_id`,`listorder`) values (1,4,0,467,'移动网站建设常见问题','

移动网站兴起时间不长,站长有很多相似的问题。在2014年11月份的百度移动搜索沙龙上,移动专家针对站长提问较多的问题进行了统一回答,与往期沙龙的零星回答合并整理如下:


问:我的移动站内容和PC站是一样的,这样需不需要屏蔽百度的PC搜索蜘蛛?


答:由于百度的PC搜索和移动搜索共用同一个spider,都带有baidu标示,不要进行屏蔽。Spider在抓取时会对页面进行识别,自动判断是PC页还是mobile页,因此建议站长使用规范的html5/xhtml协议语言来建设移动站。


问:手机站使用xhtml与html5开发,对搜索引擎是否有区别?


答:大家使用手机搜索时会发现用2G的情况下移动搜索会给你到极速版,就是保证你得到结果的速度足够快,但是结果样式比较简单。一般情况下极速版我们会优先给Xhtml的结果,触屏版优先给html5,效果更加炫酷。


问:如果是URL、PC访问和移动访问分别识别不同的模版,例如我们有一个URL,PC访问是是这个模版,手机访问是那个模版。那么我们是使用相同的URL好,还是单独的做一个M站好?


答:理想状态下同一套url是最优的。目前受限于机制问题,还有待进一步解决,预期14年底能够完成。目前仍然建议大家移动站使用单独的m链接。同时,暂时不要使用类似这样的url:http://m.site.com?src=http://www.site.com。


问:感谢,我们是这样理解吧,未来的话如果以用户习惯来说,是同一个URL好?


答:理想的技术角度看,是同一个url更好,但是目前尽量仍然使用单独的m链接。


问:一个站点有M站和PC站,采用完全相同的TDK,是否有问题,手机站的SEO规则是否跟PC站相同?


答:TDK代表标题、摘要、关键词是吧?先理解一下。是这样的,PC端和移动端搜索结果展现标题和摘要的字数限制等都是不同的,PC端30多个中文汉字才截断,移动端不到20个就折行了,20多个就省略看不到了。所以,建议移动站使用单独的TDK。


问:如果两个站点它的TDK都是完全相同的,每一个页面,会不会导致站点被惩罚?


答:这里说的两个站如果指同一个站点的PC和移动,肯定是不会导致被惩罚的。


问:外链对手机站是否有效果?


答:外链还是有效果的,但不要做那些垃圾外链,比如说论坛的标签里面或者说买卖链接或者是说批量的发链接有可能被惩罚。正常交换一下链接是有帮助的。0和1是明显不同的。


问:百度移动搜索对我的移动站收录较少,该如何做?


答:1.如果您同时具有PC站,且PC与移动站是一一对应的关系,请利用开放适配工具进行提交,既可以帮助移动站的收录又可以帮助您将PC站的排名转移至移动搜索;2.如果您只有移动站,也可以通过我们的移动sitemap工具向百度进行提交。

','','','',1476454862,1476063853,'移动,网站建设,常见问题','','移动网站兴起时间不长,站长有很多相似的问题。在2014年11月份的百度移动搜索沙龙上,移动专家针对站长提问较多的问题进行了统一回答,与往期沙龙的零星回答合并整理如下:问:我的',0,0,NULL,50),(2,2,1,353,'对百度搜索引擎友好的网站结构','

我们在做网站结构相关SEO工作时,都应该考虑以下四个问题:

1,Baiduspider能不能找到所有网页

2,Baiduspider是否知道哪个网页是重要的

3,Baiduspider能否顺利提取网页内容

4,Baiduspider能否在网页中提炼有用信息 


下面讲的内容便是解决前两个问题的:


一,友好的网站结构


1,扁平or树型:一说到网站结构,大家都会提到扁平结构和树型结构,言必称“结构扁平化”,这些指的是物理结构,即基于内容聚合的目录及文件位置决定的结构。其实对于百度搜索引擎来说,只要结构合理、有逻辑性、内容有规律可循都可以,都是友好的。


2,链接结构:相对于物理结构,就要说到逻辑结构:即通过内部链接形成的链接结构,逻辑结构才是搜索引擎最关注的。对于一个网站来说,网页仅仅可以通过首页——目录1——目录2一层一层follow到是远远不够的,一个优秀的链接结构应该是网状的。


1)首页链接应该链向重要的频道页,频道页再链向下面的节点页或普通页面。同时,频道页、节点页和普通页面都应该可以链回到首页

2)无论哪些页面之间互相链接,都需要一个描述恰当的锚文本

3)链接不要放在JS、FLASH等搜索引擎不可见的位置,使用图片做链接入口应该完善alt标签

   *百度搜索引擎目前仅支持对部分JS和FLASH进行解析,绝大多数放在JS和FLASH里的链接都是获取不到的

4)为重要页面留更多入口。百度搜索引擎认为,获得更多内部投票的网页相对来说更加重要

5) “离首页越近”的网页,越容易受到百度重视。这个“近”指的是页面离首页的点击距离。即使URL所在目录层级较深,只要在首页有入口,百度也认为这是一个非常重要的页面。

6)不要产生可怕的孤岛页面。虽然百度在提交入口、社会化挖掘方面做了许多工作,但链接抓取依然是百度获得新页面的最重要渠道


二,通过导航让百度更好地认识站点


对于用户,导航要解决的问题是:我在网站的什么位置,我想看上一级、甚至上上一级更多内容的入口在哪里;对于spider,导航要解决的问题是:这个页面属于哪个领域,要表达的主题是什么。所以说,清晰的导航系统不仅有助于提高用户体验,对SEO的意义也是重大的,所有SEO做得出色的网站基本都拥有清晰明确的导航。


1,导航内容搜索引擎可见:有网站的导航对用户来说美观友好,对百度来说却是不可见的。目前百度还不能搞定所有的JS和FLASH,保险起见,还是使用HTML的好。图片虽然美丽,作为导航也是对搜索引擎不友好的行为。


2,导航稳定:导航内容应该是相对固定的,不要让导航成为“滚动条”。


3,重要网页尽可能地在导航处可以follow到:百度认为主导航中出现的链接,其重要性仅次于网站首页,所以应该尽量将站内的页面在主导航中安排个位置。当然,主导航上也不可能放过多的内容,哪些链接可以上主导航还需要SEO人员进行平衡。


4,巧用面包屑导航:上面说到,导航对于用户来说,解决了“想看上一级、甚至上上一级更多内容”的问题,这个导航指的就是面包屑导航。面包屑导航可以使结构复杂庞大的大中型网站变得清晰轻盈,在spider进行页面解析时会着重查看面包屑导航内容,强烈建议使用。


三,合理的domain结构


除了在网站建设的时候站长会思考到底使用二级域名还是子目录,在网站运营的过程中,也会考虑是否要把子目录的内容拆分成二级域名。因为很多SEO人员认为二级域名相对独立,其首页会得到百度的重视,能获得更好的排位——其实这是一个片面的错误观点,百度会通过很多指标对同domain下的二级域名和子目录进行重要程度判断,并没有武断地认为谁天生就会比谁强一些。


当SEO认为站内结构已经阻碍了网站高速发展就会考虑改版,最常见的改版便是将子目录移出主站点、单独形成二级域名。但大家都知道,改版肯定会对站点的收录排名和流量造成影响,一定要谨慎。那么在什么情况下才真的需要将子目录换成二级域名呢?其实只有一点:即子目录的内容足够丰富,且与主域的主题关联性不强!


四,url结构很重要


1,url结构规律化:同一个网页有不同url,会造成多个url同时被用户推荐导致权值分散;同时百度最终选择展现的那个url不一定符合你的预期。站点应该尽量不把sessionid和统计代码等不必要的内容放在url,如果一定要这样做可以通过robots禁止百度抓取这些非规范url


2,最好能让用户从url即可判断出网页内容,便于蜘蛛解析的同时便于用户间传播


3,url尽量短


●蜘蛛喜欢:http://tieba.baidu.com.com/f?kw=百度

●蜘蛛不喜欢:http://tieba.baidu.com/f?ct=&tn=&rn=&ln=&cn=0&kw=百度&rs2=&un=&rs1=&rs5=&sn=&rs6=&nvselectvalue=0&oword=百度&tb=cn


4,不要添加蜘蛛难以解析的字符,如

http://mp3.XXX.com/albumlist/234254;;;;;;;%B9&CE%EDWF%.html

http://news.xxx.com/1233,242,111,0.shtml


5,动态参数不要太多太复杂,目前百度对动态url已经有了很好的处理,但是参数过多过复杂的url有可能被蜘蛛认为不重要而抛弃。

','','','/images/3.jpg',1476454546,1476063905,'对,百度,搜索引擎,友,好的,网站,结构','','我们在做网站结构相关SEO工作时,都应该考虑以下四个问题:1,Baiduspider能不能找到所有网页2,Baiduspider是否知道哪个网页是重要的3,Baiduspider能否顺利提取网页内容4,Baiduspider能否在网页',0,0,NULL,50),(3,1,1,379,'在移动搜索展现端获得良好表现的注意事项','

移动网站优化和PC网站的很多方面都是相似甚至相同的,但由于移动搜索界面大小受限,移动网站在标题和摘要的撰写上有很多有别有PC端的情况。


1,有吸引力的title


用户在百度移动搜索中输入query搜索到你的页面时,title作为最重要的内容展现在搜索结果中,主题明确、吸引眼球的title能够使用户第一时间理解你页面的主题是否符合他的需求,进而更快捷地从众多搜索结果中选择你点击你。所以,移动网页的TITLE应该是:


●主题明确;


●简洁扼要,不罗列,尽量不超过17个中文汉字,否则会折行;


●如果你的品牌知名度高,品牌词最好能够展现出来;


●在与内容相符的前提下,吸引眼球


2,不唯一的description,


作为搜索结果摘要的重要选择目标之一,一定不要采用默认形式,用适当的语言对页面进行进一步描述,对title的进一步补充,能够使用户更进一步理解你页面的内容与其需求是否匹配,让你的目标用户更快找到你点击你。


●对title的进一步补充,准确描述页面内容,但不堆砌关键词,否则可能被认为有作弊嫌疑;


●ž每个页面要有不同的description,尽量不适用默认一样的;


●适当的长度,超出会被截断.

','','','',1496551932,1476063946,'在,移动,搜索,展现,端,获得,良好,表现,的,注意事项','','移动网站优化和PC网站的很多方面都是相似甚至相同的,但由于移动搜索界面大小受限,移动网站在标题和摘要的撰写上有很多有别有PC端的情况。1,有吸引力的title用户在百度移动搜索中输',0,0,1,50),(4,2,0,248,'撰写搜索引擎喜欢的标题','

通过观察可以发现,那些可以从搜索引擎获得大批流量的站点来说,SEO思维渗透到了每个岗位,产品人员在提交项目MRD时,网页标题的写法是必不可少的一部分;编辑对文章内容负责的同时,要设计出吸引用户和搜索引擎的标题;而不是单纯地把优化工作全部扔给SEO人员。所以,今天我们想跟产品人员和编辑说说网页标题该怎么写。


一,标题的结构


1,标题字数控制在60个字节内:从以往的经验看,检索用户比较喜欢50个字节左右的标题;对于产品人员和编辑来说,过短的标题有可能无法全面表达网页主题;对于搜索引擎来说,标题过长意味着“超标”,只会保留前60个字节的内容。


【反面case】福州到北京旅游_北京旅游天气如何_北京旅游景点介绍_北京好玩吗_现在去北京旅游会热吗


2,重要内容放在标题的最前面:在众多检索结果中,用户的目光往往聚焦在标题前半段,所以重要信息内容放在标题前部非常重要。


【正面case】关之琳否认脑癌发作称洗牙遭误会|关之琳|癌症_凤凰娱乐


3,放置网站名称,增加曝光机会:有些站点已经在某领域有了一定的知名度和权威性,其站名名称已经成为一种品牌,可以将该品牌词体现在标题中,用户在面对众多结果时,更倾向于选择点击自己熟知网站提供的信息。即使网站目前的知名度还不够,更不应该放过每个品牌曝光的机会。


【正面case:】【单电和微单的区别】-蜂鸟网


【正面case】法国卢浮宫博物馆藏文物精品在中国国家博物馆展出-新华网


二,标题放什么内容更吸引用户


用户在百度搜索框输入关键词后,百度在对相关网页进行排序时,网页标题内容是其考虑的重要因素。同时,搜索结果页内通常会有10个结果,用户往往是通过标题和摘要来决定要点击开哪个结果。标题上关键词的选择至关重要。


1,与网页内容最相关的关键词:首先,标题应该和网页内容相对应,即标题上的内容,可以在网页主体部分得到展示。一般来说,如果网页主要部分是一篇文章,网页标题的主要内容往往是文章标题;如果网页是一个综合信息的集合页,我们也要找到这些信息的共同点,通过一两个关键词将其表现在网页标题上。


【正面case】婴儿哭闹的原因_婴儿期0-1岁_育儿知识_宝宝树


2,选择用户更常用的关键词:同一个物品有不同的名称、同一件事情也有不同的描述,选择哪个放在title上呢?虽然百度有强大的关键词分析算法,但我们还是推荐大家使用搜索引擎用户最常用的那个。关键词的热度可以通过百度指数进行查询,目前网络上还有一些其它工具,大家也可以参考一下。


如佳能有一款单反相机,标准全称是“5dmarkii”,简称“5D2”,广大搜索爱好者亲切地称之为“无敌兔”。从字面上看,“5dmarkii”输入起来比较麻烦。再看一下它们的百度指数:


“5dmarkii”:257

“5D2”:875

“无敌兔”:467


很明显,“5D2”由于指向清晰、朗朗上口且容易输入,最受搜索引擎用户喜爱


3,选择能满足用户明确需求的关键词:能体现用户明确需求的关键词往往字数偏长,SEO人员一般称此为长尾关键词,如“杭州两日游路线”“从上海到西塘怎么走”等。我们的产品人员和编辑应该一方面了解用户需求,一方面制作可以满足用户需求的网页,通过将含有用户明确需求的关键词写在标题上来吸引搜索引擎用户的点击。


【正面case】【宝宝补锌】儿童缺锌怎么办_怎样给孩子补锌-摇篮网


4,在真实的前提下体现时效性:在标题放时效性关键词最重要的前提是:网页里真的有时效性内容,否则非常容易被搜索引擎惩罚。


【正面case】2014-10月8万套北京北京二手房价格,真房价没水分!「链家」


5,直击用户痛点,引发共鸣:还以上面那个case为例,虚假房源和房价一直是二手房买方心中的痛,“2014-10月8万套北京北京二手房价格,真房价没水分!「链家」”直面用户痛点,再配上“链家”的招牌,点击率一直居高不下。当然,这已经超越了SEO的范畴,相信编辑人员在这方面有更多经验。


三,设计标题时避免做下面的事情


1,欺骗用户和搜索引擎:有些网站在标题上放置过多重复意义的关键词,甚至放置与内容无关的热门关键词以吸引甚至欺骗用户和搜索引擎,这样很容易被搜索引擎判为作弊而受到惩罚,是一件非常危险的事情。所以:千万不要在标题中体现网页内没有的内容。


【反面case1】青蛇完整_青蛇完整全集在线观看_青蛇完整完整版视频——该网页仅仅提供了片花视频


【反面case2】李小璐不雅视频引撞脸门2万抵3万拒绝“撞楼”——该网页主要介绍的是楼盘信息


2,避免多网页使用同一个标题:原则上每个网页都应该有自己独特的标题,如果整个网站的标题全部一致,将失去向搜索引擎表达含义的重要机会。

','','','/images/1.jpg',1476453850,1476063980,'撰写,搜索引擎,喜欢,的,标题','','通过观察可以发现,那些可以从搜索引擎获得大批流量的站点来说,SEO思维渗透到了每个岗位,产品人员在提交项目MRD时,网页标题的写法是必不可少的一部分;编辑对文章内容负责的同时',0,0,NULL,50),(5,3,0,337,'Baiduspider主要抓取策略类型','

Baiduspider在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂的抓取策略。以下做简单介绍:


1、抓取友好性


互联网资源庞大的数量级,这就要求抓取系统尽可能的高效利用带宽,在有限的硬件和带宽资源下尽可能多的抓取到有价值资源。这就造成了另一个问题,耗费被抓网站的带宽造成访问压力,如果程度过大将直接影响被抓网站的正常用户访问行为。因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响网站的正常用户访问又能尽量多的抓取到有价值资源的目的。


通常情况下,最基本的是基于ip的压力控制。这是因为如果基于域名,可能存在一个域名对多个ip(很多大网站)或多个域名对应同一个ip(小网站共享ip)的问题。实际中,往往根据ip及域名的多种条件进行压力调配控制。同时,站长平台也推出了压力反馈工具,站长可以人工调配对自己网站的抓取压力,这时百度spider将优先按照站长的要求进行抓取压力控制。


对同一个站点的抓取速度控制一般分为两类:其一,一段时间内的抓取频率;其二,一段时间内的抓取流量。同一站点不同的时间抓取速度也会不同,例如夜深人静月黑风高时候抓取的可能就会快一些,也视具体站点类型而定,主要思想是错开正常用户访问高峰,不断的调整。对于不同站点,也需要不同的抓取速度。


2、常用抓取返回码示意


简单介绍几种百度支持的返回码:


1)最常见的404代表“NOTFOUND”,认为网页已经失效,通常将在库中删除,同时短期内如果spider再次发现这条url也不会抓取;


2)503代表“ServiceUnavailable”,认为网页临时不可访问,通常网站临时关闭,带宽有限等会产生这种情况。对于网页返回503状态码,百度spider不会把这条url直接删除,同时短期内将会反复访问几次,如果网页已恢复,则正常抓取;如果继续返回503,那么这条url仍会被认为是失效链接,从库中删除。


3)403代表“Forbidden”,认为网页目前禁止访问。如果是新url,spider暂时不抓取,短期内同样会反复访问几次;如果是已收录url,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条url也会被认为是失效链接,从库中删除。


4)301代表是“MovedPermanently”,认为网页重定向至新url。当遇到站点迁移、域名更换、站点改版的情况时,我们推荐使用301返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。


3、多种url重定向的识别


互联网中一部分网页因为各种各样的原因存在url重定向状态,为了对这部分资源正常抓取,就要求spider对url重定向进行识别判断,同时防止作弊行为。重定向可分为三类:http30x重定向、metarefresh重定向和js重定向。另外,百度也支持Canonical标签,在效果上可以认为也是一种间接的重定向。


4、抓取优先级调配


由于互联网资源规模的巨大以及迅速的变化,对于搜索引擎来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取优先级调配策略。主要包括:深度优先遍历策略、宽度优先遍历策略、pr优先策略、反链策略、社会化分享指导策略等等。每个策略各有优劣,在实际情况中往往是多种策略结合使用以达到最优的抓取效果。


5、重复url的过滤


spider在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。判断是否已经抓取其中涉及到最核心的是快速查找并对比,同时涉及到url归一化识别,例如一个url中包含大量无效参数而实际是同一个页面,这将视为同一个url来对待。


6、暗网数据的获取


互联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据是存在于网络数据库中,spider难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成搜索引擎无法抓取。目前来说,对于暗网数据的获取主要思路仍然是通过开放平台采用数据提交的方式来解决,例如“百度站长平台”“百度开放平台”等等。


7、抓取反作弊


spider在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如分析url特征、分析页面大小及内容、分析站点规模对应抓取规模等等。

','','','',1476454079,1476064033,'Baiduspider,主要,抓取,策略,类型','','Baiduspider在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂',0,0,NULL,50),(6,1,0,396,'百度移动搜索优化前期准备工作','

域名:


与PC网站一样,域名是用户对一个网站的第一印象。一个好的移动域名,不仅容易记忆、易于输入,还能方便用户向其他人推荐。


域名应尽量简短易懂,越短的域名记忆成本越低,越容易理解的域名能让用户更直观了解网站主旨。移动站域名建议多采用m.a.com/3g.a.com/wap.a.com等,避免使用过于复杂或技术性的形式,例如adcbxxx.a.com/html5.a.com等。


服务器:


选择正规空间服务商,避免与大量垃圾网站共用IP,保证网站访问速度和稳定性。其他这里不再赘述,默认有PC网站基础。


网站语言:


根据终端以及技术的发展,我们强烈建议使用html5作为移动站建站语言,并且根据不同终端机型进行自动适配。

','','','',1476454177,1476064079,'百度,移动,搜索,优化,前期,准备工作','','域名:与PC网站一样,域名是用户对一个网站的第一印象。一个好的移动域名,不仅容易记忆、易于输入,还能方便用户向其他人推荐。域名应尽量简短易懂,越短的域名记忆成本越低,越',0,0,NULL,50),(7,4,0,225,'Baiduspider抓取过程中涉及的网络协议','

百度搜索引擎会设计复杂的抓取策略,其实搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过搜索引擎将自己的内容推广出去获取更多的受众。spider抓取系统直接涉及互联网资源提供者的利益,为了使搜素引擎与站长能够达到双赢,在抓取过程中双方必须遵守一定的规范,以便于双方的数据处理及对接。这种过程中遵守的规范也就是日常中我们所说的一些网络协议。


以下简单列举:


http协议:超文本传输协议,是互联网上应用最为广泛的一种网络协议,客户端和服务器端请求和应答的标准。客户端一般情况是指终端用户,服务器端即指网站。终端用户通过浏览器、蜘蛛等向服务器指定端口发送http请求。发送http请求会返回对应的httpheader信息,可以看到包括是否成功、服务器类型、网页最近更新时间等内容。


https协议:实际是加密版http,一种更加安全的数据传输协议。


UA属性:UA即user-agent,是http协议中的一个属性,代表了终端的身份,向服务器端表明我是谁来干嘛,进而服务器端可以根据不同的身份来做出不同的反馈结果。


robots协议:robots.txt是搜索引擎访问一个网站时要访问的第一个文件,用以来确定哪些是被允许抓取的哪些是被禁止抓取的。robots.txt必须放在网站根目录下,且文件名要小写。详细的robots.txt写法可参考http://www.robotstxt.org。百度严格按照robots协议执行,另外,同样支持网页内容中添加的名为robots的meta标签,index、follow、nofollow等指令。

','','','',1476454131,1476064125,'Baiduspider,抓取,过程中,涉及,的,网络,协议','','百度搜索引擎会设计复杂的抓取策略,其实搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过',0,0,NULL,50),(8,4,1,281,'如何在百度移动搜索获得良好的排序','

同PC端的需求一样,收录问题解决后面临的就是排序问题了。在介绍排序原则之前先简休介绍一下移动搜索结果的构成,移动搜索主要有如下几类结果构成:移动页面、转码页面、PC页面。


整体上,移动搜索的结果是由PC搜索结果加入更多的移动端特征后进一步调整而来,优先对移动页面进行排序。其中,移动页面结果包括移动适配提交的与PC一一对应的移动页以及单独的移动页面。百度移动搜索引擎中为更好满足用户信息需求,会同时为用户提供PC网页和mobile网页,但目前大多数PC页在移动终端中直接浏览的体验较差(交互、兼容和流量等)。因此,我们会对百度搜索结果中缺乏可替代mobile资源的PC页进行格式转换,变为适合手机浏览的mobile网页,使其能在移动终端浏览器有较好的浏览体验,这便是转码页面。其他PC页面,是百度经过各种策略识别发现其没有对应的移动页面资源、且转码后体验不佳的情况下保留的一种结果类型。对于后两者我们强烈建议站长进行移动化。


下面我们主要来说说如何才能在百度移动搜索获得良好的排序:


1,需要主旨明确的标题:


网页的title用于告诉用户和搜索引擎这个网页的主题是什么,搜索引擎判断一个页面内容权重时,title是主要因素之一。每个页面的内容都是不同的,都应该有独一无二的title。移动站的标题应该注意如下:


1)主题明确,涵盖页面主旨内容;


2)不罗列关键词,使用户能够快速分辨出主题,最好不超过17个中文汉字,否则在搜索结果中会被折行,超过24个会被截断;


3)重要内容往左放,保持语义通顺;


4)使用用户熟知或习惯用语


百度建议不同层级页面的标题按照如下的形式来命名:


●首页标题:网站名称_核心服务or核心产品


●频道页标题:(频道核心服务_)频道名称_网站名称


●详情页标题:文章标题_频道名称_网站名称


2,优质的原创内容建设、整合系列服务:


网站的服务对象是用户,搜索引擎只是网站普通用户中的一员,因此,一切从用户角度出发提供用户需要的原创内容、整合系列服务非常重要,每天保持一定数量的原创内容更新,同时可以对优质内容、系列服务进行整合形成专题。但是,鉴于技术的现状,仍然要注意如下几点:


1)不要使用ajax技术在希望搜索引擎可读的地方;


2)不将主要内容创建在iframe框架中;


3)移动端很多内容使用图片,搜索引擎目前无法理解复杂图片,请使用alt标签进行标记;


3,做好终端适配:


随着移动互联网的发展,越来越多的用户使用移动设备访问网站,百度移动搜索会对移动站给予优先排序的机会,对于有PC网站的站长,我们强烈建议您做以下工作:


1、做好自适配,将移动终端的访问自主适配跳转至移动版站点;


2、为了更快地告知百度移动搜索您PC网站与移动站内容的一一对应关系,建议使用站长平台移动适配工具进行适配关系提交。


3、同时还可以使用如下Meta标签协议规范:


●如果该网页只适合在电脑上进行浏览,例如(http://www.sina.com.cn/),在html中加入如下meta:


<meta name="applicable-device" content="pc">


●如果该网页只适合在移动设备上进行浏览,例如(http://3g.sina.com.cn/),在html中加入如下meta:


<meta name="applicable-device" content="mobile">


●如果网页采用了响应式网页设计,例如(http://cdc.tencent.com/)不需要经过url自适配跳转就可以根据浏览器的屏幕大小自适应的展现合适的效果,同时适合在移动设备和电脑上进行浏览,在html中加入如下meta:


<meta name="applicable-device" content="pc,mobile">


4,地理信息标注有助于获得更精准的流量:


为了方便用户根据自身位置查找或使用本地信息与服务,百度移动搜索将根据用户地理位置信息优先将具有地域属性的内容展现给用户,如果是提供地域性信息服务的站点,可以通过为自己网页添加地理位置信息Meta标注,让目标用户在百度移动搜索中更快的找到您网站的内容。具体用法可见下一小节《如何为移动站点添加地理位置信息》


5,尽量快的加载速度:


移动互联网上,网站的打开速度对用户体验的影响更加凸显。实验表明一个页面的打开时间超过4~5s,绝大部分用户选择关闭。因此,加载速度也是百度移动搜索中一个重要的排序因素,站长需要在这方面进行专项优化。


6,搜索结果转码:


在移动终端中直接浏览PC页面体验较差(交互、兼容和流量等)。为改善搜索用户的浏览体验,我们会对搜索结果中缺乏可替代移动资源的PC页(无移动站)进行格式转换,变为适合手机浏览的移动网页。如想了解更多可参考:转码声明。我们强烈建议没有移动化的站长进行网站移动化,提交移动适配,将转码流量领回家。

','','','',1476454326,1476064196,'如,何在,百度,移动,搜索,获得,良,好的,排序','','同PC端的需求一样,收录问题解决后面临的就是排序问题了。在介绍排序原则之前先简休介绍一下移动搜索结果的构成,移动搜索主要有如下几类结果构成:移动页面、转码页面、PC页面。整',0,0,NULL,50),(9,2,3,404,'网页优化的大忌','

网页进行正常优化,有助于搜索引擎更好地了解网页主体内容,而网页优化同样是一柄双刃剑,搞不好会造成费力不讨好、甚至被搜索引擎惩罚的后果。在百度看来,网页优化的大忌有三点:


1,关键词过度堆彻:有些站点为了提高网站的相关性,在TITLE、description、keywords等地方进行关键词堆彻,非旦无法起到优化作用,还有可能被惩罚。


*隐藏关键词我们就不用说了,完全是黑帽SEO的范畴,已不在优化之列。


2,关键词过度优化:一些网页过度强调文章中的关键词,甚至将关键词生硬地穿插在文章中,这些都极容易被搜索引擎识别并惩罚。


3,经常改变网页的TITLE和Description:每一次更换网页的TITLE和Description等标签,都有一个百度发现解析记录的过程,没有一个准确的时间段可以描述,如果这个过程时间很短可能不会造成恶劣影响,但如果时间较长,则有可能影响搜索用户的体验。所以说,网页的各种标签应该在网站建设阶段设计好。

','','','/images/2.jpg',1476453839,1476064241,'网页,优化,的,大忌','','网页进行正常优化,有助于搜索引擎更好地了解网页主体内容,而网页优化同样是一柄双刃剑,搞不好会造成费力不讨好、甚至被搜索引擎惩罚的后果。在百度看来,网页优化的大忌有三点',0,0,NULL,50),(10,3,0,392,'百度优先建重要库的原则','

Baiduspider抓了多少页面并不是最重要的,重要的是有多少页面被建索引库,即我们常说的“建库”。众所周知,搜索引擎的索引库是分层级的,优质的网页会被分配到重要索引库,普通网页会待在普通库,再差一些的网页会被分配到低级库去当补充材料。目前60%的检索需求只调用重要索引库即可满足,这也就解释了为什么有些网站的收录量超高流量却一直不理想。


那么,哪些网页可以进入优质索引库呢。其实总的原则就是一个:对用户的价值。包括却不仅于:


1,有时效性且有价值的页面:在这里,时效性和价值是并列关系,缺一不可。有些站点为了产生时效性内容页面做了大量采集工作,产生了一堆无价值面页,也是百度不愿看到的.


2,内容优质的专题页面:专题页面的内容不一定完全是原创的,即可以很好地把各方内容整合在一起,或者增加一些新鲜的内容,比如观点和评论,给用户更丰富全面的内容。


3,高价值原创内容页面:百度把原创定义为花费一定成本、大量经验积累提取后形成的文章。千万不要再问我们伪原创是不是原创。


4,重要个人页面:这里仅举一个例子,科比在新浪微博开户了,即使他不经常更新,但对于百度来说,它仍然是一个极重要的页面。

','','','',1476454498,1476064284,'百度,优先,建,重要,库,的,原则','','Baiduspider抓了多少页面并不是最重要的,重要的是有多少页面被建索引库,即我们常说的“建库”。众所周知,搜索引擎的索引库是分层级的,优质的网页会被分配到重要索引库,普通网页',0,0,NULL,50),(11,3,0,483,'禁止百度移动搜索对网页进行转码的方法','

在百度移动搜索引擎中,为了更好地满足用户需求,会同时为用户提供PC网页和mobile网页,但目前受交互、兼容和流量等因素影响,PC页在移动终端中的直接浏览体验较差。因此,百度移动搜索对缺乏可替代mobile资源的PC页进行格式转码,将其转换为适合手机浏览的mobile页,使其能够在移动终端浏览器有较好的浏览体验。为了最大程度改善PC页在手机上的浏览体验,转码时会去除PC页中不能在手机浏览器上浏览的内容,并改善不适用mobile的交互功能。目前不仅百度移动搜索提供转码技术,各大搜索引擎均有并提供类似的技术。


那么,如果站长不希望自己的站点被转码、依然希望手机端用户浏览PC页该如何操作呢?可以使用no-transform协议,no-transform协议为如下两种形式:


第一种,HTTPResponse中显式声明Cache-control为no-transform。


第二种,meta标签中显式声明Cache-control为no-tranform,格式为:


<head>


<meta http-equiv="Cache-Control" content="no-transform"/>


</head>


如果站点不希望页面被转码,可添加此协议,当用户通过百度移动搜索进入该网站时会进入原网页浏览。


还有一种情况,即站点本身有对应的mobile页面所以不希望被转码时,建议站长使用百度移动搜索的移动适配服务,百度会帮助用户直接进入对应的mobile页面。

','','','',1476454369,1476064353,'禁止,百度,移动,搜索,对,网页,进行,转,码,的,方法','','在百度移动搜索引擎中,为了更好地满足用户需求,会同时为用户提供PC网页和mobile网页,但目前受交互、兼容和流量等因素影响,PC页在移动终端中的直接浏览体验较差。因此,百度移动搜',0,0,NULL,50),(12,4,0,384,'网站内容创作的大忌','

网站制作内容是一件持续性投入的工作,在人力、技术、财力上都需要较大投入,一些站点急于求成寻找捷径,制作了很多垃圾内容,最终被搜索引擎惩罚,可谓得不偿失。希望站长抛弃以下行为,从《百度网页搜索质量白皮书》中寻找答案。


1,站内大量重复内容:很多网站,尤其是商业网站,往往使用同一个模板,不同网页的主体内容高度相似或相同,仅一些TITLE等标签进行了改变。比如一些招投标网站,为了让更多的地区得到投标内容,他们制作了大量页面,标题采用地区+内容的方式,而页面的主体内容都是完全相同的。再如下图,同样仅标题和图片不同,主体内容相对,对于百度搜索引擎来说,都属于站内大量重复内容。


2,利用与站点无关的热词引流:有些网站,尤其是新闻源站点紧盯百度的时效性热词,与自己网站文章的标题进行整合,其实就是我们常说的标题党,如“李娜退役隐情体育明星豪宅全揭秘”,用户点击后自然看不到关于李娜退役隐情的内容。此种行为一经发现,网站会被取消新闻源资格,即使内容真的是原创,也会因此行为遭受牵连。


3,制作低质静态搜索结果页或TAG标签页:很多网站都采用了将站内搜索结果页转为静态页面的方式,整合站点资源,以期形成相关性得分高的页面。但实际来看,很多站点通过站内搜索或者tag生成的页面相关性并不好,或者说产生了许多对百度搜索结果造成负面影响的页面。如果整个目录都存在这样的现象,那么被惩罚的可能性就非常大了。如下方截图,用户搜“列车时刻表”,这样的页面对他来说毫无价值。该页面所在的目录或站点做了很多类似内容的页面,且已经对作用造成恶劣影响时,极容易受到搜索引擎的惩罚。


4,不负责任的采集:首先需要澄清的是,百度说的拒绝采集,指的是大量复制互联网上已有内容,对采集的内容不加整理即全部推至线上的“偷懒”行为。对于将采集来的内容进行再加工高效整合后,产出内容丰富的高质量网页,百度没有拒绝理由。所以,我们说,百度不喜欢不负责任的偷懒采集行为。


5,伪原创:上面我们说百度不喜欢不负责任的采集,于是有些人开始动起了伪装原创的脑筋。采集内容后对部分关键词进行批量修改,企图让百度认为这些都是独特内容,然而内容已经是面目全非,甚至无法读通——这也是百度不喜欢的,风险很大。还是刚才说的观点,百度不排斥站点采集内容,关键是如何应用采集的内容和数据,如何整合成用户和搜索引擎都需要的内容才是站长应该考虑的内容。

','','','',1483178699,1476454002,'网站,内容,创作,的,大忌','','网站制作内容是一件持续性投入的工作,在人力、技术、财力上都需要较大投入,一些站点急于求成寻找捷径,制作了很多垃圾内容,最终被搜索引擎惩罚,可谓得不偿失。希望站长抛弃以',1,0,1,50),(13,3,0,460,'获得流量的基础——良好收录','

搜索引擎作为网站的普通访客,对网站的抓取索引、对站点/页面的价值判定以及排序,都是从用户体验出发。因此,原则上网站任何对用户体验的改进,都是对搜索引擎的改进。但是限于当前整体的网络环境以及技术性原因,落实用户体验的具体手段也是需要考虑对搜索引擎友好性的,使之在满足用户体验的前提下也会让搜索引擎更易理解处理。那么,面向移动搜索引擎的网站建设,主要分为三个部分:如何更好的让百度移动搜索收录网站中的内容、如何在移动搜索中获得更好的排名、如何让用户从众多的搜索结果中快速地找到并点击你的网站。简单来说,就是收录、排序、展现。下面我们将从收录开始介绍:


机器可读:


与PCspider一样,百度通过一个叫Baiduspider2.0的程序抓取移动互联网上的网页,经过处理后建入移动索引中。当前Baiduspider只能读懂文本内容,flash、图片等非文本内容暂时不能很好处理,放置在flash、图片中的文字,百度只能简单识别。建议使用文本而不是flash、图片、Javascript等来显示重要的内容或链接,搜索引擎暂时无法识别Flash、图片、复杂Javascript中的内容;同时仅存在于flash、Javascript中包含链接指向的网页,百度移动搜索同样可能无法收录。不要在希望搜索引擎可读的地方使用Ajax技术,比如标题、导航、内容等等。


结构扁平:


移动站点同样应该有清晰的结构以及更浅的链接深度,这能够使用户快速地获取有用信息,也能使搜索引擎快速理解网站中的每一个页面所处的结构层次。网站结构建议采用树型结构,树型结构通常分为以下三个层级:首页——频道——详情页。


网状链接:


理想的网站结构是树型扁平,从首页到内容页的层级尽量少,这样更有利于搜索引擎进行处理。同时,网站内的链接也应该采用网状结构,网站上每个网页都要有指向上、下级网页以及相关内容的链接,避免出现链接孤岛:首页有到频道页的链接,频道页有到首页和普通内容页的链接、普通内容页有到上级频道以及首页的链接、内容相关的网页间互相有链接。网站中每一个网页,都应该是网站结构的一部分,都应该能通过其他网页链接到,这样才能使baiduspider尽可能全地遍历网站内容。同时,重要内容应该距离首页更近,有利于价值传递。


简单易懂的URL:


具有良好描述性、规范、简单的URL,有利于用户更方便地记忆和直观判断网页内容,也有利于搜索引擎更有效地抓取和理解网页。网站设计之初,就应该有合理的URL规划。我们认为:


1、对于移动站首页一般采用m.a.com/3g.a.com/wap.a.com;


2、频道页采用m.a.com/n1/、m.a.com/n2/(其对应于PC站点的频道n2.a.com),当然,n1、n2直接可读更佳;


3、详情页的URL尽量短,减少无效参数,例如统计参数等,保证同一页面只有一套URL地址,不同形式的URL301跳转到正常URL上;


4、Robots封禁baiduspider抓取您不想展示给用户的URL形式以及不愿被百度抓取的私密数据。


涵盖主旨的anchor:


anchor即锚文本,对一个链接的描述性文字,锚文本写得越简洁明确,用户越易明白该指向网页的主旨内容。用户发现你的网页是从其他网页上的链接,锚文本是该网页的唯一介绍。跟普通用户相同,搜索引擎spider在刚发现一个网页时,锚文本也是对该页面理解的唯一因素,同时对于最终的排序起到具有一定的作用。


合理的返回码:


百度spider在进行抓取和处理时,是根据http协议规范来设置相应逻辑的,常用的几个返回码如下:


404,百度会认为网页已失效已删除,通常在索引中删除,短期内spider再次遇到也不会抓取。建议内容删除、网页失效等的情况下使用404返回码,告知百度spider该页面已失效。同时网站中尽量减少死链的累计。如果网站临时关闭或抓取压力过大,不要直接返回404,使用503。


301,永久性重定向,百度会认为当前URL永久跳转至新URL。当网站改版、更换域名等情况下,建议使用301,同时配合使用站长平台的网站改版工具。


503,百度会认为临时不可访问,不会直接删除,短期内再来检查几次。如果网站临时性关闭建议使用503。

','','','',1476454233,1476064847,'获得,流量,的,基础,—,—,良好,收录','','搜索引擎作为网站的普通访客,对网站的抓取索引、对站点/页面的价值判定以及排序,都是从用户体验出发。因此,原则上网站任何对用户体验的改进,都是对搜索引擎的改进。但是限于当',0,0,NULL,50),(14,4,0,329,'知名站点优化注意事项','

百度需要优质站点为搜索引擎数据库源源不断地输入物料,同时优质站点也需要从百度获得搜索引擎用户,并将这些搜索引擎用户转化为自己的用户。知名站点可以视为优质站点的一部分,是指已经有较高用户知名度的网站。那么,站点越是知名,就越应从长远考虑,以用户体验为重,积极、合理的进行网站优化,远离作弊和恶意SEO行为,建立与百度更加稳固的合作关系。


但我们经常可以遗憾地看到一些知名站点使用了不够合理的内容建设方式,比如:大量不同内容的页面均使用同一标题;通过图片的方式展现网页中的重要信息(新闻、联系电话等);重要页面通过flash建设,未使用文字说明等。


类似的方式,都会使搜索引擎对网站内容的理解造成困难,最终影响网站在搜索引擎中的表现。我们建议您采取对搜索引擎友好的方式进行网站建设,具体内容可参考《百度搜索引擎优化指南》以及《百度搜索引擎网页质量白皮书》。


知名站点对搜索引擎,乃至整个互联网欢迎的影响通常是巨大的,若使用恶意的作弊行为,其产生的影响也就越坏。例如:


●出售首页的友情链接。


●大量采集其他网站的内容,原创内容比例极低,甚至大量采集网站主题无关的内容,或机器批量生成没有价值的页面。


●网站被大量广告内容占领。


知名站点一旦有恶意的作弊行为,所产生的恶劣影响将是巨大的,有可能会受到搜索引擎更为严格的惩罚。知名站点更应从长远考虑,提升用户口碑,用高质量的内容赢得用户青睐。不应为了短期的流量,不顾用户的体验,做有损品牌形象的事情。


此外,知名站点也是各路作弊者的“众矢之的”,容易被恶意利用。站点越知名,被利用的价值就越大。我们建议您建立防范意识,避免由于被作弊者利用引起的不必要风险。


●您的站点是否足够安全?当网站被黑客攻击时,是否有足够的应对机制?


●由用户贡献内容的功能,是否做好了应对作弊的措施?


●对于不想让搜索引擎收录的内容,是否在robot.txt中清晰指明?

','百度站长','','',1483178708,1476453609,'知名,站点,优化,注意事项','','百度需要优质站点为搜索引擎数据库源源不断地输入物料,同时优质站点也需要从百度获得搜索引擎用户,并将这些搜索引擎用户转化为自己的用户。知名站点可以视为优质站点的一部分,',0,0,1,50),(15,3,0,369,'获得关键词数据的渠道有哪些','

上面说到了站点收集关键词的方向,那么通过什么渠道可以获取关键词数据呢。关键词收集也可以叫关键词拓展,其实就是思路的拓展。这个思路在工作岗位中的表现不同:产品运营的角度,可能是个不断深挖行业用户需求、了解需求、站在用户角度想问题设计产品;而从搜索营销、seo角度它则成为深挖行业用户需求的具体体现。那么获取关键词数据的主要渠道有哪些呢:


1,公开渠道:


1)几家搜索引擎搜索结果相关搜索、SUG


2)几家大的社交、媒体(微博)的相关搜索


3)各搜索引擎的风云榜


4)竞价关键词获取工具(搜索引擎一般都提供)


5)百度司南工具


6)cnzz数据中心(http://data.cnzz.com/);


2,通过站内工具:


1)Log日志关键词数据;


2)站内搜索关键词数据;


3)商务通、商桥等在线咨询工具内的关键词;


3,观察竞争对手:


1)竞争对手网站上的tag页;


2)竞争对手(尤其是对seo很重视的)站点title;


3)竞争对手竞价关键词;


4)竞争对手页面keyword;


4,购买:


1)寻找数据公司、工具服务商,购买数据


5,常识拓展:


1)问答类(百度知道、知乎)相关问题的提问挖掘


2)内容评论中的需求挖掘,主题下的评论一定是跟这个主题紧密相关的关注点、bbs评论


3)通过了解行业用户组合关键词,如:地区+关键词


最后,就像大家知道的那样,即便这项工作真的很重要,但在如今碎片需求满足程度和信息内容大爆发的情况下,关注关键词背后的深层需求的分析、内容的差异提供、需求针对的产品细化,比不停的扩大关键词量要更重要的多。

','','','',1482034166,1476453964,'获得,关键词,数据,的,渠道,有,哪些','','上面说到了站点收集关键词的方向,那么通过什么渠道可以获取关键词数据呢。关键词收集也可以叫关键词拓展,其实就是思路的拓展。这个思路在工作岗位中的表现不同:产品运营的角度',0,0,NULL,50); +insert into `fl_article`(`id`,`typeid`,`tuijian`,`click`,`title`,`body`,`writer`,`source`,`litpic`,`pubdate`,`addtime`,`keywords`,`seotitle`,`description`,`ischeck`,`typeid2`,`user_id`,`listorder`) values (1,4,0,467,'移动网站建设常见问题','

移动网站兴起时间不长,站长有很多相似的问题。在2014年11月份的百度移动搜索沙龙上,移动专家针对站长提问较多的问题进行了统一回答,与往期沙龙的零星回答合并整理如下:


问:我的移动站内容和PC站是一样的,这样需不需要屏蔽百度的PC搜索蜘蛛?


答:由于百度的PC搜索和移动搜索共用同一个spider,都带有baidu标示,不要进行屏蔽。Spider在抓取时会对页面进行识别,自动判断是PC页还是mobile页,因此建议站长使用规范的html5/xhtml协议语言来建设移动站。


问:手机站使用xhtml与html5开发,对搜索引擎是否有区别?


答:大家使用手机搜索时会发现用2G的情况下移动搜索会给你到极速版,就是保证你得到结果的速度足够快,但是结果样式比较简单。一般情况下极速版我们会优先给Xhtml的结果,触屏版优先给html5,效果更加炫酷。


问:如果是URL、PC访问和移动访问分别识别不同的模版,例如我们有一个URL,PC访问是是这个模版,手机访问是那个模版。那么我们是使用相同的URL好,还是单独的做一个M站好?


答:理想状态下同一套url是最优的。目前受限于机制问题,还有待进一步解决,预期14年底能够完成。目前仍然建议大家移动站使用单独的m链接。同时,暂时不要使用类似这样的url:http://m.site.com?src=http://www.site.com。


问:感谢,我们是这样理解吧,未来的话如果以用户习惯来说,是同一个URL好?


答:理想的技术角度看,是同一个url更好,但是目前尽量仍然使用单独的m链接。


问:一个站点有M站和PC站,采用完全相同的TDK,是否有问题,手机站的SEO规则是否跟PC站相同?


答:TDK代表标题、摘要、关键词是吧?先理解一下。是这样的,PC端和移动端搜索结果展现标题和摘要的字数限制等都是不同的,PC端30多个中文汉字才截断,移动端不到20个就折行了,20多个就省略看不到了。所以,建议移动站使用单独的TDK。


问:如果两个站点它的TDK都是完全相同的,每一个页面,会不会导致站点被惩罚?


答:这里说的两个站如果指同一个站点的PC和移动,肯定是不会导致被惩罚的。


问:外链对手机站是否有效果?


答:外链还是有效果的,但不要做那些垃圾外链,比如说论坛的标签里面或者说买卖链接或者是说批量的发链接有可能被惩罚。正常交换一下链接是有帮助的。0和1是明显不同的。


问:百度移动搜索对我的移动站收录较少,该如何做?


答:1.如果您同时具有PC站,且PC与移动站是一一对应的关系,请利用开放适配工具进行提交,既可以帮助移动站的收录又可以帮助您将PC站的排名转移至移动搜索;2.如果您只有移动站,也可以通过我们的移动sitemap工具向百度进行提交。

','','','',1476454862,1476063853,'移动,网站建设,常见问题','','移动网站兴起时间不长,站长有很多相似的问题。在2014年11月份的百度移动搜索沙龙上,移动专家针对站长提问较多的问题进行了统一回答,与往期沙龙的零星回答合并整理如下:问:我的',0,0,NULL,50),(2,2,1,353,'对百度搜索引擎友好的网站结构','

我们在做网站结构相关SEO工作时,都应该考虑以下四个问题:

1,Baiduspider能不能找到所有网页

2,Baiduspider是否知道哪个网页是重要的

3,Baiduspider能否顺利提取网页内容

4,Baiduspider能否在网页中提炼有用信息 


下面讲的内容便是解决前两个问题的:


一,友好的网站结构


1,扁平or树型:一说到网站结构,大家都会提到扁平结构和树型结构,言必称“结构扁平化”,这些指的是物理结构,即基于内容聚合的目录及文件位置决定的结构。其实对于百度搜索引擎来说,只要结构合理、有逻辑性、内容有规律可循都可以,都是友好的。


2,链接结构:相对于物理结构,就要说到逻辑结构:即通过内部链接形成的链接结构,逻辑结构才是搜索引擎最关注的。对于一个网站来说,网页仅仅可以通过首页——目录1——目录2一层一层follow到是远远不够的,一个优秀的链接结构应该是网状的。


1)首页链接应该链向重要的频道页,频道页再链向下面的节点页或普通页面。同时,频道页、节点页和普通页面都应该可以链回到首页

2)无论哪些页面之间互相链接,都需要一个描述恰当的锚文本

3)链接不要放在JS、FLASH等搜索引擎不可见的位置,使用图片做链接入口应该完善alt标签

   *百度搜索引擎目前仅支持对部分JS和FLASH进行解析,绝大多数放在JS和FLASH里的链接都是获取不到的

4)为重要页面留更多入口。百度搜索引擎认为,获得更多内部投票的网页相对来说更加重要

5) “离首页越近”的网页,越容易受到百度重视。这个“近”指的是页面离首页的点击距离。即使URL所在目录层级较深,只要在首页有入口,百度也认为这是一个非常重要的页面。

6)不要产生可怕的孤岛页面。虽然百度在提交入口、社会化挖掘方面做了许多工作,但链接抓取依然是百度获得新页面的最重要渠道


二,通过导航让百度更好地认识站点


对于用户,导航要解决的问题是:我在网站的什么位置,我想看上一级、甚至上上一级更多内容的入口在哪里;对于spider,导航要解决的问题是:这个页面属于哪个领域,要表达的主题是什么。所以说,清晰的导航系统不仅有助于提高用户体验,对SEO的意义也是重大的,所有SEO做得出色的网站基本都拥有清晰明确的导航。


1,导航内容搜索引擎可见:有网站的导航对用户来说美观友好,对百度来说却是不可见的。目前百度还不能搞定所有的JS和FLASH,保险起见,还是使用HTML的好。图片虽然美丽,作为导航也是对搜索引擎不友好的行为。


2,导航稳定:导航内容应该是相对固定的,不要让导航成为“滚动条”。


3,重要网页尽可能地在导航处可以follow到:百度认为主导航中出现的链接,其重要性仅次于网站首页,所以应该尽量将站内的页面在主导航中安排个位置。当然,主导航上也不可能放过多的内容,哪些链接可以上主导航还需要SEO人员进行平衡。


4,巧用面包屑导航:上面说到,导航对于用户来说,解决了“想看上一级、甚至上上一级更多内容”的问题,这个导航指的就是面包屑导航。面包屑导航可以使结构复杂庞大的大中型网站变得清晰轻盈,在spider进行页面解析时会着重查看面包屑导航内容,强烈建议使用。


三,合理的domain结构


除了在网站建设的时候站长会思考到底使用二级域名还是子目录,在网站运营的过程中,也会考虑是否要把子目录的内容拆分成二级域名。因为很多SEO人员认为二级域名相对独立,其首页会得到百度的重视,能获得更好的排位——其实这是一个片面的错误观点,百度会通过很多指标对同domain下的二级域名和子目录进行重要程度判断,并没有武断地认为谁天生就会比谁强一些。


当SEO认为站内结构已经阻碍了网站高速发展就会考虑改版,最常见的改版便是将子目录移出主站点、单独形成二级域名。但大家都知道,改版肯定会对站点的收录排名和流量造成影响,一定要谨慎。那么在什么情况下才真的需要将子目录换成二级域名呢?其实只有一点:即子目录的内容足够丰富,且与主域的主题关联性不强!


四,url结构很重要


1,url结构规律化:同一个网页有不同url,会造成多个url同时被用户推荐导致权值分散;同时百度最终选择展现的那个url不一定符合你的预期。站点应该尽量不把sessionid和统计代码等不必要的内容放在url,如果一定要这样做可以通过robots禁止百度抓取这些非规范url


2,最好能让用户从url即可判断出网页内容,便于蜘蛛解析的同时便于用户间传播


3,url尽量短


●蜘蛛喜欢:http://tieba.baidu.com.com/f?kw=百度

●蜘蛛不喜欢:http://tieba.baidu.com/f?ct=&tn=&rn=&ln=&cn=0&kw=百度&rs2=&un=&rs1=&rs5=&sn=&rs6=&nvselectvalue=0&oword=百度&tb=cn


4,不要添加蜘蛛难以解析的字符,如

http://mp3.XXX.com/albumlist/234254;;;;;;;%B9&CE%EDWF%.html

http://news.xxx.com/1233,242,111,0.shtml


5,动态参数不要太多太复杂,目前百度对动态url已经有了很好的处理,但是参数过多过复杂的url有可能被蜘蛛认为不重要而抛弃。

','','','/images/3.jpg',1476454546,1476063905,'对,百度,搜索引擎,友,好的,网站,结构','','我们在做网站结构相关SEO工作时,都应该考虑以下四个问题:1,Baiduspider能不能找到所有网页2,Baiduspider是否知道哪个网页是重要的3,Baiduspider能否顺利提取网页内容4,Baiduspider能否在网页',0,0,NULL,50),(3,1,1,379,'在移动搜索展现端获得良好表现的注意事项','

移动网站优化和PC网站的很多方面都是相似甚至相同的,但由于移动搜索界面大小受限,移动网站在标题和摘要的撰写上有很多有别有PC端的情况。


1,有吸引力的title


用户在百度移动搜索中输入query搜索到你的页面时,title作为最重要的内容展现在搜索结果中,主题明确、吸引眼球的title能够使用户第一时间理解你页面的主题是否符合他的需求,进而更快捷地从众多搜索结果中选择你点击你。所以,移动网页的TITLE应该是:


●主题明确;


●简洁扼要,不罗列,尽量不超过17个中文汉字,否则会折行;


●如果你的品牌知名度高,品牌词最好能够展现出来;


●在与内容相符的前提下,吸引眼球


2,不唯一的description,


作为搜索结果摘要的重要选择目标之一,一定不要采用默认形式,用适当的语言对页面进行进一步描述,对title的进一步补充,能够使用户更进一步理解你页面的内容与其需求是否匹配,让你的目标用户更快找到你点击你。


●对title的进一步补充,准确描述页面内容,但不堆砌关键词,否则可能被认为有作弊嫌疑;


●ž每个页面要有不同的description,尽量不适用默认一样的;


●适当的长度,超出会被截断.

','','','',1496551932,1476063946,'在,移动,搜索,展现,端,获得,良好,表现,的,注意事项','','移动网站优化和PC网站的很多方面都是相似甚至相同的,但由于移动搜索界面大小受限,移动网站在标题和摘要的撰写上有很多有别有PC端的情况。1,有吸引力的title用户在百度移动搜索中输',0,0,1,50),(4,2,0,248,'撰写搜索引擎喜欢的标题','

通过观察可以发现,那些可以从搜索引擎获得大批流量的站点来说,SEO思维渗透到了每个岗位,产品人员在提交项目MRD时,网页标题的写法是必不可少的一部分;编辑对文章内容负责的同时,要设计出吸引用户和搜索引擎的标题;而不是单纯地把优化工作全部扔给SEO人员。所以,今天我们想跟产品人员和编辑说说网页标题该怎么写。


一,标题的结构


1,标题字数控制在60个字节内:从以往的经验看,检索用户比较喜欢50个字节左右的标题;对于产品人员和编辑来说,过短的标题有可能无法全面表达网页主题;对于搜索引擎来说,标题过长意味着“超标”,只会保留前60个字节的内容。


【反面case】福州到北京旅游_北京旅游天气如何_北京旅游景点介绍_北京好玩吗_现在去北京旅游会热吗


2,重要内容放在标题的最前面:在众多检索结果中,用户的目光往往聚焦在标题前半段,所以重要信息内容放在标题前部非常重要。


【正面case】关之琳否认脑癌发作称洗牙遭误会|关之琳|癌症_凤凰娱乐


3,放置网站名称,增加曝光机会:有些站点已经在某领域有了一定的知名度和权威性,其站名名称已经成为一种品牌,可以将该品牌词体现在标题中,用户在面对众多结果时,更倾向于选择点击自己熟知网站提供的信息。即使网站目前的知名度还不够,更不应该放过每个品牌曝光的机会。


【正面case:】【单电和微单的区别】-蜂鸟网


【正面case】法国卢浮宫博物馆藏文物精品在中国国家博物馆展出-新华网


二,标题放什么内容更吸引用户


用户在百度搜索框输入关键词后,百度在对相关网页进行排序时,网页标题内容是其考虑的重要因素。同时,搜索结果页内通常会有10个结果,用户往往是通过标题和摘要来决定要点击开哪个结果。标题上关键词的选择至关重要。


1,与网页内容最相关的关键词:首先,标题应该和网页内容相对应,即标题上的内容,可以在网页主体部分得到展示。一般来说,如果网页主要部分是一篇文章,网页标题的主要内容往往是文章标题;如果网页是一个综合信息的集合页,我们也要找到这些信息的共同点,通过一两个关键词将其表现在网页标题上。


【正面case】婴儿哭闹的原因_婴儿期0-1岁_育儿知识_宝宝树


2,选择用户更常用的关键词:同一个物品有不同的名称、同一件事情也有不同的描述,选择哪个放在title上呢?虽然百度有强大的关键词分析算法,但我们还是推荐大家使用搜索引擎用户最常用的那个。关键词的热度可以通过百度指数进行查询,目前网络上还有一些其它工具,大家也可以参考一下。


如佳能有一款单反相机,标准全称是“5dmarkii”,简称“5D2”,广大搜索爱好者亲切地称之为“无敌兔”。从字面上看,“5dmarkii”输入起来比较麻烦。再看一下它们的百度指数:


“5dmarkii”:257

“5D2”:875

“无敌兔”:467


很明显,“5D2”由于指向清晰、朗朗上口且容易输入,最受搜索引擎用户喜爱


3,选择能满足用户明确需求的关键词:能体现用户明确需求的关键词往往字数偏长,SEO人员一般称此为长尾关键词,如“杭州两日游路线”“从上海到西塘怎么走”等。我们的产品人员和编辑应该一方面了解用户需求,一方面制作可以满足用户需求的网页,通过将含有用户明确需求的关键词写在标题上来吸引搜索引擎用户的点击。


【正面case】【宝宝补锌】儿童缺锌怎么办_怎样给孩子补锌-摇篮网


4,在真实的前提下体现时效性:在标题放时效性关键词最重要的前提是:网页里真的有时效性内容,否则非常容易被搜索引擎惩罚。


【正面case】2014-10月8万套北京北京二手房价格,真房价没水分!「链家」


5,直击用户痛点,引发共鸣:还以上面那个case为例,虚假房源和房价一直是二手房买方心中的痛,“2014-10月8万套北京北京二手房价格,真房价没水分!「链家」”直面用户痛点,再配上“链家”的招牌,点击率一直居高不下。当然,这已经超越了SEO的范畴,相信编辑人员在这方面有更多经验。


三,设计标题时避免做下面的事情


1,欺骗用户和搜索引擎:有些网站在标题上放置过多重复意义的关键词,甚至放置与内容无关的热门关键词以吸引甚至欺骗用户和搜索引擎,这样很容易被搜索引擎判为作弊而受到惩罚,是一件非常危险的事情。所以:千万不要在标题中体现网页内没有的内容。


【反面case1】青蛇完整_青蛇完整全集在线观看_青蛇完整完整版视频——该网页仅仅提供了片花视频


【反面case2】李小璐不雅视频引撞脸门2万抵3万拒绝“撞楼”——该网页主要介绍的是楼盘信息


2,避免多网页使用同一个标题:原则上每个网页都应该有自己独特的标题,如果整个网站的标题全部一致,将失去向搜索引擎表达含义的重要机会。

','','','/images/1.jpg',1476453850,1476063980,'撰写,搜索引擎,喜欢,的,标题','','通过观察可以发现,那些可以从搜索引擎获得大批流量的站点来说,SEO思维渗透到了每个岗位,产品人员在提交项目MRD时,网页标题的写法是必不可少的一部分;编辑对文章内容负责的同时',0,0,NULL,50),(5,3,0,337,'Baiduspider主要抓取策略类型','

Baiduspider在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂的抓取策略。以下做简单介绍:


1、抓取友好性


互联网资源庞大的数量级,这就要求抓取系统尽可能的高效利用带宽,在有限的硬件和带宽资源下尽可能多的抓取到有价值资源。这就造成了另一个问题,耗费被抓网站的带宽造成访问压力,如果程度过大将直接影响被抓网站的正常用户访问行为。因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响网站的正常用户访问又能尽量多的抓取到有价值资源的目的。


通常情况下,最基本的是基于ip的压力控制。这是因为如果基于域名,可能存在一个域名对多个ip(很多大网站)或多个域名对应同一个ip(小网站共享ip)的问题。实际中,往往根据ip及域名的多种条件进行压力调配控制。同时,站长平台也推出了压力反馈工具,站长可以人工调配对自己网站的抓取压力,这时百度spider将优先按照站长的要求进行抓取压力控制。


对同一个站点的抓取速度控制一般分为两类:其一,一段时间内的抓取频率;其二,一段时间内的抓取流量。同一站点不同的时间抓取速度也会不同,例如夜深人静月黑风高时候抓取的可能就会快一些,也视具体站点类型而定,主要思想是错开正常用户访问高峰,不断的调整。对于不同站点,也需要不同的抓取速度。


2、常用抓取返回码示意


简单介绍几种百度支持的返回码:


1)最常见的404代表“NOTFOUND”,认为网页已经失效,通常将在库中删除,同时短期内如果spider再次发现这条url也不会抓取;


2)503代表“ServiceUnavailable”,认为网页临时不可访问,通常网站临时关闭,带宽有限等会产生这种情况。对于网页返回503状态码,百度spider不会把这条url直接删除,同时短期内将会反复访问几次,如果网页已恢复,则正常抓取;如果继续返回503,那么这条url仍会被认为是失效链接,从库中删除。


3)403代表“Forbidden”,认为网页目前禁止访问。如果是新url,spider暂时不抓取,短期内同样会反复访问几次;如果是已收录url,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条url也会被认为是失效链接,从库中删除。


4)301代表是“MovedPermanently”,认为网页重定向至新url。当遇到站点迁移、域名更换、站点改版的情况时,我们推荐使用301返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。


3、多种url重定向的识别


互联网中一部分网页因为各种各样的原因存在url重定向状态,为了对这部分资源正常抓取,就要求spider对url重定向进行识别判断,同时防止作弊行为。重定向可分为三类:http30x重定向、metarefresh重定向和js重定向。另外,百度也支持Canonical标签,在效果上可以认为也是一种间接的重定向。


4、抓取优先级调配


由于互联网资源规模的巨大以及迅速的变化,对于搜索引擎来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取优先级调配策略。主要包括:深度优先遍历策略、宽度优先遍历策略、pr优先策略、反链策略、社会化分享指导策略等等。每个策略各有优劣,在实际情况中往往是多种策略结合使用以达到最优的抓取效果。


5、重复url的过滤


spider在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。判断是否已经抓取其中涉及到最核心的是快速查找并对比,同时涉及到url归一化识别,例如一个url中包含大量无效参数而实际是同一个页面,这将视为同一个url来对待。


6、暗网数据的获取


互联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据是存在于网络数据库中,spider难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成搜索引擎无法抓取。目前来说,对于暗网数据的获取主要思路仍然是通过开放平台采用数据提交的方式来解决,例如“百度站长平台”“百度开放平台”等等。


7、抓取反作弊


spider在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如分析url特征、分析页面大小及内容、分析站点规模对应抓取规模等等。

','','','',1476454079,1476064033,'Baiduspider,主要,抓取,策略,类型','','Baiduspider在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂',0,0,NULL,50),(6,1,0,396,'百度移动搜索优化前期准备工作','

域名:


与PC网站一样,域名是用户对一个网站的第一印象。一个好的移动域名,不仅容易记忆、易于输入,还能方便用户向其他人推荐。


域名应尽量简短易懂,越短的域名记忆成本越低,越容易理解的域名能让用户更直观了解网站主旨。移动站域名建议多采用m.a.com/3g.a.com/wap.a.com等,避免使用过于复杂或技术性的形式,例如adcbxxx.a.com/html5.a.com等。


服务器:


选择正规空间服务商,避免与大量垃圾网站共用IP,保证网站访问速度和稳定性。其他这里不再赘述,默认有PC网站基础。


网站语言:


根据终端以及技术的发展,我们强烈建议使用html5作为移动站建站语言,并且根据不同终端机型进行自动适配。

','','','',1476454177,1476064079,'百度,移动,搜索,优化,前期,准备工作','','域名:与PC网站一样,域名是用户对一个网站的第一印象。一个好的移动域名,不仅容易记忆、易于输入,还能方便用户向其他人推荐。域名应尽量简短易懂,越短的域名记忆成本越低,越',0,0,NULL,50),(7,4,0,225,'Baiduspider抓取过程中涉及的网络协议','

百度搜索引擎会设计复杂的抓取策略,其实搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过搜索引擎将自己的内容推广出去获取更多的受众。spider抓取系统直接涉及互联网资源提供者的利益,为了使搜素引擎与站长能够达到双赢,在抓取过程中双方必须遵守一定的规范,以便于双方的数据处理及对接。这种过程中遵守的规范也就是日常中我们所说的一些网络协议。


以下简单列举:


http协议:超文本传输协议,是互联网上应用最为广泛的一种网络协议,客户端和服务器端请求和应答的标准。客户端一般情况是指终端用户,服务器端即指网站。终端用户通过浏览器、蜘蛛等向服务器指定端口发送http请求。发送http请求会返回对应的httpheader信息,可以看到包括是否成功、服务器类型、网页最近更新时间等内容。


https协议:实际是加密版http,一种更加安全的数据传输协议。


UA属性:UA即user-agent,是http协议中的一个属性,代表了终端的身份,向服务器端表明我是谁来干嘛,进而服务器端可以根据不同的身份来做出不同的反馈结果。


robots协议:robots.txt是搜索引擎访问一个网站时要访问的第一个文件,用以来确定哪些是被允许抓取的哪些是被禁止抓取的。robots.txt必须放在网站根目录下,且文件名要小写。详细的robots.txt写法可参考http://www.robotstxt.org。百度严格按照robots协议执行,另外,同样支持网页内容中添加的名为robots的meta标签,index、follow、nofollow等指令。

','','','',1476454131,1476064125,'Baiduspider,抓取,过程中,涉及,的,网络,协议','','百度搜索引擎会设计复杂的抓取策略,其实搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过',0,0,NULL,50),(8,4,1,281,'如何在百度移动搜索获得良好的排序','

同PC端的需求一样,收录问题解决后面临的就是排序问题了。在介绍排序原则之前先简休介绍一下移动搜索结果的构成,移动搜索主要有如下几类结果构成:移动页面、转码页面、PC页面。


整体上,移动搜索的结果是由PC搜索结果加入更多的移动端特征后进一步调整而来,优先对移动页面进行排序。其中,移动页面结果包括移动适配提交的与PC一一对应的移动页以及单独的移动页面。百度移动搜索引擎中为更好满足用户信息需求,会同时为用户提供PC网页和mobile网页,但目前大多数PC页在移动终端中直接浏览的体验较差(交互、兼容和流量等)。因此,我们会对百度搜索结果中缺乏可替代mobile资源的PC页进行格式转换,变为适合手机浏览的mobile网页,使其能在移动终端浏览器有较好的浏览体验,这便是转码页面。其他PC页面,是百度经过各种策略识别发现其没有对应的移动页面资源、且转码后体验不佳的情况下保留的一种结果类型。对于后两者我们强烈建议站长进行移动化。


下面我们主要来说说如何才能在百度移动搜索获得良好的排序:


1,需要主旨明确的标题:


网页的title用于告诉用户和搜索引擎这个网页的主题是什么,搜索引擎判断一个页面内容权重时,title是主要因素之一。每个页面的内容都是不同的,都应该有独一无二的title。移动站的标题应该注意如下:


1)主题明确,涵盖页面主旨内容;


2)不罗列关键词,使用户能够快速分辨出主题,最好不超过17个中文汉字,否则在搜索结果中会被折行,超过24个会被截断;


3)重要内容往左放,保持语义通顺;


4)使用用户熟知或习惯用语


百度建议不同层级页面的标题按照如下的形式来命名:


●首页标题:网站名称_核心服务or核心产品


●频道页标题:(频道核心服务_)频道名称_网站名称


●详情页标题:文章标题_频道名称_网站名称


2,优质的原创内容建设、整合系列服务:


网站的服务对象是用户,搜索引擎只是网站普通用户中的一员,因此,一切从用户角度出发提供用户需要的原创内容、整合系列服务非常重要,每天保持一定数量的原创内容更新,同时可以对优质内容、系列服务进行整合形成专题。但是,鉴于技术的现状,仍然要注意如下几点:


1)不要使用ajax技术在希望搜索引擎可读的地方;


2)不将主要内容创建在iframe框架中;


3)移动端很多内容使用图片,搜索引擎目前无法理解复杂图片,请使用alt标签进行标记;


3,做好终端适配:


随着移动互联网的发展,越来越多的用户使用移动设备访问网站,百度移动搜索会对移动站给予优先排序的机会,对于有PC网站的站长,我们强烈建议您做以下工作:


1、做好自适配,将移动终端的访问自主适配跳转至移动版站点;


2、为了更快地告知百度移动搜索您PC网站与移动站内容的一一对应关系,建议使用站长平台移动适配工具进行适配关系提交。


3、同时还可以使用如下Meta标签协议规范:


●如果该网页只适合在电脑上进行浏览,例如(http://www.sina.com.cn/),在html中加入如下meta:


<meta name="applicable-device" content="pc">


●如果该网页只适合在移动设备上进行浏览,例如(http://3g.sina.com.cn/),在html中加入如下meta:


<meta name="applicable-device" content="mobile">


●如果网页采用了响应式网页设计,例如(http://cdc.tencent.com/)不需要经过url自适配跳转就可以根据浏览器的屏幕大小自适应的展现合适的效果,同时适合在移动设备和电脑上进行浏览,在html中加入如下meta:


<meta name="applicable-device" content="pc,mobile">


4,地理信息标注有助于获得更精准的流量:


为了方便用户根据自身位置查找或使用本地信息与服务,百度移动搜索将根据用户地理位置信息优先将具有地域属性的内容展现给用户,如果是提供地域性信息服务的站点,可以通过为自己网页添加地理位置信息Meta标注,让目标用户在百度移动搜索中更快的找到您网站的内容。具体用法可见下一小节《如何为移动站点添加地理位置信息》


5,尽量快的加载速度:


移动互联网上,网站的打开速度对用户体验的影响更加凸显。实验表明一个页面的打开时间超过4~5s,绝大部分用户选择关闭。因此,加载速度也是百度移动搜索中一个重要的排序因素,站长需要在这方面进行专项优化。


6,搜索结果转码:


在移动终端中直接浏览PC页面体验较差(交互、兼容和流量等)。为改善搜索用户的浏览体验,我们会对搜索结果中缺乏可替代移动资源的PC页(无移动站)进行格式转换,变为适合手机浏览的移动网页。如想了解更多可参考:转码声明。我们强烈建议没有移动化的站长进行网站移动化,提交移动适配,将转码流量领回家。

','','','',1476454326,1476064196,'如,何在,百度,移动,搜索,获得,良,好的,排序','','同PC端的需求一样,收录问题解决后面临的就是排序问题了。在介绍排序原则之前先简休介绍一下移动搜索结果的构成,移动搜索主要有如下几类结果构成:移动页面、转码页面、PC页面。整',0,0,NULL,50),(9,2,3,404,'网页优化的大忌','

网页进行正常优化,有助于搜索引擎更好地了解网页主体内容,而网页优化同样是一柄双刃剑,搞不好会造成费力不讨好、甚至被搜索引擎惩罚的后果。在百度看来,网页优化的大忌有三点:


1,关键词过度堆彻:有些站点为了提高网站的相关性,在TITLE、description、keywords等地方进行关键词堆彻,非旦无法起到优化作用,还有可能被惩罚。


*隐藏关键词我们就不用说了,完全是黑帽SEO的范畴,已不在优化之列。


2,关键词过度优化:一些网页过度强调文章中的关键词,甚至将关键词生硬地穿插在文章中,这些都极容易被搜索引擎识别并惩罚。


3,经常改变网页的TITLE和Description:每一次更换网页的TITLE和Description等标签,都有一个百度发现解析记录的过程,没有一个准确的时间段可以描述,如果这个过程时间很短可能不会造成恶劣影响,但如果时间较长,则有可能影响搜索用户的体验。所以说,网页的各种标签应该在网站建设阶段设计好。

','','','/images/2.jpg',1476453839,1476064241,'网页,优化,的,大忌','','网页进行正常优化,有助于搜索引擎更好地了解网页主体内容,而网页优化同样是一柄双刃剑,搞不好会造成费力不讨好、甚至被搜索引擎惩罚的后果。在百度看来,网页优化的大忌有三点',0,0,NULL,50),(10,3,0,393,'百度优先建重要库的原则','

Baiduspider抓了多少页面并不是最重要的,重要的是有多少页面被建索引库,即我们常说的“建库”。众所周知,搜索引擎的索引库是分层级的,优质的网页会被分配到重要索引库,普通网页会待在普通库,再差一些的网页会被分配到低级库去当补充材料。目前60%的检索需求只调用重要索引库即可满足,这也就解释了为什么有些网站的收录量超高流量却一直不理想。


那么,哪些网页可以进入优质索引库呢。其实总的原则就是一个:对用户的价值。包括却不仅于:


1,有时效性且有价值的页面:在这里,时效性和价值是并列关系,缺一不可。有些站点为了产生时效性内容页面做了大量采集工作,产生了一堆无价值面页,也是百度不愿看到的.


2,内容优质的专题页面:专题页面的内容不一定完全是原创的,即可以很好地把各方内容整合在一起,或者增加一些新鲜的内容,比如观点和评论,给用户更丰富全面的内容。


3,高价值原创内容页面:百度把原创定义为花费一定成本、大量经验积累提取后形成的文章。千万不要再问我们伪原创是不是原创。


4,重要个人页面:这里仅举一个例子,科比在新浪微博开户了,即使他不经常更新,但对于百度来说,它仍然是一个极重要的页面。

','','','',1476454498,1476064284,'百度,优先,建,重要,库,的,原则','','Baiduspider抓了多少页面并不是最重要的,重要的是有多少页面被建索引库,即我们常说的“建库”。众所周知,搜索引擎的索引库是分层级的,优质的网页会被分配到重要索引库,普通网页',0,0,NULL,50),(11,3,0,484,'禁止百度移动搜索对网页进行转码的方法','

在百度移动搜索引擎中,为了更好地满足用户需求,会同时为用户提供PC网页和mobile网页,但目前受交互、兼容和流量等因素影响,PC页在移动终端中的直接浏览体验较差。因此,百度移动搜索对缺乏可替代mobile资源的PC页进行格式转码,将其转换为适合手机浏览的mobile页,使其能够在移动终端浏览器有较好的浏览体验。为了最大程度改善PC页在手机上的浏览体验,转码时会去除PC页中不能在手机浏览器上浏览的内容,并改善不适用mobile的交互功能。目前不仅百度移动搜索提供转码技术,各大搜索引擎均有并提供类似的技术。


那么,如果站长不希望自己的站点被转码、依然希望手机端用户浏览PC页该如何操作呢?可以使用no-transform协议,no-transform协议为如下两种形式:


第一种,HTTPResponse中显式声明Cache-control为no-transform。


第二种,meta标签中显式声明Cache-control为no-tranform,格式为:


<head>


<meta http-equiv="Cache-Control" content="no-transform"/>


</head>


如果站点不希望页面被转码,可添加此协议,当用户通过百度移动搜索进入该网站时会进入原网页浏览。


还有一种情况,即站点本身有对应的mobile页面所以不希望被转码时,建议站长使用百度移动搜索的移动适配服务,百度会帮助用户直接进入对应的mobile页面。

','','','',1476454369,1476064353,'禁止,百度,移动,搜索,对,网页,进行,转,码,的,方法','','在百度移动搜索引擎中,为了更好地满足用户需求,会同时为用户提供PC网页和mobile网页,但目前受交互、兼容和流量等因素影响,PC页在移动终端中的直接浏览体验较差。因此,百度移动搜',0,0,NULL,50),(12,4,0,384,'网站内容创作的大忌','

网站制作内容是一件持续性投入的工作,在人力、技术、财力上都需要较大投入,一些站点急于求成寻找捷径,制作了很多垃圾内容,最终被搜索引擎惩罚,可谓得不偿失。希望站长抛弃以下行为,从《百度网页搜索质量白皮书》中寻找答案。


1,站内大量重复内容:很多网站,尤其是商业网站,往往使用同一个模板,不同网页的主体内容高度相似或相同,仅一些TITLE等标签进行了改变。比如一些招投标网站,为了让更多的地区得到投标内容,他们制作了大量页面,标题采用地区+内容的方式,而页面的主体内容都是完全相同的。再如下图,同样仅标题和图片不同,主体内容相对,对于百度搜索引擎来说,都属于站内大量重复内容。


2,利用与站点无关的热词引流:有些网站,尤其是新闻源站点紧盯百度的时效性热词,与自己网站文章的标题进行整合,其实就是我们常说的标题党,如“李娜退役隐情体育明星豪宅全揭秘”,用户点击后自然看不到关于李娜退役隐情的内容。此种行为一经发现,网站会被取消新闻源资格,即使内容真的是原创,也会因此行为遭受牵连。


3,制作低质静态搜索结果页或TAG标签页:很多网站都采用了将站内搜索结果页转为静态页面的方式,整合站点资源,以期形成相关性得分高的页面。但实际来看,很多站点通过站内搜索或者tag生成的页面相关性并不好,或者说产生了许多对百度搜索结果造成负面影响的页面。如果整个目录都存在这样的现象,那么被惩罚的可能性就非常大了。如下方截图,用户搜“列车时刻表”,这样的页面对他来说毫无价值。该页面所在的目录或站点做了很多类似内容的页面,且已经对作用造成恶劣影响时,极容易受到搜索引擎的惩罚。


4,不负责任的采集:首先需要澄清的是,百度说的拒绝采集,指的是大量复制互联网上已有内容,对采集的内容不加整理即全部推至线上的“偷懒”行为。对于将采集来的内容进行再加工高效整合后,产出内容丰富的高质量网页,百度没有拒绝理由。所以,我们说,百度不喜欢不负责任的偷懒采集行为。


5,伪原创:上面我们说百度不喜欢不负责任的采集,于是有些人开始动起了伪装原创的脑筋。采集内容后对部分关键词进行批量修改,企图让百度认为这些都是独特内容,然而内容已经是面目全非,甚至无法读通——这也是百度不喜欢的,风险很大。还是刚才说的观点,百度不排斥站点采集内容,关键是如何应用采集的内容和数据,如何整合成用户和搜索引擎都需要的内容才是站长应该考虑的内容。

','','','',1483178699,1476454002,'网站,内容,创作,的,大忌','','网站制作内容是一件持续性投入的工作,在人力、技术、财力上都需要较大投入,一些站点急于求成寻找捷径,制作了很多垃圾内容,最终被搜索引擎惩罚,可谓得不偿失。希望站长抛弃以',1,0,1,50),(13,3,0,461,'获得流量的基础——良好收录','

搜索引擎作为网站的普通访客,对网站的抓取索引、对站点/页面的价值判定以及排序,都是从用户体验出发。因此,原则上网站任何对用户体验的改进,都是对搜索引擎的改进。但是限于当前整体的网络环境以及技术性原因,落实用户体验的具体手段也是需要考虑对搜索引擎友好性的,使之在满足用户体验的前提下也会让搜索引擎更易理解处理。那么,面向移动搜索引擎的网站建设,主要分为三个部分:如何更好的让百度移动搜索收录网站中的内容、如何在移动搜索中获得更好的排名、如何让用户从众多的搜索结果中快速地找到并点击你的网站。简单来说,就是收录、排序、展现。下面我们将从收录开始介绍:


机器可读:


与PCspider一样,百度通过一个叫Baiduspider2.0的程序抓取移动互联网上的网页,经过处理后建入移动索引中。当前Baiduspider只能读懂文本内容,flash、图片等非文本内容暂时不能很好处理,放置在flash、图片中的文字,百度只能简单识别。建议使用文本而不是flash、图片、Javascript等来显示重要的内容或链接,搜索引擎暂时无法识别Flash、图片、复杂Javascript中的内容;同时仅存在于flash、Javascript中包含链接指向的网页,百度移动搜索同样可能无法收录。不要在希望搜索引擎可读的地方使用Ajax技术,比如标题、导航、内容等等。


结构扁平:


移动站点同样应该有清晰的结构以及更浅的链接深度,这能够使用户快速地获取有用信息,也能使搜索引擎快速理解网站中的每一个页面所处的结构层次。网站结构建议采用树型结构,树型结构通常分为以下三个层级:首页——频道——详情页。


网状链接:


理想的网站结构是树型扁平,从首页到内容页的层级尽量少,这样更有利于搜索引擎进行处理。同时,网站内的链接也应该采用网状结构,网站上每个网页都要有指向上、下级网页以及相关内容的链接,避免出现链接孤岛:首页有到频道页的链接,频道页有到首页和普通内容页的链接、普通内容页有到上级频道以及首页的链接、内容相关的网页间互相有链接。网站中每一个网页,都应该是网站结构的一部分,都应该能通过其他网页链接到,这样才能使baiduspider尽可能全地遍历网站内容。同时,重要内容应该距离首页更近,有利于价值传递。


简单易懂的URL:


具有良好描述性、规范、简单的URL,有利于用户更方便地记忆和直观判断网页内容,也有利于搜索引擎更有效地抓取和理解网页。网站设计之初,就应该有合理的URL规划。我们认为:


1、对于移动站首页一般采用m.a.com/3g.a.com/wap.a.com;


2、频道页采用m.a.com/n1/、m.a.com/n2/(其对应于PC站点的频道n2.a.com),当然,n1、n2直接可读更佳;


3、详情页的URL尽量短,减少无效参数,例如统计参数等,保证同一页面只有一套URL地址,不同形式的URL301跳转到正常URL上;


4、Robots封禁baiduspider抓取您不想展示给用户的URL形式以及不愿被百度抓取的私密数据。


涵盖主旨的anchor:


anchor即锚文本,对一个链接的描述性文字,锚文本写得越简洁明确,用户越易明白该指向网页的主旨内容。用户发现你的网页是从其他网页上的链接,锚文本是该网页的唯一介绍。跟普通用户相同,搜索引擎spider在刚发现一个网页时,锚文本也是对该页面理解的唯一因素,同时对于最终的排序起到具有一定的作用。


合理的返回码:


百度spider在进行抓取和处理时,是根据http协议规范来设置相应逻辑的,常用的几个返回码如下:


404,百度会认为网页已失效已删除,通常在索引中删除,短期内spider再次遇到也不会抓取。建议内容删除、网页失效等的情况下使用404返回码,告知百度spider该页面已失效。同时网站中尽量减少死链的累计。如果网站临时关闭或抓取压力过大,不要直接返回404,使用503。


301,永久性重定向,百度会认为当前URL永久跳转至新URL。当网站改版、更换域名等情况下,建议使用301,同时配合使用站长平台的网站改版工具。


503,百度会认为临时不可访问,不会直接删除,短期内再来检查几次。如果网站临时性关闭建议使用503。

','','','',1476454233,1476064847,'获得,流量,的,基础,—,—,良好,收录','','搜索引擎作为网站的普通访客,对网站的抓取索引、对站点/页面的价值判定以及排序,都是从用户体验出发。因此,原则上网站任何对用户体验的改进,都是对搜索引擎的改进。但是限于当',0,0,NULL,50),(14,4,0,330,'知名站点优化注意事项','

百度需要优质站点为搜索引擎数据库源源不断地输入物料,同时优质站点也需要从百度获得搜索引擎用户,并将这些搜索引擎用户转化为自己的用户。知名站点可以视为优质站点的一部分,是指已经有较高用户知名度的网站。那么,站点越是知名,就越应从长远考虑,以用户体验为重,积极、合理的进行网站优化,远离作弊和恶意SEO行为,建立与百度更加稳固的合作关系。


但我们经常可以遗憾地看到一些知名站点使用了不够合理的内容建设方式,比如:大量不同内容的页面均使用同一标题;通过图片的方式展现网页中的重要信息(新闻、联系电话等);重要页面通过flash建设,未使用文字说明等。


类似的方式,都会使搜索引擎对网站内容的理解造成困难,最终影响网站在搜索引擎中的表现。我们建议您采取对搜索引擎友好的方式进行网站建设,具体内容可参考《百度搜索引擎优化指南》以及《百度搜索引擎网页质量白皮书》。


知名站点对搜索引擎,乃至整个互联网欢迎的影响通常是巨大的,若使用恶意的作弊行为,其产生的影响也就越坏。例如:


●出售首页的友情链接。


●大量采集其他网站的内容,原创内容比例极低,甚至大量采集网站主题无关的内容,或机器批量生成没有价值的页面。


●网站被大量广告内容占领。


知名站点一旦有恶意的作弊行为,所产生的恶劣影响将是巨大的,有可能会受到搜索引擎更为严格的惩罚。知名站点更应从长远考虑,提升用户口碑,用高质量的内容赢得用户青睐。不应为了短期的流量,不顾用户的体验,做有损品牌形象的事情。


此外,知名站点也是各路作弊者的“众矢之的”,容易被恶意利用。站点越知名,被利用的价值就越大。我们建议您建立防范意识,避免由于被作弊者利用引起的不必要风险。


●您的站点是否足够安全?当网站被黑客攻击时,是否有足够的应对机制?


●由用户贡献内容的功能,是否做好了应对作弊的措施?


●对于不想让搜索引擎收录的内容,是否在robot.txt中清晰指明?

','百度站长','','',1483178708,1476453609,'知名,站点,优化,注意事项','','百度需要优质站点为搜索引擎数据库源源不断地输入物料,同时优质站点也需要从百度获得搜索引擎用户,并将这些搜索引擎用户转化为自己的用户。知名站点可以视为优质站点的一部分,',0,0,1,50),(15,3,0,370,'获得关键词数据的渠道有哪些','

上面说到了站点收集关键词的方向,那么通过什么渠道可以获取关键词数据呢。关键词收集也可以叫关键词拓展,其实就是思路的拓展。这个思路在工作岗位中的表现不同:产品运营的角度,可能是个不断深挖行业用户需求、了解需求、站在用户角度想问题设计产品;而从搜索营销、seo角度它则成为深挖行业用户需求的具体体现。那么获取关键词数据的主要渠道有哪些呢:


1,公开渠道:


1)几家搜索引擎搜索结果相关搜索、SUG


2)几家大的社交、媒体(微博)的相关搜索


3)各搜索引擎的风云榜


4)竞价关键词获取工具(搜索引擎一般都提供)


5)百度司南工具


6)cnzz数据中心(http://data.cnzz.com/);


2,通过站内工具:


1)Log日志关键词数据;


2)站内搜索关键词数据;


3)商务通、商桥等在线咨询工具内的关键词;


3,观察竞争对手:


1)竞争对手网站上的tag页;


2)竞争对手(尤其是对seo很重视的)站点title;


3)竞争对手竞价关键词;


4)竞争对手页面keyword;


4,购买:


1)寻找数据公司、工具服务商,购买数据


5,常识拓展:


1)问答类(百度知道、知乎)相关问题的提问挖掘


2)内容评论中的需求挖掘,主题下的评论一定是跟这个主题紧密相关的关注点、bbs评论


3)通过了解行业用户组合关键词,如:地区+关键词


最后,就像大家知道的那样,即便这项工作真的很重要,但在如今碎片需求满足程度和信息内容大爆发的情况下,关注关键词背后的深层需求的分析、内容的差异提供、需求针对的产品细化,比不停的扩大关键词量要更重要的多。

','','','',1482034166,1476453964,'获得,关键词,数据,的,渠道,有,哪些','','上面说到了站点收集关键词的方向,那么通过什么渠道可以获取关键词数据呢。关键词收集也可以叫关键词拓展,其实就是思路的拓展。这个思路在工作岗位中的表现不同:产品运营的角度',0,0,NULL,50); /*Table structure for table `fl_attachment` */ @@ -244,11 +244,11 @@ CREATE TABLE `fl_bonus` ( `add_time` int(10) DEFAULT '0' COMMENT '添加时间', `num` mediumint(5) DEFAULT '-1' COMMENT '优惠券数量,预留,-1表示不限', PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='优惠券表'; +) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='优惠券表'; /*Data for the table `fl_bonus` */ -insert into `fl_bonus`(`id`,`name`,`money`,`min_amount`,`start_time`,`end_time`,`point`,`status`,`add_time`,`num`) values (1,'用户红包','2.00','1.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,0,0,0),(2,'商品红包','10.00','2.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,0,0,0),(3,'订单红包','20.00','1500.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,0,0,0),(4,'线下红包','5.00','4.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,0,0,0); +insert into `fl_bonus`(`id`,`name`,`money`,`min_amount`,`start_time`,`end_time`,`point`,`status`,`add_time`,`num`) values (1,'用户红包','12.00','11.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,1,0,10),(2,'商品红包','10.00','2.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,0,0,1),(3,'订单红包','20.00','1500.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,0,0,2),(4,'线下红包','5.00','4.00','2010-10-10 00:00:00','2018-10-10 00:00:00',0,0,0,4); /*Table structure for table `fl_cart` */ @@ -264,10 +264,12 @@ CREATE TABLE `fl_cart` ( `type` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '购物车商品类型;0普通;1团够;2拍卖;3夺宝奇兵', `add_time` int(11) DEFAULT '0' COMMENT '添加时间', PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; /*Data for the table `fl_cart` */ +insert into `fl_cart`(`id`,`user_id`,`goods_id`,`shop_id`,`goods_number`,`goods_attr`,`type`,`add_time`) values (8,3,4,0,1,NULL,0,1513481867); + /*Table structure for table `fl_collect_goods` */ DROP TABLE IF EXISTS `fl_collect_goods`; @@ -282,11 +284,11 @@ CREATE TABLE `fl_collect_goods` ( KEY `user_id` (`user_id`), KEY `goods_id` (`goods_id`), KEY `is_attention` (`is_attention`) -) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; /*Data for the table `fl_collect_goods` */ -insert into `fl_collect_goods`(`id`,`user_id`,`goods_id`,`add_time`,`is_attention`) values (1,1,1,1,0),(9,5,4,1509380131,0),(6,5,3,1509102460,0),(10,3,4,1510843133,0); +insert into `fl_collect_goods`(`id`,`user_id`,`goods_id`,`add_time`,`is_attention`) values (1,1,1,1,0),(9,5,4,1509380131,0),(6,5,3,1509102460,0),(12,3,4,1513612675,0),(11,3,1,1512660255,0); /*Table structure for table `fl_comment` */ @@ -296,8 +298,6 @@ CREATE TABLE `fl_comment` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `comment_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '用户评论的类型;0评论的是商品,1评论的是文章', `id_value` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '文章或者商品的id,文章对应的是article的article_id;商品对应的是goods的goods_id', - `email` varchar(60) NOT NULL DEFAULT '' COMMENT '评论是提交的Email地址,默认取的user的email', - `user_name` varchar(60) NOT NULL DEFAULT '' COMMENT '评论该文章或商品的人的名称,取值user的user_name', `content` text NOT NULL COMMENT '评论的内容', `comment_rank` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '该文章或者商品的重星级;只有1到5星;由数字代替;其中5代表5星', `add_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '评论的时间', @@ -305,12 +305,13 @@ CREATE TABLE `fl_comment` ( `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否被管理员批准显示;1是;0未批准显示', `parent_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '评论的父节点,取值该表的comment_id字段,如果该字段为0,则是一个普通评论,否则该条评论就是该字段的值所对应的评论的回复', `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '发表该评论的用户的用户id,取值user的user_id', + `is_anonymous` tinyint(1) DEFAULT '0' COMMENT '是否匿名,0否', PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='用户对文章和产品的评论列表'; +) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='用户对文章和产品的评论列表'; /*Data for the table `fl_comment` */ -insert into `fl_comment`(`id`,`comment_type`,`id_value`,`email`,`user_name`,`content`,`comment_rank`,`add_time`,`ip_address`,`status`,`parent_id`,`user_id`) values (4,0,60,'ecshop@ecshop.com','ecshop','商品非常好用,超级喜欢',5,1462949841,'180.169.8.10',1,0,1),(5,0,59,'ecshop@ecshop.com','ecshop','非常喜欢此商品,感觉太棒了',5,1462949877,'180.169.8.10',0,0,1),(6,0,59,'ecshop@ecshop.com','ecshop','样子非常不错,超级喜欢',5,1462949929,'180.169.8.10',0,0,1),(9,0,10,'','','qw22e',3,1502381975,'127.0.0.1',1,0,1); +insert into `fl_comment`(`id`,`comment_type`,`id_value`,`content`,`comment_rank`,`add_time`,`ip_address`,`status`,`parent_id`,`user_id`,`is_anonymous`) values (4,0,60,'商品非常好用,超级喜欢',5,1462949841,'180.169.8.10',1,0,1,0),(5,0,59,'非常喜欢此商品,感觉太棒了',5,1462949877,'180.169.8.10',0,0,1,0),(6,0,59,'样子非常不错,超级喜欢',5,1462949929,'180.169.8.10',0,0,1,0),(9,0,10,'qw22e',3,1502381975,'127.0.0.1',1,0,1,0),(22,0,4,'sfgsdg',5,1513057776,'127.0.0.1',1,0,3,1),(21,0,3,'dfhgds',5,1513057776,'127.0.0.1',1,0,3,1); /*Table structure for table `fl_feedback` */ @@ -327,7 +328,7 @@ CREATE TABLE `fl_feedback` ( /*Data for the table `fl_feedback` */ -insert into `fl_feedback`(`id`,`content`,`created_at`,`user_id`,`title`) values (1,'发过火对光反射','2017-07-27 14:13:31',127,''),(2,'content123','2017-08-08 15:46:26',1,'title321'),(3,'content六角恐龙','2017-08-08 15:46:49',1,'title螺丝款计划'); +insert into `fl_feedback`(`id`,`content`,`created_at`,`user_id`,`title`) values (1,'发过火对光反射','2017-07-27 14:13:31',127,''),(3,'content六角恐龙','2017-08-08 15:46:49',1,'title螺丝款计划'); /*Table structure for table `fl_friendlink` */ @@ -382,18 +383,44 @@ CREATE TABLE `fl_goods` ( `warn_number` tinyint(3) DEFAULT '1' COMMENT '商品报警数量', `spec` text COMMENT '商品规格,json', `listorder` smallint(5) DEFAULT '50' COMMENT '排序', + `brand_id` int(10) DEFAULT '0' COMMENT '商品品牌', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*Data for the table `fl_goods` */ -insert into `fl_goods`(`id`,`typeid`,`tuijian`,`click`,`title`,`body`,`sn`,`price`,`litpic`,`pubdate`,`add_time`,`keywords`,`seotitle`,`description`,`status`,`shipping_fee`,`market_price`,`goods_number`,`user_id`,`sale`,`cost_price`,`goods_weight`,`point`,`comments`,`promote_start_date`,`promote_price`,`promote_end_date`,`goods_img`,`warn_number`,`spec`,`listorder`) values (1,2,0,5657,'示例产品一','是的发生','sn123456','45000.00','/uploads/2017/06/201706041951031181.jpg',1496577749,1496577749,'示例,产品,一','','',0,'0.00','50000.00',100,1,0,'0.00','0.00',NULL,NULL,NULL,'0.00',NULL,'/uploads/2017/06/201706041951031181.jpg',NULL,NULL,50),(2,1,0,20,'示例产品二','说的是','sn987','1.00','/uploads/2017/06/201706042011354141.jpg',1496578330,1496578313,'产品,示例,二','','',0,'3.00','2.00',101,1,3,'0.00','0.00',NULL,NULL,NULL,'0.00',NULL,'/uploads/2017/06/201706042011354141.jpg',NULL,NULL,50),(3,1,0,25,'示例产品三','是的发生','sn232143','5.10','/uploads/2017/06/201706042012428057.jpg',1496578380,1496578380,'示例,产品,三','','',0,'3.00','4.00',98,1,1,'0.00','0.00',NULL,NULL,NULL,'0.00',NULL,'/uploads/2017/06/201706042012428057.jpg',NULL,NULL,50),(4,1,0,84,'示例产品四2','电热熔','sn9809702','5.00','/uploads/2017/06/201706042013331349.jpg',1500994245,1496578429,'示例,产品,四','','',0,'3.00','6.00',93,1,4,'0.00','0.00',NULL,NULL,NULL,'0.00',NULL,'/uploads/2017/06/201706042013331349.jpg',NULL,NULL,50); +insert into `fl_goods`(`id`,`typeid`,`tuijian`,`click`,`title`,`body`,`sn`,`price`,`litpic`,`pubdate`,`add_time`,`keywords`,`seotitle`,`description`,`status`,`shipping_fee`,`market_price`,`goods_number`,`user_id`,`sale`,`cost_price`,`goods_weight`,`point`,`comments`,`promote_start_date`,`promote_price`,`promote_end_date`,`goods_img`,`warn_number`,`spec`,`listorder`,`brand_id`) values (1,2,1,5671,'示例产品一','

是的发生

','sn123456','45000.00','/uploads/2017/06/201706041951031181.jpg',1512273964,1496577749,'示例,产品,一','','是的发生',0,'0.00','50000.00',99,1,0,'0.00','0.00',NULL,NULL,0,'0.00',0,'/uploads/2017/06/201706041951031181.jpg',NULL,NULL,50,0),(2,1,1,27,'示例产品二','说的是','sn987','1.00','/uploads/2017/06/201706042011354141.jpg',1496578330,1496578313,'产品,示例,二','','',0,'3.00','2.00',106,1,3,'0.00','0.00',NULL,NULL,NULL,'0.00',NULL,'/uploads/2017/06/201706042011354141.jpg',NULL,NULL,50,0),(3,1,0,34,'示例产品三','是的发生','sn232143','5.10','/uploads/2017/06/201706042012428057.jpg',1496578380,1496578380,'示例,产品,三','','',0,'3.00','4.00',103,1,1,'0.00','0.00',NULL,NULL,NULL,'0.00',NULL,'/uploads/2017/06/201706042012428057.jpg',NULL,NULL,50,0),(4,1,0,91,'示例产品四2','

电热熔

','sn9809702','5.00','/uploads/2017/06/201706042013331349.jpg',1512232754,1496578429,'示例,产品,四','','电热熔',0,'3.00','6.00',92,1,4,'0.00','0.00',NULL,NULL,0,'0.00',0,'/uploads/2017/06/201706042013331349.jpg',NULL,NULL,50,4); + +/*Table structure for table `fl_goods_brand` */ -/*Table structure for table `fl_goods_photo` */ +DROP TABLE IF EXISTS `fl_goods_brand`; -DROP TABLE IF EXISTS `fl_goods_photo`; +CREATE TABLE `fl_goods_brand` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `pid` int(11) NOT NULL DEFAULT '0' COMMENT '父级id', + `add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间', + `title` varchar(150) NOT NULL DEFAULT '' COMMENT '名称', + `seotitle` varchar(150) NOT NULL DEFAULT '' COMMENT 'seo标题', + `keywords` varchar(60) NOT NULL DEFAULT '' COMMENT '关键词', + `description` varchar(240) NOT NULL DEFAULT '' COMMENT '描述', + `content` text COMMENT '内容', + `litpic` varchar(100) NOT NULL DEFAULT '' COMMENT '缩略图', + `status` smallint(1) NOT NULL DEFAULT '0' COMMENT '是否显示,0显示', + `listorder` smallint(5) NOT NULL DEFAULT '50' COMMENT '排序', + `cover_img` varchar(100) NOT NULL DEFAULT '' COMMENT '封面', + `click` int(11) NOT NULL DEFAULT '0' COMMENT '点击量', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -CREATE TABLE `fl_goods_photo` ( +/*Data for the table `fl_goods_brand` */ + +insert into `fl_goods_brand`(`id`,`pid`,`add_time`,`title`,`seotitle`,`keywords`,`description`,`content`,`litpic`,`status`,`listorder`,`cover_img`,`click`) values (1,0,1496576972,'书籍','','','','

书籍

','',1,50,'',0),(2,0,1496576993,'数码','','','',NULL,'',1,50,'',0),(3,0,1500994389,'qq2','qq','qq','','

qq2

','/uploads/2017/12/201712030020502112.jpg',0,2,'/uploads/2017/12/201712030021046553.jpg',2); + +/*Table structure for table `fl_goods_img` */ + +DROP TABLE IF EXISTS `fl_goods_img`; + +CREATE TABLE `fl_goods_img` ( `id` int(11) NOT NULL AUTO_INCREMENT, `url` varchar(150) NOT NULL DEFAULT '' COMMENT '图片地址', `goods_id` int(11) DEFAULT '0' COMMENT '产品id', @@ -402,7 +429,25 @@ CREATE TABLE `fl_goods_photo` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*Data for the table `fl_goods_photo` */ +/*Data for the table `fl_goods_img` */ + +/*Table structure for table `fl_goods_searchword` */ + +DROP TABLE IF EXISTS `fl_goods_searchword`; + +CREATE TABLE `fl_goods_searchword` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(60) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '标题', + `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0显示', + `add_time` int(11) NOT NULL DEFAULT '0', + `listorder` int(11) NOT NULL DEFAULT '50' COMMENT '排序,升序', + `click` int(11) NOT NULL DEFAULT '0' COMMENT '搜索次数', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; + +/*Data for the table `fl_goods_searchword` */ + +insert into `fl_goods_searchword`(`id`,`name`,`status`,`add_time`,`listorder`,`click`) values (3,'示例',0,1456292804,2,4),(4,'一',0,1456292815,4,4),(5,'二',0,0,50,4); /*Table structure for table `fl_goods_type` */ @@ -477,17 +522,19 @@ CREATE TABLE `fl_kuaidi` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL DEFAULT '' COMMENT '快递公司名称', `code` varchar(20) NOT NULL DEFAULT '' COMMENT '公司编码', - `money` decimal(10,2) DEFAULT '0.00' COMMENT '金额', - `country` varchar(20) DEFAULT '' COMMENT '国家编码', + `money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '金额', + `country` varchar(20) NOT NULL DEFAULT '' COMMENT '国家编码', `des` varchar(150) NOT NULL DEFAULT '' COMMENT '说明', - `tel` varchar(60) DEFAULT '' COMMENT '电话', - `website` varchar(60) DEFAULT '' COMMENT '官网', + `tel` varchar(60) NOT NULL DEFAULT '' COMMENT '电话', + `website` varchar(60) NOT NULL DEFAULT '' COMMENT '官网', + `listorder` int(5) NOT NULL DEFAULT '50' COMMENT '排序', + `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否显示,0显示', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8; /*Data for the table `fl_kuaidi` */ -insert into `fl_kuaidi`(`id`,`name`,`code`,`money`,`country`,`des`,`tel`,`website`) values (1,'顺丰','shunfeng','0.00','','','95338','http://www.sf-express.com'),(2,'EMS','ems','0.00','CN','','11183','http://www.ems.com.cn/'),(3,'申通','shentong','0.00','','','95543','http://www.sto.cn'),(4,'圆通','yuantong','0.00','','','95554','http://www.yto.net.cn/'),(5,'中通','zhongtong','0.00','','','95311','http://www.zto.cn'),(6,'汇通','huitongkuaidi','0.00','','特指百世汇通、百世快递,百世物流(百世快运)请用baishiwuliu','95320','http://www.800bestex.com/'),(7,'韵达','yunda','0.00','','','95546','http://www.yundaex.com'),(8,'宅急送','zhaijisong','0.00','','','400-6789-000','http://www.zjs.com.cn'),(9,'德邦','debangwuliu','0.00','','','95353','http://www.deppon.com'),(10,'天天','tiantian','0.00','','','400-188-8888','http://www.ttkdex.com'),(11,'全峰','quanfengkuaidi','0.00','','','400-100-0001','http://www.qfkd.com.cn'),(12,'邮政小包','youzhengguonei','0.00','','','',''),(13,'国通快递','guotongkuaidi','0.00','','','',''),(14,'快捷快递','kuaijiesudi','0.00','','','',''); +insert into `fl_kuaidi`(`id`,`name`,`code`,`money`,`country`,`des`,`tel`,`website`,`listorder`,`status`) values (1,'顺丰','shunfeng','0.00','','','95338','http://www.sf-express.com',50,0),(2,'EMS','ems','0.00','CN','','11183','http://www.ems.com.cn/',50,0),(3,'申通','shentong','0.00','','','95543','http://www.sto.cn',50,0),(4,'圆通','yuantong','0.00','','','95554','http://www.yto.net.cn/',50,0),(5,'中通','zhongtong','0.00','','','95311','http://www.zto.cn',50,0),(6,'汇通','huitongkuaidi','0.00','','特指百世汇通、百世快递,百世物流(百世快运)请用baishiwuliu','95320','http://www.800bestex.com/',50,0),(7,'韵达','yunda','0.00','','','95546','http://www.yundaex.com',50,0),(8,'宅急送','zhaijisong','0.00','','','400-6789-000','http://www.zjs.com.cn',50,0),(9,'德邦','debangwuliu','0.00','','','95353','http://www.deppon.com',50,0),(10,'天天','tiantian','0.00','','','400-188-8888','http://www.ttkdex.com',50,0),(11,'全峰','quanfengkuaidi','0.00','','','400-100-0001','http://www.qfkd.com.cn',50,0),(12,'邮政小包','youzhengguonei','0.00','','','','',50,0),(13,'国通快递','guotongkuaidi','0.00','','','','',50,0),(14,'快捷快递','kuaijiesudi','0.00','','','','',50,0); /*Table structure for table `fl_menu` */ @@ -507,11 +554,11 @@ CREATE TABLE `fl_menu` ( PRIMARY KEY (`id`), KEY `status` (`status`), KEY `parentid` (`pid`) -) ENGINE=MyISAM AUTO_INCREMENT=107 DEFAULT CHARSET=utf8 COMMENT='后台菜单表'; +) ENGINE=MyISAM AUTO_INCREMENT=130 DEFAULT CHARSET=utf8 COMMENT='后台菜单表'; /*Data for the table `fl_menu` */ -insert into `fl_menu`(`id`,`pid`,`action`,`data`,`type`,`status`,`name`,`icon`,`des`,`listorder`) values (1,0,'article_default','',0,1,'文章管理','glyphicon glyphicon-pencil','',0),(6,0,'sysconfig_default','',0,1,'设置','glyphicon glyphicon-wrench','',1000),(3,0,'menu_default','',0,1,'菜单管理','glyphicon glyphicon-th-list','',20),(4,0,'user_default','',0,1,'用户管理','glyphicon glyphicon-user','',30),(2,0,'goods_default','',0,1,'商品管理','glyphicon glyphicon-shopping-cart','',10),(5,0,'extension_default','',0,1,'批量维护','glyphicon glyphicon-cloud','',40),(7,5,'admin_jump','',1,0,'页面跳转','','',1),(8,5,'admin','',1,0,'后台首页','','',2),(9,5,'admin_index_upconfig','',1,0,'更新系统参数配置','','',3),(10,5,'admin_index_upcache','',1,0,'更新缓存','','',4),(11,1,'admin_article','',1,1,'文章列表','','',50),(12,1,'admin_article_add','',1,1,'发布文章','','',50),(13,12,'admin_article_doadd','',1,0,'发布文章提交','','',50),(14,1,'admin_article_edit','',1,0,'文章修改','','',50),(15,14,'admin_article_doedit','',1,0,'文章修改提交','','',50),(16,1,'admin_article_del','',1,0,'文章删除','','',50),(17,1,'admin_article_repetarc','',1,1,'重复文档检测','','',50),(18,1,'admin_article_recommendarc','',1,0,'文章推荐','','',50),(19,1,'admin_article_articleexists','',1,0,'文章是否存在','','',50),(20,1,'admin_category','',1,1,'文章栏目','','',50),(21,20,'admin_category_add','',1,0,'文章栏目添加','','',50),(22,21,'admin_category_doadd','',1,0,'文章栏目添加提交','','',50),(23,20,'admin_category_edit','',1,0,'文章栏目修改','','',50),(24,23,'admin_category_doedit','',1,0,'文章栏目修改提交','','',50),(25,20,'admin_category_del','',1,0,'文章栏目删除','','',50),(26,5,'admin_tag','',1,1,'Tag标签管理','','',50),(27,26,'admin_tag_add','',1,0,'Tag标签添加','','',50),(28,27,'admin_tag_doadd','',1,0,'Tag标签添加提交','','',50),(29,26,'admin_tag_edit','',1,0,'Tag标签修改','','',50),(30,29,'admin_tag_doedit','',1,0,'Tag标签修改提交','','',50),(31,26,'admin_tag_del','',1,0,'Tag标签删除','','',50),(32,1,'admin_page','',1,1,'单页管理','','',50),(33,32,'admin_page_add','',1,0,'单页添加','','',50),(34,33,'admin_page_doadd','',1,0,'单页添加提交','','',50),(35,32,'admin_page_edit','',1,0,'单页修改','','',50),(36,35,'admin_page_doedit','',1,0,'单页修改提交','','',50),(37,32,'admin_page_del','',1,0,'单页删除','','',50),(38,2,'admin_goods','',1,1,'商品列表','','',50),(39,2,'admin_goods_add','',1,1,'商品添加','','',50),(40,39,'admin_goods_doadd','',1,0,'商品添加提交','','',50),(41,2,'admin_goods_edit','',1,0,'商品修改','','',50),(42,41,'admin_goods_doedit','',1,0,'商品修改提交','','',50),(43,2,'admin_goods_del','',1,0,'商品删除','','',50),(44,2,'admin_goods_recommendarc','',1,0,'重复商品','','',50),(45,2,'admin_goods_goodsexists','',1,0,'商品是否存在','','',50),(46,2,'admin_goodstype','',1,1,'商品分类','','',50),(47,46,'admin_goodstype_add','',1,1,'商品分类添加','','',50),(48,47,'admin_goodstype_doadd','',1,0,'商品分类添加提交','','',50),(49,46,'admin_producttype_edit','',1,0,'商品分类修改','','',50),(50,42,'admin_producttype_doedit','',1,0,'商品分类修改提交','','',50),(51,46,'admin_goodstype_del','',1,0,'商品分类删除','','',50),(52,5,'admin_friendlink','',1,1,'友情链接','','',50),(53,52,'admin_friendlink_add','',1,0,'友情链接添加','','',50),(54,53,'admin_friendlink_doadd','',1,0,'友情链接添加提交','','',50),(55,52,'admin_friendlink_edit','',1,0,'友情链接修改','','',50),(56,55,'admin_friendlink_doedit','',1,0,'友情链接修改提交','','',50),(57,52,'admin_friendlink_del','',1,0,'友情链接删除','','',50),(58,5,'admin_keyword','',1,1,'关键词管理','','',50),(59,58,'admin_keyword_add','',1,0,'关键词添加','','',50),(60,59,'admin_keyword_doadd','',1,0,'关键词添加提交','','',50),(61,58,'admin_keyword_edit','',1,0,'关键词修改','','',50),(62,61,'admin_keyword_doedit','',1,0,'关键词修改提交','','',50),(63,58,'admin_keyword_del','',1,0,'关键词删除','','',50),(64,5,'admin_searchword','',1,1,'搜索关键词','','',50),(65,64,'admin_searchword_add','',1,0,'搜索关键词添加','','',50),(66,65,'admin_searchword_doadd','',1,0,'搜索关键词添加提交','','',50),(67,64,'admin_searchword_edit','',1,0,'搜索关键词修改','','',50),(68,67,'admin_searchword_doedit','',1,0,'搜索关键词修改提交','','',50),(69,64,'admin_searchword_del','',1,0,'搜索关键词删除','','',50),(70,5,'admin_slide','',1,1,'轮播图','','',50),(71,70,'admin_slide_add','',1,0,'轮播图添加','','',50),(72,71,'admin_slide_doadd','',1,0,'轮播图添加提交','','',50),(73,70,'admin_slide_edit','',1,0,'轮播图修改','','',50),(74,73,'admin_slide_doedit','',1,0,'轮播图修改提交','','',50),(75,70,'admin_slide_del','',1,0,'轮播图删除','','',50),(76,5,'admin_guestbook','',1,1,'在线留言','','',50),(77,76,'admin_guestbook_del','',1,0,'在线留言删除','','',50),(78,6,'admin_sysconfig','',1,1,'系统基本参数','','',50),(79,78,'admin_sysconfig_add','',1,0,'系统参数添加','','',50),(80,79,'admin_sysconfig_doadd','',1,0,'系统参数添加提交','','',50),(81,78,'admin_sysconfig_edit','',1,0,'系统参数修改','','',50),(82,81,'admin_sysconfig_doedit','',1,0,'系统参数修改提交','','',50),(83,78,'admin_sysconfig_del','',1,0,'系统参数删除','','',50),(84,4,'admin_user','',1,1,'管理员','','',50),(85,84,'admin_user_add','',1,0,'管理员添加','','',50),(86,85,'admin_user_doadd','',1,0,'管理员添加提交','','',50),(87,84,'admin_user_edit','',1,0,'管理员修改','','',50),(88,87,'admin_user_doedit','',1,0,'管理员修改提交','','',50),(89,84,'admin_user_del','',1,0,'管理员删除','','',50),(90,4,'admin_userrole','',1,1,'角色管理','','',50),(91,90,'admin_userrole_add','',1,0,'角色添加','','',50),(92,91,'admin_userrole_doadd','',1,0,'角色添加修改','','',50),(93,90,'admin_userrole_edit','',1,0,'角色修改','','',50),(94,93,'admin_userrole_doedit','',1,0,'角色修改提交','','',50),(95,90,'admin_userrole_del','',1,0,'角色删除','','',50),(96,3,'admin_menu','',1,1,'后台菜单','','',50),(97,96,'admin_menu_add','',1,0,'菜单添加','','',50),(98,97,'admin_menu_doadd','',1,0,'菜单添加提交','','',50),(99,96,'admin_menu_edit','',1,0,'菜单修改','','',50),(100,99,'admin_menu_doedit','',1,0,'菜单修改提交','','',50),(101,96,'admin_menu_del','',1,0,'菜单删除','','',50),(102,90,'admin_userrole_permissions','',1,0,'权限设置','','',50),(103,102,'admin_userrole_dopermissions','',1,0,'权限设置提交','','',50),(104,5,'admin_welcome','',1,0,'欢迎页面','','',5),(105,0,'weixin_default','',0,1,'微信开发管理','glyphicon glyphicon-th-large','',50),(106,105,'admin_weixinmenu','',1,1,'微信自定义菜单','','',50); +insert into `fl_menu`(`id`,`pid`,`action`,`data`,`type`,`status`,`name`,`icon`,`des`,`listorder`) values (1,0,'article_default','',0,1,'文章管理','glyphicon glyphicon-pencil','',0),(6,0,'sysconfig_default','',0,1,'设置','glyphicon glyphicon-wrench','',1000),(3,0,'menu_default','',0,1,'菜单管理','glyphicon glyphicon-th-list','',20),(4,0,'user_default','',0,1,'用户管理','glyphicon glyphicon-user','',30),(2,0,'goods_default','',0,1,'商品管理','glyphicon glyphicon-shopping-cart','',10),(5,0,'extension_default','',0,1,'批量维护','glyphicon glyphicon-cloud','',40),(7,5,'admin_jump','',1,0,'页面跳转','','',1),(8,5,'admin','',1,0,'后台首页','','',2),(9,5,'admin_index_upconfig','',1,0,'更新系统参数配置','','',3),(10,5,'admin_index_upcache','',1,0,'更新缓存','','',4),(11,1,'admin_article','',1,1,'文章列表','','',50),(12,1,'admin_article_add','',1,1,'发布文章','','',50),(13,12,'admin_article_doadd','',1,0,'发布文章提交','','',50),(14,1,'admin_article_edit','',1,0,'文章修改','','',50),(15,14,'admin_article_doedit','',1,0,'文章修改提交','','',50),(16,1,'admin_article_del','',1,0,'文章删除','','',50),(17,1,'admin_article_repetarc','',1,1,'重复文档检测','','',50),(18,1,'admin_article_recommendarc','',1,0,'文章推荐','','',50),(19,1,'admin_article_articleexists','',1,0,'文章是否存在','','',50),(20,1,'admin_category','',1,1,'文章栏目','','',50),(21,20,'admin_category_add','',1,0,'文章栏目添加','','',50),(22,21,'admin_category_doadd','',1,0,'文章栏目添加提交','','',50),(23,20,'admin_category_edit','',1,0,'文章栏目修改','','',50),(24,23,'admin_category_doedit','',1,0,'文章栏目修改提交','','',50),(25,20,'admin_category_del','',1,0,'文章栏目删除','','',50),(26,5,'admin_tag','',1,1,'Tag标签管理','','',50),(27,26,'admin_tag_add','',1,0,'Tag标签添加','','',50),(28,27,'admin_tag_doadd','',1,0,'Tag标签添加提交','','',50),(29,26,'admin_tag_edit','',1,0,'Tag标签修改','','',50),(30,29,'admin_tag_doedit','',1,0,'Tag标签修改提交','','',50),(31,26,'admin_tag_del','',1,0,'Tag标签删除','','',50),(32,1,'admin_page','',1,1,'单页管理','','',50),(33,32,'admin_page_add','',1,0,'单页添加','','',50),(34,33,'admin_page_doadd','',1,0,'单页添加提交','','',50),(35,32,'admin_page_edit','',1,0,'单页修改','','',50),(36,35,'admin_page_doedit','',1,0,'单页修改提交','','',50),(37,32,'admin_page_del','',1,0,'单页删除','','',50),(38,2,'admin_goods','',1,1,'商品列表','','',50),(39,2,'admin_goods_add','',1,1,'商品添加','','',50),(40,39,'admin_goods_doadd','',1,0,'商品添加提交','','',50),(41,2,'admin_goods_edit','',1,0,'商品修改','','',50),(42,41,'admin_goods_doedit','',1,0,'商品修改提交','','',50),(43,2,'admin_goods_del','',1,0,'商品删除','','',50),(44,2,'admin_goods_recommendarc','',1,0,'重复商品','','',50),(45,2,'admin_goods_goodsexists','',1,0,'商品是否存在','','',50),(46,2,'admin_goodstype','',1,1,'商品分类','','',50),(47,46,'admin_goodstype_add','',1,1,'商品分类添加','','',50),(48,47,'admin_goodstype_doadd','',1,0,'商品分类添加提交','','',50),(49,46,'admin_producttype_edit','',1,0,'商品分类修改','','',50),(50,42,'admin_producttype_doedit','',1,0,'商品分类修改提交','','',50),(51,46,'admin_goodstype_del','',1,0,'商品分类删除','','',50),(52,5,'admin_friendlink','',1,1,'友情链接','','',50),(53,52,'admin_friendlink_add','',1,0,'友情链接添加','','',50),(54,53,'admin_friendlink_doadd','',1,0,'友情链接添加提交','','',50),(55,52,'admin_friendlink_edit','',1,0,'友情链接修改','','',50),(56,55,'admin_friendlink_doedit','',1,0,'友情链接修改提交','','',50),(57,52,'admin_friendlink_del','',1,0,'友情链接删除','','',50),(58,5,'admin_keyword','',1,1,'关键词管理','','',50),(59,58,'admin_keyword_add','',1,0,'关键词添加','','',50),(60,59,'admin_keyword_doadd','',1,0,'关键词添加提交','','',50),(61,58,'admin_keyword_edit','',1,0,'关键词修改','','',50),(62,61,'admin_keyword_doedit','',1,0,'关键词修改提交','','',50),(63,58,'admin_keyword_del','',1,0,'关键词删除','','',50),(64,5,'admin_searchword','',1,1,'搜索关键词','','',50),(65,64,'admin_searchword_add','',1,0,'搜索关键词添加','','',50),(66,65,'admin_searchword_doadd','',1,0,'搜索关键词添加提交','','',50),(67,64,'admin_searchword_edit','',1,0,'搜索关键词修改','','',50),(68,67,'admin_searchword_doedit','',1,0,'搜索关键词修改提交','','',50),(69,64,'admin_searchword_del','',1,0,'搜索关键词删除','','',50),(70,5,'admin_slide','',1,1,'轮播图','','',50),(71,70,'admin_slide_add','',1,0,'轮播图添加','','',50),(72,71,'admin_slide_doadd','',1,0,'轮播图添加提交','','',50),(73,70,'admin_slide_edit','',1,0,'轮播图修改','','',50),(74,73,'admin_slide_doedit','',1,0,'轮播图修改提交','','',50),(75,70,'admin_slide_del','',1,0,'轮播图删除','','',50),(76,5,'admin_guestbook','',1,1,'在线留言','','',50),(77,76,'admin_guestbook_del','',1,0,'在线留言删除','','',50),(78,6,'admin_sysconfig','',1,1,'系统基本参数','','',50),(79,78,'admin_sysconfig_add','',1,0,'系统参数添加','','',50),(80,79,'admin_sysconfig_doadd','',1,0,'系统参数添加提交','','',50),(81,78,'admin_sysconfig_edit','',1,0,'系统参数修改','','',50),(82,81,'admin_sysconfig_doedit','',1,0,'系统参数修改提交','','',50),(83,78,'admin_sysconfig_del','',1,0,'系统参数删除','','',50),(84,4,'admin_admin','',1,1,'管理员','','',50),(85,84,'admin_admin_add','',1,0,'管理员添加','','',50),(86,85,'admin_admin_doadd','',1,0,'管理员添加提交','','',50),(87,84,'admin_admin_edit','',1,0,'管理员修改','','',50),(88,87,'admin_admin_doedit','',1,0,'管理员修改提交','','',50),(89,84,'admin_admin_del','',1,0,'管理员删除','','',50),(90,4,'admin_adminrole','',1,1,'角色管理','','',50),(91,90,'admin_adminrole_add','',1,0,'角色添加','','',50),(92,91,'admin_adminrole_doadd','',1,0,'角色添加修改','','',50),(93,90,'admin_adminrole_edit','',1,0,'角色修改','','',50),(94,93,'admin_adminrole_doedit','',1,0,'角色修改提交','','',50),(95,90,'admin_adminrole_del','',1,0,'角色删除','','',50),(96,3,'admin_menu','',1,1,'后台菜单','','',50),(97,96,'admin_menu_add','',1,0,'菜单添加','','',50),(98,97,'admin_menu_doadd','',1,0,'菜单添加提交','','',50),(99,96,'admin_menu_edit','',1,0,'菜单修改','','',50),(100,99,'admin_menu_doedit','',1,0,'菜单修改提交','','',50),(101,96,'admin_menu_del','',1,0,'菜单删除','','',50),(102,90,'admin_adminrole_permissions','',1,0,'权限设置','','',50),(103,102,'admin_adminrole_dopermissions','',1,0,'权限设置提交','','',50),(104,5,'admin_welcome','',1,0,'欢迎页面','','',5),(105,0,'weixin_default','',0,1,'微信开发管理','glyphicon glyphicon-th-large','',50),(106,105,'admin_weixinmenu','',1,1,'微信自定义菜单','','',50),(107,2,'admin_goodsbrand','',1,1,'商品品牌','','',50),(108,107,'admin_goodsbrand_add','',1,0,'品牌添加','','',50),(109,108,'admin_goodsbrand_doadd','',1,0,'品牌添加提交','','',50),(110,107,'admin_goodsbrand_edit','',1,0,'品牌修改','','',50),(111,110,'admin_goodsbrand_doedit','',1,0,'品牌修改提交','','',50),(112,107,'admin_goodsbrand_del','',1,0,'品牌删除','','',50),(113,0,'order_default','',0,1,'订单管理','glyphicon glyphicon-credit-card','',50),(114,113,'admin_order','',1,1,'订单列表','','',50),(115,113,'admin_order_detail','',1,0,'订单详情','','',50),(116,113,'admin_order_edit','',1,0,'订单修改','','',50),(117,116,'admin_order_doedit','',1,0,'订单修改提交','','',50),(118,4,'admin_user','',1,1,'会员管理','','',50),(119,4,'admin_userwithdraw','',1,1,'提现申请','','',50),(120,5,'admin_feedback','',1,1,'意见反馈','','',50),(121,120,'admin_feedback_del','',1,0,'意见反馈删除','','',50),(122,113,'admin_kuaidi','',1,1,'快递管理','','',50),(123,122,'admin_kuaidi_add','',1,0,'快递添加','','',50),(124,122,'admin_kuaidi_edit','',1,0,'快递修改','','',50),(125,122,'admin_kuaidi_del','',1,0,'快递删除','','',50),(126,2,'admin_bonus','',1,1,'优惠券管理','','',50),(127,126,'admin_bonus_add','',1,0,'优惠券添加','','',50),(128,126,'admin_bonus_edit','',1,0,'优惠券啊修改','','',50),(129,126,'admin_bonus_del','',1,0,'优惠券删除','','',50); /*Table structure for table `fl_order` */ @@ -524,7 +571,7 @@ CREATE TABLE `fl_order` ( `shop_id` int(10) NOT NULL DEFAULT '0' COMMENT '商家id', `add_time` int(10) NOT NULL DEFAULT '0' COMMENT '订单生成时间', `order_status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '订单状态,0生成订单,1已取消(客户触发),2无效(管理员触发),3完成订单', - `refund_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '退货退款(订单完成后),0无退货,1有退货', + `refund_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '退货退款(订单完成后),0无退货,1有退货,2退货成功,3拒绝', `shipping_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '商品配送情况;0未发货,1已发货,2已收货', `pay_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '支付状态;0未付款;1已付款', `goods_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品的总金额', @@ -554,16 +601,18 @@ CREATE TABLE `fl_order` ( `bonus_money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '使用优惠劵支付金额', `bonus_id` int(11) NOT NULL DEFAULT '0' COMMENT '优惠券id', `is_delete` tinyint(1) DEFAULT '0' COMMENT '是否删除,1删除', - `to_buyer` varchar(250) DEFAULT '' COMMENT '商家给客户的留言,当该字段值时可以在订单查询看到', + `note` varchar(240) DEFAULT '' COMMENT '商家/后台操作备注', `invoice` tinyint(1) DEFAULT '0' COMMENT '发票:0不索要,1个人,2企业', `invoice_title` varchar(100) DEFAULT '' COMMENT '发票抬头', `invoice_taxpayer_number` varchar(100) DEFAULT '' COMMENT '纳税人识别号', - `place_type` smallint(3) DEFAULT '0' COMMENT '订单来源,1pc,2微信,3app', + `place_type` smallint(3) DEFAULT '0' COMMENT '订单来源,1pc,2weixin,3app,4wap', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC; /*Data for the table `fl_order` */ +insert into `fl_order`(`id`,`order_sn`,`user_id`,`shop_id`,`add_time`,`order_status`,`refund_status`,`shipping_status`,`pay_status`,`goods_amount`,`order_amount`,`discount`,`pay_money`,`pay_id`,`pay_time`,`pay_name`,`out_trade_no`,`shipping_name`,`shipping_id`,`shipping_sn`,`shipping_fee`,`shipping_time`,`name`,`province`,`city`,`district`,`address`,`zipcode`,`mobile`,`message`,`is_comment`,`integral_money`,`integral`,`bonus_money`,`bonus_id`,`is_delete`,`note`,`invoice`,`invoice_title`,`invoice_taxpayer_number`,`place_type`) values (1,'201712122241067479',3,0,1513089666,0,0,0,0,'45000.00','45000.00','0.00','0.00',0,0,'','','',0,'','0.00',0,'Kenny G',1,52129,72,'阿斯达','','15280719357','',0,'0.00',0,'0.00',0,0,'',0,'','',2),(2,'201712122241285027',3,0,1513089688,0,0,0,1,'5.00','5.00','0.00','5.00',1,1513089694,'余额支付','','无须物流',0,'dsfgd','0.00',0,'Kenny G',1,52129,72,'阿斯达','','15280719357','',0,'0.00',0,'0.00',0,0,'',0,'','',2),(3,'201712141038364533',3,0,1513219116,3,1,0,0,'6.10','6.10','0.00','0.00',0,0,'','','',0,'','0.00',0,'李宗盛',16,1329,1331,'红糖100号','','15280765456','梵蒂冈的士大夫',0,'0.00',0,'0.00',0,0,'',1,'繁橙科技有限公司','213124321',2); + /*Table structure for table `fl_order_goods` */ DROP TABLE IF EXISTS `fl_order_goods`; @@ -579,13 +628,18 @@ CREATE TABLE `fl_order_goods` ( `goods_attr` text COMMENT '商品属性', `goods_img` varchar(150) NOT NULL DEFAULT '' COMMENT '商品缩略图', `refund_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '退货状态,0无退货,1退款中,2退款成功,3不同意退款', + `refund_reason` varchar(100) NOT NULL DEFAULT '' COMMENT '退货原因,客户操作', + `refund_handle_des` varchar(240) NOT NULL DEFAULT '' COMMENT '退货处理结果,管理员操作', + `refund_sn` varchar(30) NOT NULL DEFAULT '' COMMENT '退货单号', PRIMARY KEY (`id`), KEY `order_id` (`order_id`), KEY `goods_id` (`goods_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*Data for the table `fl_order_goods` */ +insert into `fl_order_goods`(`id`,`order_id`,`goods_id`,`goods_name`,`goods_number`,`market_price`,`goods_price`,`goods_attr`,`goods_img`,`refund_status`,`refund_reason`,`refund_handle_des`,`refund_sn`) values (1,1,1,'示例产品一',1,'50000.00','45000.00',NULL,'/uploads/2017/06/201706041951031181.jpg',0,'','',''),(2,2,4,'示例产品四2',1,'6.00','5.00',NULL,'/uploads/2017/06/201706042013331349.jpg',0,'','',''),(3,3,2,'示例产品二',1,'2.00','1.00',NULL,'/uploads/2017/06/201706042011354141.jpg',0,'','',''),(4,3,3,'示例产品三',1,'4.00','5.10',NULL,'/uploads/2017/06/201706042012428057.jpg',0,'','',''); + /*Table structure for table `fl_page` */ DROP TABLE IF EXISTS `fl_page`; @@ -732,17 +786,18 @@ CREATE TABLE `fl_slide` ( `id` smallint(5) NOT NULL AUTO_INCREMENT, `title` varchar(60) NOT NULL DEFAULT '', `url` varchar(100) NOT NULL DEFAULT '' COMMENT '跳转的url', - `target` smallint(2) DEFAULT '0', - `group_id` smallint(2) DEFAULT '0', - `pic` varchar(100) NOT NULL COMMENT '图片地址', - `rank` int(4) DEFAULT '0' COMMENT '排序', - `is_show` smallint(1) DEFAULT '0' COMMENT '是否显示,默认0显示', + `target` smallint(2) NOT NULL DEFAULT '0' COMMENT '0_blank,1_self', + `group_id` smallint(2) NOT NULL DEFAULT '0', + `pic` varchar(100) NOT NULL DEFAULT '' COMMENT '图片地址', + `listorder` int(5) NOT NULL DEFAULT '50' COMMENT '排序', + `is_show` smallint(1) NOT NULL DEFAULT '0' COMMENT '是否显示,默认0显示', + `type` smallint(2) NOT NULL DEFAULT '0' COMMENT '0pc,1weixin,2app,3wap', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; /*Data for the table `fl_slide` */ -insert into `fl_slide`(`id`,`title`,`url`,`target`,`group_id`,`pic`,`rank`,`is_show`) values (1,'1','http://www.baidu.com',0,0,'/uploads/2017/09/201709242246099096.jpg',0,0),(2,'2','http://www.sina.com',0,0,'/uploads/2017/09/201709242246091005.jpg',0,0),(3,'3','http://www.163.com',0,0,'/uploads/2017/09/201709242246091160.jpg',0,0); +insert into `fl_slide`(`id`,`title`,`url`,`target`,`group_id`,`pic`,`listorder`,`is_show`,`type`) values (1,'1','http://www.baidu.com',0,0,'/uploads/2017/09/201709242246099096.jpg',0,0,2),(2,'2','http://www.sina.com',0,0,'/uploads/2017/09/201709242246091005.jpg',0,0,0),(3,'3','http://www.163.com',0,0,'/uploads/2017/09/201709242246091160.jpg',0,0,0); /*Table structure for table `fl_sms_log` */ @@ -822,11 +877,11 @@ CREATE TABLE `fl_sysconfig` ( `value` text NOT NULL COMMENT '变量说明', `is_show` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否显示,默认0显示,让客户看不到', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8; /*Data for the table `fl_sysconfig` */ -insert into `fl_sysconfig`(`id`,`varname`,`info`,`value`,`is_show`) values (1,'CMS_WEBNAME','网站名称','LQYCMS企业建站系统',0),(2,'CMS_BASEHOST','站点根网址','http://www.lqycms.com',0),(3,'CMS_UPLOADS','图片/上传文件默认路径','/uploads',0),(4,'CMS_CSS','css默认存放路径','/css',0),(5,'CMS_JS','js默认存放路径','/js',0),(6,'CMS_INDEXNAME','主页链接名','首页',0),(7,'CMS_POWERBY','网站版权信息','Copyright © LQYCMS 版权所有',0),(8,'CMS_IMGWIDTH','缩略图默认宽度','240',0),(9,'CMS_IMGHEIGHT','缩略图默认高度','180',0),(10,'CMS_SEOTITLE','网站seotitle','lqycms是一套完全免费、开源、无授权限制的网站管理系统',0),(11,'CMS_KEYWORDS','网站关键词Keywords','lqycms,无授权限制网站系统cms,免费cms系统,开源网站管理系统,开源cms',0),(12,'CMS_DESCRIPTION','网站描述','lqycms完全免费、开源、无授权限制,您可以使用lqycms在任何商业或者非商业网站上使用而不必支付任何费用,系统采用主流的mvc架构开发,更加容易进行二次开发。',0),(13,'CMS_ISCACHE','是否开启缓存,1开启,0关闭','1',0),(14,'CMS_MAXARC','最大返回列表结果数,默认300','300',0),(15,'CMS_PAGESIZE','列表每页显示的数量,默认15','15',0),(16,'CMS_SIGN_POINT','签到积分','5',0),(17,'CMS_WX_APPID','微信appid','wx2ac97c40c4050e24',0),(18,'CMS_WX_APPSECRET','微信appsecret','a0aad71844bbacbe8928447741c82a43',0),(19,'CMS_WX_MCHID','微信支付商户号','1331184301',0),(20,'CMS_WXSHAER_TITLE','微信分享标题','微信分享测试-标题',0),(21,'CMS_WXSHAER_DESC','微信分享描述','微信分享描述',0),(22,'CMS_WXSHAER_LINK','微信分享链接','http://www.lqycms.com/weixin',0),(23,'CMS_WXSHAER_IMGURL','微信分享图标','http://www.lqycms.com/images/weixin/no_user.jpg',0); +insert into `fl_sysconfig`(`id`,`varname`,`info`,`value`,`is_show`) values (1,'CMS_WEBNAME','网站名称','LQYCMS企业建站系统',0),(2,'CMS_BASEHOST','站点根网址','http://www.lqycms.com',0),(3,'CMS_UPLOADS','图片/上传文件默认路径','/uploads',0),(4,'CMS_CSS','css默认存放路径','/css',0),(5,'CMS_JS','js默认存放路径','/js',0),(6,'CMS_INDEXNAME','主页链接名','首页',0),(7,'CMS_POWERBY','网站版权信息','Copyright © LQYCMS 版权所有',0),(8,'CMS_IMGWIDTH','缩略图默认宽度','240',0),(9,'CMS_IMGHEIGHT','缩略图默认高度','180',0),(10,'CMS_SEOTITLE','网站seotitle','lqycms是一套完全免费、开源、无授权限制的网站管理系统',0),(11,'CMS_KEYWORDS','网站关键词Keywords','lqycms,无授权限制网站系统cms,免费cms系统,开源网站管理系统,开源cms',0),(12,'CMS_DESCRIPTION','网站描述','lqycms完全免费、开源、无授权限制,您可以使用lqycms在任何商业或者非商业网站上使用而不必支付任何费用,系统采用主流的mvc架构开发,更加容易进行二次开发。',0),(13,'CMS_ISCACHE','是否开启缓存,1开启,0关闭','1',0),(14,'CMS_MAXARC','最大返回列表结果数,默认300','300',0),(15,'CMS_PAGESIZE','列表每页显示的数量,默认15','15',0),(16,'CMS_SIGN_POINT','签到积分','5',0),(17,'CMS_WX_APPID','微信appid','wx2ac97c40c4050e24',0),(18,'CMS_WX_APPSECRET','微信appsecret','a0aad71844bbacbe8928447741c82a43',0),(19,'CMS_WX_MCHID','微信支付商户号','1331184301',0),(20,'CMS_WXSHAER_TITLE','微信分享标题','微信分享测试-标题',0),(21,'CMS_WXSHAER_DESC','微信分享描述','微信分享描述',0),(22,'CMS_WXSHAER_LINK','微信分享链接','http://www.lqycms.com/weixin',0),(23,'CMS_WXSHAER_IMGURL','微信分享图标','http://www.lqycms.com/images/weixin/no_user.jpg',0),(24,'CMS_MIN_WITHDRAWAL_MONEY','最低提现金额(元)','100',0),(25,'CMS_SHOPPING_POINT','购物赠送积分','10',0); /*Table structure for table `fl_tagindex` */ @@ -879,11 +934,11 @@ CREATE TABLE `fl_token` ( `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `expired_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='接口用户token表'; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='接口用户token表'; /*Data for the table `fl_token` */ -insert into `fl_token`(`id`,`token`,`type`,`uid`,`data`,`created_at`,`expired_at`) values (1,'72d623d26a1a6d61186a97f9ccf752f7',1,1,NULL,'2017-08-07 13:29:01','2018-05-22 11:15:27'); +insert into `fl_token`(`id`,`token`,`type`,`uid`,`data`,`created_at`,`expired_at`) values (1,'72d623d26a1a6d61186a97f9ccf752f7',1,1,NULL,'2017-08-07 13:29:01','2018-05-22 11:15:27'),(2,'fecf090f27340c72dc715faca15339de',2,3,'','2017-12-01 00:31:12','2017-12-31 00:31:12'),(3,'2edc36780b280701102ead2ab27e6fb7',2,3,'','2017-12-01 00:33:09','2017-12-31 00:33:09'),(4,'16e47addf80ef5337375804038f3092c',2,3,'','2017-12-14 10:37:42','2018-01-13 10:37:42'),(5,'1d2e308d19d462498a7fba9882f81c90',2,3,'','2017-12-14 19:47:56','2018-01-13 19:47:56'),(6,'deb61dc8c049c51ffd79b269e75f7024',2,3,'','2017-12-15 09:15:17','2018-01-14 09:15:17'),(7,'2908616c5ec6952d859461e1f024c3e1',2,3,'','2017-12-25 17:18:02','2018-01-24 17:18:02'); /*Table structure for table `fl_user` */ @@ -898,6 +953,7 @@ CREATE TABLE `fl_user` ( `head_img` varchar(255) NOT NULL DEFAULT '' COMMENT '头像', `sex` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '性别1男2女', `birthday` date NOT NULL DEFAULT '1990-01-01' COMMENT '生日', + `commission` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '累积佣金,只增不减', `money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '用户余额', `frozen_money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '用户冻结资金', `point` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户能用积分', @@ -920,7 +976,7 @@ CREATE TABLE `fl_user` ( /*Data for the table `fl_user` */ -insert into `fl_user`(`id`,`email`,`user_name`,`password`,`pay_password`,`head_img`,`sex`,`birthday`,`money`,`frozen_money`,`point`,`rank_points`,`address_id`,`add_time`,`user_rank`,`parent_id`,`nickname`,`mobile`,`status`,`group_id`,`updated_at`,`signin_time`,`openid`,`unionid`,`push_id`) values (1,'ecshop@ecshop.com','ecshop','e10adc3949ba59abbe56e057f20f883e','123123','',0,'1960-03-03','234.00','0.00',20,0,11,0,0,0,'','15280719355',0,0,NULL,'2017-08-11 00:24:20','','',''),(2,'vip@ecshop.com','vip','e10adc3949ba59abbe56e057f20f883e','','',0,'1949-01-01','0.00','0.00',0,0,0,0,0,0,'','15280719356',0,0,NULL,NULL,'','',''),(3,'374861669@qq.com','FLi','e10adc3949ba59abbe56e057f20f883e','202cb962ac59075b964b07152d234b70','/uploads/2017/10/201710131156534963.jpeg',2,'1990-01-01','123.00','0.00',0,0,12,0,0,0,'阿什顿','15280719357',1,0,NULL,NULL,'','',''),(4,'','ockGfuLHR3lHQqBNTaTeBzPg-rNs','','','http://wx.qlogo.cn/mmopen/vi_32/tLnN9s8TMx2iaBK8gC3h62sBxQbZP9DvETG19nYyrlGgDAGVLVkJunA2bibmBvsExicP1QNYrULrAGjHAJias0vz4A/0',1,'1990-01-01','0.00','0.00',0,0,0,0,0,0,'林一峰','',1,0,NULL,NULL,'ockGfuLHR3lHQqBNTaTeBzPg-rNs','',''); +insert into `fl_user`(`id`,`email`,`user_name`,`password`,`pay_password`,`head_img`,`sex`,`birthday`,`commission`,`money`,`frozen_money`,`point`,`rank_points`,`address_id`,`add_time`,`user_rank`,`parent_id`,`nickname`,`mobile`,`status`,`group_id`,`updated_at`,`signin_time`,`openid`,`unionid`,`push_id`) values (1,'ecshop@ecshop.com','ecshop','e10adc3949ba59abbe56e057f20f883e','123123','/uploads/2017/06/201706041951031181.jpg',0,'1960-03-03','0.00','234.00','0.00',20,0,11,0,0,3,'','15280719355',0,0,NULL,'2017-08-11 00:24:20','','',''),(2,'vip@ecshop.com','vip','e10adc3949ba59abbe56e057f20f883e','','/uploads/2017/06/201706041951031181.jpg',0,'1949-01-01','0.00','0.00','0.00',0,0,0,0,0,3,'','15280719356',2,0,NULL,NULL,'','',''),(3,'374861669@qq.com','FLi','e10adc3949ba59abbe56e057f20f883e','202cb962ac59075b964b07152d234b70','/uploads/2017/10/201710131156534963.jpeg',2,'1990-01-01','12.00','118.00','0.00',0,0,14,0,0,0,'阿什顿','15280719357',1,0,NULL,NULL,'','',''),(4,'','ockGfuLHR3lHQqBNTaTeBzPg-rNs','','','http://wx.qlogo.cn/mmopen/vi_32/tLnN9s8TMx2iaBK8gC3h62sBxQbZP9DvETG19nYyrlGgDAGVLVkJunA2bibmBvsExicP1QNYrULrAGjHAJias0vz4A/0',1,'1990-01-01','0.00','0.00','0.00',0,0,0,0,0,3,'林一峰','',1,0,NULL,NULL,'ockGfuLHR3lHQqBNTaTeBzPg-rNs','',''); /*Table structure for table `fl_user_address` */ @@ -944,7 +1000,7 @@ CREATE TABLE `fl_user_address` ( /*Data for the table `fl_user_address` */ -insert into `fl_user_address`(`id`,`user_id`,`name`,`country`,`province`,`city`,`district`,`address`,`zipcode`,`telphone`,`mobile`,`is_default`) values (1,1,'刘先生',0,1,32767,72,'海兴大厦','','010-25851234','13986765412',0),(2,2,'叶先生',1,2,52,510,'通州区旗舰凯旋小区','','13588104710','',0),(4,1,'梁朝伟',0,2,32767,72,'dasd2','','','assds2',0),(11,1,'林逸',0,16,1332,1337,'阿斯顿','','','13912356543',1),(8,1,'韩寒',0,1,32767,72,'师范大学','','','15280719357',0),(9,1,'范蠡',0,1,32767,72,'士大夫','','','15280719234',0),(10,1,'谢霆锋',0,16,1315,32767,'阿斯顿','','','13912356543',0),(12,3,'Kenny G',0,1,52129,72,'阿斯达','','','15280719357',1),(13,3,'许巍',0,1,52129,2805,'东风公司','','','15280719357',0),(14,3,'李宗盛',0,16,1329,1331,'红糖100号','','','15280765456',0),(15,3,'周杰伦',0,1,52129,72,'阿斯达','','','15278765456',0); +insert into `fl_user_address`(`id`,`user_id`,`name`,`country`,`province`,`city`,`district`,`address`,`zipcode`,`telphone`,`mobile`,`is_default`) values (1,1,'刘先生',0,1,32767,72,'海兴大厦','','010-25851234','13986765412',0),(2,2,'叶先生',1,2,52,510,'通州区旗舰凯旋小区','','13588104710','',0),(4,1,'梁朝伟',0,2,32767,72,'dasd2','','','assds2',0),(11,1,'林逸',0,16,1332,1337,'阿斯顿','','','13912356543',1),(8,1,'韩寒',0,1,32767,72,'师范大学','','','15280719357',0),(9,1,'范蠡',0,1,32767,72,'士大夫','','','15280719234',0),(10,1,'谢霆锋',0,16,1315,32767,'阿斯顿','','','13912356543',0),(12,3,'Kenny G',0,1,52129,72,'阿斯达','','','15280719357',0),(13,3,'许巍',0,1,52129,2805,'东风公司','','','15280719357',0),(14,3,'李宗盛',0,16,1329,1331,'红糖100号','','','15280765456',1),(15,3,'周杰伦',0,1,52129,72,'阿斯达','','','15278765456',0); /*Table structure for table `fl_user_bonus` */ @@ -958,11 +1014,11 @@ CREATE TABLE `fl_user_bonus` ( `get_time` int(11) NOT NULL DEFAULT '0' COMMENT '优惠券获得时间', `status` tinyint(1) DEFAULT '0' COMMENT '0未使用1已使用2已过期', PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='用户优惠券表'; +) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='用户优惠券表'; /*Data for the table `fl_user_bonus` */ -insert into `fl_user_bonus`(`id`,`bonus_id`,`user_id`,`used_time`,`get_time`,`status`) values (1,1,5,1242142681,0,0),(2,4,3,1511963798,0,1),(3,4,5,0,0,0),(4,2,5,0,0,0),(5,3,5,0,0,0),(6,4,0,0,0,0),(7,4,0,0,0,0),(8,4,0,0,0,0),(9,4,0,0,0,0),(10,4,0,0,0,0),(11,4,0,0,0,0),(24,3,1,0,0,0),(25,3,1,0,0,0),(26,3,1,0,0,0),(27,3,1,0,0,0),(28,3,1,0,0,0),(29,3,1,0,0,0),(30,3,1,0,0,0),(31,3,1,0,0,0),(32,1,1,0,0,0); +insert into `fl_user_bonus`(`id`,`bonus_id`,`user_id`,`used_time`,`get_time`,`status`) values (1,1,5,1242142681,0,0),(2,4,3,1511963798,0,1),(3,4,5,0,0,0),(4,2,5,0,0,0),(5,3,5,0,0,0),(6,4,0,0,0,0),(7,4,0,0,0,0),(8,4,0,0,0,0),(9,4,0,0,0,0),(10,4,0,0,0,0),(11,4,0,0,0,0),(24,3,1,0,0,0),(25,3,1,0,0,0),(26,3,1,0,0,0),(27,3,1,0,0,0),(28,3,1,0,0,0),(29,3,1,0,0,0),(30,3,1,0,0,0),(31,3,1,0,0,0),(32,1,1,0,0,0),(33,3,3,0,1512660179,0),(34,2,3,0,1512660192,0); /*Table structure for table `fl_user_goods_history` */ @@ -974,10 +1030,33 @@ CREATE TABLE `fl_user_goods_history` ( `user_id` int(10) NOT NULL COMMENT '会员ID', `add_time` int(10) NOT NULL COMMENT '浏览时间', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='商品浏览历史表'; +) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='商品浏览历史表'; /*Data for the table `fl_user_goods_history` */ +insert into `fl_user_goods_history`(`id`,`goods_id`,`user_id`,`add_time`) values (1,3,3,1512211519),(2,2,3,1512213451),(3,1,3,1512234528),(4,4,3,1513089678); + +/*Table structure for table `fl_user_message` */ + +DROP TABLE IF EXISTS `fl_user_message`; + +CREATE TABLE `fl_user_message` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户id,如果id为0表示所有人', + `type` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '系统消息0,活动消息', + `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '查看状态:0未查看,1已查看', + `title` varchar(150) NOT NULL DEFAULT '' COMMENT '标题', + `des` varchar(240) NOT NULL DEFAULT '' COMMENT '说明', + `litpic` varchar(100) NOT NULL DEFAULT '' COMMENT '缩略图', + `add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间', + PRIMARY KEY (`id`), + KEY `user_id` (`user_id`) +) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; + +/*Data for the table `fl_user_message` */ + +insert into `fl_user_message`(`id`,`user_id`,`type`,`status`,`title`,`des`,`litpic`,`add_time`) values (1,0,0,0,'保修结果反馈','啥地方撒旦啥地方撒旦啥地方撒旦啥地方撒旦啥地方撒旦啥地方撒旦啥地方撒旦','',1511963795),(2,3,1,0,'认证通知','士大夫撒旦官方店士大夫撒旦官方店士大夫撒旦官方店士大夫撒旦官方店士大夫撒旦官方店士大夫撒旦官方店','',1511963796),(3,3,0,0,'暂时无法修改头像和昵称','阿萨德股份三阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大','',1511963797),(4,1,0,0,'立即用处4','电风扇归属地电风扇归属地电风扇归属地电风扇归属地电风扇归属地','',1511963798),(5,0,0,0,'立即用处5','阿萨德股份三阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大','',1511963798),(6,3,2,0,'立即用处6','阿萨德股份三阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大','',1511963798),(7,3,1,0,'立即用处7','阿萨德股份三阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大','',1511963798),(8,3,0,0,'立即用处8','阿萨德股份三阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大阿萨德股份三大','',1511963798); + /*Table structure for table `fl_user_money` */ DROP TABLE IF EXISTS `fl_user_money`; @@ -991,11 +1070,11 @@ CREATE TABLE `fl_user_money` ( `des` varchar(250) NOT NULL DEFAULT '' COMMENT '描述', `user_money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '余额,每次增减后面的金额记录', PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; /*Data for the table `fl_user_money` */ -insert into `fl_user_money`(`id`,`user_id`,`type`,`money`,`add_time`,`des`,`user_money`) values (1,1,0,'12.00',1502158888,'微信转账','23.00'),(2,1,1,'23.00',1502158888,'士大夫','34.00'); +insert into `fl_user_money`(`id`,`user_id`,`type`,`money`,`add_time`,`des`,`user_money`) values (1,1,0,'12.00',1502158888,'微信转账','23.00'),(2,1,1,'23.00',1502158888,'士大夫','34.00'),(3,3,1,'5.00',1513089694,'订单余额支付','118.00'),(4,3,0,'0.00',1514200726,'退货-返余额','118.00'),(5,3,0,'0.00',1514201382,'退货-返余额','118.00'),(6,3,0,'0.00',1514201562,'退货-返余额','118.00'); /*Table structure for table `fl_user_point` */ @@ -1026,12 +1105,14 @@ CREATE TABLE `fl_user_rank` ( `min_points` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '该等级的最低积分', `max_points` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '该等级的最高积分', `discount` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该会员等级的商品折扣', + `listorder` int(5) NOT NULL DEFAULT '50' COMMENT '排序', + `rank` int(5) NOT NULL DEFAULT '0' COMMENT '等级', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; /*Data for the table `fl_user_rank` */ -insert into `fl_user_rank`(`id`,`title`,`min_points`,`max_points`,`discount`) values (1,'注册用户',0,10000,100),(2,'vip',10000,10000000,95),(3,'代销用户',0,0,90); +insert into `fl_user_rank`(`id`,`title`,`min_points`,`max_points`,`discount`,`listorder`,`rank`) values (1,'注册用户',0,10000,100,50,0),(2,'vip',10000,10000000,95,50,0),(3,'代销用户',0,0,90,50,0); /*Table structure for table `fl_user_recharge` */ @@ -1043,16 +1124,18 @@ CREATE TABLE `fl_user_recharge` ( `money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '充值金额', `pay_time` timestamp NULL DEFAULT NULL COMMENT '充值时间', `pay_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '充值类型:1微信,2支付宝', - `status` tinyint(1) DEFAULT '0' COMMENT '充值状态:0未处理,1已完成', + `pay_money` decimal(10,2) DEFAULT '0.00' COMMENT '支付金额', + `trade_no` varchar(50) DEFAULT '' COMMENT '支付流水号', + `status` tinyint(1) DEFAULT '0' COMMENT '充值状态:0未处理,1已完成,2失败', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT NULL, - `trade_no` varchar(50) DEFAULT '' COMMENT '支付流水号', + `recharge_sn` varchar(60) DEFAULT '' COMMENT '支付订单号', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='用户在线充值明细表'; /*Data for the table `fl_user_recharge` */ -insert into `fl_user_recharge`(`id`,`user_id`,`money`,`pay_time`,`pay_type`,`status`,`created_at`,`updated_at`,`trade_no`) values (1,1,'1.00',NULL,1,0,'2017-11-08 00:41:13',NULL,''),(2,1,'123.00',NULL,1,0,'2017-11-08 01:00:21',NULL,''),(3,1,'123.00',NULL,1,0,'2017-11-08 20:07:25',NULL,''),(4,1,'123.00',NULL,1,0,'2017-11-08 20:08:19',NULL,''),(5,1,'1.00',NULL,1,0,'2017-11-08 20:08:29',NULL,''),(6,1,'2.00',NULL,1,0,'2017-11-08 22:22:23',NULL,''); +insert into `fl_user_recharge`(`id`,`user_id`,`money`,`pay_time`,`pay_type`,`pay_money`,`trade_no`,`status`,`created_at`,`updated_at`,`recharge_sn`) values (1,1,'1.00',NULL,1,'0.00','',0,'2017-11-08 00:41:13',NULL,''),(2,1,'123.00',NULL,1,'0.00','',0,'2017-11-08 01:00:21',NULL,''),(3,1,'123.00',NULL,1,'0.00','',0,'2017-11-08 20:07:25',NULL,''),(4,1,'123.00',NULL,1,'0.00','',0,'2017-11-08 20:08:19',NULL,''),(5,1,'1.00',NULL,1,'0.00','',0,'2017-11-08 20:08:29',NULL,''),(6,1,'2.00',NULL,1,'0.00','',0,'2017-11-08 22:22:23',NULL,''); /*Table structure for table `fl_user_withdraw` */ @@ -1063,21 +1146,22 @@ CREATE TABLE `fl_user_withdraw` ( `user_id` int(11) unsigned NOT NULL COMMENT '用户ID', `add_time` int(11) NOT NULL COMMENT '时间', `money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '金额', - `name` varchar(30) DEFAULT '' COMMENT '姓名', - `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0未处理,1处理中,2成功,3失败', - `note` varchar(255) DEFAULT '' COMMENT '用户备注', - `re_note` varchar(255) DEFAULT '' COMMENT '回复备注信息', - `bank_name` varchar(30) DEFAULT '' COMMENT '银行名称', - `bank_place` varchar(150) DEFAULT '' COMMENT '开户行', + `name` varchar(30) NOT NULL DEFAULT '' COMMENT '姓名', + `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0未处理,1处理中,2成功,3取消,4拒绝', + `note` varchar(255) NOT NULL DEFAULT '' COMMENT '用户备注', + `re_note` varchar(255) NOT NULL DEFAULT '' COMMENT '回复备注信息', + `bank_name` varchar(30) NOT NULL DEFAULT '' COMMENT '银行名称', + `bank_place` varchar(150) NOT NULL DEFAULT '' COMMENT '开户行', `account` varchar(30) NOT NULL DEFAULT '' COMMENT '支付宝账号或者银行卡号', - `method` varchar(20) DEFAULT '' COMMENT '提现方式', - PRIMARY KEY (`id`), - KEY `user_id` (`user_id`), - CONSTRAINT `fl_user_withdraw_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `iwebshop_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='提现记录'; + `method` varchar(20) NOT NULL DEFAULT '' COMMENT '提现方式,weixin,bank,alipay', + `is_delete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除,1删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='提现记录'; /*Data for the table `fl_user_withdraw` */ +insert into `fl_user_withdraw`(`id`,`user_id`,`add_time`,`money`,`name`,`status`,`note`,`re_note`,`bank_name`,`bank_place`,`account`,`method`,`is_delete`) values (2,3,1513082451,'1.00','asda',4,'','','','','1feng.2008','alipay',0),(3,3,1513082615,'100.00','qweqeqw',4,'','','asd','dfs','admin888','alipay',0),(4,3,1,'1.00','asd',2,'','','asfas','asd','asf','alipay',0); + /*Table structure for table `fl_verify_code` */ DROP TABLE IF EXISTS `fl_verify_code`; diff --git a/public/css/admin.css b/public/css/admin.css index fded5e0..f4f9d2b 100644 --- a/public/css/admin.css +++ b/public/css/admin.css @@ -1,4 +1,4 @@ -.mauto{margin-left:auto;margin-right:auto;} +.mauto{margin-left:auto;margin-right:auto;}.mt10{margin-top:10px;}.mb10{margin-bottom:10px;} .blog-masthead{background-color:#01aef0;} .blog-nav-item{position:relative;display:inline-block;padding:12px 20px;font-weight:500;color:#fff;font-size:16px;} diff --git a/public/images/weixin/erweima.png b/public/images/weixin/erweima.png new file mode 100644 index 0000000000000000000000000000000000000000..f570bce6071beea674424aacf80d54c735a4d928 GIT binary patch literal 23178 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 WZQrqKek08bfdc;j=MVMDhyMc{=faQx literal 0 HcmV?d00001 diff --git a/public/images/weixin/wxguide.png b/public/images/weixin/wxguide.png new file mode 100644 index 0000000000000000000000000000000000000000..38c22789c369358b6eaf7fbed04134fa56e2ccdb GIT binary patch literal 24260 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快递列表 > 添加快递 + + +
优惠券列表 > 添加优惠券
{{ csrf_field() }} - - - - - - + + - + - - + + - - + + - - + + - + - - - - diff --git a/resources/views/admin/bonus/edit.blade.php b/resources/views/admin/bonus/edit.blade.php index b24c8ba..853f900 100644 --- a/resources/views/admin/bonus/edit.blade.php +++ b/resources/views/admin/bonus/edit.blade.php @@ -1,49 +1,44 @@ @extends('admin.layouts.app') -@section('title', '快递修改') +@section('title', '优惠券修改') @section('content') -
快递列表 > 快递修改
+ + +
优惠券列表 > 优惠券修改
{{ csrf_field() }}
快递名称:
编码:名称:
金额:
说明:满多少使用:
电话:数量: (-1表示不限)
官网:期限: + 起: - + 止: +
是否显示:是否可用:  是    否
排序: - -
  
- - - - - - + + - - + + - - + + - - + + - + - - - - diff --git a/resources/views/admin/bonus/index.blade.php b/resources/views/admin/bonus/index.blade.php index 5252cd0..fefba59 100644 --- a/resources/views/admin/bonus/index.blade.php +++ b/resources/views/admin/bonus/index.blade.php @@ -1,34 +1,32 @@ @extends('admin.layouts.app') -@section('title', '快递列表') +@section('title', '优惠券列表') @section('content') -

快递管理

[ 添加快递 ]

+

优惠券管理

[ 添加优惠券 ]

快递名称:
编码:名称:
金额:
说明:满多少使用:
电话:数量: (-1表示不限)
官网:期限: + 起: - + 止: +
是否显示:是否可用: /> 是   /> 否
排序: - -
  
- - + - - - - - + + + + + - - - - - - - + + + + + +
ID快递名称编码名称 金额说明电话官网排序是否显示满多少使用开始领取时间结束领取时间数量状态 管理
id; ?> name; ?>code; ?> money; ?>des; ?>tel; ?>website; ?>listorder; ?>status==0){echo "是";}else{echo "";} ?>修改 | 删除min_amount; ?>start_time; ?>end_time; ?>num==-1){echo "不限";}else{echo "".$row->num."";} ?>status==0){echo "可用";}else{echo "不可用";} ?>修改 | 删除
diff --git a/resources/views/admin/order/detail.blade.php b/resources/views/admin/order/detail.blade.php index 35a6b44..a8c02c4 100644 --- a/resources/views/admin/order/detail.blade.php +++ b/resources/views/admin/order/detail.blade.php @@ -1,21 +1,92 @@ @extends('admin.layouts.app') -@section('title', '订单列表') +@section('title', '订单详情') @section('content') +
当前可执行操作:
- - - + + + + +
+

基本信息

diff --git a/resources/views/admin/order/index.blade.php b/resources/views/admin/order/index.blade.php index 5072dda..a469afa 100644 --- a/resources/views/admin/order/index.blade.php +++ b/resources/views/admin/order/index.blade.php @@ -3,6 +3,7 @@ @section('content') +
@@ -16,19 +17,32 @@
- - - -
-
- - -
-
- -
- +
+
diff --git a/resources/views/home/index/brandList.blade.php b/resources/views/home/index/brandList.blade.php new file mode 100644 index 0000000..5d8b6ff --- /dev/null +++ b/resources/views/home/index/brandList.blade.php @@ -0,0 +1,27 @@ + +<?php echo sysconfig('CMS_WEBNAME'); ?> +@include('home.common.header') + + + + +@include('home.common.footer') + \ No newline at end of file diff --git a/resources/views/weixin/common/wxshare.blade.php b/resources/views/weixin/common/wxshare.blade.php index 2e51f7c..6af0a0f 100644 --- a/resources/views/weixin/common/wxshare.blade.php +++ b/resources/views/weixin/common/wxshare.blade.php @@ -4,7 +4,7 @@ $jssdk = new \JSSDK(sysconfig('CMS_WX_APPID'), sysconfig('CMS_WX_APPSECRET')); $signPackage = $jssdk->GetSignPackage(); ?> - \ No newline at end of file diff --git a/resources/views/weixin/常用代码/分享到朋友圈箭头提示.blade.php b/resources/views/weixin/常用代码/分享到朋友圈箭头提示.blade.php new file mode 100644 index 0000000..746d8fc --- /dev/null +++ b/resources/views/weixin/常用代码/分享到朋友圈箭头提示.blade.php @@ -0,0 +1,15 @@ + +分享到朋友圈提示 + + + +分享给朋友 + + + + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 69f7994..ab766d3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -301,6 +301,9 @@ Route::group(['prefix' => 'fladmin', 'namespace' => 'Admin', 'middleware' => ['w Route::get('/order/edit', 'OrderController@edit')->name('admin_order_edit'); Route::post('/order/doedit', 'OrderController@doedit')->name('admin_order_doedit'); Route::get('/order/del', 'OrderController@del')->name('admin_order_del'); + Route::any('/order/output_excel', 'OrderController@outputExcel')->name('admin_order_output_excel'); + Route::post('/order/change_shipping', 'OrderController@changeShipping')->name('admin_order_change_shipping'); + Route::post('/order/change_status', 'OrderController@changeStatus')->name('admin_order_change_status'); //快递管理 Route::get('/kuaidi', 'KuaidiController@index')->name('admin_kuaidi'); Route::any('/kuaidi/add', 'KuaidiController@add')->name('admin_kuaidi_add');