// +---------------------------------------------------------------------- namespace app\controller\admin; use app\controller\Admin; use app\model\Config as ConfigM; use think\facade\Cache; /** * @title 配置管理 */ class Config extends Admin { public function _initialize() { parent::_initialize(); $this->model = new ConfigM(); } /** * @title 配置管理 * @author 麦当苗儿 */ public function index(ConfigM $config) { $param = $this->request->param(); $group = input('group', 0, 'trim'); $name = input('name', '', 'trim'); /* 查询条件初始化 */ $map = array('status' => 1); if ($group) { $map['group'] = $group; } if ($name) { $map['name'] = array('like', '%' . $name . '%'); } $list = $config->where($map)->order('id desc')->paginate(25, false, array( 'query' => $this->request->param(), )); // 记录当前列表页的cookie Cookie('__forward__', $_SERVER['REQUEST_URI']); $this->data = array( 'group' => config('config_group_list'), 'config_type' => config('config_config_list'), 'page' => $list->render(), 'group_id' => $group, 'list' => $list, ); return $this->fetch(); } /** * @title 信息配置 */ public function group(ConfigM $config, $id = 1) { if ($this->request->isPost()) { $data = $this->request->post(); foreach ($data['config'] as $key => $value) { ConfigM::update(['value' => $value], ['name' => $key]); } //清除db_config_data缓存 cache('system_config_data', null); return $this->success("更新成功!"); } else { $list = $config->where(array('status' => 1, 'group' => $id))->field('id,name,title,extra,value,remark,type')->order('sort')->select(); if ($list) { $this->data['list'] = $list; } $this->data['id'] = $id; return $this->fetch(); } } /** * @title 新增配置 * @author 麦当苗儿 */ public function add(ConfigM $config) { if ($this->request->isPost()) { $data = $this->request->post(); if ($data) { $result = ConfigM::create($data); if (false !== $result) { Cache::pull('db_config_data'); return $this->success('新增成功', url('/admin/config/index')); } else { return $this->error('新增失败'); } } else { return $this->error('无添加数据!'); } } else { $this->data['info'] = []; return $this->fetch('edit'); } } /** * @title 编辑配置 * @author 麦当苗儿 */ public function edit($id = 0) { if ($this->request->isPost()) { $data = $this->request->post(); if ($data) { $result = ConfigM::update($data, array('id' => $data['id'])); if (false !== $result) { Cache::pull('db_config_data'); //记录行为 return $this->success('更新成功', Cookie('__forward__')); } else { return $this->error('更新失败!'); } } else { return $this->error('无更新数据!'); } } else { $info = array(); /* 获取数据 */ $info = ConfigM::find($id); if (false === $info) { return $this->error('获取配置信息错误'); } $this->data = ['info' => $info]; return $this->fetch(); } } /** * @title 批量保存配置 * @author 麦当苗儿 */ public function save($config) { if ($config && is_array($config)) { $Config = db('Config'); foreach ($config as $name => $value) { $map = array('name' => $name); $Config->where($map)->setField('value', $value); } } cache('db_config_data', null); return $this->success('保存成功!'); } /** * @title 删除配置 * @author 麦当苗儿 */ public function del() { $id = array_unique((array) input('id', 0)); if (empty($id)) { return $this->error('请选择要操作的数据!'); } $map = array('id' => array('in', $id)); if (db('Config')->where($map)->delete()) { cache('DB_CONFIG_DATA', null); //记录行为 action_log('update_config', 'config', $id, session('user_auth.uid')); return $this->success('删除成功'); } else { return $this->error('删除失败!'); } } /** * @title 配置排序 * @author huajie */ public function sort() { if ($this->request->isGet()) { $ids = input('ids'); //获取排序的数据 $map = array('status' => array('gt', -1)); if (!empty($ids)) { $map['id'] = array('in', $ids); } elseif (input('group')) { $map['group'] = input('group'); } $list = db('Config')->where($map)->field('id,title')->order('sort asc,id asc')->select(); $this->assign('list', $list); $this->setMeta('配置排序'); return $this->fetch(); } elseif ($this->request->isPost()) { $ids = input('post.ids'); $ids = explode(',', $ids); foreach ($ids as $key => $value) { $res = db('Config')->where(array('id' => $value))->setField('sort', $key + 1); } if ($res !== false) { return $this->success('排序成功!', Cookie('__forward__')); } else { return $this->error('排序失败!'); } } else { return $this->error('非法请求!'); } } /** * @title 主题选择 */ public function themes(ConfigM $config) { $list = $config->getThemesList(); $pc = config('system_config.pc_themes'); $mobile = config('system_config.mobile_themes'); $this->data = array( 'pc' => $pc, 'mobile' => $mobile, 'list' => $list, ); return $this->fetch(); } /** * @title 设置主题 * @return json */ public function setthemes($name, $id) { $result = db('Config')->where('name', $name . '_themes')->setField('value', $id); if (false !== $result) { \think\Cache::clear(); return $this->success('设置成功!'); } else { return $this->error('设置失败!'); } } }