dever 7 years ago
commit
40db698d85
3 changed files with 229 additions and 0 deletions
  1. 124 0
      database/info.php
  2. 8 0
      index.php
  3. 97 0
      src/Api.php

+ 124 - 0
database/info.php

@@ -0,0 +1,124 @@
+<?php
+
+return array
+(
+	# 表名
+	'name' => 'info',
+	# 显示给用户看的名称
+	'lang' => '分类管理',
+	# 是否显示在后台菜单
+	'order' => 10,
+
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'order'		=> 'asc',
+			'list'		=> true,
+		),
+
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '分类名称',
+			'default' 	=> '',
+			'desc' 		=> '分类名称',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+
+		'category_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '上级分类',
+			'default' 	=> Dever::input('option_category_id', -1),
+			'desc' 		=> '请选择上级分类',
+			'match' 	=> 'is_numeric',
+			'list'		=> '{category_id} > 0 ? Dever::load("category/info-one#name", {category_id}) : "父级分类"',
+		),
+
+		'category'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> '上级分类',
+			'default' 	=> Dever::input('option_category', -1),
+			'desc' 		=> '请选择上级分类',
+			'match' 	=> 'is_string',
+			'update'	=> 'linkage',
+			'option'	=> Dever::url('api.get', 'category'),
+			//'list'		=> 'Dever::load("category/api.string", "{category}")',
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list_name' => '排序',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+		
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'search'	=> 'date',
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+
+	'manage' => array
+	(
+		# 列表页的类型
+		'list_type' => 'tree',
+		'list_button' => array
+		(
+			'add' => array('新增子分类', '"{category}" == -1 ? "info&option_category={id}" : "info&option_category={category},{id}"'),
+		),
+	),
+
+	'request' => array
+	(
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'category_id' => 'yes',
+				'id' => array('yes', '!='),
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'id' => 'asc'),
+			'col' => 'id as value, name',
+		),
+	)
+);

+ 8 - 0
index.php

@@ -0,0 +1,8 @@
+<?php
+
+define('DEVER_APP_NAME', 'cate');
+define('DEVER_APP_LANG', '分类管理');
+define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+define('DEVER_MANAGE_ORDER', 10);
+define('DEVER_MANAGE_ICON', 'glyphicon glyphicon-credit-card');
+include(DEVER_APP_PATH . '../boot.php');

+ 97 - 0
src/Api.php

@@ -0,0 +1,97 @@
+<?php
+
+namespace Category\Src;
+
+use Dever;
+
+class Api
+{
+    private $default = array
+    (
+        'value' => -1,
+        'name' => '不选择',
+    );
+
+    private $search_default = array
+    (
+        'value' => -1,
+        'name' => '不选择',
+    );
+
+	/**
+     * 获取分类数据
+     *
+     * @return mixed
+     */
+    public function get()
+    {
+        # 联动总数
+        $level_total = 100;
+
+        # 当前联动级别
+        $level_num = Dever::input('level_num');
+
+        # 一般为id
+        $level_id = Dever::input('level_id');
+
+        # 当前选择的id
+        $level_self = Dever::input('level_self');
+
+        # 是否是搜索列表页
+        $level_search = Dever::input('level_search');
+        if ($level_search) {
+            $default = $this->search_default;
+        } else {
+            $default = $this->default;
+        }
+
+        $data = array();
+
+        # 三级联动
+        if ($level_num == 1) {
+            $data = Dever::db('category/info')->getAll(array('category_id' => -1, 'id' => $level_self));
+        } elseif($level_id > 0) {
+            $data = Dever::db('category/info')->getAll(array('category_id' => $level_id, 'id' => $level_self));
+        }
+
+        if ($data || $level_num == 1) {
+            array_unshift($data, $default);
+        }
+
+        if (!$data) {
+            Dever::alert('error');
+        }
+
+        $result['level_total'] = $level_total;
+        $result['list'] = $data;
+        return $result;
+    }
+
+    /**
+     * 根据分类id转成名称
+     *
+     * @return mixed
+     */
+    public function string($cate)
+    {
+        $cate = explode(',', $cate);
+        $result = array();
+        foreach ($cate as $k => $v) {
+            $result[$k] = $this->getName($v);
+        }
+        return implode(',', $result);
+    }
+
+
+    private function getName($id)
+    {
+        $name = '父级分类';
+        if ($id > 0) {
+            $data = Dever::db('category/info')->one($id);
+            if ($data) {
+                $name = $data['name'];
+            }
+        }
+        return $name;
+    }
+}