123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <?php
- namespace app\admin\controller\shopro;
- use app\common\controller\Backend;
- use app\admin\model\shopro\Category as CategoryModel;
- use fast\Tree;
- use think\Db;
- use think\exception\PDOException;
- use think\exception\ValidateException;
- use Exception;
- /**
- * 分类管理
- */
- class Category extends Backend
- {
- /**
- * @var \app\admin\model\shopro\Category
- */
- protected $model = null;
- protected $categorylist = [];
- protected $noNeedRight = ['selectpage', 'gettree'];
- public function _initialize()
- {
- parent::_initialize();
- $this->model = model('app\admin\model\shopro\Category');
- }
- /**
- * 选择分类
- */
- public function select()
- {
- if ($this->request->isAjax()) {
- $list = $this->model->with('children.children.children')->where('pid', 0)->order('weigh desc, id asc')->select();
- $this->success('选择分类', null, $list);
- }
- return $this->view->fetch();
- }
- /**
- * 查看
- */
- public function index()
- {
- //设置过滤方法
- $this->request->filter(['strip_tags']);
- if ($this->request->isAjax()) {
- $list = $this->model->with('children.children.children')->where('pid', 0)->order('weigh desc, id asc')->select();
- $this->success('自定义分类', null, $list);
- }
- return $this->view->fetch();
- }
- /**
- * 添加自定义分类
- */
- public function add()
- {
- if ($this->request->isPost()) {
- $params = $this->request->post();
- if ($params) {
- $params = json_decode($params['data'], true);
- $result = false;
- Db::startTrans();
- try {
- $result = $this->model->allowField(true)->save($params);
- Db::commit();
- } catch (ValidateException $e) {
- Db::rollback();
- $this->error($e->getMessage());
- } catch (PDOException $e) {
- Db::rollback();
- $this->error($e->getMessage());
- } catch (Exception $e) {
- Db::rollback();
- $this->error($e->getMessage());
- }
- if ($result !== false) {
- $this->success('添加成功', null, $this->model->id);
- } else {
- $this->error(__('No rows were inserted'));
- }
- }
- $this->error(__('Parameter %s can not be empty', ''));
- }
- return $this->view->fetch();
- }
- /**
- * 编辑
- */
- public function edit($ids = null)
- {
- $row = $this->model->get($ids);
- if (!$row) {
- $this->error(__('No Results were found'));
- }
- if ($this->request->isPost()) {
- $params = $this->request->post();
- if ($params) {
- $params = json_decode($params['data'], true);
- $result = false;
- Db::startTrans();
- try {
- $result = $row->allowField(true)->save($params);
- $result = true;
- Db::commit();
- } catch (ValidateException $e) {
- Db::rollback();
- $this->error($e->getMessage());
- } catch (PDOException $e) {
- Db::rollback();
- $this->error($e->getMessage());
- } catch (Exception $e) {
- Db::rollback();
- $this->error($e->getMessage());
- }
- if ($result !== false) {
- $this->success();
- } else {
- $this->error(__('No rows were updated'));
- }
- }
- $this->error(__('Parameter %s can not be empty', ''));
- }
- $this->assignconfig("row", $row);
- return $this->view->fetch();
- }
- public function update($ids = null)
- {
- $row = $this->model->get($ids);
- if (!$row) {
- $this->error(__('No Results were found'));
- }
- $params = $this->request->post();
- if($params) {
- $data = json_decode($params['data'], true);
- //递归处理分类数据
- $this->createOrUpdateCategory($data, $ids);
- $this->success();
- }
- }
- private function createOrUpdateCategory($data, $pid)
- {
- foreach($data as $k => $v) {
- $v['pid'] = $pid;
- if(!empty($v['id'])) {
- $row = $this->model->get($v['id']);
- if($row) {
- if(isset($v['deleted']) && $v['deleted'] == 1) {
- $row->delete();
- }else {
- $row->allowField(true)->save($v);
- }
- }
- }else{
- $category = new \app\admin\model\shopro\Category;
- $category->allowField(true)->save($v);
- $v['id'] = $category->id;
- }
- if(!empty($v['children'])) {
- $this->createOrUpdateCategory($v['children'], $v['id']);
- }
- }
- }
- }
|