Browse Source

更新订单页面和文章页面

sugar1569 7 years ago
parent
commit
b08b7e4208
2 changed files with 105 additions and 1 deletions
  1. 1 1
      application/admin/controller/order/StoreOrder.php
  2. 104 0
      extend/service/PHPTreeService.php

File diff suppressed because it is too large
+ 1 - 1
application/admin/controller/order/StoreOrder.php


+ 104 - 0
extend/service/PHPTreeService.php

@@ -0,0 +1,104 @@
+<?php
+
+namespace service;
+
+/**
+ * @name PHPTree
+ * @author crazymus < QQ:291445576 >
+ * @des PHP生成树形结构,无限多级分类
+ * @version 1.2.0
+ * @Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+ * @updated 2015-08-26
+ */
+class PHPTreeService{
+
+    protected static $config = array(
+        /* 主键 */
+        'primary_key' 	=> 'id',
+        /* 父键 */
+        'parent_key'  	=> 'pid',
+        /* 展开属性 */
+        'expanded_key'  => 'expanded',
+        /* 叶子节点属性 */
+        'leaf_key'      => 'leaf',
+        /* 孩子节点属性 */
+        'children_key'  => 'children',
+        /* 是否展开子节点 */
+        'expanded'    	=> false
+    );
+
+    /* 结果集 */
+    protected static $result = array();
+
+    /* 层次暂存 */
+    protected static $level = array();
+    /**
+     * @name 生成树形结构
+     * @param array 二维数组
+     * @return mixed 多维数组
+     */
+    public static function makeTree($data,$options=array() ){
+        $dataset = self::buildData($data,$options);
+        $r = self::makeTreeCore(0,$dataset,'normal');
+        return $r;
+    }
+
+    /* 生成线性结构, 便于HTML输出, 参数同上 */
+    public static function makeTreeForHtml($data,$options=array()){
+
+        $dataset = self::buildData($data,$options);
+        $r = self::makeTreeCore(0,$dataset,'linear');
+        return $r;
+    }
+
+    /* 格式化数据, 私有方法 */
+    private static function buildData($data,$options){
+        $config = array_merge(self::$config,$options);
+        self::$config = $config;
+        extract($config);
+
+        $r = array();
+        foreach($data as $item){
+            $id = $item[$primary_key];
+            $parent_id = $item[$parent_key];
+            $r[$parent_id][$id] = $item;
+        }
+
+        return $r;
+    }
+
+    /* 生成树核心, 私有方法  */
+    private static function makeTreeCore($index,$data,$type='linear')
+    {
+        extract(self::$config);
+        foreach($data[$index] as $id=>$item)
+        {
+            if($type=='normal'){
+                if(isset($data[$id]))
+                {
+                    $item[$expanded_key]= self::$config['expanded'];
+                    $item[$children_key]= self::makeTreeCore($id,$data,$type);
+                }
+                else
+                {
+                    $item[$leaf_key]= true;
+                }
+                $r[] = $item;
+            }else if($type=='linear'){
+                $parent_id = $item[$parent_key];
+                self::$level[$id] = $index==0?0:self::$level[$parent_id]+1;
+                $item['level'] = self::$level[$id];
+                self::$result[] = $item;
+                if(isset($data[$id])){
+                    self::makeTreeCore($id,$data,$type);
+                }
+
+                $r = self::$result;
+            }
+        }
+        return $r;
+    }
+}
+
+
+?>