model = new \app\admin\model\Goods; $this->category_model = new \app\admin\model\GoodsCategory(); $this->dynamic_model = new \app\admin\model\GoodsDynamic(); } /** * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 */ /** * 查看 */ public function index() { //当前是否为关联查询 $this->relationSearch = true; //设置过滤方法 $this->request->filter(['strip_tags', 'trim']); if ($this->request->isAjax()) { //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('keyField')) { return $this->selectpage(); } list($where, $sort, $order, $offset, $limit) = $this->buildparams(); $list = $this->model ->with(['category']) ->where($where) ->order($sort, $order) ->paginate($limit); foreach ($list as $row) { } $result = array("total" => $list->total(), "rows" => $list->items()); return json($result); } return $this->view->fetch(); } /** * 查看 */ public function category() { $list = $this->category_model->where(['status_switch'=>1])->select(); return json($list); } /** * 添加 */ public function add() { if ($this->request->isAjax()) { $param = $this->request->request(); $data = $param['row']; $data['category_name'] = $this->category_model->where(['id'=>$data['category_id']])->value('title'); $data['createtime'] = time(); $data['updatetime'] = time(); //验证动态属性 if (!empty($data['households'])){ $dynamic = json_decode($data['households'],true); foreach ($dynamic as$k=>$v){ if (empty($k)||empty($v)){ $this->error('动态类型-类型或者价格不能为空'); } } } // 开启事务 $this->model->startTrans(); $this->dynamic_model->startTrans(); try { $id =$this->model->insertGetId($data); if (!empty($data['households'])){ foreach ($dynamic as$k=>$v){ $temp['goods_id'] = $id; $temp['title'] = $k; $temp['type_price'] = $v; $temp['createtime'] = time(); $temp['updatetime'] = time(); $this->dynamic_model->insert($temp); $this->dynamic_model->commit(); } } $this->model->commit(); } catch (\Exception $e) { $this->model->rollback(); $this->dynamic_model->rollback(); $this->error(); } $this->success(); } // 必须将结果集转换为数组 // $dataList = collection(Category::order('weigh', 'desc')->where('status', 'normal')->select())->toArray(); $dataList = collection($this->category_model->where(['status_switch'=>1])->select())->toArray(); foreach ($dataList as $k => &$v) { $v['pid'] = __($v['pid']); } unset($v); Tree::instance()->init($dataList); $this->dataList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'title'); $data = [0 => __('None')]; foreach ($this->dataList as $k => &$v) { $data[$v['id']] = $v['title']; } $this->view->assign("ruledata", $data); return $this->view->fetch(); } /** * 修改 */ public function edit($ids = null) { if ($this->request->isAjax()) { $param = $this->request->request(); $data = $param['row']; $data['category_name'] = $this->category_model->where(['id'=>$data['category_id']])->value('title'); $data['updatetime'] = time(); //验证动态属性 if (!empty($data['households'])){ $dynamic = json_decode($data['households'],true); foreach ($dynamic as$k=>$v){ if (empty($k)||empty($v)){ $this->error('动态类型-类型或者价格不能为空'); } } } // 开启事务 $this->model->startTrans(); $this->dynamic_model->startTrans(); try { $this->model->where(['id'=>$ids])->update($data); if (!empty($data['households'])){ $this->dynamic_model->where(['goods_id'=>$ids])->delete(); foreach ($dynamic as$k=>$v){ $temp['goods_id'] = $ids; $temp['title'] = $k; $temp['type_price'] = $v; $temp['createtime'] = time(); $temp['updatetime'] = time(); $this->dynamic_model->insert($temp); } } $this->model->commit(); $this->dynamic_model->commit(); } catch (\Exception $e) { $this->model->rollback(); $this->dynamic_model->rollback(); $this->error(); } $this->success(); } // 必须将结果集转换为数组 // $dataList = collection(Category::order('weigh', 'desc')->where('status', 'normal')->select())->toArray(); $dataList = collection($this->category_model->where(['status_switch'=>1])->select())->toArray(); foreach ($dataList as $k => &$v) { $v['pid'] = __($v['pid']); } unset($v); Tree::instance()->init($dataList); $this->dataList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'title'); $data = [0 => __('None')]; foreach ($this->dataList as $k => &$v) { $data[$v['id']] = $v['title']; } $row = $this->model->get(['id' => $ids]); $row = $this->model->get(['id' => $ids]); $this->view->assign("row", $row); $this->view->assign("ruledata", $data); return $this->view->fetch(); } }