From 1a6fc7af644628f9e2fcd64704ba110deb7a191e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BA=91=E6=B3=BD=E7=BD=91?= <357099073@qq.com>
Date: Fri, 25 Apr 2025 17:27:26 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 .htaccess                                     |   0
 README.md                                     | 140 +--
 admin-thinkphp-layui-learning.sql             | 354 +++++++
 app/AppApi.php                                |  38 +
 app/admin/controller/Base.php                 | 180 ++++
 app/admin/controller/Index.php                | 213 +++-
 app/admin/controller/Login.php                | 104 ++
 app/admin/controller/Yunzer.php               | 345 +++++++
 app/admin/controller/Yunzeradmin.php          | 262 +++++
 app/admin/controller/Yunzertest.php           | 167 +++
 app/admin/model/Base.php                      |  37 +
 app/admin/model/YzAdminConfig.php             |  43 +
 app/admin/view/index/index.php                | 173 ++++
 app/admin/view/index/welcome.php              | 149 +++
 app/admin/view/login/index.php                | 129 +++
 app/admin/view/public/header.php              |  93 ++
 app/admin/view/public/tail.php                |  30 +
 app/admin/view/yunzer/buttonadd.php           |  94 ++
 app/admin/view/yunzer/buttonedit.php          |  98 ++
 app/admin/view/yunzer/buttoninfo.php          | 155 +++
 app/admin/view/yunzer/configadd.php           |  47 +
 app/admin/view/yunzer/configedit.php          |  47 +
 app/admin/view/yunzer/configlist.php          | 286 +++++
 app/admin/view/yunzer/configvalue.php         | 189 ++++
 app/admin/view/yunzer/menuadd.php             |  95 ++
 app/admin/view/yunzer/menuedit.php            |  58 ++
 app/admin/view/yunzer/menuinfo.php            | 116 +++
 app/admin/view/yunzeradmin/admininfo.php      | 109 ++
 app/admin/view/yunzeradmin/groupadd.php       |  53 +
 app/admin/view/yunzeradmin/groupedit.php      |  54 +
 app/admin/view/yunzeradmin/groupinfo.php      |  97 ++
 app/admin/view/yunzeradmin/useradd.php        |  84 ++
 app/admin/view/yunzeradmin/useredit.php       |  76 ++
 app/admin/view/yunzeradmin/userinfo.php       | 112 ++
 app/admin/view/yunzertest/icon_list.php       |  82 ++
 app/admin/view/yunzertest/test_add.php        | 136 +++
 app/admin/view/yunzertest/test_edit.php       | 144 +++
 app/admin/view/yunzertest/test_list.php       | 193 ++++
 app/admin/view/yunzertest/test_static_add.php | 140 +++
 .../view/yunzertest/test_static_edit.php      | 149 +++
 .../view/yunzertest/test_static_list.php      | 104 ++
 app/common.php                                |  60 +-
 app/controller/Menu.php                       |   1 +
 app/middleware.php                            |  14 +-
 app/tpl/think_exception.tpl                   |  48 +
 composer.json                                 |   6 +-
 composer.lock                                 | 976 +++++++++++++++++-
 config/app.php                                |  13 +-
 config/captcha.php                            |  39 +
 config/console.php                            |   1 +
 config/cookie.php                             |   2 +
 config/database.php                           |   8 +-
 config/route.php                              |  76 +-
 config/session.php                            |  24 +-
 config/view.php                               |   2 +-
 nginx.htaccess                                |   8 -
 public/.htaccess_mac                          |   8 +
 public/.htaccess_win                          |   8 +
 public/favicon.ico                            | Bin 1150 -> 1945 bytes
 public/nginx.htaccess                         |   8 -
 .../48bf53df92855c12c85ae32643c1191e.png      | Bin 0 -> 10786 bytes
 .../c23ee545646904966c949ce3dea4304e.png      | Bin 0 -> 7639 bytes
 route/app.php                                 |   6 -
 view/README.md                                |   1 -
 64 files changed, 6208 insertions(+), 276 deletions(-)
 delete mode 100644 .htaccess
 create mode 100644 admin-thinkphp-layui-learning.sql
 create mode 100644 app/AppApi.php
 create mode 100644 app/admin/controller/Base.php
 create mode 100644 app/admin/controller/Login.php
 create mode 100644 app/admin/controller/Yunzer.php
 create mode 100644 app/admin/controller/Yunzeradmin.php
 create mode 100644 app/admin/controller/Yunzertest.php
 create mode 100644 app/admin/model/Base.php
 create mode 100644 app/admin/model/YzAdminConfig.php
 create mode 100644 app/admin/view/index/index.php
 create mode 100644 app/admin/view/index/welcome.php
 create mode 100644 app/admin/view/login/index.php
 create mode 100644 app/admin/view/public/header.php
 create mode 100644 app/admin/view/public/tail.php
 create mode 100644 app/admin/view/yunzer/buttonadd.php
 create mode 100644 app/admin/view/yunzer/buttonedit.php
 create mode 100644 app/admin/view/yunzer/buttoninfo.php
 create mode 100644 app/admin/view/yunzer/configadd.php
 create mode 100644 app/admin/view/yunzer/configedit.php
 create mode 100644 app/admin/view/yunzer/configlist.php
 create mode 100644 app/admin/view/yunzer/configvalue.php
 create mode 100644 app/admin/view/yunzer/menuadd.php
 create mode 100644 app/admin/view/yunzer/menuedit.php
 create mode 100644 app/admin/view/yunzer/menuinfo.php
 create mode 100644 app/admin/view/yunzeradmin/admininfo.php
 create mode 100644 app/admin/view/yunzeradmin/groupadd.php
 create mode 100644 app/admin/view/yunzeradmin/groupedit.php
 create mode 100644 app/admin/view/yunzeradmin/groupinfo.php
 create mode 100644 app/admin/view/yunzeradmin/useradd.php
 create mode 100644 app/admin/view/yunzeradmin/useredit.php
 create mode 100644 app/admin/view/yunzeradmin/userinfo.php
 create mode 100644 app/admin/view/yunzertest/icon_list.php
 create mode 100644 app/admin/view/yunzertest/test_add.php
 create mode 100644 app/admin/view/yunzertest/test_edit.php
 create mode 100644 app/admin/view/yunzertest/test_list.php
 create mode 100644 app/admin/view/yunzertest/test_static_add.php
 create mode 100644 app/admin/view/yunzertest/test_static_edit.php
 create mode 100644 app/admin/view/yunzertest/test_static_list.php
 create mode 100644 app/controller/Menu.php
 create mode 100644 app/tpl/think_exception.tpl
 create mode 100644 config/captcha.php
 delete mode 100644 nginx.htaccess
 create mode 100644 public/.htaccess_mac
 create mode 100644 public/.htaccess_win
 create mode 100644 public/storage/uploads/20250424/48bf53df92855c12c85ae32643c1191e.png
 create mode 100644 public/storage/uploads/20250424/c23ee545646904966c949ce3dea4304e.png
 delete mode 100644 view/README.md
diff --git a/.htaccess b/.htaccess
deleted file mode 100644
index e69de29..0000000
diff --git a/README.md b/README.md
index 830d302..3fd0dc0 100644
--- a/README.md
+++ b/README.md
@@ -1,126 +1,42 @@
-目录结构
-=========================
-www  WEB部署目录(或者子目录)
-├─app           应用目录
-│  ├─controller      控制器目录
-│  ├─model           模型目录
-│  ├─ ...            更多类库目录
-│  │
-│  ├─common.php         公共函数文件
-│  └─event.php          事件定义文件
-│
-├─config                配置目录
-│  ├─app.php            应用配置
-│  ├─cache.php          缓存配置
-│  ├─console.php        控制台配置
-│  ├─cookie.php         Cookie配置
-│  ├─database.php       数据库配置
-│  ├─filesystem.php     文件磁盘配置
-│  ├─lang.php           多语言配置
-│  ├─log.php            日志配置
-│  ├─middleware.php     中间件配置
-│  ├─route.php          URL和路由配置
-│  ├─session.php        Session配置
-│  ├─trace.php          Trace配置
-│  └─view.php           视图配置
-│
-├─view            视图目录
-├─route                 路由定义目录
-│  ├─route.php          路由定义文件
-│  └─ ...   
-│
-├─public                WEB目录(对外访问目录)
-│  ├─index.php          入口文件
-│  ├─router.php         快速测试文件
-│  └─.htaccess          用于apache的重写
-│
-├─extend                扩展类库目录
-├─runtime               应用的运行时目录(可写,可定制)
-├─vendor                Composer类库目录
-├─.example.env          环境变量示例文件
-├─composer.json         composer 定义文件
-├─LICENSE.txt           授权说明文件
-├─README.md             README 文件
-├─think                 命令行入口文件
+# phpAdmin 后台管理-教学版 (admin-thinkphp-layui-learning)
 
