model = new \app\admin\model\course\ColumnDir; } /** * 获取目录 * @param $courseId * @return mixed */ public function getDir($courseId = null){ $courseId = $courseId ?: $this->request->post("course_id"); $row = $this->model->courseIdGetList($courseId); return $this->success("获取成功",$row); } /** * 添加 * * @return string * @throws \think\Exception */ public function add() { if (false === $this->request->isPost()) { return $this->view->fetch(); } $params = $this->request->post('row/a'); if (empty($params)) { $this->error(__('Parameter %s can not be empty', '')); } $params = $this->preExcludeFields($params); $params['sort'] = $this->model->defineSort($params['course_id'],$params['p_id']); if ($this->dataLimit && $this->dataLimitFieldAutoFill) { $params[$this->dataLimitField] = $this->auth->id; } $result = false; Db::startTrans(); try { //是否采用模型验证 if ($this->modelValidate) { $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate; $this->model->validateFailException()->validate($validate); } $result = $this->model->allowField(true)->save($params); Db::commit(); } catch (ValidateException|PDOException|Exception $e) { Db::rollback(); $this->error($e->getMessage()); } if ($result === false) { $this->error(__('No rows were inserted')); } $this->success("提交成功"); } /** * 编辑 * @param $ids * @return string * @throws DbException * @throws \think\Exception */ public function edit($ids = null) { $row = $this->model->get($ids); if (!$row) { $this->error(__('No Results were found')); } $adminIds = $this->getDataLimitAdminIds(); if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) { $this->error(__('You have no permission')); } $params = $this->request->post('row/a'); if (empty($params)) { $this->error(__('Parameter %s can not be empty', '')); } if($row['p_id']!=$params['p_id']){ $params['sort'] = $this->model->defineSort($params['course_id'],$params['p_id']); } $params = $this->preExcludeFields($params); $result = false; Db::startTrans(); try { //是否采用模型验证 if ($this->modelValidate) { $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate; $row->validateFailException()->validate($validate); } $result = $row->allowField(true)->save($params); Db::commit(); } catch (ValidateException|PDOException|Exception $e) { Db::rollback(); $this->error($e->getMessage()); } if (false === $result) { $this->error(__('No rows were updated')); } $this->success("提交成功"); } /** * 设置排序 * @param $id * @param $type * @return mixed */ public function setSort($id,$type = 'up') { $self = $this->model->get($id); if(!$self){ $this->error(__('No Results were found')); } $direction = $type == 'up' ? '<' : '>'; $sort = $type == 'up' ? 'desc' : 'asc'; $brother = $this->model->where(['course_id'=>$self['course_id'],'p_id'=>$self['p_id']]) ->where('sort',$direction,$self['sort']) ->order('sort',$sort) ->find(); if(!$brother){ $this->error(__('无继续调节空间')); } $this->model->where([ 'id'=>$self['id'] ])->update([ 'sort'=>$brother['sort'] ]); $this->model->where([ 'id'=>$brother['id'] ])->update([ 'sort'=>$self['sort'] ]); return $this->success("操作成功"); } /** * 删除 * * @param $ids * @return void * @throws DbException * @throws DataNotFoundException * @throws ModelNotFoundException */ public function del($ids = null) { if (false === $this->request->isPost()) { $this->error(__("Invalid parameters")); } $ids = $ids ?: $this->request->post("ids"); if (empty($ids)) { $this->error(__('Parameter %s can not be empty', 'ids')); } $pk = $this->model->getPk(); $adminIds = $this->getDataLimitAdminIds(); if (is_array($adminIds)) { $this->model->where($this->dataLimitField, 'in', $adminIds); } $list = $this->model->where($pk, 'in', $ids)->select(); $count = 0; Db::startTrans(); try { foreach ($list as $item) { $count += $this->model->del($item->id); } Db::commit(); } catch (PDOException|Exception $e) { Db::rollback(); $this->error($e->getMessage()); } if ($count) { $this->success("操作成功"); } $this->error(__('No rows were deleted')); } }