diff --git a/README.md b/README.md index 0dae557..ff6102a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# 勾股CMS +# 勾股CMS2.0 [](https://gitee.com/gougucms/gougucms/) -[](https://gitee.com/gougucms/gougucms/) +[](https://gitee.com/gougucms/gougucms/) [](https://gitee.com/gougucms/gougucms/stargazers) [](https://gitee.com/gougucms/gougucms/members) @@ -12,9 +12,12 @@ - 项目会不定时进行更新,建议⭐star⭐和👁️watch👁️一份。 +- 后台体验地址:[https://www.gougucms.com/admin/index/index.html](https://www.gougucms.com/admin/index/index.html) +- 后台体验账号:gougucms 密码:gougucms + ### 开源项目 1. [](https://gitee.com/gougucms/office) [开源项目系列之勾股OA](https://gitee.com/gougucms/office) -2. [](https://gitee.com/gougucms/gougucms) [开源项目系列之勾股CMS](https://gitee.com/gougucms/gougucms) +2. [](https://gitee.com/gougucms/gougucms) [开源项目系列之勾股CMS](https://gitee.com/gougucms/gougucms) 3. [](https://gitee.com/gougucms/blog) [开源项目系列之勾股BLOG](https://gitee.com/gougucms/blog) ### 介绍 @@ -89,7 +92,7 @@ www 系统部署目录(或者子目录) ### 功能矩阵 -系统后台集成了主流的通用功能,如:登录验证、系统配置、操作日志管理、用户(组)管理、用户(组)权限、功能管理(后台菜单管理)、导航设置、网站地图、轮播广告、TAG关键字管理、文件上传、数据备份/还原、文章功能、用户管理、用户操作日志、用户注册/登录、 API接口等。更多的个性化功能可以基于当前系统便捷做二次开发。 +系统后台集成了主流的通用功能,如:登录验证、系统配置、操作日志管理、用户(组)管理、用户(组)权限、功能管理(后台菜单管理)、导航设置、网站地图、轮播广告、TAG关键字管理、文件上传、数据备份/还原、文章功能、商品功能、用户管理、用户操作日志、用户注册/登录、 API接口等。更多的个性化功能可以基于当前系统便捷做二次开发。 具体功能如下: @@ -123,6 +126,10 @@ www 系统部署目录(或者子目录) │ ├─文章分类 │ ├─文章列表 │ +├─商品中心 +│ ├─商品分类 +│ ├─商品列表 +│ ├─... ~~~ diff --git a/app/admin/common.php b/app/admin/common.php index 781babf..9aff6b4 100644 --- a/app/admin/common.php +++ b/app/admin/common.php @@ -4,8 +4,11 @@ * @license https://opensource.org/licenses/Apache-2.0 * @link https://www.gougucms.com */ - -// admin模块公共文件 +// 应用公共文件,内置主要的数据处理方法 +use think\facade\Config; +use think\facade\Request; +use think\facade\Cache; +use think\facade\Db; //获取后台模块当前登录用户的信息 function get_login_admin($key = "") { @@ -109,102 +112,107 @@ function create_tree_list($pid, $arr, $group, &$tree = []) return $tree; } -//递归排序 -function set_recursion($result, $pid = 0, $format = "L ") +//递归排序,用于分类选择 +function set_recursion($result, $pid = 0, $level=-1) { /*记录排序后的类别数组*/ static $list = array(); - + static $space = ['','├─','§§├─','§§§§├─','§§§§§§├─']; + $level++; foreach ($result as $k => $v) { if ($v['pid'] == $pid) { if ($pid != 0) { - $v['title'] = $format . $v['title']; + $v['title'] = $space[$level] . $v['title']; } /*将该类别的数据放入list中*/ $list[] = $v; - set_recursion($result, $v['id'], " " . $format); + set_recursion($result, $v['id'],$level); } } - return $list; } +/** + * 根据id递归返回子数据 + * @param $data 数据 + * @param $pid 父节点id + */ +function get_data_node($data=[],$pid=0){ + $dep = []; + foreach($data as $k => $v){ + if($v['pid'] == $pid){ + $node=get_data_node($data, $v['id']); + array_push($dep,$v); + if(!empty($node)){ + $dep=array_merge($dep,$node); + } + } + } + return array_values($dep); +} + //获取指定管理员的信息 function get_admin($id) { - $admin = \think\facade\Db::name('Admin')->where(['id' => $id])->find(); - $admin['group_id'] = \think\facade\Db::name('AdminGroupAccess')->where(['uid' => $id])->column('group_id'); + $admin = Db::name('Admin')->where(['id' => $id])->find(); + $admin['group_id'] = Db::name('AdminGroupAccess')->where(['uid' => $id])->column('group_id'); return $admin; } -//读取后台菜单列表 -function get_admin_menu() -{ - $menu = \think\facade\Db::name('AdminMenu')->order('sort asc')->select()->toArray(); - return $menu; -} - //读取权限节点列表 function get_admin_rule() { - $rule = \think\facade\Db::name('AdminRule')->order('create_time asc')->select()->toArray(); + $rule = Db::name('AdminRule')->where(['status'=>1])->order('sort asc,id asc')->select()->toArray(); return $rule; } +//读取模块列表 +function get_admin_module() +{ + $group = Db::name('AdminModule')->order('id asc')->select()->toArray(); + return $group; +} + //读取权限分组列表 function get_admin_group() { - $group = \think\facade\Db::name('AdminGroup')->order('create_time asc')->select()->toArray(); + $group = Db::name('AdminGroup')->order('create_time asc')->select()->toArray(); return $group; } //读取指定权限分组详情 function get_admin_group_info($id) { - $group = \think\facade\Db::name('AdminGroup')->where(['id' => $id])->find(); - $group['rules'] = explode(',', $group['rules']); - $group['menus'] = explode(',', $group['menus']); - return $group; -} - -//菜单父子关系排序,用于后台菜单 -function get_admin_menus() -{ - if (get_cache('menu' . get_login_admin('id'))) { - $list = get_cache('menu' . get_login_admin('id')); - } else { - $adminGroup = \think\facade\Db::name('AdminGroupAccess')->where(['uid' => get_login_admin('id')])->column('group_id'); - $adminMenu = \think\facade\Db::name('AdminGroup')->where('id', 'in', $adminGroup)->column('menus'); - $adminMenus = []; - foreach ($adminMenu as $k => $v) { - $v = explode(',', $v); - $adminMenus = array_merge($adminMenus, $v); - } - $menu = \think\facade\Db::name('AdminMenu')->where('id', 'in', $adminMenus)->order('sort asc')->select()->toArray(); - $list = list_to_tree($menu); - \think\facade\Cache::tag('adminMenu')->set('menu' . get_login_admin('id'), $list); - } - return $list; + $rule = Db::name('AdminGroup')->where(['id' => $id])->value('rules'); + $rules = explode(',', $rule); + return $rules; } //读取导航列表,用于后台 function get_nav($nav_id) { - $nav = \think\facade\Db::name('NavInfo')->where('nav_id', $nav_id)->order('sort asc')->select(); + $nav = Db::name('NavInfo')->where('nav_id', $nav_id)->order('sort asc')->select(); return $nav; } //读取关键字列表 function get_keywords() { - $keywords = \think\facade\Db::name('Keywords')->where(['status' => 1])->order('create_time asc')->select(); + $keywords = Db::name('Keywords')->where(['status' => 1])->order('create_time asc')->select(); return $keywords; } //读取文章分类列表 function get_article_cate() { - $cate = \think\facade\Db::name('ArticleCate')->order('create_time asc')->select()->toArray(); + $cate = Db::name('ArticleCate')->order('create_time asc')->select()->toArray(); + return $cate; +} + +//读取商品分类列表 +function get_goods_cate() +{ + $cate = Db::name('GoodsCate')->order('create_time asc')->select()->toArray(); return $cate; } @@ -246,35 +254,13 @@ function date_document($arrData) */ function add_log($type, $param_id = '', $param = []) { - $request = get_params(); - switch ($type) { - case 'login': - $title = '登录'; - break; - case 'upload': - $title = '上传'; - break; - case 'add': - $title = '新增'; - break; - case 'edit': - $title = '编辑'; - break; - case 'view': - $title = '查看'; - break; - case 'delete': - $title = '删除'; - break; - case 'check': - $title = '审核'; - break; - default: - $title = '未知'; - break; - } + $action = '未知操作'; + $type_action = get_config('log.admin_action'); + if($type_action[$type]){ + $action = $type_action[$type]; + } if ($type == 'login') { - $login_admin = \think\facade\Db::name('Admin')->where(array('id' => $param_id))->find(); + $login_admin = Db::name('Admin')->where(array('id' => $param_id))->find(); } else { $session_admin = get_config('app.session_admin'); $login_admin = \think\facade\Session::get($session_admin); @@ -283,17 +269,25 @@ function add_log($type, $param_id = '', $param = []) $data['uid'] = $login_admin['id']; $data['nickname'] = $login_admin['nickname']; $data['type'] = $type; + $data['action'] = $action; $data['param_id'] = $param_id; $data['param'] = json_encode($param); - $data['module'] = \think\facade\App::initialize()->http->getName(); + $data['module'] = strtolower(app('http')->getName()); $data['controller'] = strtolower(app('request')->controller()); - $data['function'] = app('request')->action(); + $data['function'] = strtolower(app('request')->action()); $parameter = $data['module'] . '/' . $data['controller'] . '/' . $data['function']; - $data['rule_menu'] = $parameter; - $data['title'] = \think\facade\Db::name('AdminRule')->where(array('src' => $parameter))->value('title') ?? $title; - $content = $login_admin['nickname'] . '在' . date('Y-m-d H:i:s') . '执行了' . $data['title'] . '操作'; + $rule_menu = Db::name('AdminRule')->where(array('src' => $parameter))->find(); + if($rule_menu){ + $data['title'] = $rule_menu['title']; + $data['subject'] = $rule_menu['name']; + } + else{ + $data['title'] = ''; + $data['subject'] ='系统'; + } + $content = $login_admin['nickname'] . '在' . date('Y-m-d H:i:s') . $data['action'] . '了' . $data['subject']; $data['content'] = $content; $data['ip'] = app('request')->ip(); $data['create_time'] = time(); - \think\facade\Db::name('AdminLog')->strict(false)->field(true)->insert($data); + Db::name('AdminLog')->strict(false)->field(true)->insert($data); } diff --git a/app/admin/controller/Admin.php b/app/admin/controller/Admin.php index ea21a86..3c35f7d 100644 --- a/app/admin/controller/Admin.php +++ b/app/admin/controller/Admin.php @@ -207,7 +207,6 @@ class Admin extends BaseController public function view() { $id = get_params('id'); - $menu = get_admin_menu(); $rule = get_admin_rule(); $user_groups = Db::name('AdminGroupAccess') @@ -218,19 +217,14 @@ class Admin extends BaseController ->toArray(); $groups = $user_groups ?: []; - $menus = []; $rules = []; foreach ($groups as $g) { - $menus = array_merge($menus, explode(',', trim($g['menus'], ','))); $rules = array_merge($rules, explode(',', trim($g['rules'], ','))); } - $menus = array_unique($menus); $rules = array_unique($rules); - $role_menu = create_tree_list(0, $menu, $menus); $role_rule = create_tree_list(0, $rule, $rules); - View::assign('role_menu', $role_menu); View::assign('role_rule', $role_rule); View::assign('admin', get_admin($id)); add_log('view', get_params('id')); diff --git a/app/admin/controller/Article.php b/app/admin/controller/Article.php index 57cbfd5..4aa412a 100644 --- a/app/admin/controller/Article.php +++ b/app/admin/controller/Article.php @@ -32,34 +32,42 @@ class Article extends BaseController } } + //获取子分类id.$is_self=1包含自己 + public function get_cate_son($id = 0, $is_self = 1) + { + $cates = Db::name('ArticleCate')->order('create_time asc')->select()->toArray(); + $cates_list = get_data_node($cates, $id); + $cates_array = array_column($cates_list, 'id'); + if ($is_self == 1) { + //包括自己在内 + $cates_array[] = $id; + } + return $cates_array; + } + //文章分类添加 public function cate_add() { - return view('', ['pid' => get_params('pid')]); - } - - //提交保存文章分类 - public function cate_post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { - $data[$param['field']] = $param['value']; - $data['id'] = $param['id']; - $data['update_time'] = time(); - if(!empty($data['title'])){ - try { - validate(ArticleCateCheck::class)->scene('edit')->check($data); - } catch (ValidateException $e) { - // 验证失败 输出错误信息 - return to_assign(1, $e->getError()); - } + try { + validate(ArticleCateCheck::class)->scene('edit')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['update_time'] = time(); + $department_array = $this->get_cate_son($param['id']); + if (in_array($param['pid'], $department_array)) { + return to_assign(1, '上级分类不能是该分类本身或其子分类'); + } else { + $res = ArticleCate::strict(false)->field(true)->update($param); + if ($res) { + add_log('edit', $param['id'], $param); + } + return to_assign(); } - $res = ArticleCate::strict(false)->field(true)->update($data); - if ($res) { - add_log('edit', $data['id'], $data); - } - return to_assign(); } else { try { validate(ArticleCateCheck::class)->scene('add')->check($param); @@ -75,6 +83,18 @@ class Article extends BaseController return to_assign(); } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + $pid = isset($param['pid']) ? $param['pid'] : 0; + if ($id > 0) { + $cate = Db::name('ArticleCate')->where(['id' => $id])->find(); + $pid = $cate['pid']; + View::assign('cate', $cate); + } + View::assign('id', $id); + View::assign('pid', $pid); + return view(); + } } //删除文章分配 @@ -126,21 +146,8 @@ class Article extends BaseController //文章添加&&编辑 public function add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - View::assign('id', $id); - if ($id > 0) { - $article = (new ArticleList())->detail($id); - View::assign('article', $article); - return view('edit'); - } - return view(); - } - - //文章内容提交保存 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); $DbRes=false; if (!empty($param['id']) && $param['id'] > 0) { try { @@ -220,6 +227,16 @@ class Article extends BaseController return to_assign(1,'操作失败'); } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + View::assign('id', $id); + if ($id > 0) { + $article = (new ArticleList())->detail($id); + View::assign('article', $article); + return view('edit'); + } + return view(); + } } //删除文章 diff --git a/app/admin/controller/Conf.php b/app/admin/controller/Conf.php index 4f7c298..c23e764 100644 --- a/app/admin/controller/Conf.php +++ b/app/admin/controller/Conf.php @@ -33,23 +33,11 @@ class Conf extends BaseController } } - //添加 + //添加/编辑配置项 public function add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - if ($id > 0) { - $config = Db::name('Config')->where(['id' => $id])->find(); - View::assign('config', $config); - } - View::assign('id', $id); - return view(); - } - - //提交添加 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); try { validate(ConfCheck::class)->check($param); } catch (ValidateException $e) { @@ -62,7 +50,6 @@ class Conf extends BaseController if ($res) { add_log('edit', $param['id'], $param); } - return to_assign(); } else { $param['create_time'] = time(); @@ -70,12 +57,20 @@ class Conf extends BaseController if ($insertId) { add_log('add', $insertId, $param); } - return to_assign(); } + } else { + $id = isset($param['id']) ? $param['id'] : 0; + if ($id > 0) { + $config = Db::name('Config')->where(['id' => $id])->find(); + View::assign('config', $config); + } + View::assign('id', $id); + return view(); } } - //删除 + + //删除配置项 public function delete() { $id = get_params("id"); @@ -90,22 +85,11 @@ class Conf extends BaseController } } - //编辑配置 + //编辑配置信息 public function edit() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - $conf = Db::name('Config')->where('id', $id)->find(); - $config = []; - if ($conf['content']) { - $config = unserialize($conf['content']); - } - return view($conf['name'], ['id' => $id, 'config' => $config]); - } - //提交添加 - public function conf_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); $data['content'] = serialize($param); $data['update_time'] = time(); $data['id'] = $param['id']; @@ -116,6 +100,16 @@ class Conf extends BaseController add_log('edit', $param['id'], $param); } return to_assign(); + } else { + $id = isset($param['id']) ? $param['id'] : 0; + $conf = Db::name('Config')->where('id', $id)->find(); + $config = []; + if ($conf['content']) { + $config = unserialize($conf['content']); + } + View::assign('id', $id); + View::assign('config', $config); + return view($conf['name']); } } } diff --git a/app/admin/controller/Database.php b/app/admin/controller/Database.php index 26e066d..74f4fa1 100644 --- a/app/admin/controller/Database.php +++ b/app/admin/controller/Database.php @@ -62,7 +62,7 @@ class Database extends BaseController add_log('add'); return to_assign(0, '备份成功!'); } else { - return to_assign(1, '请选择要备份的表!'); + return to_assign(1, '请选择要备份的表'); } } @@ -71,14 +71,14 @@ class Database extends BaseController { $tables = get_params('id'); if (empty($tables)) { - return to_assign(0, '请选择要优化的表!'); + return to_assign(0, '请选择要优化的表'); } $tables = explode(',', $tables); if ($this->db->optimize($tables)) { add_log('edit'); return to_assign(0, '数据表优化成功!'); } else { - return to_assign(1, '数据表优化出错请重试!'); + return to_assign(1, '数据表优化出错请重试'); } } @@ -87,14 +87,14 @@ class Database extends BaseController { $tables = get_params('id'); if (empty($tables)) { - return to_assign(1, '请选择要修复的表!'); + return to_assign(1, '请选择要修复的表'); } $tables = explode(',', $tables); if ($this->db->repair($tables)) { add_log('edit'); - return to_assign(0, '数据表修复成功!'); + return to_assign(0, '数据表修复成功'); } else { - return to_assign(1, '数据表修复出错请重试!'); + return to_assign(1, '数据表修复出错请重试'); } } @@ -167,13 +167,13 @@ class Database extends BaseController $this->db->delFile($v); } add_log('delete'); - return to_assign(0, "删除成功!"); + return to_assign(0, "删除成功"); } if ($this->db->delFile($id)) { add_log('delete'); - return to_assign(0, "删除成功!"); + return to_assign(0, "删除成功"); } else { - return to_assign(1, "备份文件删除失败,请检查文件权限!"); + return to_assign(1, "备份文件删除失败,请检查文件权限"); } } } diff --git a/app/admin/controller/Goods.php b/app/admin/controller/Goods.php new file mode 100644 index 0000000..0d97286 --- /dev/null +++ b/app/admin/controller/Goods.php @@ -0,0 +1,259 @@ +isAjax()) { + $cate = Db::name('GoodsCate')->order('create_time asc')->select(); + return to_assign(0, '', $cate); + } + else{ + return view(); + } + } + + //获取子分类id.$is_self=1包含自己 + public function get_cate_son($id = 0, $is_self = 1) + { + $cates = Db::name('GoodsCate')->order('create_time asc')->select()->toArray(); + $cates_list = get_data_node($cates, $id); + $cates_array = array_column($cates_list, 'id'); + if ($is_self == 1) { + //包括自己在内 + $cates_array[] = $id; + } + return $cates_array; + } + + //文章分类添加 + public function cate_add() + { + $param = get_params(); + if (request()->isAjax()) { + if (!empty($param['id']) && $param['id'] > 0) { + try { + validate(GoodsCateCheck::class)->scene('edit')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['update_time'] = time(); + $department_array = $this->get_cate_son($param['id']); + if (in_array($param['pid'], $department_array)) { + return to_assign(1, '上级分类不能是该分类本身或其子分类'); + } else { + $res = GoodsCate::strict(false)->field(true)->update($param); + if ($res) { + add_log('edit', $param['id'], $param); + } + return to_assign(); + } + } else { + try { + validate(GoodsCateCheck::class)->scene('add')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['create_time'] = time(); + $insertId = GoodsCate::strict(false)->field(true)->insertGetId($param); + if ($insertId) { + add_log('add', $insertId, $param); + } + return to_assign(); + } + } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + $pid = isset($param['pid']) ? $param['pid'] : 0; + if ($id > 0) { + $cate = Db::name('GoodsCate')->where(['id' => $id])->find(); + $pid = $cate['pid']; + View::assign('cate', $cate); + } + View::assign('id', $id); + View::assign('pid', $pid); + return view(); + } + } + + //删除文章分配 + public function cate_delete() + { + $id = get_params("id"); + $cate_count = Db::name('GoodsCate')->where(["pid" => $id])->count(); + if ($cate_count > 0) { + return to_assign(1, "该分类下还有子分类,无法删除"); + } + $content_count = Db::name('Goods')->where(["cate_id" => $id])->count(); + if ($content_count > 0) { + return to_assign(1, "该分类下还有商品,无法删除"); + } + if (Db::name('GoodsCate')->delete($id) !== false) { + add_log('delete', $id); + return to_assign(0, "删除分类成功"); + } else { + return to_assign(1, "删除失败"); + } + } + + public function index() + { + if (request()->isAjax()) { + $param = get_params(); + $where = array(); + if (!empty($param['keywords'])) { + $where[] = ['a.id|a.title|a.keywords|a.desc|a.content|w.title', 'like', '%' . $param['keywords'] . '%']; + } + if (!empty($param['cate_id'])) { + $where[] = ['a.cate_id', '=', $param['cate_id']]; + } + $where[] = ['a.status', '>=', 0]; + $rows = empty($param['limit']) ? get_config(app . page_size) : $param['limit']; + $content = GoodsList::where($where) + ->field('a.*,a.id as id,w.title as cate_title,a.title as title') + ->alias('a') + ->join('GoodsCate w', 'a.cate_id = w.id') + ->order('a.create_time desc') + ->paginate($rows, false, ['query' => $param]); + return table_assign(0, '', $content); + } + else{ + return view(); + } + } + + //文章添加&&编辑 + public function add() + { + $param = get_params(); + if (request()->isAjax()) { + $DbRes=false; + if (isset($param['tag_values']) && $param['tag_values']) { + $param['tag_values'] = implode(',',$param['tag_values']); + } + if (!empty($param['id']) && $param['id'] > 0) { + try { + validate(GoodsCheck::class)->scene('edit')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['update_time'] = time(); + Db::startTrans(); + try { + $res = GoodsList::strict(false)->field(true)->update($param); + $aid = $param['id']; + if ($res) { + //关联角色 + if (isset($param['keyword_names']) && $param['keyword_names']) { + Db::name('GoodsKeywords')->where(['aid'=>$aid])->delete(); + $keywordArray = explode(',', $param['keyword_names']); + $res_keyword = (new GoodsList())->insertKeyword($keywordArray,$aid); + } + else{ + $res_keyword == true; + } + if($res_keyword!== false){ + add_log('edit', $param['id'], $param); + Db::commit(); + $DbRes=true; + } + } else { + Db::rollback(); + } + } + catch (\Exception $e) { ##这里参数不能删除($e:错误信息) + Db::rollback(); + } + } else { + try { + validate(GoodsCheck::class)->scene('add')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['create_time'] = time(); + Db::startTrans(); + try { + if(empty($param['desc'])){ + $param['desc'] = getDescriptionFromContent($param['content'], 100); + } + $aid = GoodsList::strict(false)->field(true)->insertGetId($param); + if ($aid) { + //关联角色 + if (isset($param['keyword_names']) && $param['keyword_names']) { + Db::name('GoodsKeywords')->where(['aid'=>$aid])->delete(); + $keywordArray = explode(',', $param['keyword_names']); + $res_keyword = (new GoodsList())->insertKeyword($keywordArray,$aid); + } + else{ + $res_keyword == true; + } + if($res_keyword!== false){ + add_log('add', $aid, $param); + Db::commit(); + $DbRes=true; + } + } else { + Db::rollback(); + } + } + catch (\Exception $e) { ##这里参数不能删除($e:错误信息) + Db::rollback(); + } + } + if($DbRes){ + return to_assign(); + } + else{ + return to_assign(1,'操作失败'); + } + } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + View::assign('id', $id); + if ($id > 0) { + $goods = (new GoodsList())->detail($id); + View::assign('goods', $goods); + return view('edit'); + } + return view(); + } + } + + //删除文章 + public function delete() + { + $id = get_params("id"); + $data['status'] = '-1'; + $data['id'] = $id; + $data['update_time'] = time(); + if (Db::name('Goods')->update($data) !== false) { + add_log('delete', $id); + return to_assign(0, "删除成功"); + } else { + return to_assign(1, "删除失败"); + } + } +} diff --git a/app/admin/controller/Index.php b/app/admin/controller/Index.php index 0e5e314..c840b09 100644 --- a/app/admin/controller/Index.php +++ b/app/admin/controller/Index.php @@ -17,8 +17,22 @@ class Index extends BaseController { public function index() { - $menu = get_admin_menus(); - View::assign('menu', $menu); + $admin = get_login_admin(); + if (get_cache('menu' . $admin['id'])) { + $list = get_cache('menu' . $admin['id']); + } else { + $adminGroup = Db::name('AdminGroupAccess')->where(['uid' => get_login_admin('id')])->column('group_id'); + $adminMenu = Db::name('AdminGroup')->where('id', 'in', $adminGroup)->column('rules'); + $adminMenus = []; + foreach ($adminMenu as $k => $v) { + $v = explode(',', $v); + $adminMenus = array_merge($adminMenus, $v); + } + $menu = Db::name('AdminRule')->where(['menu' => 1,'status'=>1])->where('id', 'in', $adminMenus)->order('sort asc')->select()->toArray(); + $list = list_to_tree($menu); + \think\facade\Cache::tag('adminMenu')->set('menu' . $admin['id'], $list); + } + View::assign('menu', $list); return View(); } diff --git a/app/admin/controller/Keywords.php b/app/admin/controller/Keywords.php index f294f54..5b5a5fa 100644 --- a/app/admin/controller/Keywords.php +++ b/app/admin/controller/Keywords.php @@ -40,20 +40,8 @@ class Keywords extends BaseController //添加 public function add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - if ($id > 0) { - $keywords = Db::name('Keywords')->where(['id' => $id])->find(); - View::assign('keywords', $keywords); - } - View::assign('id', $id); - return view(); - } - - //提交添加 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { try { validate(KeywordsCheck::class)->scene('edit')->check($param); @@ -84,7 +72,17 @@ class Keywords extends BaseController return to_assign(); } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + if ($id > 0) { + $keywords = Db::name('Keywords')->where(['id' => $id])->find(); + View::assign('keywords', $keywords); + } + View::assign('id', $id); + return view(); + } } + //删除 public function delete() { diff --git a/app/admin/controller/Level.php b/app/admin/controller/Level.php new file mode 100644 index 0000000..321b95b --- /dev/null +++ b/app/admin/controller/Level.php @@ -0,0 +1,95 @@ +isAjax()) { + $level = Db::name('UserLevel')->select(); + return to_assign(0, '', $level); + } else { + return view(); + } + } + + //添加新增/编辑 + public function add() + { + $param = get_params(); + if (request()->isAjax()) { + $param['title'] = preg_replace('# #','',$param['title']); + if ($param['id'] > 0) { + try { + validate(LevelCheck::class)->scene('edit')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['update_time'] = time(); + Db::name('UserLevel')->strict(false)->field(true)->update($param); + add_log('edit', $param['id'], $param); + } else { + try { + validate(LevelCheck::class)->scene('add')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['create_time'] = time(); + $mid = Db::name('UserLevel')->strict(false)->field(true)->insertGetId($param); + add_log('add', $mid, $param); + } + return to_assign(); + } else { + $id = isset($param['id']) ? $param['id'] : 0; + if($id>0){ + $detail = Db::name('UserLevel')->where('id',$id)->find(); + View::assign('detail', $detail); + } + View::assign('id', $id); + return view(); + } + } + + //禁用/启用 + public function disable() + { + $param = get_params(); + $module = Db::name('AdminModule')->where('id',$param['id'])->find(); + if($module['type'] == 1){ + return to_assign(1,'系统模块不能禁用'); + } + $param['update_time']= time(); + $res = Db::name('AdminModule')->strict(false)->field('status,update_time')->update($param); + if($res!==false){ + Db::name('AdminRule')->strict(false)->where('module',$module['name'])->field('status')->update(['status'=>$param['status']]); + // 删除后台节点缓存 + clear_cache('adminRules'); + if($param['status'] == 0){ + add_log('disable', $param['id'], $param); + } + else if($param['status'] == 1){ + add_log('recovery', $param['id'], $param); + } + return to_assign(); + } + else{ + return to_assign(1,'操作失败'); + } + } +} diff --git a/app/admin/controller/Log.php b/app/admin/controller/Log.php new file mode 100644 index 0000000..a533f40 --- /dev/null +++ b/app/admin/controller/Log.php @@ -0,0 +1,62 @@ +isAjax()) { + $param = get_params(); + $where = array(); + if (!empty($param['keywords'])) { + $where[] = ['nickname|content|param_id', 'like', '%' . $param['keywords'] . '%']; + } + if (!empty($param['action'])) { + $where['action'] = $param['action']; + } + $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit']; + $content = DB::name('AdminLog') + ->field("id,uid,nickname,action,title,content,rule_menu,ip,param_id,param,FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') create_time") + ->order('create_time desc') + ->where($where) + ->paginate($rows, false, ['query' => $param]); + $content->toArray(); + foreach ($content as $k => $v) { + $data = $v; + $param_array = json_decode($v['param'], true); + if(is_array($param_array)){ + $param_value = ''; + foreach ($param_array as $key => $value) { + if (is_array($value)) { + $value = implode(',', $value); + } + $param_value .= $key . ':' . $value . ' | '; + } + $data['param'] = $param_value; + } + else{ + $data['param'] = $param_array; + } + $content->offsetSet($k, $data); + } + return table_assign(0, '', $content); + } else { + $type_action = get_config('log.admin_action'); + View::assign('type_action', $type_action); + return view(); + } + } +} diff --git a/app/admin/controller/Menu.php b/app/admin/controller/Menu.php deleted file mode 100644 index aa4b433..0000000 --- a/app/admin/controller/Menu.php +++ /dev/null @@ -1,97 +0,0 @@ -isAjax()) { - $menu = Db::name('AdminMenu')->order('sort asc')->select(); - return to_assign(0, '', $menu); - } else { - return view(); - } - } - - //添加菜单页面 - - public function add() - { - return view('', ['pid' => get_params('pid')]); - } - - //提交添加 - - public function post_submit() - { - if (request()->isAjax()) { - $param = get_params(); - if ($param['id'] > 0) { - $data[$param['field']] = $param['value']; - $data['id'] = $param['id']; - if(!empty($data['title'])){ - try { - validate(MenuCheck::class)->scene('edit')->check($data); - } catch (ValidateException $e) { - // 验证失败 输出错误信息 - return to_assign(1, $e->getError()); - } - } - Db::name('AdminMenu')->strict(false)->field(true)->update($data); - add_log('edit', $param['id'], $data); - } else { - try { - validate(MenuCheck::class)->scene('add')->check($param); - } catch (ValidateException $e) { - // 验证失败 输出错误信息 - return to_assign(1, $e->getError()); - } - $mid = Db::name('AdminMenu')->strict(false)->field(true)->insertGetId($param); - //自动为系统所有者管理组分配新增的菜单 - $group = Db::name('AdminGroup')->find(1); - if (!empty($group)) { - $newGroup['id'] = 1; - $newGroup['menus'] = $group['menus'] . ',' . $mid; - Db::name('AdminGroup')->strict(false)->field(true)->update($newGroup); - add_log('add', $mid, $param); - } - } - // 删除后台菜单缓存 - clear_cache('adminMenu'); - return to_assign(); - } - } - - //删除 - - public function delete() - { - $id = get_params('id'); - $count = Db::name('AdminMenu')->where(['pid' => $id])->count(); - if ($count > 0) { - return to_assign(1, '该菜单下还有子菜单,无法删除'); - } - if (Db::name('AdminMenu')->delete($id) !== false) { - // 删除后台菜单缓存 - clear_cache('adminMenu'); - add_log('delete', $id, []); - return to_assign(0, '删除菜单成功'); - } else { - return to_assign(1, '删除失败'); - } - } -} diff --git a/app/admin/controller/Module.php b/app/admin/controller/Module.php new file mode 100644 index 0000000..98bd5b8 --- /dev/null +++ b/app/admin/controller/Module.php @@ -0,0 +1,99 @@ +isAjax()) { + $module = Db::name('AdminModule')->select(); + return to_assign(0, '', $module); + } else { + return view(); + } + } + + //添加新增/编辑 + public function add() + { + $param = get_params(); + if (request()->isAjax()) { + $param['name'] = preg_replace('# #','',$param['name']); + if ($param['id'] > 0) { + $module = Db::name('AdminModule')->where('id',$param['id'])->find(); + if($module['type'] == 1){ + return to_assign(1,'系统默认模块不能编辑'); + } + try { + validate(ModuleCheck::class)->scene('edit')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['update_time'] = time(); + Db::name('AdminModule')->strict(false)->field(true)->update($param); + add_log('edit', $param['id'], $param); + } else { + try { + validate(ModuleCheck::class)->scene('add')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + $param['create_time'] = time(); + $mid = Db::name('AdminModule')->strict(false)->field(true)->insertGetId($param); + add_log('add', $mid, $param); + } + return to_assign(); + } else { + $id = isset($param['id']) ? $param['id'] : 0; + if($id>0){ + $detail = Db::name('AdminModule')->where('id',$id)->find(); + View::assign('detail', $detail); + } + View::assign('id', $id); + return view(); + } + } + + //禁用/启用 + public function disable() + { + $param = get_params(); + $module = Db::name('AdminModule')->where('id',$param['id'])->find(); + if($module['type'] == 1){ + return to_assign(1,'系统模块不能禁用'); + } + $param['update_time']= time(); + $res = Db::name('AdminModule')->strict(false)->field('status,update_time')->update($param); + if($res!==false){ + Db::name('AdminRule')->strict(false)->where('module',$module['name'])->field('status')->update(['status'=>$param['status']]); + // 删除后台节点缓存 + clear_cache('adminRules'); + if($param['status'] == 0){ + add_log('disable', $param['id'], $param); + } + else if($param['status'] == 1){ + add_log('recovery', $param['id'], $param); + } + return to_assign(); + } + else{ + return to_assign(1,'操作失败'); + } + } +} diff --git a/app/admin/controller/Nav.php b/app/admin/controller/Nav.php index dc01285..6948708 100644 --- a/app/admin/controller/Nav.php +++ b/app/admin/controller/Nav.php @@ -40,20 +40,8 @@ class Nav extends BaseController //添加 public function add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - if ($id > 0) { - $nav = Db::name('Nav')->where(['id' => $id])->find(); - View::assign('nav', $nav); - } - View::assign('id', $id); - return view(); - } - - //提交添加 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { try { validate(NavCheck::class)->scene('edit')->check($param); @@ -82,16 +70,22 @@ class Nav extends BaseController add_log('add', $nid, $param); return to_assign(); } - } + } else { + $id = isset($param['id']) ? $param['id'] : 0; + if ($id > 0) { + $nav = Db::name('Nav')->where(['id' => $id])->find(); + View::assign('nav', $nav); + } + View::assign('id', $id); + return view(); + } } //删除 public function delete() { $id = get_params('id'); - $count = Db::name('NavInfo')->where([ - 'nav_id' => $id, - ])->count(); + $count = Db::name('NavInfo')->where(['nav_id' => $id])->count(); if ($count > 0) { return to_assign(1, '该组下还有导航,无法删除'); } @@ -127,24 +121,8 @@ class Nav extends BaseController //添加导航 public function nav_info_add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - View::assign('id', $id); - View::assign('nav_id', get_params('nid')); - View::assign('pid', get_params('pid')); - if ($id > 0) { - $nav = Db::name('NavInfo')->where(['id' => $id])->find(); - View::assign('nav', $nav); - View::assign('nav_id', $nav['nav_id']); - View::assign('pid', $nav['pid']); - } - return view(); - } - - //保存添加 - public function nav_info_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { try { validate(NavCheck::class)->scene('editInfo')->check($param); @@ -169,8 +147,22 @@ class Nav extends BaseController clear_cache('homeNav'); add_log('add', $nid, $param); return to_assign(); - } - } + } + } else { + $id = isset($param['id']) ? $param['id'] : 0; + $nid = isset($param['nid']) ? $param['nid'] : 0; + $pid = isset($param['pid']) ? $param['pid'] : 0; + if ($id > 0) { + $nav = Db::name('NavInfo')->where(['id' => $id])->find(); + View::assign('nav', $nav); + $nid = $nav['nav_id']; + $pid = $nav['pid']; + } + View::assign('id', $id); + View::assign('nav_id', $nid); + View::assign('pid', $pid); + return view(); + } } //删除 diff --git a/app/admin/controller/Role.php b/app/admin/controller/Role.php index fe1150b..3e13eb9 100644 --- a/app/admin/controller/Role.php +++ b/app/admin/controller/Role.php @@ -39,37 +39,10 @@ class Role extends BaseController //添加&编辑 public function add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - $menu = get_admin_menu(); - $rule = get_admin_rule(); - if($id > 0) { - $group = get_admin_group_info($id); - $role_menu = create_tree_list(0, $menu, $group['menus']); - $role_rule = create_tree_list(0, $rule, $group['rules']); - $role = Db::name('AdminGroup')->where(['id' => $id])->find(); - View::assign('role', $role); - } - else{ - $role_menu = create_tree_list(0, $menu, []); - $role_rule = create_tree_list(0, $rule, []); - } - View::assign('role_menu', $role_menu); - View::assign('role_rule', $role_rule); - View::assign('id', $id); - return view(); - } - - //提交保存 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); - $menuData = isset($param['menu']) ? $param['menu'] : 0; - $ruleData = isset($param['rule']) ? $param['rule'] : 0; - //sort($menuData); - //sort($ruleData); - $param['menus'] = implode(',',$menuData); - $param['rules'] = implode(',',$ruleData); + $ruleData = isset($param['rule']) ? $param['rule'] : 0; + $param['rules'] = implode(',', $ruleData); if (!empty($param['id']) && $param['id'] > 0) { try { validate(GroupCheck::class)->scene('edit')->check($param); @@ -95,8 +68,21 @@ class Role extends BaseController } //清除菜单\权限缓存 clear_cache('adminMenu'); - clear_cache('adminRules'); return to_assign(); + } else { + $id = isset($param['id']) ? $param['id'] : 0; + $rule = get_admin_rule(); + if ($id > 0) { + $rules = get_admin_group_info($id); + $role_rule = create_tree_list(0, $rule, $rules); + $role = Db::name('AdminGroup')->where(['id' => $id])->find(); + View::assign('role', $role); + } else { + $role_rule = create_tree_list(0, $rule, []); + } + View::assign('role_rule', $role_rule); + View::assign('id', $id); + return view(); } } diff --git a/app/admin/controller/Rule.php b/app/admin/controller/Rule.php index a3e5965..55845b9 100644 --- a/app/admin/controller/Rule.php +++ b/app/admin/controller/Rule.php @@ -20,7 +20,7 @@ class Rule extends BaseController public function index() { if (request()->isAjax()) { - $rule = Db::name('adminRule')->order('create_time asc')->select(); + $rule = Db::name('adminRule')->order('sort asc,id asc')->select(); return to_assign(0, '', $rule); } else { return view(); @@ -30,35 +30,18 @@ class Rule extends BaseController //添加 public function add() { - return view('', ['pid' => get_params('pid')]); - } - - //提交添加 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); + $param['src'] = preg_replace('# #','',$param['src']); if ($param['id'] > 0) { - $data[$param['field']] = $param['value']; - $data['id'] = $param['id']; - if(!empty($data['title'])){ - try { - validate(RuleCheck::class)->scene('edit_title')->check($data); - } catch (ValidateException $e) { - // 验证失败 输出错误信息 - return to_assign(1, $e->getError()); - } - } - if(!empty($data['src'])){ - try { - validate(RuleCheck::class)->scene('edit_src')->check($data); - } catch (ValidateException $e) { - // 验证失败 输出错误信息 - return to_assign(1, $e->getError()); - } - } - Db::name('AdminRule')->strict(false)->field(true)->update($data); - add_log('edit', $param['id'], $data); + try { + validate(RuleCheck::class)->scene('edit')->check($param); + } catch (ValidateException $e) { + // 验证失败 输出错误信息 + return to_assign(1, $e->getError()); + } + Db::name('AdminRule')->strict(false)->field(true)->update($param); + add_log('edit', $param['id'], $param); } else { try { validate(RuleCheck::class)->scene('add')->check($param); @@ -66,6 +49,7 @@ class Rule extends BaseController // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } + $param['create_time'] = time(); $rid = Db::name('AdminRule')->strict(false)->field(true)->insertGetId($param); //自动为系统所有者管理组分配新增的节点 $group = Db::name('AdminGroup')->find(1); @@ -79,9 +63,18 @@ class Rule extends BaseController // 删除后台节点缓存 clear_cache('adminRules'); return to_assign(); + } else { + $id = isset($param['id']) ? $param['id'] : 0; + $pid = isset($param['pid']) ? $param['pid'] : 0; + if($id>0){ + $detail = Db::name('AdminRule')->where('id',$id)->find(); + View::assign('detail', $detail); + } + View::assign('id', $id); + View::assign('pid', $pid); + return view(); } } - //删除 public function delete() { diff --git a/app/admin/controller/Sitemap.php b/app/admin/controller/Sitemap.php index fb6f20e..f86ca5e 100644 --- a/app/admin/controller/Sitemap.php +++ b/app/admin/controller/Sitemap.php @@ -42,20 +42,8 @@ class Sitemap extends BaseController //添加 public function add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - if ($id > 0) { - $cate = Db::name('SitemapCate')->where(['id' => $id])->find(); - View::assign('cate', $cate); - } - View::assign('id', $id); - return view(); - } - - //提交添加 - public function post_submit() - { - if (request()->isAjax()) { - $param = get_params(); + $param = get_params(); + if (request()->isAjax()) { if (!empty($param['id']) && $param['id'] > 0) { try { validate(SitemapCateCheck::class)->scene('edit')->check($param); @@ -84,12 +72,21 @@ class Sitemap extends BaseController if ($sid) { add_log('add', $sid, $param); } - + // 删除菜单缓存 clear_cache('homeSitemap'); return to_assign(); } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + if ($id > 0) { + $cate = Db::name('SitemapCate')->where(['id' => $id])->find(); + View::assign('cate', $cate); + } + View::assign('id', $id); + return view(); + } } //删除 @@ -136,22 +133,8 @@ class Sitemap extends BaseController //添加网站地图 public function sitemap_info_add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - $sitemap_cate_id = empty(get_params('cid')) ? 0 : get_params('cid'); - if ($id > 0) { - $sitemap = Db::name('Sitemap')->where(['id' => $id])->find(); - View::assign('sitemap', $sitemap); - } - View::assign('id', $id); - View::assign('sitemap_cate_id', $sitemap_cate_id); - return view(); - } - - //保存网站地图添加 - public function sitemap_info_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { try { validate(SitemapCheck::class)->scene('edit')->check($param); @@ -188,6 +171,17 @@ class Sitemap extends BaseController return to_assign(); } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + $sitemap_cate_id = isset($param['cid']) ? $param['cid'] : 0; + if ($id > 0) { + $sitemap = Db::name('Sitemap')->where(['id' => $id])->find(); + View::assign('sitemap', $sitemap); + } + View::assign('id', $id); + View::assign('sitemap_cate_id', $sitemap_cate_id); + return view(); + } } //删除网站地图 diff --git a/app/admin/controller/Slide.php b/app/admin/controller/Slide.php index 50d70c9..56142db 100644 --- a/app/admin/controller/Slide.php +++ b/app/admin/controller/Slide.php @@ -40,20 +40,8 @@ class Slide extends BaseController //添加 public function add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - if ($id > 0) { - $slide = Db::name('Slide')->where(['id' => $id])->find(); - View::assign('slide', $slide); - } - View::assign('id', $id); - return view(); - } - - //提交添加 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { try { validate(SlideCheck::class)->scene('edit')->check($param); @@ -87,6 +75,15 @@ class Slide extends BaseController return to_assign(); } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + if ($id > 0) { + $slide = Db::name('Slide')->where(['id' => $id])->find(); + View::assign('slide', $slide); + } + View::assign('id', $id); + return view(); + } } //删除 @@ -149,23 +146,8 @@ class Slide extends BaseController //添加幻灯片 public function slide_info_add() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - $slide_id = empty(get_params('sid')) ? 0 : get_params('sid'); - if ($id > 0) { - $slide_info = Db::name('SlideInfo')->where(['id' => $id])->find(); - View::assign('slide_info', $slide_info); - $slide_id = $slide_info['slide_id']; - } - View::assign('id', $id); - View::assign('slide_id', $slide_id); - return view(); - } - - //保存幻灯片添加 - public function slide_info_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { try { validate(SlideCheck::class)->scene('editInfo')->check($param); @@ -200,7 +182,20 @@ class Slide extends BaseController return to_assign(); } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + $slide_id = isset($param['sid']) ? $param['sid'] : 0; + if ($id > 0) { + $slide_info = Db::name('SlideInfo')->where(['id' => $id])->find(); + View::assign('slide_info', $slide_info); + $slide_id = $slide_info['slide_id']; + } + View::assign('id', $id); + View::assign('slide_id', $slide_id); + return view(); + } } + //删除幻灯片 public function slide_info_delete() { diff --git a/app/admin/controller/User.php b/app/admin/controller/User.php index c5f2d28..8e372e2 100644 --- a/app/admin/controller/User.php +++ b/app/admin/controller/User.php @@ -47,6 +47,7 @@ class User extends BaseController ->paginate($rows, false, ['query' => $param]) ->each(function ($item, $key) { $item->register_time = empty($item->register_time) ? '-' : date('Y-m-d H:i', $item->register_time); + $item->level_name = Db::name('UserLevel')->where(['id' => $item->level])->value('title'); }); return table_assign(0, '', $content); } else { @@ -57,17 +58,8 @@ class User extends BaseController //编辑 public function edit() { - $id = empty(get_params('id')) ? 0 : get_params('id'); - $user = Db::name('User')->where(['id' => $id])->find(); - View::assign('user', $user); - return view(); - } - - //提交添加 - public function post_submit() - { + $param = get_params(); if (request()->isAjax()) { - $param = get_params(); if (!empty($param['id']) && $param['id'] > 0) { $res = Db::name('User')->where(['id' => $param['id']])->strict(false)->field(true)->update($param); if ($res) { @@ -78,6 +70,14 @@ class User extends BaseController } } } + else{ + $id = isset($param['id']) ? $param['id'] : 0; + $user = Db::name('User')->where(['id' => $id])->find(); + $levels = Db::name('UserLevel')->where(['status' => 1])->select()->toArray(); + View::assign('user', $user); + View::assign('levels', $levels); + return view(); + } } //查看 @@ -85,6 +85,7 @@ class User extends BaseController { $id = empty(get_params('id')) ? 0 : get_params('id'); $user = Db::name('User')->where(['id' => $id])->find(); + $user['level_name'] = Db::name('UserLevel')->where(['id' => $user['level']])->value('title'); add_log('view', get_params('id')); View::assign('user', $user); return view(); @@ -110,11 +111,14 @@ class User extends BaseController $param = get_params(); $where = array(); if (!empty($param['keywords'])) { - $where[] = ['nickname|title', 'like', '%' . $param['keywords'] . '%']; + $where[] = ['nickname|content|param_id', 'like', '%' . $param['keywords'] . '%']; + } + if (!empty($param['action'])) { + $where['title'] = $param['action']; } $rows = empty($param['limit']) ? get_config(app . page_size) : $param['limit']; $content = DB::name('UserLog') - ->field("id,uid,nickname,title,content,ip,param,FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') create_time") + ->field("id,uid,nickname,title,content,ip,param_id,param,FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') create_time") ->order('create_time desc') ->where($where) ->paginate($rows, false, ['query' => $param]); @@ -135,6 +139,8 @@ class User extends BaseController } return table_assign(0, '', $content); } else { + $type_action = get_config('log.user_action'); + View::assign('type_action', $type_action); return view(); } } diff --git a/app/admin/model/Goods.php b/app/admin/model/Goods.php new file mode 100644 index 0000000..f5edac0 --- /dev/null +++ b/app/admin/model/Goods.php @@ -0,0 +1,84 @@ +where(['id'=>$id])->find(); + if(empty($goods)) { + return $this->error('商品不存在'); + } + + //轮播图 + if(!empty($goods['banner'])) { + $goods['banner_array'] = explode(',',$goods['banner']); + } + //关键字 + $keywrod_array = \think\facade\Db::name('ArticleKeywords') + ->field('i.aid,i.keywords_id,k.title') + ->alias('i') + ->join('keywords k', 'k.id = i.keywords_id', 'LEFT') + ->order('i.create_time asc') + ->where(array('i.aid' => $id, 'k.status' => 1)) + ->select()->toArray(); + + $goods['keyword_ids'] = implode(",", array_column($keywrod_array, 'keywords_id')); + $goods['keyword_names'] = implode(',', array_column($keywrod_array, 'title')); + + //标签设置 + $goods['tag1'] = $goods['tag2'] = $goods['tag3'] = $goods['tag4'] = $goods['tag5'] = $goods['tag6'] =0; + if(!empty($goods['tag_values'])) { + $tag_values_array = explode(',', $goods['tag_values']); + if(in_array('1', $tag_values_array)){ + $goods['tag1'] = 1; + } + if(in_array('2', $tag_values_array)){ + $goods['tag2'] = 1; + } + if(in_array('3', $tag_values_array)){ + $goods['tag3'] = 1; + } + if(in_array('4', $tag_values_array)){ + $goods['tag4'] = 1; + } + if(in_array('5', $tag_values_array)){ + $goods['tag5'] = 1; + } + if(in_array('6', $tag_values_array)){ + $goods['tag6'] = 1; + } + } + + return $goods; + } + + //插入关键字 + public function insertKeyword($keywordArray = [], $aid) + { + $insert = []; + $time = time(); + foreach ($keywordArray as $key => $value) { + if (!$value) { + continue; + } + $keywords_id = (new Keywords())->increase($value); + $insert[] = ['aid' => $aid, + 'keywords_id' => $keywords_id, + 'create_time' => $time, + ]; + } + $res = \think\facade\Db::name('GoodsKeywords')->strict(false)->field(true)->insertAll($insert); + return $res; + } +} diff --git a/app/admin/model/GoodsCate.php b/app/admin/model/GoodsCate.php new file mode 100644 index 0000000..c6dba29 --- /dev/null +++ b/app/admin/model/GoodsCate.php @@ -0,0 +1,15 @@ + 'require|unique:admin_menu', + 'title' => 'require|unique:goods_cate', 'id' => 'require', ]; protected $message = [ - 'title.require' => '菜单名称不能为空', - 'title.unique' => '同样的菜单名称已经存在', + 'title.require' => '名称不能为空', + 'title.unique' => '同样的名称已经存在', 'id.require' => '缺少更新条件', ]; protected $scene = [ 'add' => ['title'], - 'edit' => ['id','title'], + 'edit' => ['id', 'title'], ]; } diff --git a/app/admin/validate/GoodsCheck.php b/app/admin/validate/GoodsCheck.php new file mode 100644 index 0000000..265e7de --- /dev/null +++ b/app/admin/validate/GoodsCheck.php @@ -0,0 +1,34 @@ + 'require|unique:article', + 'content' => 'require', + 'id' => 'require', + 'article_cate_id' => 'require', + 'status' => 'require', + ]; + + protected $message = [ + 'title.require' => '标题不能为空', + 'title.unique' => '同样的商品标题已经存在', + 'cate_id.require' => '所属分类为必选', + 'id.require' => '缺少更新条件', + 'status.require' => '状态为必选', + ]; + + protected $scene = [ + 'add' => ['title', 'cate_id', 'content', 'status'], + 'edit' => ['title', 'cate_id', 'content', 'id', 'status'], + ]; +} diff --git a/app/admin/validate/LevelCheck.php b/app/admin/validate/LevelCheck.php new file mode 100644 index 0000000..abaf998 --- /dev/null +++ b/app/admin/validate/LevelCheck.php @@ -0,0 +1,29 @@ + 'require|unique:user_level', + 'id' => 'require', + ]; + + protected $message = [ + 'title.require' => '模块名称不能为空', + 'title.unique' => '同样的等级名称已经存在', + 'id.require' => '缺少更新条件', + ]; + + protected $scene = [ + 'add' => ['title'], + 'edit' => ['id','title'], + ]; +} diff --git a/app/admin/validate/ModuleCheck.php b/app/admin/validate/ModuleCheck.php new file mode 100644 index 0000000..f16cfc5 --- /dev/null +++ b/app/admin/validate/ModuleCheck.php @@ -0,0 +1,34 @@ + 'require|unique:admin_module', + 'name' => 'require|lower|min:2|unique:admin_module', + 'id' => 'require', + ]; + + protected $message = [ + 'title.require' => '模块名称不能为空', + 'title.unique' => '同样的模块名称已经存在', + 'name.require' => '模块所在目录不能为空', + 'name.lower' => '模块所在目录只能是小写字符', + 'name.min' => '模块所在目录至少需要2个小写字符', + 'name.unique' => '同样的模块所在目录已经存在', + 'id.require' => '缺少更新条件', + ]; + + protected $scene = [ + 'add' => ['title','name'], + 'edit' => ['id','title','name'], + ]; +} diff --git a/app/admin/view/admin/add.html b/app/admin/view/admin/add.html index 401fefb..4316ba4 100644 --- a/app/admin/view/admin/add.html +++ b/app/admin/view/admin/add.html @@ -1,65 +1,55 @@ {extend name="common/base"/} {block name="body"} -