+- [官网:http://www.ouyangke.com](http://www.ouyangke.com)
+- [演示:admin-thinkphp-layui-learning.ouyangke.com](admin-thinkphp-layui-learning.ouyangke.com)
 
-默认应用文件
-=========================
-默认安装后,app目录下会包含下面的文件。
-├─app           应用目录
-│  │
-│  ├─BaseController.php    默认基础控制器类
-│  ├─ExceptionHandle.php   应用异常定义文件
-│  ├─common.php            全局公共函数文件
-│  ├─middleware.php        全局中间件定义文件
-│  ├─provider.php          服务提供定义文件
-│  ├─Request.php           应用请求对象
-│  └─event.php             全局事件定义文件
+## 一、介绍
 
-配置目录
-=========================
-├─config(配置目录)
-│  ├─app.php            应用配置
-│  ├─cache.php          缓存配置
-│  ├─console.php        控制台配置
-│  ├─cookie.php         Cookie配置
-│  ├─database.php       数据库配置
-│  ├─filesystem.php     文件磁盘配置
-│  ├─lang.php           多语言配置
-│  ├─log.php            日志配置
-│  ├─middleware.php     中间件配置
-│  ├─route.php          URL和路由配置
-│  ├─session.php        Session配置
-│  ├─trace.php          Trace配置
-│  ├─view.php           视图配置
-│  └─ ...               更多配置文件
-│  
+- phpAdmin 后台管理,是我在教学时,为了使学生更好的学习,开发出来给学生使用。有不同的版本,请选择适合自己的。
 
+- [admin-thinkphp-antd-vue-learning 教学版](https://gitee.com/ouyangke_com/admin-thinkphp-antd-vue-learning):用于学习 php 的人群
+  - 后端框架:Thinkphp6.1
+  - 前端框架:Vue3
+  - 前端样式:Ant Design Vue3.0
 
-ThinkPHP 6.0
-===============
+- [admin-thinkphp-layui-learning 教学版](https://gitee.com/ouyangke_com/admin-thinkphp-layui-learning):用于学习 php 的人群
+  - 后端框架:Thinkphp6.1
+  - Layui2.8
 
-> 运行环境要求PHP7.2+,兼容PHP8.1
+- [admin-thinkphp-layui-learning 配置版](https://gitee.com/ouyangke_com/admin-thinkphp-layui-config):快速搭建项目后台,用于各行业,是一个高级版本,适合有基础的人,不适合学习,请学生下载教学版。
+  - 后端框架:Thinkphp6.1
+  - Layui2.8
 
-[官方应用服务市场](https://market.topthink.com) | [`ThinkAPI`——官方统一API服务](https://docs.topthink.com/think-api)
+## 二、安装教程
 
-ThinkPHPV6.0版本由[亿速云](https://www.yisu.com/)独家赞助发布。
+- [根据 Thinkphp6 安装](https://www.kancloud.cn/manual/thinkphp6_0/1037479)
 
-## 主要新特性
+## 三、使用说明
 
-* 采用`PHP7`强类型(严格模式)
-* 支持更多的`PSR`规范
-* 原生多应用支持
-* 更强大和易用的查询
-* 全新的事件系统
-* 模型事件和数据库事件统一纳入事件系统
-* 模板引擎分离出核心
-* 内部功能中间件化
-* SESSION/Cookie机制改进
-* 对Swoole以及协程支持改进
-* 对IDE更加友好
-* 统一和精简大量用法
+- 1、域名指向 public 目录下
+- 2、后台管理系统访问网址:http://www.xxx.com/index.php/bews/index/index
 
+## 四、鸣谢
 
+- [PHP 中文网](https://www.php.cn)
+- [Thinkphp](http://www.thinkphp.cn)
+- [Layui](https://layui.dev)
 
-## 文档
+## 五、技术支持
 
-[完全开发手册](https://www.kancloud.cn/manual/thinkphp6_0/content)
-
-## 参与开发
-
-请参阅 [ThinkPHP 核心框架包](https://github.com/top-think/framework)。
-
-## 版权信息
-
-ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
-
-本项目包含的第三方源码和二进制文件之版权信息另行标注。
-
-版权所有Copyright © 2006-2021 by ThinkPHP (http://thinkphp.cn)
-
-All rights reserved。
-
-ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
-
-更多细节参阅 [LICENSE.txt](LICENSE.txt)
+- QQ:428188207
+- 所有版本都是免费的,有问题可以及时向我反馈
+- 请珍惜劳动成果
diff --git a/admin-thinkphp-layui-learning.sql b/admin-thinkphp-layui-learning.sql
new file mode 100644
index 0000000..ddc9eee
--- /dev/null
+++ b/admin-thinkphp-layui-learning.sql
@@ -0,0 +1,354 @@
+/*
+ Navicat MySQL Data Transfer
+
+ Source Server         : php
+ Source Server Type    : MySQL
+ Source Server Version : 50726
+ Source Host           : 127.0.0.1:3306
+ Source Schema         : admin-thinkphp-layui-learning
+
+ Target Server Type    : MySQL
+ Target Server Version : 50726
+ File Encoding         : 65001
+
+ Date: 28/04/2022 14:37:03
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for bew_admin_config
+-- ----------------------------
+DROP TABLE IF EXISTS `bew_admin_config`;
+CREATE TABLE `bew_admin_config`  (
+  `config_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '系统设置ID',
+  `config_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '功能名,代码参照使用',
+  `config_info` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '中文名',
+  `config_type` tinyint(4) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型 1文本 2图片 3富文本',
+  `config_value` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '值',
+  `config_desc` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '描述',
+  `config_sort` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序',
+  `config_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 1启用 0禁用',
+  PRIMARY KEY (`config_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '配置表' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of bew_admin_config
+-- ----------------------------
+INSERT INTO `bew_admin_config` VALUES (1, 'admin_domain', '本地域名', 1, 'http://admin-thinkphp-layui-learning.ouyangke.com', '项目域名', 0, 1);
+INSERT INTO `bew_admin_config` VALUES (2, 'admin_route', '项目路径', 1, '/index.php/bews/', '后台项目路径', 0, 1);
+INSERT INTO `bew_admin_config` VALUES (3, 'admin_name', '系统名称', 1, 'phpAdmin后台管理', '后台系统名称,在后台显示', 0, 1);
+INSERT INTO `bew_admin_config` VALUES (4, 'admin_page', '每页数量', 1, '10', '列表数据,每页数量', 0, 1);
+INSERT INTO `bew_admin_config` VALUES (5, 'logo', 'logo', 2, '/static/bews/images/logo.jpg', '请上传logo', 0, 1);
+INSERT INTO `bew_admin_config` VALUES (6, 'admin_info', '系统介绍', 3, '', '系统介绍', 0, 1);
+
+-- ----------------------------
+-- Table structure for bew_admin_sys_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `bew_admin_sys_menu`;
+CREATE TABLE `bew_admin_sys_menu`  (
+  `smid` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `label` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '菜单名称',
+  `type` tinyint(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT '菜单类型,0:分组,1:内部链接,2:超链接,3:隐藏按钮',
+  `src` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '链接源',
+  `parent_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '上级菜单ID',
+  `icon_class` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标class',
+  `sort` mediumint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序值,升序',
+  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 1开启 0关闭',
+  PRIMARY KEY (`smid`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8003 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '左侧菜单' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of bew_admin_sys_menu
+-- ----------------------------
+INSERT INTO `bew_admin_sys_menu` VALUES (1, '项目核心', 0, '', 0, 'layui-icon-template-1', 999999, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (2, '项目配置', 1, 'bew/configvalue', 1, 'layui-icon-set-fill', 100, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (3, '配置管理', 3, 'bew/configlist', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (4, '配置添加', 3, 'bew/configadd', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5, '配置修改', 3, 'bew/configedit', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (6, '配置删除', 3, 'bew/configdel', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (10, '导航管理', 1, 'bew/menuinfo', 1, 'layui-icon-layer', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (11, '导航添加', 3, 'bew/menuadd', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (12, '导航修改', 3, 'bew/menuedit', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (13, '导航删除', 3, 'bew/menudel', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (14, '按钮列表', 3, 'bew/buttoninfo', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (15, '按钮添加', 3, 'bew/buttonadd', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (16, '按钮修改', 3, 'bew/buttonedit', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (17, '按钮删除', 3, 'bew/buttondel', 1, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5000, '系统配置', 0, '', 0, 'layui-icon-set', 999996, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5002, '部门管理', 1, 'bewadmin/groupinfo', 5000, 'layui-icon-group', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5003, '管理员管理', 1, 'bewadmin/userinfo', 5000, 'layui-icon-username', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5004, '个人中心', 1, 'bewadmin/admininfo', 5000, 'layui-icon-edit', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5005, '部门添加', 3, 'bewadmin/groupadd', 5000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5006, '部门修改', 3, 'bewadmin/groupedit', 5000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5007, '部门删除', 3, 'bewadmin/groupdel', 5000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5008, '管理员添加', 3, 'bewadmin/useradd', 5000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5009, '管理员修改', 3, 'bewadmin/useredit', 5000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (5010, '管理员删除', 3, 'bewadmin/userdel', 5000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7000, '代码示例', 0, '', 0, 'layui-icon-app', 999995, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7001, '图标', 1, 'bewtest/icon_list', 7000, 'layui-icon-theme', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7002, '演示列表-方法渲染', 1, 'bewtest/test_list', 7000, 'layui-icon-list', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7003, '演示列表-静态表格', 1, 'bewtest/test_static_list', 7000, 'layui-icon-list', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7004, '演示添加-方法渲染', 3, 'bewtest/test_add', 7000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7005, '演示修改-方法渲染', 3, 'bewtest/test_edit', 7000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7006, '演示添加-静态表格', 3, 'bewtest/test_static_add', 7000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (7007, '演示修改-静态表格', 3, 'bewtest/test_static_edit', 7000, NULL, 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (8000, '友情链接', 0, NULL, 0, 'layui-icon-link', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (8001, '欧阳克博客', 2, 'http://www.ouyangke.com', 8000, 'layui-icon-link', 0, 1);
+INSERT INTO `bew_admin_sys_menu` VALUES (8002, 'php中文网', 2, 'https://www.php.cn', 8000, 'layui-icon-link', 0, 1);
+
+-- ----------------------------
+-- Table structure for bew_admin_user
+-- ----------------------------
+DROP TABLE IF EXISTS `bew_admin_user`;
+CREATE TABLE `bew_admin_user`  (
+  `uid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID',
+  `account` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '账号邮箱',
+  `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
+  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
+  `phone` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号',
+  `qq` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'QQ号',
+  `sex` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '性别 0未知 1男 2女',
+  `group_id` int(10) UNSIGNED NOT NULL COMMENT '分组ID',
+  `times_login` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '登陆次数',
+  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 1开启 0禁用',
+  `time_add` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
+  `time_last` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最后更新时间',
+  PRIMARY KEY (`uid`) USING BTREE,
+  UNIQUE INDEX `one_account`(`account`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of bew_admin_user
+-- ----------------------------
+INSERT INTO `bew_admin_user` VALUES (1, '428188207@qq.com', 'e10adc3949ba59abbe56e057f20f883e', '欧阳克', '0', '428188207', 1, 1, 274, 1, 1564124524, 1651804007);
+
+-- ----------------------------
+-- Table structure for bew_admin_user_group
+-- ----------------------------
+DROP TABLE IF EXISTS `bew_admin_user_group`;
+CREATE TABLE `bew_admin_user_group`  (
+  `group_id` int(11) NOT NULL AUTO_INCREMENT,
+  `group_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '部门名',
+  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '是否生效',
+  `time_add` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '添加时间',
+  `rights` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '角色权限,json',
+  PRIMARY KEY (`group_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '组管理' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of bew_admin_user_group
+-- ----------------------------
+INSERT INTO `bew_admin_user_group` VALUES (1, '管理', 1, 1564124524, '[1,2,10,3,4,5,6,15,11,12,13,14,17,16,5000,5004,5003,5002,5010,5009,5008,5007,5006,5005,8000,8002,8001,7000,7003,7002,7001,7007,7006,7005,7004]');
+
+-- ----------------------------
+-- Table structure for bew_z_iconfont
+-- ----------------------------
+DROP TABLE IF EXISTS `bew_z_iconfont`;
+CREATE TABLE `bew_z_iconfont`  (
+  `icon_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '图标ID',
+  `icon_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标名称',
+  `icon_css` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标css',
+  `icon_html` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标html',
+  `icon_source` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '来源 1layui',
+  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 1开启 0关闭',
+  PRIMARY KEY (`icon_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 169 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '图标库' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of bew_z_iconfont
+-- ----------------------------
+INSERT INTO `bew_z_iconfont` VALUES (1, '实心', 'layui-icon-heart-fill', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (2, '空心', 'layui-icon-heart', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (3, '亮度/晴', 'layui-icon-light', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (4, '时间/历史', 'layui-icon-time', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (5, '蓝牙', 'layui-icon-bluetooth', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (6, '@艾特', 'layui-icon-at', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (7, '静音', 'layui-icon-mute', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (8, '录音/麦克风', 'layui-icon-mike', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (9, '密钥/钥匙', 'layui-icon-key', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (10, '礼物/活动', 'layui-icon-gift', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (11, '邮箱', 'layui-icon-email', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (12, 'RSS', 'layui-icon-rss', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (13, 'WiFi', 'layui-icon-wifi', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (14, '退出/注销', 'layui-icon-logout', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (15, 'Android 安卓', 'layui-icon-android', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (16, 'Apple IOS 苹果', 'layui-icon-ios', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (17, 'Windows', 'layui-icon-windows', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (18, '穿梭框', 'layui-icon-transfer', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (19, '客服', 'layui-icon-service', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (20, '减', 'layui-icon-subtraction', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (21, '加', 'layui-icon-addition', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (22, '滑块', 'layui-icon-slider', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (23, '打印', 'layui-icon-print', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (24, '导出', 'layui-icon-export', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (25, '列', 'layui-icon-cols', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (26, '退出全屏', 'layui-icon-screen-restore', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (27, '全屏', 'layui-icon-screen-full', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (28, '半星', 'layui-icon-rate-half', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (29, '星星-空心', 'layui-icon-rate', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (30, '星星-实心', 'layui-icon-rate-solid', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (31, '手机', 'layui-icon-cellphone', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (32, '验证码', 'layui-icon-vercode', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (33, '微信', 'layui-icon-login-wechat', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (34, 'QQ', 'layui-icon-login-qq', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (35, '微博', 'layui-icon-login-weibo', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (36, '密码', 'layui-icon-password', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (37, '用户名', 'layui-icon-username', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (38, '刷新-粗', 'layui-icon-refresh-3', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (39, '授权', 'layui-icon-auz', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (40, '左向右伸缩菜单', 'layui-icon-spread-left', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (41, '右向左伸缩菜单', 'layui-icon-shrink-right', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (42, '雪花', 'layui-icon-snowflake', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (43, '提示说明', 'layui-icon-tips', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (44, '便签', 'layui-icon-note', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (45, '主页', 'layui-icon-home', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (46, '高级', 'layui-icon-senior', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (47, '刷新', 'layui-icon-refresh', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (48, '刷新', 'layui-icon-refresh-1', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (49, '旗帜', 'layui-icon-flag', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (50, '主题', 'layui-icon-theme', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (51, '消息-通知', 'layui-icon-notice', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (52, '网站', 'layui-icon-website', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (53, '控制台', 'layui-icon-console', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (54, '表情-惊讶', 'layui-icon-face-surprised', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (55, '设置-空心', 'layui-icon-set', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (56, '模板', 'layui-icon-template-1', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (57, '应用', 'layui-icon-app', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (58, '模板', 'layui-icon-template', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (59, '赞', 'layui-icon-praise', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (60, '踩', 'layui-icon-tread', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (61, '男', 'layui-icon-male', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (62, '女', 'layui-icon-female', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (63, '相机-空心', 'layui-icon-camera', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (64, '相机-实心', 'layui-icon-camera-fill', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (65, '菜单-水平', 'layui-icon-more', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (66, '菜单-垂直', 'layui-icon-more-vertical', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (67, '金额-人民币', 'layui-icon-rmb', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (68, '金额-美元', 'layui-icon-dollar', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (69, '钻石-等级', 'layui-icon-diamond', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (70, '火', 'layui-icon-fire', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (71, '返回', 'layui-icon-return', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (72, '位置-地图', 'layui-icon-location', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (73, '办公-阅读', 'layui-icon-read', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (74, '调查', 'layui-icon-survey', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (75, '表情-微笑', 'layui-icon-face-smile', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (76, '表情-哭泣', 'layui-icon-face-cry', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (77, '购物车', 'layui-icon-cart-simple', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (78, '购物车', 'layui-icon-cart', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (79, '下一页', 'layui-icon-next', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (80, '上一页', 'layui-icon-prev', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (81, '上传-空心-拖拽', 'layui-icon-upload-drag', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (82, '上传-实心', 'layui-icon-upload', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (83, '下载-圆圈', 'layui-icon-download-circle', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (84, '组件', 'layui-icon-component', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (85, '文件-粗', 'layui-icon-file-b', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (86, '用户', 'layui-icon-user', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (87, '发现-实心', 'layui-icon-find-fill', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (88, 'loading', 'layui-icon-loading', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (89, 'loading', 'layui-icon-loading-1', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (90, '添加', 'layui-icon-add-1', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (91, '播放', 'layui-icon-play', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (92, '暂停', 'layui-icon-pause', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (93, '音频-耳机', 'layui-icon-headset', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (94, '视频', 'layui-icon-video', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (95, '语音-声音', 'layui-icon-voice', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (96, '消息-通知-喇叭', 'layui-icon-speaker', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (97, '删除线', 'layui-icon-fonts-del', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (98, '代码', 'layui-icon-fonts-code', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (99, 'HTML', 'layui-icon-fonts-html', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (100, '字体加粗', 'layui-icon-fonts-strong', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (101, '删除链接', 'layui-icon-unlink', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (102, '图片', 'layui-icon-picture', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (103, '链接', 'layui-icon-link', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (104, '表情-笑-粗', 'layui-icon-face-smile-b', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (105, '左对齐', 'layui-icon-align-left', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (106, '右对齐', 'layui-icon-align-right', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (107, '居中对齐', 'layui-icon-align-center', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (108, '字体-下划线', 'layui-icon-fonts-u', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (109, '字体-斜体', 'layui-icon-fonts-i', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (110, 'Tabs 选项卡', 'layui-icon-tabs', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (111, '单选框-选中', 'layui-icon-radio', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (112, '单选框-候选', 'layui-icon-circle', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (113, '编辑', 'layui-icon-edit', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (114, '分享', 'layui-icon-share', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (115, '删除', 'layui-icon-delete', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (116, '表单', 'layui-icon-form', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (117, '手机-细体', 'layui-icon-cellphone-fine', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (118, '聊天 对话 沟通', 'layui-icon-dialogue', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (119, '文字格式化', 'layui-icon-fonts-clear', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (120, '窗口', 'layui-icon-layer', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (121, '日期', 'layui-icon-date', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (122, '水 下雨', 'layui-icon-water', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (123, '代码-圆圈', 'layui-icon-code-circle', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (124, '轮播组图', 'layui-icon-carousel', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (125, '翻页', 'layui-icon-prev-circle', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (126, '布局', 'layui-icon-layouts', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (127, '工具', 'layui-icon-util', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (128, '选择模板', 'layui-icon-templeate-1', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (129, '上传-圆圈', 'layui-icon-upload-circle', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (130, '树', 'layui-icon-tree', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (131, '表格', 'layui-icon-table', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (132, '图表', 'layui-icon-chart', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (133, '图标 报表 屏幕', 'layui-icon-chart-screen', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (134, '引擎', 'layui-icon-engine', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (135, '下三角', 'layui-icon-triangle-d', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (136, '右三角', 'layui-icon-triangle-r', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (137, '文件', 'layui-icon-file', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (138, '设置-小型', 'layui-icon-set-sm', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (139, '减少-圆圈', 'layui-icon-reduce-circle', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (140, '添加-圆圈', 'layui-icon-add-circle', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (141, '404', 'layui-icon-404', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (142, '关于', 'layui-icon-about', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (143, '箭头 向上', 'layui-icon-up', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (144, '箭头 向下', 'layui-icon-down', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (145, '箭头 向左', 'layui-icon-left', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (146, '箭头 向右', 'layui-icon-right', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (147, '圆点', 'layui-icon-circle-dot', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (148, '搜索', 'layui-icon-search', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (149, '设置-实心', 'layui-icon-set-fill', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (150, '群组', 'layui-icon-group', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (151, '好友', 'layui-icon-friends', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (152, '回复 评论 实心', 'layui-icon-reply-fill', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (153, '菜单 隐身 实心', 'layui-icon-menu-fill', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (154, '记录', 'layui-icon-log', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (155, '图片-细体', 'layui-icon-picture-fine', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (156, '表情-笑-细体', 'layui-icon-face-smile-fine', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (157, '列表', 'layui-icon-list', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (158, '发布 纸飞机', 'layui-icon-release', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (159, '对 OK', 'layui-icon-ok', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (160, '帮助', 'layui-icon-help', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (161, '客服', 'layui-icon-chat', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (162, 'top 置顶', 'layui-icon-top', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (163, '收藏-空心', 'layui-icon-star', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (164, '收藏-实心', 'layui-icon-star-fill', '', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (165, '关闭-实心', 'layui-icon-close-fill', 'ဇ', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (166, '关闭-空心', 'layui-icon-close', 'ဆ', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (167, '正确', 'layui-icon-ok-circle', 'စ', 1, 1);
+INSERT INTO `bew_z_iconfont` VALUES (168, '添加-圆圈-细体', 'layui-icon-add-circle-fine', '', 1, 1);
+
+-- ----------------------------
+-- Table structure for bew_z_test
+-- ----------------------------
+DROP TABLE IF EXISTS `bew_z_test`;
+CREATE TABLE `bew_z_test`  (
+  `test_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `test_input` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文本',
+  `test_rich` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '富文本',
+  `test_rich_baidu` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '百度富文本',
+  `test_img` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图片',
+  `test_reference` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '参照',
+  `test_time` int(10) UNSIGNED NULL DEFAULT NULL COMMENT '时间戳',
+  `test_data` date NULL DEFAULT NULL COMMENT '日期',
+  `test_datatime` datetime NULL DEFAULT NULL COMMENT '日期时间',
+  `test_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网址',
+  PRIMARY KEY (`test_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '演示表' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of bew_z_test
+-- ----------------------------
+INSERT INTO `bew_z_test` VALUES (1, '输入框', '富文本', '百度富文本', '/static/bews/images/logo.jpg', 1, 1618848000, '2021-04-21', '2021-04-22 00:00:00', 'http://www.ouyangke.cn');
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/app/AppApi.php b/app/AppApi.php
new file mode 100644
index 0000000..e0076b4
--- /dev/null
+++ b/app/AppApi.php
@@ -0,0 +1,38 @@
+ '系统错误,请稍后重试',
+			#############系统后台使用##############
+			'90000001' => '管理员账户不能为空',
+			'90000002' => '真实姓名不能为空',
+			'90000003' => '手机号不能为空',
+			'90000004' => '角色不能为空',
+			'90000005' => '密码不能为空',
+			'90000006' => '管理员账户要用邮箱',
+			'90000007' => '管理员账户已存在',
+			'90000008' => '角色名称不能为空',
+			'90000009' => '导航名称不能为空',
+			'90000010' => '导航下还有数据',
+			'90000011' => '请选择类型',
+			'90000012' => '内部代码不能为空',
+			'90000013' => '链接地址不能为空',
+			'90000015' => '按钮名称不能为空',
+			'90000029' => '管理员账户不存在',
+			'90000030' => '管理员已被禁用',
+			'90000031' => '密码不正确',
+
+			'91000001' => '添加失败',
+			'91000002' => '修改失败',
+			'91000003' => '删除失败',
+			'91000004' => '未改变数据',
+			'91000005' => '未查询到数据',
+			'91000006' => '失败',
+		);
+		return $array[$code];
+	}
+}
\ No newline at end of file
diff --git a/app/admin/controller/Base.php b/app/admin/controller/Base.php
new file mode 100644
index 0000000..400bf09
--- /dev/null
+++ b/app/admin/controller/Base.php
@@ -0,0 +1,180 @@
+config = $YzAdminConfig->getAll();
+		# 获取账户,账户判断
+		$this->adminId = Cookie::get('admin_id');
+		if(empty($this->adminId)){
+			header('Location:'.$this->config['admin_route'].'Login/index');
+			exit;
+		}
+		$this->aUser = Db::table('yz_admin_user')->where('uid',$this->adminId)->find();
+		
+		if (empty($this->aUser)) {
+			Cookie::delete('admin_id');
+			$this->error('管理员账户不存在');
+		}
+		if ($this->aUser['status'] != 1) {
+			Cookie::delete('admin_id');
+			$this->error('管理员已被禁用');
+		}
+		# 获取用户组权限
+		$group = Db::table('yz_admin_user_group')->where(['group_id'=>$this->aUser['group_id']])->find();
+		if(empty($group)){
+			$this->error('对不起,您没有权限');
+		}
+		# 获取当前链接,查询是否有权限
+		$controller = request()->controller();
+		$action = request()->action();
+		$key = $controller.'/'.$action;
+		
+		// // 演示站专用
+		// if(Request::isPost()){
+		// 	if(
+		// 		$key == 'Yunzer/configvalue' || 
+		// 		$key == 'Yunzer/configadd' || 
+		// 		$key == 'Yunzer/configedit' || 
+		// 		$key == 'Yunzer/configdel' || 
+		// 		$key == 'Yunzer/menuadd' || 
+		// 		$key == 'Yunzer/menuedit' || 
+		// 		$key == 'Yunzer/menudel' || 
+		// 		$key == 'Yunzer/buttonadd' || 
+		// 		$key == 'Yunzer/buttonedit' || 
+		// 		$key == 'Yunzer/buttondel' || 
+		// 		$key == 'Yunzeradmin/groupadd' || 
+		// 		$key == 'Yunzeradmin/groupedit' || 
+		// 		$key == 'Yunzeradmin/groupdel' || 
+		// 		$key == 'Yunzeradmin/useradd' || 
+		// 		$key == 'Yunzeradmin/useredit' || 
+		// 		$key == 'Yunzeradmin/userdel' || 
+		// 		$key == 'Yunzeradmin/admininfo' || 
+		// 		$key == 'Yunzeradmin/test_add' || 
+		// 		$key == 'Yunzeradmin/test_edit' || 
+		// 		$key == 'Yunzeradmin/test_static_add' || 
+		// 		$key == 'Yunzeradmin/test_static_edit' || 
+		// 		$key == 'Index/upload_img' || 
+		// 		$key == 'Index/upload_img_s' || 
+		// 		$key == 'Index/upload_imgs_kin'
+		// 	){
+		// 		$this->returnCode(1,'演示站,不能操作');
+		// 	}
+		// }
+		// // 演示站专用
+		
+		// if($key == 'Index/index' ||  $key == 'Index/welcome'){
+			
+		// }else{
+		// 	$aMenu = Db::table('yz_admin_sys_menu')->where('src',$key)->find();
+		// 	if(empty($aMenu)){
+		// 		$this->error('对不起,您访问的功能不存在');
+		// 	}
+		// 	$rights = json_decode($group['rights']);
+		// 	if(!in_array($aMenu['smid'],$rights)){
+		// 		$this->error('对不起,您没有权限');
+		// 	}
+		// }
+		View::assign([
+			'aUser' => $this->aUser,
+			'config' => $this->config
+		]);
+	}
+	/**
+	 * 返回json对象
+	 */
+	protected function returnCode($code,$data=[],$count=10){
+		header('Content-type:application/json');
+		if($code == 0){
+			$arr = array(
+				'code'=>$code,
+				'msg'=>'成功',
+				'count'=> $count,
+				'data' => $data
+			);
+		}else if($code >= 1 && $code <= 100){
+			$arr = array(
+				'code'	=>	$code,
+				'msg'	=>	$data
+			);
+		}else{
+			$appapi = new AppApi();
+			$arr = array(
+				'code'=>$code,
+				'msg'=>$appapi::errorTip($code)
+			);
+		}
+		echo json_encode($arr);
+		if($code != 0){
+			exit;
+		}
+	}
+
+	/**
+     * 操作成功跳转的快捷方法
+     * @access protected
+     * @param  mixed     $msg 提示信息
+     * @return void
+     */
+    protected function success($msg = '')
+    {
+        $result = [
+            'code' => 1,
+            'msg'  => $msg
+        ];
+
+        $type = $this->getResponseType();
+        if ($type == 'html'){
+            $response = view(Config::get('app.dispatch_success_tmpl'), $result);
+        } else if ($type == 'json') {
+            $response = json($result);
+        }
+        throw new HttpResponseException($response);
+    }
+
+    /**
+     * 操作错误跳转的快捷方法
+     * @access protected
+     * @param  mixed     $msg 提示信息
+     * @return void
+     */
+    protected function error($msg = '')
+    {
+        $result = [
+            'code' => 0,
+            'msg'  => $msg
+        ];
+		$response = view(Config::get('app.dispatch_error_tmpl'), $result);
+        throw new HttpResponseException($response);
+    }
+
+    /**
+     * 获取当前的response 输出类型
+     * @access protected
+     * @return string
+     */
+    protected function getResponseType()
+    {
+        return Request::isJson() || Request::isAjax() ? 'json' : 'html';
+    }
+}
\ No newline at end of file
diff --git a/app/admin/controller/Index.php b/app/admin/controller/Index.php
index 263ccdd..d851ffa 100644
--- a/app/admin/controller/Index.php
+++ b/app/admin/controller/Index.php
@@ -1,17 +1,206 @@
 $this->aUser['group_id']];
+		$role = Db::table('yz_admin_user_group')->where($where)->find();
+		if($role){
+			$role['rights'] = (isset($role['rights']) && $role['rights']) ? json_decode($role['rights'],true) : [];
+		}
+		if($role['rights']){
+			$where = [
+				['smid','in',implode(',',$role['rights']) ],
+				['status','=',1]
+			];
+			// 获取所有菜单
+			$menus = Db::table('yz_admin_sys_menu')->order('type,sort desc')->where($where)->select()->toArray();
+			
+			// 构建树形结构菜单
+			$menuTree = [];
+			$menuMap = [];
+			
+			// 先将所有菜单项映射到一个关联数组中
+			foreach($menus as $item){
+				$item['children'] = [];
+				$menuMap[$item['smid']] = $item;
+			}
+			
+			// 构建树形结构
+			foreach($menus as $item){
+				if($item['parent_id'] == 0){
+					// 顶级菜单
+					$menuTree[$item['smid']] = &$menuMap[$item['smid']];
+				}else{
+					// 子菜单,添加到父菜单的children数组中
+					if(isset($menuMap[$item['parent_id']])){
+						$menuMap[$item['parent_id']]['children'][] = &$menuMap[$item['smid']];
+					}
+				}
+			}
+			
+			$menu = $menuTree;
+		}
+		
+		View::assign([
+			'role' => $role,
+			'menu' => $menu
+		]);
+		return View::fetch();
+	}
+	# 欢迎页面
+	public function welcome(){
+		View::assign([
+			'time' => date('Y-m-d',$_SERVER['REQUEST_TIME']),
+		]);
+		return View::fetch();
+	}
 
-class Index extends BaseController
-{
-    public function index()
-    {
-        return '
 :) 
 ThinkPHP V' . \think\facade\App::version() . '
16载初心不改 - 你值得信赖的PHP框架 Admin模块
[ V6.0 版本由 亿速云 独家赞助发布 ] ';
-    }
+	/**
+	 * 保存附件信息到数据库
+	 * @param string $name 文件名
+	 * @param int $type 附件类型
+	 * @param int $size 文件大小
+	 * @param string $src 文件路径
+	 * @return int 附件ID
+	 */
+	private function saveAttachment($name, $type, $size, $src) {
+		$data = [
+			'name' => $name,
+			'type' => $type,
+			'size' => $size,
+			'src' => $src,
+			'create_time' => time(),
+			'update_time' => time()
+		];
+		return Db::table('yz_attachments')->insertGetId($data);
+	}
 
-    public function hello($name = 'ThinkPHP6')
-    {
-        return 'hello,' . $name;
-    }
-}
+	# 图片上传
+	public function upload_img(){
+		// 获取上传的文件
+		$file = request()->file();
+		$files = request()->file('file');
+		
+		// 检查是否有文件上传
+		if(empty($file)){
+			return json(['code'=>1, 'msg'=>'没有文件上传'])->send();
+		}
+		
+		try {
+			// 验证上传的文件
+			validate([
+				'image'=>'filesize:10240|fileExt:jpg,png,gif,jpeg'
+			])->check($file);
+			
+			// 存储文件到public磁盘的uploads目录
+			$info = \think\facade\Filesystem::disk('public')->putFile('uploads', $files);
+			
+			// 处理文件路径,统一使用正斜杠
+			$info = str_replace("\\", "/", $info);
+			$img = '/storage/'.$info;
+			
+			// 保存附件信息
+			$fileName = $files->getOriginalName();
+			$fileSize = $files->getSize();
+			$attachmentId = $this->saveAttachment($fileName, 1, $fileSize, $img);
+			
+			// 返回成功信息
+			return json([
+				'code' => 0, 
+				'data' => $img, 
+				'url' => $this->config['admin_domain'].$img,
+				'attachment_id' => $attachmentId
+			])->send();
+			
+		} catch (\think\exception\ValidateException $e) {
+			// 捕获验证异常并返回错误信息
+			return json(['code'=>1, 'msg'=>$e->getMessage()])->send();
+		} catch (\Exception $e) {
+			// 捕获其他异常
+			return json(['code'=>1, 'msg'=>'上传失败:'.$e->getMessage()])->send();
+		}
+	}
+	# 富文本图片上传
+	public function upload_imgs(){
+		$file = request()->file();
+		$files = request()->file('file');
+		if(empty($file)){
+			return json(['code'=>1, 'msg'=>'没有文件上传'])->send();
+		}
+		try {
+			validate(['image'=>'filesize:10240|fileExt:jpg,png,gif,jpeg'])->check($file);
+			$info = \think\facade\Filesystem::disk('public')->putFile('uploads', $files);
+			
+			// 处理文件路径
+			$info = str_replace("\\", "/", $info);
+			$img = '/storage/'.$info;
+			
+			// 保存附件信息
+			$fileName = $files->getOriginalName();
+			$fileSize = $files->getSize();
+			$attachmentId = $this->saveAttachment($fileName, 2, $fileSize, $img);
+			
+			return json([
+				'code' => 0,
+				'data' => [
+					'src' => $img,
+					'attachment_id' => $attachmentId
+				]
+			])->send();
+		} catch (\think\exception\ValidateException $e) {
+			return json(['code'=>1, 'msg'=>$e->getMessage()])->send();
+		}
+	}
+	# 富文本图片上传
+	public function upload_imgs_kin(){
+		$file = request()->file();
+		$files = request()->file('imgFile');
+
+		if(empty($file)){
+			return json(['error'=>1, 'message'=>'没有文件上传'])->send();
+		}
+		try {
+			validate(['image'=>'filesize:10240|fileExt:jpg,png,gif,jpeg'])->check($file);
+			$info = \think\facade\Filesystem::disk('public')->putFile('uploads', $files);
+			
+			// 处理文件路径
+			$info = str_replace("\\", "/", $info);
+			$img = '/storage/'.$info;
+			
+			// 保存附件信息
+			$fileName = $files->getOriginalName();
+			$fileSize = $files->getSize();
+			$attachmentId = $this->saveAttachment($fileName, 3, $fileSize, $img);
+			
+			return json([
+				'error' => 0,
+				'url' => $img,
+				'attachment_id' => $attachmentId
+			])->send();
+		} catch (\think\exception\ValidateException $e) {
+			return json(['error'=>1, 'message'=>$e->getMessage()])->send();
+		}
+	}
+	# 清除缓存
+	public function clear(){
+		$a = delete_dir_file(Env::get('runtime_path').'cache/');
+		$b = delete_dir_file(Env::get('runtime_path').'temp/');
+		if ($a || $b) {
+			$this->returnCode(0);
+		} else {
+			$this->returnCode('91000006');
+		}
+	}
+}
\ No newline at end of file
diff --git a/app/admin/controller/Login.php b/app/admin/controller/Login.php
new file mode 100644
index 0000000..d57aae1
--- /dev/null
+++ b/app/admin/controller/Login.php
@@ -0,0 +1,104 @@
+config = $YzAdminConfig->getAll();
+		View::assign([
+			'config' => $this->config
+		]);
+		return View::fetch();
+	}
+	public function login()
+	{
+		if (Request::isPost()) {
+			$account = trim(input('post.account'));
+			if (empty($account)) {
+				$this->returnCode('90000001');
+			}
+			$pattern = "/^([0-9A-Za-z-_.]+)@([0-9a-z]+.[a-z]{2,3}(.[a-z]{2})?)$/i";
+			if (!preg_match($pattern, $account)) {
+				$this->returnCode('90000006');
+			}
+			$password = trim(input('post.password'));
+			if (empty($password)) {
+				$this->returnCode(1, '密码不能为空');
+			}
+			$code = trim(input('post.code'));
+			if ($code == '') {
+				$this->returnCode(1, '验证码不能为空');
+			}
+			if (!captcha_check($code)) {
+				$this->returnCode(1, '验证码错误');
+			}
+			$aUser = Db::table('yz_admin_user')->where('account', $account)->find();
+			if (empty($aUser)) {
+				$this->returnCode('90000029');
+			}
+			if ($aUser['status'] != 1) {
+				$this->returnCode('90000030');
+			}
+			if ($aUser['password'] != md5($password)) {
+				$this->returnCode('90000031');
+			}
+			$remember = input('post.remember');
+			if (!empty($remember)) {
+				Cookie::set('admin_id', $aUser['uid'], 60 * 60 * 24 * 7);
+				Cookie::set('admin_name', $aUser['name'], 60 * 60 * 24 * 7);
+			} else {
+				Cookie::set('admin_id', $aUser['uid']);
+				Cookie::set('admin_name', $aUser['name']);
+			}
+			Db::table('yz_admin_user')->where('uid', $aUser['uid'])->update(
+				['login_count' => $aUser['login_count'] + 1, 'update_time' => time()]
+			);
+			$this->returnCode(0, [], '登陆成功');
+		}
+	}
+	public function logout()
+	{
+		Cookie::delete('admin_id');
+		Cookie::delete('admin_name');
+		$this->returnCode(0, [], '退出成功');
+	}
+	protected function returnCode($code, $data = [], $msg = '')
+	{
+		header('Content-type:application/json');
+		if ($code == 0) {
+			$arr = array(
+				'code' => $code,
+				'msg' => $msg,
+				'data' => $data
+			);
+		} else if ($code == 1) {
+			$arr = array(
+				'code' => 1,
+				'msg' => $data
+			);
+		} else {
+			$appapi = new AppApi();
+			$arr = array(
+				'code' => $code,
+				'msg' => $appapi::errorTip($code)
+			);
+		}
+		echo json_encode($arr);
+		if ($code != 0) {
+			exit;
+		}
+	}
+}
\ No newline at end of file
diff --git a/app/admin/controller/Yunzer.php b/app/admin/controller/Yunzer.php
new file mode 100644
index 0000000..f39435b
--- /dev/null
+++ b/app/admin/controller/Yunzer.php
@@ -0,0 +1,345 @@
+where('parent_id',0)->order('sort DESC,smid DESC')->select();
+		View::assign([
+			'lists' => $lists
+		]);
+		return View::fetch();
+	}
+	# 菜单添加
+	public function menuadd(){
+		$req = request();
+		if($req->isPost()){
+			$data['label'] = trim(input('post.label'));
+			if(empty($data['label'])){
+				View::returnCode('90000009');
+			}
+			$data['icon_class'] = trim(input('post.icon_class'));
+			$data['sort'] = (int)trim(input('post.sort'));
+			$data['status'] = (int)trim(input('post.status'));
+			$data['type'] = (int)trim(input('post.type',0));
+			if($data['type'] == 1){
+				$data['src'] = trim(input('post.src1'));
+				if(empty($data['src'])){
+					$this->returnCode('90000012');
+				}
+			}else if($data['type'] == 2){
+				$data['src'] = trim(input('post.src2'));
+				if(empty($data['src'])){
+					$this->returnCode('90000013');
+				}
+			}else{
+				$data['src'] = '';
+			}
+			// 保存用户
+			$res = Db::table('yz_admin_sys_menu')->insert($data);
+			if(!$res){
+				$this->returnCode('91000001');
+			}
+			$this->returnCode(0);
+		}else{
+			$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
+			View::assign([
+				'iconfont' => $iconfont
+			]);
+			return View::fetch();
+		}
+	}
+	# 菜单修改
+	public function menuedit(){
+		$req = request();
+		if($req->isPost()){
+			$smid = (int)input('post.smid');
+			$data['label'] = trim(input('post.label'));
+			if(!$data['label']){
+				$this->returnCode('90000009');
+			}
+			$data['icon_class'] = trim(input('post.icon_class'));
+			$data['sort'] = (int)trim(input('post.sort'));
+			$data['status'] = (int)trim(input('post.status'));
+			$data['type'] = (int)trim(input('post.type',0));
+			if($data['type'] == 1){
+				$data['src'] = trim(input('post.src1'));
+				if(empty($data['src'])){
+					$this->returnCode('90000012');
+				}
+			}else if($data['type'] == 2){
+				$data['src'] = trim(input('post.src2'));
+				if(empty($data['src'])){
+					$this->returnCode('90000013');
+				}
+			}else{
+				$data['src'] = '';
+			}
+			// 保存用户
+			$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->update($data);
+			if(!$res){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$smid = (int)input('get.smid');
+			$lists = Db::table('yz_admin_sys_menu')->where('smid',$smid)->find();
+			$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
+			View::assign([
+				'lists' => $lists,
+				'iconfont' => $iconfont
+			]);
+			return View::fetch();
+		}
+	}
+	# 菜单删除
+	public function menudel(){
+		$smid = (int)input('post.smid');
+		$count = Db::table('yz_admin_sys_menu')->where('parent_id',$smid)->count();
+		if($count > 0){
+			$this->returnCode('90000010');
+		}
+		$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->delete();
+		if(empty($res)){
+			$this->returnCode('91000003');
+		}
+		$this->returnCode(0);
+	}
+	# 按钮管理
+	public function buttoninfo(){
+		$smid = (int)input('get.smid');
+		$lists = Db::table('yz_admin_sys_menu')->where('parent_id',$smid)->order('sort DESC')->select()->toArray();
+		if(!empty($lists)){
+			foreach($lists as &$v){
+				switch ($v['type']) {
+					case 0:
+						$v['type_name'] = '顶级菜单';
+						break;
+					case 1:
+						$v['type_name'] = '内部跳转';
+						break;
+					case 2:
+						$v['type_name'] = '超链接';
+						break;
+					default:
+						$v['type_name'] = '未规划类型';
+						break;
+				}
+			}
+		}
+		View::assign([
+			'lists' => $lists,
+			'smid'  => $smid
+		]);
+		return View::fetch();
+	}
+	# 按钮添加
+	public function buttonadd(){
+		$req = request();
+		if($req->isPost()){
+			$smid = (int)input('post.smid');
+			$data['label'] = trim(input('post.label'));
+			if(!$data['label']){
+				$this->returnCode('90000015');
+			}
+			$data['icon_class'] = trim(input('post.icon_class'));
+			$data['sort'] = (int)trim(input('post.sort'));
+			$data['status'] = (int)trim(input('post.status'));
+			$data['type'] = (int)trim(input('post.type'));
+			if(empty($data['type'])){
+				$this->returnCode('90000011');
+			}
+			if($data['type'] == 1){
+				$data['src'] = trim(input('post.src1'));
+				if(empty($data['src'])){
+					$this->returnCode('90000012');
+				}
+			}else if($data['type'] == 2){
+				$data['src'] = trim(input('post.src2'));
+				if(empty($data['src'])){
+					$this->returnCode('90000013');
+				}
+			}
+			$data['parent_id'] = $smid;
+			$res = Db::table('yz_admin_sys_menu')->insert($data);
+			if(!$res){
+				$this->returnCode('91000001');
+			}
+			$this->returnCode(0);
+		}else{
+			$smid = (int)input('get.smid');
+			$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
+			View::assign([
+				'smid'  => $smid,
+				'iconfont' => $iconfont
+			]);
+			return View::fetch();
+		}
+	}
+	# 按钮修改
+	public function buttonedit(){
+		$req = request();
+		if($req->isPost()){
+			$smid = (int)input('post.smid');
+			$data['label'] = trim(input('post.label'));
+			if(!$data['label']){
+				$this->returnCode('90000015');
+			}
+			$data['icon_class'] = trim(input('post.icon_class'));
+			$data['sort'] = (int)trim(input('post.sort'));
+			$data['status'] = (int)trim(input('post.status'));
+			$data['type'] = (int)trim(input('post.type'));
+			if(empty($data['type'])){
+				$this->returnCode('90000011');
+			}
+			if($data['type'] == 1){
+				$data['src'] = trim(input('post.src1'));
+				if(empty($data['src'])){
+					$this->returnCode('90000012');
+				}
+			}else if($data['type'] == 2){
+				$data['src'] = trim(input('post.src2'));
+				if(empty($data['src'])){
+					$this->returnCode('90000013');
+				}
+			}
+			$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->update($data);
+			if(!$res){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$smid = (int)input('get.smid');
+			$lists = Db::table('yz_admin_sys_menu')->where('smid',$smid)->find();
+			$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
+			View::assign([
+				'lists' => $lists,
+				'iconfont' => $iconfont
+			]);
+			return View::fetch();
+		}
+	}
+	# 按钮删除
+	public function buttondel(){
+		$smid = (int)input('post.smid');
+		$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->delete();
+		if(empty($res)){
+			$this->returnCode('91000003');
+		}
+		$this->returnCode(0);
+	}
+	# 配置列表
+	public function configlist(){
+		$req = request();
+		if($req->isPost()){
+			$page = (int)input('post.page',1);
+			$limit = (int)input('post.limit',$this->config['admin_page']);
+			$count = Db::table('yz_admin_config')->count();
+			$lists = Db::table('yz_admin_config')->page($page,$limit)->order('config_sort DESC,config_id DESC')->select();
+			$this->returnCode(0,$lists,$count);
+		}else{
+			return View::fetch();
+		}
+	}
+	# 配置添加
+	public function configadd(){
+		$req = request();
+		if($req->isPost()){
+			$data['config_name'] = trim(input('post.config_name'));
+			if(empty($data['config_name'])){
+				$this->returnCode(1,'请输入关键词');
+			}
+			$data['config_info'] = trim(input('post.config_info'));
+			if(empty($data['config_info'])){
+				$this->returnCode(1,'请输入作用');
+			}
+			$data['config_type'] = trim(input('post.config_type'));
+			$data['config_desc'] = trim(input('post.config_desc'));
+			$data['config_status'] = trim(input('post.config_status'));
+			$data['config_sort'] = trim(input('post.config_sort'));
+			$res = Db::table('yz_admin_config')->insert($data);
+			if(empty($res)){
+				$this->returnCode('91000001');
+			}
+			$this->returnCode(0);
+		}else{
+			return View::fetch();
+		}
+	}
+	# 配置修改
+	public function configedit(){
+		$req = request();
+		if($req->isPost()){
+			$config_id = (int)input('post.config_id');
+			if(empty($config_id)){
+				$this->returnCode(1,'请选择一条数据');
+			}
+			$data['config_name'] = trim(input('post.config_name'));
+			if(empty($data['config_name'])){
+				$this->returnCode(1,'请输入关键词');
+			}
+			$data['config_info'] = trim(input('post.config_info'));
+			if(empty($data['config_info'])){
+				$this->returnCode(1,'请输入作用');
+			}
+			$data['config_type'] = trim(input('post.config_type'));
+			$data['config_desc'] = trim(input('post.config_desc'));
+			$data['config_status'] = trim(input('post.config_status'));
+			$data['config_sort'] = trim(input('post.config_sort'));
+			$res = Db::table('yz_admin_config')->where('config_id',$config_id)->update($data);
+			if(empty($res)){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$config_id = (int)input('get.config_id');
+			$find = Db::table('yz_admin_config')->where('config_id',$config_id)->find();
+			View::assign([
+				'find' => $find
+			]);
+			return View::fetch();
+		}
+	}
+	# 配置删除
+	public function configdel(){
+		$config_id = (int)input('post.config_id');
+		if(empty($config_id)){
+			$this->returnCode(1,'请选择一条数据');
+		}
+		$res = Db::table('yz_admin_config')->where('config_id',$config_id)->delete();
+		if(empty($res)){
+			$this->returnCode('91000003');
+		}
+		$this->returnCode(0);
+	}
+	# 配置值
+	public function configvalue(){
+		$req = request();
+		if($req->isPost()){
+			$post = input('post.');
+			if(empty($post)){
+				$this->returnCode(1,'数据不能为空');
+			}
+			$oConfig = new YzAdminConfig();
+			$updateAll = $oConfig->updateAll($post);
+			if(empty($updateAll)){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$lists = Db::table('yz_admin_config')->order('config_sort DESC,config_id')->select();
+			View::assign([
+				'lists' => $lists
+			]);
+			return View::fetch();
+		}
+	}
+}
\ No newline at end of file
diff --git a/app/admin/controller/Yunzeradmin.php b/app/admin/controller/Yunzeradmin.php
new file mode 100644
index 0000000..1655fda
--- /dev/null
+++ b/app/admin/controller/Yunzeradmin.php
@@ -0,0 +1,262 @@
+select();
+		View::assign([
+			'group' => $group
+		]);
+		return View::fetch();
+	}
+	public function groupadd(){
+		if(Request::isPost()){
+			$data['group_name'] = trim(input('post.group_name'));
+			if(!$data['group_name']){
+				$this->returnCode('90000008');
+			}
+			$data['status'] = (int)trim(input('post.status'));
+			$data['create_time'] = time();
+			$menus = input('post.menu/a');
+			if($menus){
+				$data['rights'] = json_encode(array_keys($menus));
+			}
+			$res = Db::table('yz_admin_user_group')->insert($data);
+			if(!$res){
+				$this->returnCode('91000001');
+			}
+			$this->returnCode(0);
+		}else{
+			$menus = Db::table('yz_admin_sys_menu')->order('type,sort desc')->where('status','=',1)->select();
+			$menu = [];
+
+			// 先处理所有父菜单
+			foreach($menus as $menus_v){
+				if($menus_v['parent_id'] == 0){
+					$menu[$menus_v['smid']] = $menus_v;
+					$menu[$menus_v['smid']]['children'] = []; // 初始化 children 数组
+				}
+			}
+
+			// 再处理子菜单
+			foreach($menus as $menus_v){
+				if($menus_v['parent_id'] != 0 && isset($menu[$menus_v['parent_id']])){
+					$menu[$menus_v['parent_id']]['children'][] = $menus_v;
+				}
+			}
+
+			View::assign([
+				'menus' => $menu
+			]);
+			return View::fetch();
+		}
+	}
+	public function groupedit(){
+		if(Request::isPost()){
+			$group_id = (int)trim(input('post.group_id'));
+			$data['group_name'] = trim(input('post.group_name'));
+			if(!$data['group_name']){
+				$this->returnCode('90000008');
+			}
+			$data['status'] = (int)trim(input('post.status'));
+			$menus = input('post.menu/a');
+			if($menus){
+				$data['rights'] = json_encode(array_keys($menus));
+			}else{
+				$data['rights'] = '';
+			}
+			$res = Db::table('yz_admin_user_group')->where('group_id',$group_id)->update($data);
+			if(!$res){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$group_id = (int)input('get.group_id');
+			$group = Db::table('yz_admin_user_group')->where('group_id',$group_id)->find();
+			if($group && $group['rights']){
+				$group['rights'] = json_decode($group['rights']);
+			}
+
+			$menus = Db::table('yz_admin_sys_menu')->order('type,sort desc')->where('status','=',1)->select();
+			$menu = [];
+
+			// 先处理所有父菜单
+			foreach($menus as $menus_v){
+				if($menus_v['parent_id'] == 0){
+					$menu[$menus_v['smid']] = $menus_v;
+					$menu[$menus_v['smid']]['children'] = []; // 初始化 children 数组
+				}
+			}
+
+			// 再处理子菜单
+			foreach($menus as $menus_v){
+				if($menus_v['parent_id'] != 0 && isset($menu[$menus_v['parent_id']])){
+					$menu[$menus_v['parent_id']]['children'][] = $menus_v;
+				}
+			}
+
+			View::assign([
+				'group' => $group,
+				'menus' => $menu
+			]);
+			return View::fetch();
+		}
+	}
+	public function groupdel(){
+		$group_id = (int)input('post.group_id');
+		$res = Db::table('yz_admin_user_group')->where('group_id',$group_id)->delete();
+		if(empty($res)){
+			$this->returnCode('91000003');
+		}
+		$this->returnCode(0);
+	}
+	public function userinfo(){
+		$lists = Db::table('yz_admin_user')->select();
+		$group = [];
+		$groups = Db::table('yz_admin_user_group')->select();
+		foreach ($groups as $key => $value) {
+			$group[$value['group_id']] = $value;
+		}
+		View::assign([
+			'lists' => $lists,
+			'group' => $group
+		]);
+		return View::fetch();
+	}
+	public function useradd(){
+		if(Request::isPost()){
+			$data['account'] = trim(input('post.account'));
+			if(empty($data['account'])){
+				$this->returnCode('90000001');
+			}
+			$pattern = "/^([0-9A-Za-z-_.]+)@([0-9a-z]+.[a-z]{2,3}(.[a-z]{2})?)$/i";
+			if(!preg_match($pattern,$data['account'])){
+				$this->returnCode('90000006');
+			}
+			$item = Db::table('yz_admin_user')->where('account',$data['account'])->find();
+			if($item){
+				$this->returnCode('90000007');
+			}
+			$data['name'] = trim(input('post.name'));
+			$data['phone'] = trim(input('post.phone'));
+			$data['qq'] = (int)trim(input('post.qq'));
+			$data['group_id'] = (int)input('post.group_id');
+			$data['sex'] = (int)(input('post.sex'));
+			$data['status'] = (int)(input('post.status'));
+			$password = trim(input('post.password'));
+			if(empty($data['name'])){
+				$this->returnCode('90000002');
+			}
+			if(empty($data['phone'])){
+				$this->returnCode('90000003');
+			}
+			if(empty($data['group_id'])){
+				$this->returnCode('90000004');
+			}
+			if(empty($password)){
+				$this->returnCode('90000005');
+			}else{
+				$data['password'] = md5($password);
+			}
+			$data['create_time'] = time();
+			$data['update_time'] = time();
+			$res = Db::table('yz_admin_user')->insert($data);
+			if(!$res){
+				$this->returnCode('91000001');
+			}
+			$this->returnCode(0);
+		}else{
+			$group = [];
+			$groups = Db::table('yz_admin_user_group')->select();
+			foreach ($groups as $key => $value) {
+				$group[$value['group_id']] = $value;
+			}
+			View::assign([
+				'group' => $group
+			]);
+			return View::fetch();
+		}
+	}
+	# 修改管理员
+	public function useredit(){
+		if(Request::isPost()){
+			$uid = (int)trim(input('post.uid'));
+			$data['name'] = trim(input('post.name'));
+			$data['phone'] = trim(input('post.phone'));
+			$data['qq'] = (int)trim(input('post.qq'));
+			$data['group_id'] = (int)input('post.group_id');
+			$data['sex'] = (int)(input('post.sex'));
+			$data['status'] = (int)(input('post.status'));
+			if(empty($data['name'])){
+				$this->returnCode('90000002');
+			}
+			if(empty($data['phone'])){
+				$this->returnCode('90000003');
+			}
+			if(empty($data['group_id'])){
+				$this->returnCode('90000004');
+			}
+			// 保存用户
+			$res = Db::table('yz_admin_user')->where('uid',$uid)->update($data);
+			if(!$res){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$uid = (int)input('get.uid');
+			// 加载管理员
+			$lists = Db::table('yz_admin_user')->where('uid',$uid)->find();
+			// 加载角色
+			$group = [];
+			$groups = Db::table('yz_admin_user_group')->select();
+			foreach ($groups as $key => $value) {
+				$group[$value['group_id']] = $value;
+			}
+			View::assign([
+				'lists' => $lists,
+				'group' => $group
+			]);
+			return View::fetch();
+		}
+	}
+	# 删除管理员
+	public function userdel(){
+		$uid = (int)input('post.uid');
+		$res = Db::table('yz_admin_user')->where('uid',$uid)->delete();
+		if(empty($res)){
+			$this->returnCode('91000003');
+		}
+		$this->returnCode(0);
+	}
+	# 管理员信息
+	public function admininfo(){
+		if(Request::isPost()){
+			$find = Db::table('yz_admin_user')->where('uid',$this->adminId)->find();
+			if(empty($find)){
+				$this->returnCode(1,'当前账户不存在');
+			}
+			$data['name'] = trim(input('post.name'));
+			$data['phone'] = trim(input('post.phone'));
+			$data['qq'] = (int)trim(input('post.qq'));
+			$data['sex'] = (int)(input('post.sex'));
+			if(empty($data['name'])){
+				$this->returnCode('90000002');
+			}
+			if(empty($data['phone'])){
+				$this->returnCode('90000003');
+			}
+			// 保存用户
+			$res = Db::table('yz_admin_user')->where('uid',$this->adminId)->update($data);
+			if(!$res){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			return View::fetch();
+		}
+	}
+}
\ No newline at end of file
diff --git a/app/admin/controller/Yunzertest.php b/app/admin/controller/Yunzertest.php
new file mode 100644
index 0000000..1deeaa0
--- /dev/null
+++ b/app/admin/controller/Yunzertest.php
@@ -0,0 +1,167 @@
+where('status','=',1)->select();
+		View::assign([
+			'lists' => $lists
+		]);
+		return View::fetch();
+	}
+	public function test_list(){
+		if(Request::isPost()){
+			$count = Db::table('yz_z_test')->count();
+			$page = (int)input('post.page',1);
+			$limit = (int)input('post.limit',10);
+			$lists = Db::table('yz_z_test')->order('test_id DESC')->page($page,$limit)->select()->each(function($item, $key){
+					if($item['test_reference'] == 1){
+						$item['test_reference'] = '开启';
+					}else{
+						$item['test_reference'] = '关闭';
+					}
+					$item['test_time'] = date('Y-m-d H:i:s',$item['test_time']);
+					return $item;
+				});
+			$this->returnCode(0,$lists,$count);
+		}else{
+			return View::fetch();
+		}
+	}
+	public function test_add(){
+		if(Request::isPost()){
+			$data['test_input'] = input('post.test_input');
+			$data['test_reference'] = input('post.test_reference');
+			$data['test_time'] = input('post.test_time');
+			if(!empty($data['test_time'])){
+				$data['test_time'] = strtotime($data['test_time']);
+			}
+			$data['test_data'] = input('post.test_data');
+			$data['test_datatime'] = input('post.test_datatime');
+			$data['test_img'] = input('post.test_img');
+			$data['test_rich_baidu'] = input('post.test_rich_baidu');
+			$data['test_url'] = input('post.test_url');
+
+			$insert = Db::table('yz_z_test')->insert($data);
+			if(empty($insert)){
+				$this->returnCode('91000001');
+			}
+			$this->returnCode(0);
+		}else{
+			return View::fetch();
+		}
+	}
+	public function test_edit(){
+		if(Request::isPost()){
+			$test_id = input('post.test_id');
+			$data['test_input'] = input('post.test_input');
+			$data['test_reference'] = input('post.test_reference');
+			$data['test_time'] = input('post.test_time');
+			if(!empty($data['test_time'])){
+				$data['test_time'] = strtotime($data['test_time']);
+			}
+			$data['test_data'] = input('post.test_data');
+			$data['test_datatime'] = input('post.test_datatime');
+			$data['test_img'] = input('post.test_img');
+			$data['test_rich'] = input('post.test_rich');
+			$data['test_rich_baidu'] = input('post.test_rich_baidu');
+			$data['test_url'] = input('post.test_url');
+
+			$update = Db::table('yz_z_test')->where('test_id',$test_id)->update($data);
+			if(empty($update)){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$test_id = input('get.test_id');
+			$find = Db::table('yz_z_test')->where('test_id',$test_id)->find();
+			if(!empty($find)){
+				$find['test_time'] = date('Y-m-d H:i:s',$find['test_time']);
+			}
+			View::assign([
+				'find' => $find
+			]);
+			return View::fetch();
+		}
+	}
+	public function test_del(){
+		$test_id = (int)input('post.test_id');
+		$res = Db::table('yz_z_test')->where('test_id',$test_id)->delete();
+		if(empty($res)){
+			$this->returnCode('91000003');
+		}
+		$this->returnCode(0);
+	}
+	public function test_static_list(){
+		$lists = Db::table('yz_z_test')
+					->order('test_id DESC')
+					->paginate();
+		View::assign([
+			'lists' => $lists
+		]);
+		return View::fetch();
+	}
+	public function test_static_add(){
+		if(Request::isPost()){
+			$data['test_input'] = input('post.test_input');
+			$data['test_reference'] = input('post.test_reference');
+			$data['test_time'] = input('post.test_time');
+			if(!empty($data['test_time'])){
+				$data['test_time'] = strtotime($data['test_time']);
+			}
+			$data['test_data'] = input('post.test_data');
+			$data['test_datatime'] = input('post.test_datatime');
+			$data['test_img'] = input('post.test_img');
+			$data['test_rich_baidu'] = input('post.test_rich_baidu');
+			$data['test_url'] = input('post.test_url');
+
+			$insert = Db::table('yz_z_test')->insert($data);
+			if(empty($insert)){
+				$this->returnCode('91000001');
+			}
+			$this->returnCode(0);
+		}else{
+			return View::fetch();
+		}
+	}
+	public function test_static_edit(){
+		if(Request::isPost()){
+			$test_id = input('post.test_id');
+			$data['test_input'] = input('post.test_input');
+			$data['test_reference'] = input('post.test_reference');
+			$data['test_time'] = input('post.test_time');
+			if(!empty($data['test_time'])){
+				$data['test_time'] = strtotime($data['test_time']);
+			}
+			$data['test_data'] = input('post.test_data');
+			$data['test_datatime'] = input('post.test_datatime');
+			$data['test_img'] = input('post.test_img');
+			$data['test_rich'] = input('post.test_rich');
+			$data['test_rich_baidu'] = input('post.test_rich_baidu');
+			$data['test_url'] = input('post.test_url');
+
+			$update = Db::table('yz_z_test')->where('test_id',$test_id)->update($data);
+			if(empty($update)){
+				$this->returnCode('91000002');
+			}
+			$this->returnCode(0);
+		}else{
+			$test_id = input('get.test_id');
+			$find = Db::table('yz_z_test')->where('test_id',$test_id)->find();
+			if(!empty($find)){
+				$find['test_time'] = date('Y-m-d H:i:s',$find['test_time']);
+				if(!empty($find['test_img'])){
+					$find['test_img_s'] = explode(';',$find['test_img']);
+				}
+			}
+			View::assign([
+				'find' => $find
+			]);
+			return View::fetch();
+		}
+	}
+}
\ No newline at end of file
diff --git a/app/admin/model/Base.php b/app/admin/model/Base.php
new file mode 100644
index 0000000..55a4243
--- /dev/null
+++ b/app/admin/model/Base.php
@@ -0,0 +1,37 @@
+ logs($data,$fileName);
+			}
+		}
+		$info = ['data'=>$data];
+		$content = json_encode($info, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . PHP_EOL;
+		if(empty($fileName)){
+			$filePath = $path . "/" . date("Ymd",time()).'.info.log';
+		}else{
+			$filePath = $path . "/" . $fileName . '.info.log';
+		}
+		$time = "[".date("Y-m-d H:i:s",time())."]";
+		$re = file_put_contents($filePath, $time." ".$content , FILE_APPEND);
+		if(!$re){
+			$this -> logs($data,$fileName);
+		}else{
+			return true;
+		}
+	}
+}
\ No newline at end of file
diff --git a/app/admin/model/YzAdminConfig.php b/app/admin/model/YzAdminConfig.php
new file mode 100644
index 0000000..5886655
--- /dev/null
+++ b/app/admin/model/YzAdminConfig.php
@@ -0,0 +1,43 @@
+order('config_sort DESC')->select()->toArray();
+		if(empty($aList)){
+			return [];
+		}else{
+			$return = [];
+			foreach($aList as $k=>$v){
+				$return[$v['config_name']] = $v['config_value'];
+			}
+		}
+		return $return;
+	}
+	/**
+	* 多条数据更新
+	*/
+	public function updateAll($data){
+		$lists = static::order('config_sort DESC,config_id')->select()->toArray();
+		if(empty($lists)){
+			return false;
+		}else{
+			foreach($lists as &$lists_v){
+				$lists_v['config_value'] = $data[$lists_v['config_name']];
+			}
+			$save = static::saveAll($lists);
+			if(empty($save)){
+				return false;
+			}
+		}
+		return true;
+	}
+}
\ No newline at end of file
diff --git a/app/admin/view/index/index.php b/app/admin/view/index/index.php
new file mode 100644
index 0000000..6607cde
--- /dev/null
+++ b/app/admin/view/index/index.php
@@ -0,0 +1,173 @@
+
+
+
+
+	
+	{$config['admin_name']}
+	
+	
+	
+	
+	
+	
+	
+	
+
+
+
+	
+	
+	
+	
+	
+	
+
+
+
\ No newline at end of file
diff --git a/app/admin/view/index/welcome.php b/app/admin/view/index/welcome.php
new file mode 100644
index 0000000..c34e231
--- /dev/null
+++ b/app/admin/view/index/welcome.php
@@ -0,0 +1,149 @@
+{include file="public/header" /}
+
+
+
+    
+    
+    
+    
+    
+        
快捷操作
+        
+            
+            
+            
+            
+            
+        
+    
+
+    
+    
+        
+            
+            
+                
+                    
+                        
+                            | 排序+ | 类型+ | 按钮名+ | 图标+ | 状态+ | 操作+ | 
+                    
+                    
+                        {volist name="lists" id='vo'}
+                            
+                                | {$vo['sort']}+ | +                                    {if($vo['type']==1)}
+                                        功能模块 {$vo['src']}
+                                    {elseif($vo['type']==2)/}
+                                        超链接 {$vo['src']}
+                                    {/if}
++ | {$vo['label']}+ | {$vo['icon_class']}+ | +                                    {if($vo['status']==1)}
+                                        开启
+                                    {else/}
+                                        禁用
+                                    {/if}
++ | + +
+                                        
+                                        
+                                    + | 
+                        {/volist}
+                    
+                
+            
+        
+    
+
+	
+
+
+	
+		
+			
+			
+			
+		
+		
+	
+
+	
+
+	
+	
+		
+			
+				| 类型+ | 菜单名+ | 图标+ | 排序+ | 状态+ | 操作+ | 
+		
+		
+			{volist name="lists" id='vo'}
+			
+				| +					{if($vo['type']==1)}
+					功能模块:{$vo['src']}
+					{elseif($vo['type']==2)/}
+					超链接:{$vo['src']}
+					{else/}
+					顶级
+					{/if}
++ | {$vo['label']}+ | {$vo['icon_class']}+ | {$vo['sort']}+ | {$vo['status']==1?'开启':'禁用'}+ | +					{if($vo['type'] == 0)}
+					
+					{/if}
+					
+					
++ | 
+			{/volist}
+		
+	
+
+
+	
+
+	
+		
+			
+				| 角色名+ | 状态+ | 添加时间+ | 操作+ | 
+		
+		
+			{volist name="group" id='vo'}
+			
+				| {$vo.group_name}+ | {$vo.status==1?'开启':'禁用'}+ | {:date('Y-m-d H:i:s',$vo.create_time)}+ | +					
+					
++ | 
+			{/volist}
+		
+	
+
+
+	
+
+	
+		
+			
+				| 真实姓名+ | 账户+ | 手机+ | QQ+ | 角色+ | 性别+ | 状态+ | 登陆次数+ | 登陆时间+ | 操作+ | 
+		
+		
+			{volist name="lists" id='vo'}
+			
+				| {$vo.name}+ | {$vo.account}+ | {$vo.phone}+ | {$vo.qq}+ | {:isset($group[$vo.group_id])?$group[$vo.group_id]['group_name']:''}+ | +					{if $vo['sex']==1}
+					男
+					{elseif $vo['sex'] == 2 /}
+					女
+					{else /}
+					未知
+					{/if}
++ | {$vo.status==1?'开启':'禁用'}+ | {$vo.login_count}+ | {:date('Y-m-d H:i:s',$vo.update_time)}+ | +					
+					
++ | 
+			{/volist}
+		
+	
+
+	
+	
+	
+	
+	
+	
+
+
+	{foreach($lists as $lists_v)}
+		- 
+			
+			{$lists_v['icon_name']} +{$lists_v['icon_html']} +{$lists_v['icon_css']} +
+	{/foreach}
+
+
+{include file="public/tail" /}
\ No newline at end of file
diff --git a/app/admin/view/yunzertest/test_add.php b/app/admin/view/yunzertest/test_add.php
new file mode 100644
index 0000000..692cb42
--- /dev/null
+++ b/app/admin/view/yunzertest/test_add.php
@@ -0,0 +1,136 @@
+{include file="public/header" /}
+
+{include file="public/tail" /}
\ No newline at end of file
diff --git a/app/admin/view/yunzertest/test_edit.php b/app/admin/view/yunzertest/test_edit.php
new file mode 100644
index 0000000..36e79b1
--- /dev/null
+++ b/app/admin/view/yunzertest/test_edit.php
@@ -0,0 +1,144 @@
+{include file="public/header" /}
+
+{include file="public/tail" /}
\ No newline at end of file
diff --git a/app/admin/view/yunzertest/test_list.php b/app/admin/view/yunzertest/test_list.php
new file mode 100644
index 0000000..bd79f92
--- /dev/null
+++ b/app/admin/view/yunzertest/test_list.php
@@ -0,0 +1,193 @@
+{include file="public/header" /}
+
+
+
+
+
+{include file="public/tail" /}
\ No newline at end of file
diff --git a/app/admin/view/yunzertest/test_static_add.php b/app/admin/view/yunzertest/test_static_add.php
new file mode 100644
index 0000000..061377f
--- /dev/null
+++ b/app/admin/view/yunzertest/test_static_add.php
@@ -0,0 +1,140 @@
+{include file="public/header" /}
+
+
+
+
+
+{include file="public/tail" /}
\ No newline at end of file
diff --git a/app/admin/view/yunzertest/test_static_edit.php b/app/admin/view/yunzertest/test_static_edit.php
new file mode 100644
index 0000000..403b6cf
--- /dev/null
+++ b/app/admin/view/yunzertest/test_static_edit.php
@@ -0,0 +1,149 @@
+{include file="public/header" /}
+
+
+
+
+
+{include file="public/tail" /}
\ No newline at end of file
diff --git a/app/admin/view/yunzertest/test_static_list.php b/app/admin/view/yunzertest/test_static_list.php
new file mode 100644
index 0000000..12d240a
--- /dev/null
+++ b/app/admin/view/yunzertest/test_static_list.php
@@ -0,0 +1,104 @@
+{include file="public/header" /}
+
+
+	
+		
+			| ID+ | 文本+ | 富文本+ | 百度文本+ | 图片+ | 参照+ | 时间戳+ | 日期+ | 日期时间+ | 网址链接+ | 操作+ | 
+	
+	
+		{volist name="lists" id='vo'}
+			
+				| {$vo['test_id']}+ | {$vo['test_input']}+ | {$vo['test_rich']}+ | {$vo['test_rich_baidu']}+ | + + + | +					{if($vo['test_reference'] == 1)}
+						开启
+					{else/}
+						关闭
+					{/if}
++ | {:date('Y-m-d H:i:s',$vo.test_time)}+ | {$vo['test_data']}+ | {$vo['test_datatime']}+ | {$vo['test_url']}+ | +					
+					
++ | 
+		{/volist}
+	
+
+{$lists|raw}
+
+{include file="public/tail" /}
\ No newline at end of file
diff --git a/app/common.php b/app/common.php
index 57cb6d8..6eb6540 100644
--- a/app/common.php
+++ b/app/common.php
@@ -1,2 +1,60 @@
 
+    
+        
+        跳转提示
+        
+        
+    
+    
+        
+            
+                
+            
+                
+            
+                
+        
+    
+